Csound Csound-dev Csound-tekno Search About

Re: sequencer

Date1999-07-26 16:17
FromMike Berry
SubjectRe: sequencer
	The solution that I am working on implementing in my own software uses
MIDI as a base identifier with further long and floating point tags in
the message.  So a note on might look like:

long NumberOfMidiBytes  = 3
	unsigned char  = 0x90  (Note On)
	unsigned char  = 0x20  (Note number)
	unsigned char  = 0x80  (Velocity)
	unsigned char pad
long Number OfLongParameters = 2
	long LongParam1
	long LongParam2
long Number OfFloatParameters = 3
	float FloatParam1
	float FloatParam2
	float FloatParam3

	So, for instance, LongParam1 might be the duration of the note. 
FloatParam1 might be the pitch of the note in Hz.  And these could be
defined by the receiver however they wished, and with as many p fields
as necessary.  I pass these messages using UDP.  When the UDP is
received, the receiver determines if only MIDI is supported or if the
extended format is supported, and parses out the message accordingly.
	Obviously the gap is in hardware - I don't have a slider box which
supports anything besides MIDI.  But when the communication is between
two pieces of software, this is easy to use.
	I preserve the MIDI data also because it is a useful format for
defining triggering information, particularly if your app already has a
MIDI triggering system built in (as GrainWave does).  So these messages
can enter into that triggering system but still carry further data.
-- 
Mike Berry
mikeb@nmol.com