#include <CsoundLib64/csound.h>
static int midi_open(CSOUND *csound, void **userData,
const char *devName) {
// Initialize MIDI device
return OK;
}
static int midi_read(CSOUND *csound, void *userData,
unsigned char *buf, int nBytes) {
int cnt = 0;
int data;
// Read MIDI bytes from your source
while (scanf("%d", &data) > 0 && cnt < nBytes) {
buf[cnt++] = data;
}
return cnt;
}
static int midi_close(CSOUND *csound, void *userData) {
return OK;
}
int main(int argc, const char *argv[]) {
CSOUND *csound = csoundCreate(NULL, NULL);
// Set MIDI callbacks
csoundSetExternalMidiInOpenCallback(csound, midi_open);
csoundSetExternalMidiReadCallback(csound, midi_read);
csoundSetExternalMidiInCloseCallback(csound, midi_close);
csoundSetHostMIDIIO(csound);
// Set options and compile
csoundSetOption(csound, "-M0");
csoundSetOption(csound, "-odac");
csoundCompile(csound, argc, argv);
csoundStart(csound);
while (csoundPerformKsmps(csound) == 0);
csoundDestroy(csound);
return 0;
}