Click the "Play" button to hear the melody.
Click "Reveal answer" to see the correct notes.
Click "Generate Next" to get the next melody.
Hi! This one can be a bit tricky! Let me guide you.
These "jumps" will be included: 0,2,4,5,7,9,11
This tool is designed to address a specific pain point in instrument fluency: listening and then replicating.
Many musicians, especially beginners and intermediates, often look up how to play a song and follow instructions. However, when they want to play freely, produce melodies and progressions they imagine or hear — it can be challenging. (I experience this pain myself, so this tool is partially for me!)
To replicate a melody they hear, musicians must master two key skills: accurately parsing (hearing and understanding) the melody and reproducing it on their instrument.
A common practice for this might involve replicating songs heard on Spotify or YouTube, but this method has several drawbacks:
Polished melodies in songs are often too complex for beginners to replicate without looking up the answer in text-form online.
If the player fails, there’s no clear way to verify or understand how the melody is actually played, which can lead to frustration or giving up.
Effective learning requires gradual progression in difficulty, but existing songs often present an “all or nothing” challenge, with no accessible way to progress to the goal.
This tool addresses these issues by generating melodies for users to play by ear. Users can customize melody properties, such as key, scale and difficulty, to suit their practice goals. Initially, the melody is hidden, encouraging users to rely on their listening skills to replicate it. Once they feel confident or need help, they can reveal the melody to see the “answer.”
When revealed, the melody is displayed in a "piano roll" format and as animated instructions for playing it on guitar and piano. This combination makes it much easier for users to efficiently develop their skills.
What's to do:
1. The melody algorithm is currently being rebuilt. The goal is to produce more natural-sounding melodies in pitch and timing.
2. Since the guitar fretboard is 2D, there are multiple ways of fretting a note and chord. There will therefore be more options for how the illustration calculates the fret positions. For example, to follow the common way of "movable shapes" in the pentatonic scale.
3. The plan is to also support practice of chord progressions. It will be similar to the melody version, but instead generate chords in different progressions and of different chord qualities—for the user to practice recognizing the chords.
What's done:
* The website is a project by a music and software development enthusiast, Hugo Olsson (Hi!). The project is written without additional runtime dependencies in Svelte 5 and TailwindCSS. Here is a list of what's finished.
1. A custom collection of functions to draw the graphics of the piano roll and the illustrations of the fretboard and the piano.
2. Synthesis of the notes played in the piano roll. The synthesis is built because the project needs the functionality of "varied timbre" for an additional layer of practice for the users. It is also nice to have programmatically created sounds for agility in future development.
3. The UI that's holding everything, the buttons, the selectors, the animations, the colors.
4. To generate a melody that is correct to the specified key, scale, difficulty, and timbre. Some math was produced to generically make the melody generation fit within the rules of music theory.
5. I call the current fret-finding algorithm "Start Chroma". This algorithm begins at the lowest note of the guitar (E2) and works chromatically upwards with the closest fretting to the guitar nut. This is done until notes of E4 or higher are reached; after this, it will linearly work up the high E-string to find the note.
6. In addition to selecting a scale, one can also select a subset within that scale for the melody generation to work within. This is if users want to limit themselves to a certain part of the scale when practising. The "Jump-selector" or "Color-selector" was made for this (I haven't decided on which name is the best yet).
Contact:
hugo.contact01@gmail.com