Oscar, I've another feature request about the PLAY command.
At the moment, the volume of the music can be changed dynamically using
PLAY VOLUME x
Implementing this command costs CPU time because you have to scale, frame by frame, the channel volumes. Moreover all the channels get the same volume.
It is good to fade in or fade out the music, but it does not add flexibility to the music player because you cannot change the volume of a given note on a channel and costs extra CPU cycles.
My proposal is to extend the MML syntax with a volume modifier to be used in the MUSIC command
The volumes could be changed note by note, channel by channel, and all the processing would be done at compile time, avoiding the processing needed for changing the volume on fly.
(Naturally if you use PLAY VOLUME, like now, you need the scaling code anyway).
A tentative proposal could be Vn with n in 0-15 to be used with a note o a sustain symbol.
label: DATA 8 ' Ticks per note (there are 50 ticks per second)
MUSIC V15F4,V10A4#,V10C5 ' here volumes are 15,10,10
MUSIC S,S,S ' here volumes stay 15,10,10
MUSIC V10S,V7S,V7S ' here volume are 10,7,7
Naturally, also instruments and drums can be scaled at compile time, even if they include modulation of volume.
I do not know how you have defined them so I do not know what would be the coding effort to add this flexibility, but it should be doable.