Yahoo Groups archive

The Logic Off Topic list

Index last updated: 2026-04-28 23:27 UTC

Message

Re: [L-OT] Understanding SYSEX

2001-04-22 by Hendrik Jan Veenstra

Thoughts from the mind of litepipe, 22-04-2001:

>   Hello Hendrik!! Excuse me for quoting Keroac but "I dig you man!!" I feel
>guilty for getting all of this information for free.

Yeah, you should.  Deeply guilty.  If it troubles you too much, I 
could give you my bank-account number...  And it's 'Kerouac' BTW.

  :-)

>You should write a book. Although you might only sell one copy a 
>year because aparently there aren't many into this side of things.

That's the problem.  If I really thought there was any sort of 
serious market for this stuff, I might indeed consider writing a 
book...  Thanks for the compliment though.

>Todays post helped me out immensely!!
>I got both SYSEX fader and SYSEX Mapper working.

Great!  After all, that's what it was all about.

[14 bit faders]
>It will be clear that this is _much_ more involved than the previous
>>  situation in which a 'decent' 0-127 value range was used.  Describing
>>  how to do this efficiently would require another few pages.  I don't
>>  mind writing them, but not until I know that you have use for such
>>  information (after all, I _do_ have a life :-).
>
>   I don't think this will be neccessary quite yet. But watch out!! I might
>just take you up on your offer in some time:))

Well, as soon as you want to modify a parameter that has a -50 to +50 
range (detune or so), or a 0 - 500 range (delay in ms?) you run into 
14bit faders.

>   The only question I have right now is how do I get the faders to affect
>different midi channels? They seem to be universal. For example: I want to
>set up a fader to change the Pri. Instrument for every midi channel. So say
>I set up a SYSEX fader with messgae F0 18 08 00 03 17 00 04 00 F7. Then when
>I close the fader and choose the channel in the parameters box (lets say
>channel 2) I can tweak the Pri. Instrument on Cha. 2. But when I switch to
>Cha. 1 it will also work on that channel with Cha. 2 selected in the
>Parameters box. Why?

Because sysex messages don't necessarily have a channel assigned to 
them.  If you look at the format for e.g. a note-on event, you see 
that it's (hex) "8x nn vv", where x is the midichannel (0-F), and 
nn/vv are note and velocity.  So the channel is an integral part of 
the message, and it's _this_ part that is affected by the fader's 
'channel' setting.
Now look at a generic sysex message: F0 vv vv ... F7, where 'vv' is a 
data byte.  No channel to be seen anywhere... and so the fader's 
channel setting has no effect.

A sysex message _can_ have a channel specified, but the way this is 
done  depends on the manufacturer -- i.e. on the sysex 
implementation.  A manufacturer could e.g. decide that in his sysex 
implementation, the 4th byte is always the midichannel.  Another 
manufacturer could use the 5th byte for that, and yet another could 
decide that his machines are channel-independent and thus don't need 
a channel-specifier at all.
So Logic's faders have no way of knowing where the manufacturer put 
the channel info in the message -- and hence their channel parameter 
has no effect.

Taking my M1 as an example again: it's syex always starts with "F0 42 
3x 19.." where 'x' (0-F) is the midichannel the M1 is set to.

Given the format of your generic sysex mesages, which was
   F0 18 id dd 03 3C 00 27 00 F7 ,
and comparing that to the sysex string you give above,
   F0 18 08 00 03 17 00 04 00 F7  ,
I would suspect the 'dd' to be the channel specifier.  In this case 
the channel would be channel 1 (channels 1-16 are counted as 0 - F 
(hex)).
So in order to send on a different channel, you would then change the 4th byte.

If this works or not depends on 1) if my conjecture on the meaning of 
the 4th byte is right (obviously :-) -- your manual should tell you 
where the channel byte is.  And on 2) the 'meaning' of midichannel on 
your machine.  My M1 for example has a setting, called the 'global 
channel'.  If the global channel = 1, then sysex sent on a different 
channel will be ignored.  So in my case, changing the channel byte is 
pointless, unless I also change the channel setting of the synth. 
The only use for the channel byte in this case is to be able to 
distinguish up to 16 M1's in the same midi-chain -- not something 
you'll often need :-).

Oh... I suddenly realise another possibility...  If I use the M1 in 
multitimbral mode, I have access to 8 instruments on 8 (possibly) 
different midichannels.  BUT, sysex should _still_ be sent on the 
machine's Global Channel, regardless of the channels on which the 8 
instruments play.
If I want to change the instruments -- i.e. have a piano playing on 
channel 5 instead of a synthbass -- I cannot simply send a program 
change on channel 5, but have to send a sysex parameter change 
instead.
So if the Global Channel is 1, I would send something like "sysex, 
for an M1 on channel 1: change parameter 48 to 23", where parameter 
48 happens to be "the current program playing on channel 5".

I don't know the structure of your EMU of course, and don't have a 
clue as to what primary and secundary programs are :-), but something 
similar might apply in your case.

>  It is possible to set up faders to tweak the pri. and
>sec. instruments of every midi channel right? I couldn't get this to work
>with the SYSEX fader or SYSEX mapper.

A combination of regular (non-sysex) and sysex midi messages should 
be able to accomplish _anything_ on your synth.

>   I feel like I'm getting close. Basically what I'm trying to do is set up
>an environment so that I can create different sounds with the presets that I
>have on my keyboard for differnt songs.

This indeed sounds as if you use 'plain' programs to create a 
multi-timbral setup -- in which case the above might apply.  Maybe 
it's indeed a matter of sending the right sysex parameter change, 
instead of sending "channelised program changes".  Probably a matter 
of meditating over your manual for long enough :-).


cheers,
Hendrik Jan
-- 
     Hendrik Jan Veenstra    ( h@... )

Attachments

Move to quarantaine

This moves the raw source file on disk only. The archive index is not changed automatically, so you still need to run a manual refresh afterward.