A music web application that generates melodies using AI, based on the musical ideas of the user. For this, I'm going to use VexFlow to create the staff and Tone.js so users can hear the seed notes.
- Html codes for the notes and rests symbols
- VexFlow documentation for using EasyScore
- Tone.js documentation
- Magenta documentation
- Html-midi-player
- Create a form so that users can add the seed notes of the melody the AI will generate.
- Adding a form and capture the inputs using js.
- Create a staff using EasyScore from Vexflow.
- EasyScore is the fastest way to get started with VexFlow. You can use it to generate all the basic VexFlow elements necessary for a sequence of musical notation and extend them with the standard VexFlow API.
- The EasyScore language supports notes, accidental beams, dot tuplets and other common musical notation elements. cdnjs
- Add a staff using Vexflow where users can see, hear and edit the seed notes of the melody.
- Create a parser that takes the notes from the form and convert them into a readable format that Vexflow can understand.
- Add the note from the parser to the staff created in Vexflow.
- Integrate Tone.js into the app and create a Sampler using this library.
- Create a class using Tone.js so users can hear the seed notes of the melody.
- Using Tone.js to play the notes of our staff.
- Generate a melody using magenta.js based on the seed melody of the user.
- Generating a melody using MusicRNN. MusicRNN implements Magenta's LSTM-based language models.
- Add a midi player so user can hear the generated melody.
- Adding HTML midi player and visualizer.