int JackNetSlaveInterface::DataSend() { if (MidiSend(fNetMidiPlaybackBuffer, fParams.fReturnMidiChannels, fParams.fReturnAudioChannels) == SOCKET_ERROR) { return SOCKET_ERROR; } return AudioSend(fNetAudioPlaybackBuffer, fParams.fReturnAudioChannels); }
int JackNetMasterInterface::DataSend() { if (MidiSend(fNetMidiCaptureBuffer, fParams.fSendMidiChannels, fParams.fSendAudioChannels) == SOCKET_ERROR) { return SOCKET_ERROR; } return AudioSend(fNetAudioCaptureBuffer, fParams.fSendAudioChannels); }
static pascal void AccProcess(long d, short refNum, long a1, long a2, long a3) { short i; for (i = 0; i <= 15; i++) { MidiEvPtr e = MidiNewEv(typeNote); if (e) { Pitch(e) = 60; Vel(e) = 80; Dur(e) = 16; Chan(e) = i; } MidiSend (refNum, e); } MidiTask (AccProcess, d + 32, refNum, a1, a2, a3); }
//_______________________________________________________________________ static void * inputThread (void * ptr) { DrvMemPtr mem = (DrvMemPtr)ptr; StreamFifoPtr f = &mem->inFifo; signal(SIGDRVQUIT, QuitHandler); while (!mem->done) { char c; ssize_t n = read (mem->devId, &c, 1); if (n == 1) { MidiEvPtr e = MidiParseByte (f, c); if (e) MidiSend (mem->refNum, e); } else { printf ( "input thread read error"); mem->done = true; } } return 0; }
void transposeAndDelay (short aRefNum) { MidiEvPtr e; while (e = MidiGetEv(aRefNum)) { switch (EvType(e)) { case typeNote: case typeKeyOn: case typeKeyOff: MidiSetField(e, 0, 7 + MidiGetField(e,0)); // transpose pitch + 7 Date(e) += 1000; // delay 1000 ms MidiSend(aRefNum, e); break; default: MidiFreeEv(e); } } }
static inline void Send (MidiEvPtr e, SCCPtr scc) { Port(e)=scc->inSlots[Port(e)]; MidiSend (scc->refNum, e); }
void thru (short aRefNum) { MidiEvPtr e; while (e = MidiGetEv(aRefNum)) MidiSend(aRefNum, e); }