Open JustJoshingYa opened 4 months ago
This needs to be broken up into separate individual feature requests
All of the features listed except percussion are already supported in the sprig engine, they're just not in the editor. So everything except percussion should be a pretty easy UI change
The sprig editor and spade engine could use some advanced music creation elements to make music on the sprig more enjoyable to listen to and create more advanced sound effects like explosions.
Suggested Features
Pitched notes: ex: C sharp, G sharp, etc. The audio.h library should support it on the C side. For UI implementation, the piano roll of the audio editor can stay the same except when you place down a note. Left clicking the notes you've placed down again would turn the note into a sharp, denoted by the # instead of the picture of the wave you are using. The color of the wave you use stays the same to show what wave you are using. You would still have right click to clear the note if needed or if you click a third time. The # will be used in code (C#4-150) or if symbols mess up the code, lots of tone libraries (https://github.com/bhagman/Tone/tree/master) use S to show what note is sharp (CS4-150).
Include the lower notes range: ex: From C4 to A3. To access these in UI, scroll can be used to look down and see the lower and higher notes. The notes could be labeled (C3 , A5, G#4) at the beginning of the piano roll to make finding the note you want easier to use.
Different note lengths ex: Half note, Eighth note This is a liitle difficult because of how the UI is currently setup with left clicking putting notes down and removes them with a second click. Many piano roll music creation websites like www.beepbox.co utilize dragging when you select where you place the note to change the length of a note. In code, a letter assigned with each note at the end of the note string (C#4-150A) could be used to denote how long the note lasts, then can be parsed out at the end.
Percussion: ex: Noise channel Just add one more line to the audio editor for percussion for UI. Since generating a noise wave requires a random value generation that could make game slower every time it is called, a prerecorded WAV file could be put into an array to be played simultaneously with the music generated from the tone library. This would be similar to the Arduino PCM library https://github.com/damellis/PCM . Different WAV files for different use cases could be chosen within the editor via multiple left clicks like I mentioned in the pitched note suggestion. This WAV files could be stored in the GitHub but only wav files that are used in any tunes for one game should be pulled to save storage space in the pico.
With these elements, better music can made for sprig games that won't compromise on the retro aesthetic and hardware limitations