From the original SynthMaker forum (2004–2014), with its members’ names and dates.
1-2-Many ·
Status 0-127? trying to reconcile how this gels with the MIDI standard
Can anyone translate?
For example, Program change is Cn, where n = MIDI channel, but since the module already has a pin for the MIDI channel would you just hook a 12 (0x0C) to the status pin?
philter5 ·
if i get you right you are looking for this:
Status: Function:
144 Note on
128 Note off
176 Control Change
192 Program Change
208 aftertouch
224 pitchbend
1-2-Many ·
philter5 wrote: if i get you right you are looking for this:
Status: Function:
144 Note on
128 Note off
176 Control Change
192 Program Change
208 aftertouch
224 pitchbend
Yes - but the confusion is in the seperation of the byte. Each of your numbers assume a MIDI channel of 1 when converted to hex (lower nibble = 0), and your numbers are not compatible with the status pin of the midi event primitive.
I'm looking for this (high nibble of the Status Byte)
8 = Note Off
9 = Note On
A = AfterTouch (ie, key pressure)
B = Control Change
C = Program (patch) change
D = Channel Pressure
E = Pitch Wheel
Midi Messages begin with a Status byte in the range 0x80 to 0xFF, where the upper nibble defines the event type and the lower nibble defines the MIDI channel. The remaining bytes of the message (ie, the data bytes, if any) will be in the range 0x00 to 0x7F. You can always detect the start of a MIDI message because that's when you receive a byte with bit #7 set (0x80 - 0xFF).
But the MIDI Event primitive looks like this
oddson ·
SynthMaker 'simplifies' the status by ignoring/extracting/abstracting the MIDI channel.
Just assume second nibble is zero.
1-2-Many ·
oddson wrote: SynthMaker 'simplifies' the status by ignoring/extracting/abstracting the MIDI channel.
Just assume second nibble is zero.
But doing so makes no sense since the "status pin" is defined for 0-127, 00-7F . . . BUT MIDI Status byte is in the range of 80-FF.
oddson ·
You could argue the OutSim should have made it so Note on status is 8 and Pitch 15 but they didn't.
I do think extracting out the event type from the MIDI channel makes more sense then leaving them together. Otherwise the MIDI event primitive could have a single integer value and leave us with all the integer math.
If you need to convert mixed nibbles I think it would be something like this:
1-2-Many ·
You could argue the OutSim should have made it so Note on status is 8 and Pitch 15 but they didn't.
So what did they make it? That's always been the question.
The component reference states that MIDI Event takes values 0-127 on the Status pin, but there are only 0-15 (0-F) values for midi status messages. So again, if I want to send a program change do I simply put 12 on the status pin?
oddson ·
Make the second hex zero and run it through hex to int.
The component reference is incorrect. I guess that's a big part of the confusion.
1-2-Many ·
OK - good to know. Yes - the major confusion was the "bad" 0-127 info in the component reference. The reference also contains wrong info for the MIDI Splitter Status pin, which made it all the more confusing.
Thanks Oddson
Wrote something here? To have a post removed or your name hidden, write to [email protected].