42 event->timestamp = cslMIDI->
time;
52 ((
unsigned) ((Pm_MessageStatus(event->message) & 0xF0) >> 4) );
53 cslMIDI->
channel = Pm_MessageStatus(event->message) & 0x0F;
54 cslMIDI->
data1 = Pm_MessageData1(event->message);
55 cslMIDI->
data2 = Pm_MessageData2(event->message);
56 cslMIDI->
time =
event->timestamp;
66 return (((
unsigned)message << 4) + channel );
109 if(err != pmNoError )
115 char dev_nam[128], * nl;
117 printf(
"\nPortMidi devices:\n");
118 for (i = 0; i < Pm_CountDevices(); i++) {
119 const PmDeviceInfo *info = Pm_GetDeviceInfo(i);
120 if ((nl = index(info->name,
'\n')) == NULL)
121 strcpy(dev_nam, info->name);
123 strncpy(dev_nam, info->name, (nl - info->name));
124 printf(
"\tDeviceID %d: %s, %s", i, info->interf, dev_nam);
125 if (info->input) printf(
" (input)");
126 if (info->output) printf(
" (output)");
133 printf(
"PortMidi device count = %d\n", Pm_CountDevices());
139 return (
int) Pm_CountDevices();
143 return (
int) Pm_GetDefaultInputDeviceID();
147 return (
int) Pm_GetDefaultOutputDeviceID();
151 return Pm_GetDeviceInfo((PmDeviceID) deviceID );
158 logMsg(
kLogError,
"An error occured while using PortMIDI, Error# %d, %s",err, Pm_GetErrorText(err));
170 mDeviceID = Pm_GetDefaultInputDeviceID();
185 if( ! info->input ) {
196 if(err != pmNoError )
214 if(err != pmNoError ) {
223 #ifdef DEBUG_MIDIIO_READ
224 unsigned cmd, voice, pitch = 0, vel;
229 cmd = Pm_Messagevoid(msg) & 0xF0;
230 voice = Pm_Messagevoid(msg) & 0x0F;
231 pitch = Pm_MessageData1(msg);
232 vel = Pm_MessageData2(msg);
233 printf(
"\tGot message: time %.3f, cmd: %x midich: %d data1: %d data2: %d\n", (
float)
mBuffer[0].timestamp / 1000.0f, cmd, voice, pitch, vel);
237 logMsg(
"in MIDIIn::read(). MIDI message not read");
246 unsigned cmd, voice, pitch = 0, vel;
249 cmd = (Pm_MessageStatus(msg) & 0xF0) >> 4;
250 voice = Pm_MessageStatus(msg) & 0x0F;
251 pitch = Pm_MessageData1(msg);
252 vel = Pm_MessageData2(msg);
304 printf(
"Unknown input: void=%d chan=%d value1=%d value2=%d", cmd, voice, pitch, vel);
308 #ifdef DEBUG_MIDIIO_READ_INTERPRET
314 unsigned cmd, voice, pitch = 0, vel;
317 cmd = Pm_MessageStatus(msg) & 0xF0;
318 voice = Pm_MessageStatus(msg) & 0x0F;
319 pitch = Pm_MessageData1(msg);
320 vel = Pm_MessageData2(msg);
321 printf(
"\tGot message: time %.3f, cmd: %x midich: %d data1: %d data2: %d\n", (
float)
mBuffer[0].timestamp / 1000.0f, cmd, voice, pitch, vel);
325 printf(
"MIDIIn message received\n");
328 printf(
"\t message: kNone");
331 printf(
"\t message: kNoteOff");
334 printf(
"\t message: kNoteOn");
337 printf(
"\t message: kPolyTouch");
340 printf(
"\t message: kControlChange");
343 printf(
"\t message: kProgramChange");
346 printf(
"\t message: kAftertouch");
349 printf(
"\t message: kPitchWheel");
352 printf(
"\t message: kSysEX");
355 printf(
"\t message: unknown");
406 err = Pm_SetFilter(
mMIDIStream, PM_FILT_ACTIVE | PM_FILT_CLOCK);
407 if(err != pmNoError )
416 if(err != pmNoError )
426 if(err != pmNoError )
432 logMsg(
"active sensing filter state not changed, mFilterFlag = %d",
mFilterFlag);
441 if(err != pmNoError )
451 if(err != pmNoError )
467 if(err != pmNoError )
477 if(err != pmNoError )
494 mDeviceID = Pm_GetDefaultOutputDeviceID();
510 if( ! info->output ) {
521 if(err != pmNoError )
538 long eventLength = 1;
541 if(err != pmNoError )
547 for(i = 0; i < length; i++ ) {
561 if(err != pmNoError )
568 if(err != pmNoError )
580 if(err != pmNoError )
589 (
int)ceil(amplitude * 127.0f) );
592 if(err != pmNoError )
604 if(err != pmNoError )
613 (
int)ceil(amplitude * 127.0f) );
616 if(err != pmNoError )
628 if(err != pmNoError )
640 if(err != pmNoError )
652 if(err != pmNoError )
664 if(err != pmNoError )
676 if(err != pmNoError )