If you like creating simple melodies and finding harmonies…
I’ve always enjoyed the simple music-making applications with available notes on a grid that the user can turn on and off. Often these applications use a pentatonic scale (i.e. just the black key notes) so that nothing the user does can sound dissonant. But I prefer the challenge of finding something that sounds good, tripping over awkward chords on the way.
As a kid, I learned insane amounts from just playing around with the software my parents gave me or happened to have installed on our machine. I developed La Pastorale with these experiences in mind, aiming to create a setting in which people can learn about music theory simply by exploration and trial-and-error.
Maybe you’d like to see some the of the functionality explained. Here is a script for the brown bar that moves across the grid, responsible for triggering the notes.
Since each row of notes is a different color, I can associate color with the notes that I want Scratch to play. The variable called ‘speed’ is a value that changes when you press allegro, andante, or presto. I needed to have the note length and wait time adjust with each speed so that the note would play only once per beat.
Lots of people have asked how I make the melody to switch from major to minor. It’s easier than it seems! There is an adjustment to just one note that makes that happen: the third note in the scale. In our case, it’s an E. To make the entire melody sound minor, the E shifts down to become an E flat. So because the value of E changes, I used a variable for this row of notes.
The value of the variable changes when the user clicks the ‘major’ and ‘minor’ button sprites. Here are some scripts attached to the ‘minor’ button. The one on the left tells the button to appear to be off as long as E has value of 64 (its major value). On the right, you can see that clicking the button sprite changes E to its minor value and makes the minor button appear to be on.
This all essentially switches in the scripts for the ‘major’ button sprite.