Re: [seq24-users] seq24-0.7.0 (sysex)
Brought to you by:
rcbuse
|
From: federico <xa...@in...> - 2005-08-28 02:25:45
|
Rob Buse ha scritto:
>>>i was wondering if it is possible to implement System Exclusive MIDI
>>>
>>>
>>messages(?).
>>
>>
>
>currently the only thing that seq24 does is act as a thru for incoming
>sysex.
>
>
>
>>>think that a SysEx message it is like a midi controller message, example:
>>>CC: 0xB# 0xPP 0xVV
>>>SysEx: 0xF0 0x32 0x2# 0xPP 0xVV 0xF7
>>>
>>>
>
>Well, each device has such a different sysex format, I can not think of
>an easy way to support it. Where should it go in the midi stream? How
>should seq24 represent each block of sysex visually? Does seq24 play
>
>
i think they are the same as a control change, so they can be
represented in the sequence data window
>the sysex each time though the loop? I really can't think of any way
>
>
yes, it should be played every time, like the midi controller messages
>to implement a sysex editor other than just a hex editor style.
>
>Maybe if the user specifies the sysex pattern ahead of time, and then the
>data editor will modify one byte out of that stream?
>
>
good! i also think those messages can be put in a new submenu called
sysex (where the midi controllers are).
the user should be able to put its own messages (even by adding some
quoted strings and bytes to a C file) with a simple template, ie.:
#define SYSEX_MAX 10
struct sysex_message {
char name[20];
unsigned char message[SYSEX_MAX];
int offset_channel;
int offset_param;
int offset_value;
};
example[] =
{
{ "cutoff", {0xf0, 0x32, 0x31, 0x32, 0x00, 0xf7}, 2, 3, 4 },
{ "resonance", {0xf0, 0x32, 0x31, 0x33, 0x00, 0xf7}, 2, 3, 4 },
{ "lfo3 deep", {0xf0, 0x32, 0x31, 0x34, 0x00, 0xf7}, 2, 3, 4 }
}
we can collect and share all these parameters, so users can find their
synth's parameters already in.
>And the VAL's can be edited with the mouse?
>
>
yes! i think they should be act and look like normal controller
messages, because they do the same function.
>
>
>
>>what would happen if i load a midi file with sysex data in it? (ps. does
>>seq24 follows some standard for its format?)
>>will seq24 play the sysex strings?
>>
>>
>
>seq24 uses the midi file standard. It will currently just throw away
>sysex if found in the file.
>
>rob
>
>
ouch! i think when defining sysex messages, there should be a
"reverse-resolution" of the sysex type, so that seq24 could recognize
that those sysex string is my bass cutoff.
example function:
int match_sysex_data(unsigned char* data)
{
bool match;
//cycle through user-defined messages (usermsg[])
for(int id=0; id<MSG_COUNT; id++) {
match = true;
for(int i=0; i<SYSEX_MAX && data[i] != 0xf7; i++) {
//compare byte-by-byte skipping variable bytes (chan, value)
if(i != usermsg[id].offset_channel &&
i != usermsg[id].offset_value) {
match = match && (usermsg[id].message[i]==data[i]);
}
}
if(match) return id;
}
return -1;
}
|