예제 #1
0
파일: MIDIPlugin.c 프로젝트: lsehub/Handle
EXPORT(sqInt) primitiveMIDIClosePort(void) {
	sqInt portNum;

	portNum = interpreterProxy->stackIntegerValue(0);
	if (interpreterProxy->failed()) {
		return null;
	}
	sqMIDIClosePort(portNum);
	if (interpreterProxy->failed()) {
		return null;
	}
	interpreterProxy->pop(1);
	return null;
}
예제 #2
0
int sqMIDIOpenPort(int portNum, int readSemaIndex, int interfaceClockRate) {
/* Open the given port, if possible. If non-zero, readSemaphoreIndex
   specifies the index in the external objects array of a semaphore
   to be signalled when incoming MIDI data is available. Note that
   not all implementations support read semaphores (this one does
   not); see sqMIDICanUseSemaphore. The interfaceClockRate parameter
   specifies the clock speed for an external MIDI interface
   adaptor on platforms that use such adaptors (e.g., Macintosh).
   Fail if there is no port of the given number.*/

#pragma unused(readSemaIndex)
	int serialPorts;
	int err;


	serialPorts = sqMIDIGetSerialPortCount();
	if (portNum > serialPorts) return interpreterProxy->success(false);

	if (portNum == serialPorts) {
		openQuicktimeMIDIPort();
		return 0;
	}

    if (serialPortOpenFn == 0) {
		return interpreterProxy->success(false);
	}

	err = ((int (*) (int , int , int , int , int , int , int , int , int ))serialPortOpenFn)(portNum, 9600, 1, 0, 8, 0, 0, 0, 0);
	if (!err) {
		err = setMidiClockRate(portNum, interfaceClockRate);
		if (err) {
			sqMIDIClosePort(portNum);
		}
	}   
	return 0;
}