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; }
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; }