[sdiy] FW: FW: Communications with voices in a polyphonic synth
cheater cheater
cheater00 at gmail.com
Fri Mar 12 15:27:16 CET 2010
woah, how did those funny characters get in there, that's crazy.
This keyboard is german though, it's probably inhabited by satan
and/or sammpa tolvanen.
bewildered-D.
On Fri, Mar 12, 2010 at 15:25, cheater cheater <cheater00 at gmail.com> wrote:
> So not so easy after all?
>
> with OSC, you don't have to support anything, so you can just
> implement 1 hook and ignore the rest, and nothing bad will happen,
> because OSC########## works on packet data. The state machine for that
> is taken care of in the network layer.
>
> D.
>
> On Fri, Mar 12, 2010 at 14:44, Jerry Gray-Eskue <jerryge at cableone.net> wrote:
>>
>>
>> Achim correctly pointed out that the code I posted needs to handle Real Time
>> messages, here is the change:
>>
>> Thanks Achim
>>
>> ============ Original =============
>> ...
>> if(MidiByte >= 0x80)
>> {
>>
>> // STATUS Byte
>> MidiType = MidiByte;
>>
>> if (MidiChannel != 0x0f) // Channel 16 for OMNI
>> {
>> if((MidiByte & 0x0f) != MidiChannel)
>> {
>> MidiType = 0;
>> }
>> }
>> DataByteCount = 0;
>>
>> }
>> else
>> {
>> // Data Byte
>> switch(MidiType & 0xf0)
>> ...
>> ============================================
>> =========== Minimum Change To ==============
>> ...
>> if(MidiByte >= 0x80)
>> {
>> if(MidiByte >= 0xf8)
>> {
>> //System Real Time Messages
>> }
>> else
>> {
>> // STATUS Byte
>> MidiType = MidiByte;
>>
>> if (MidiChannel != 0x0f) // Channel 16 for OMNI
>> {
>> if((MidiByte & 0x0f) != MidiChannel)
>> {
>> MidiType = 0;
>> }
>> }
>> DataByteCount = 0;
>> }
>> }
>> else
>> {
>> // Data Byte
>> switch(MidiType & 0xf0)
>> ...
>> ============================================================================
>> ========
>> =========== Change To With Placeholders for System Real Time Messages
>> ==============
>> ...
>> if(MidiByte >= 0x80)
>> {
>> if(MidiByte >= 0xf8)
>> {
>> //System Real Time Messages
>> //============================
>> // System Common Messages 0xf1 - 0xf7
>> // are not supported - If needed Add single byte messages here
>> // multi byte message cases in switch(MidiType & 0xf0) below
>> // NOTE: 0xf7 is EOX - end of System Exclusive
>> // if supported look for it and finish the Sys Ex task here
>> /* Placeholder
>> switch(MidiByte)
>> {
>> case 0xf8:
>> {
>> // Timing Clock
>> break;
>> }
>> case 0xf9:
>> {
>> // Undefined
>> break;
>> }
>> case 0xfa:
>> {
>> // Start
>> break;
>> }
>> case 0xfb:
>> {
>> // Continue
>> break;
>> }
>> case 0xfc:
>> {
>> // Stop
>> break;
>> }
>> case 0xfd:
>> {
>> // Undefined
>> break;
>> }
>> case 0xfe:
>> {
>> // Active Sensing
>> break;
>> }
>> case 0xff:
>> {
>> // System Reset
>> break;
>> }
>> }
>> */
>> }
>> else
>> {
>> // STATUS Byte
>> MidiType = MidiByte;
>>
>> if (MidiChannel != 0x0f) // Channel 16 for OMNI
>> {
>> if((MidiByte & 0x0f) != MidiChannel)
>> {
>> MidiType = 0;
>> }
>> }
>> DataByteCount = 0;
>> }
>> }
>> else
>> {
>> // Data Byte
>> switch(MidiType & 0xf0)
>> ...
>> ==========================
>>
>> -----Original Message-----
>> From: ASSI [mailto:Stromeko at nexgo.de]
>> Sent: Friday, March 12, 2010 12:04 AM
>> To: Jerry Gray-Eskue
>> Subject: Re: [sdiy] FW: Communications with voices in a polyphonic synth
>>
>>
>> [off-list]
>>
>> Hi Jerry,
>>
>> even for this stripped down FSM you would need to handle RT messages
>> seperately as side-channel data, as they can come between status and
>> data bytes (and hence must not reset your DataByteCount).
>>
>>
>> Regards,
>> Achim.
>> --
>> +<[Q+ Matrix-12 WAVE#46+305 Neuron microQkb Andromeda XTk Blofeld]>+
>>
>> Factory and User Sound Singles for Waldorf Q+, Q and microQ:
>> http://Synth.Stromeko.net/Downloads.html#WaldorfSounds
>>
>> _______________________________________________
>> Synth-diy mailing list
>> Synth-diy at dropmix.xs4all.nl
>> http://dropmix.xs4all.nl/mailman/listinfo/synth-diy
>>
>
More information about the Synth-diy
mailing list