int MidiDriver_DMEDIA::open() { int numinterfaces; int i; const char *var; char *portName; if (_isOpen) return MERR_ALREADY_OPEN; _isOpen = true; numinterfaces = mdInit(); if (numinterfaces <= 0) { fprintf(stderr, "No MIDI interfaces configured.\n"); perror("Cannot initialize libmd for sound output"); return -1; } if (getenv("RESIDUALVM_MIDIPORT")) { _deviceNum = atoi(getenv("RESIDUALVM_MIDIPORT")); _midiportName = mdGetName(_deviceNum); } else { var = ConfMan.get("dmedia_port").c_str(); if (strlen(var) > 0) { for (i = 0; i < numinterfaces; i++) { portName = mdGetName(i); if (strcmp(var, portName) == 0) { _deviceNum = i; _midiportName = portName; } } } } _midiPort = mdOpenOutPort(_midiportName); if (!_midiPort) { warning("Failed to open MIDI interface %s", _midiportName); return -1; } _fd = mdGetFd(_midiPort); if (!_fd) { warning("Failed to aquire filehandle for MIDI port %s", _midiportName); mdClosePort(_midiPort); return -1; } mdSetStampMode(_midiPort, MD_NOSTAMP); /* don't use Timestamps */ return 0; }
int midi_open(const char *name, int input) { MDport md; mus_midi_initialize(); if (input == MIDI_READ) md = mdOpenInPort((char *)name); else md = mdOpenOutPort((char *)name); if (md == NULL) { #ifdef NO_SNDLIB fprintf(stderr, "can't open %s\n", name); return(-1); #else return(mus_error(MUS_MIDI_OPEN_ERROR, "can't open %s", name)); #endif } mdSetStampMode(md, MD_NOSTAMP); return(new_midi_line(name, md, input)); }