[sdiy] FW: FW: Communications with voices in a polyphonic synth

cheater cheater cheater00 at gmail.com
Fri Mar 12 15:25:51 CET 2010


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