Beispiel #1
0
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();
}
Beispiel #2
0
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();
}