Hmmm, does this really work? I don't think so.
Example:
1. status: note on (-> thisByte -> runningStatus)
2. data: key (-> thisByte, ignored)
3. data: vel (-> thisByte, checked against 0, checked againt 0x80)
4. status: note off (read as key !!!)
5. data: key (read as vel, checked against 0x80 !!!)
6. data: vel (read as key !!!)
7. status: note on (read as vel, checked against 0x80 !!!)
The Problem is, that the second data byte is used for the running status
byte test.
Yours,
Jacob
On Tue, Jul 25, 2006 at 07:00:54PM +0200, Jens M Andreasen wrote:
Bzzzt ... My wrong!
thisByte = nextByte();
for(;;)
{
if(thisByte & 0x80)
runningStatus = thisByte;
//... after which we get that:
if(runningStatus == NOTE_ON || runningStatus == NOTE_OFF)
{
thisByte = nextByte();
thisByte = nextByte();
// note_on with zero velocity is note_off
if(thisByte == 0 || runningStatus == NOTE_OFF)
setLed(NOTE_OFF);
else
setLed(NOTE_ON);
}
else
thisByte = nextByte();
}
> Lee
>
--