void MidiPort::setMidiDevice(MidiDevice* dev) { // close old device if (_device) { _device->setPort(-1); _device->close(); } // set-up new device if (dev) { for (int i = 0; i < kMaxMidiPorts; ++i) { MidiPort* mp = &midiPorts[i]; if (mp->device() == dev) { // move device _state = mp->state(); mp->clearDevice(); break; } } _device = dev; _state = _device->open(); _device->setPort(portno()); } else // dev is null, clear this device clearDevice(); }
void MidiPort::setMidiDevice(MidiDevice* dev) { // close old device if (_device) { if (_device->isSynthPlugin()) { _instrument = genericMidiInstrument; } _device->setPort(-1); _device->close(); } // set-up new device if (dev) { for (int i = 0; i < MIDI_PORTS; ++i) { MidiPort* mp = &midiPorts[i]; if (mp->device() == dev) { if (dev->isSynthPlugin()) mp->setInstrument(genericMidiInstrument); // move device _state = mp->state(); mp->clearDevice(); break; } } _device = dev; if (_device->isSynthPlugin()) { SynthPluginDevice* s = (SynthPluginDevice*) _device; _instrument = s; //_instrument = genericMidiInstrument; } _state = _device->open(); _device->setPort(portno()); } else // dev is null, clear this device clearDevice(); }