Hi.
I'm creating a MIDI SD reader, which send a MIDI Signal via Usart.
It now works well but there are numbers of things in the specifications that are not clear.
One of these is how to send a correct AllNotesOff message.
Specifications says that, even if these specific is addressed to a specific channel, it extends to all channels... To prevent ununderstanded messages, I send it to all channels, one by one.
There are several ways to send this message, main types are these ones :
Although, it seems to work but for both messages, my MIDI softwares (I tried with diffent ones) interprets this event as a short C0 (note n° 00, the first C). Here is the end of my generated MIDI file (in hexa):
Is anybody have ever tried to work on Midi files and have ever encountered this problem ?
What should be the best way to fastly initialize all notes of all controllers ?
Thanks for your help.
EDIT : I tried to send just the messages to channel 0 and it's OK (it seems to cut every channels).
The difference between AllNotesOff and AllSoundsOff doesn't seem to be implemented, or I didn't understand correctly this difference.
But your reviews and feedbacks are welcome...
I'm creating a MIDI SD reader, which send a MIDI Signal via Usart.
It now works well but there are numbers of things in the specifications that are not clear.
One of these is how to send a correct AllNotesOff message.
Specifications says that, even if these specific is addressed to a specific channel, it extends to all channels... To prevent ununderstanded messages, I send it to all channels, one by one.
There are several ways to send this message, main types are these ones :
- AllNotesOff, sending 0xB0(ControlChange), 0x7B, 0x00. I understand that this method stops all notes but let them finish (they are not instantly cutted). I use this mode if end of file appears, to prevent an eventuel unclosed note in a corrupted file.
- AllSoundsOff, sending 0xB0, 0x78, 0x00. Documentation says "all oscillators are stopped". I understand that notes are stop with instant sound cut. I use it if user press "pause" or "stop" buttons to instantly cut the output
Although, it seems to work but for both messages, my MIDI softwares (I tried with diffent ones) interprets this event as a short C0 (note n° 00, the first C). Here is the end of my generated MIDI file (in hexa):
Code:
90 00 7f
NoteOn C0 MaxVelocity
0c 80 00 7f
Wait12ticks NoteOff C0 MaxVelocity
Is anybody have ever tried to work on Midi files and have ever encountered this problem ?
What should be the best way to fastly initialize all notes of all controllers ?
Thanks for your help.
EDIT : I tried to send just the messages to channel 0 and it's OK (it seems to cut every channels).
The difference between AllNotesOff and AllSoundsOff doesn't seem to be implemented, or I didn't understand correctly this difference.
But your reviews and feedbacks are welcome...
Last edited: