19 |
***************************************************************************/ |
***************************************************************************/ |
20 |
|
|
21 |
#include "MidiInputDevicePlugin.h" |
#include "MidiInputDevicePlugin.h" |
22 |
|
#include "../../common/global_private.h" |
23 |
|
|
24 |
namespace LinuxSampler { |
namespace LinuxSampler { |
25 |
|
|
33 |
|
|
34 |
|
|
35 |
|
|
36 |
|
// *************** ParameterPortsPlugin *************** |
37 |
|
// * |
38 |
|
|
39 |
|
void MidiInputDevicePlugin::ParameterPortsPlugin::ForceSetValue(int ports) { |
40 |
|
OnSetValue(ports); |
41 |
|
iVal = ports; |
42 |
|
} |
43 |
|
|
44 |
|
|
45 |
// *************** MidiInputDevicePlugin *************** |
// *************** MidiInputDevicePlugin *************** |
46 |
// * |
// * |
47 |
|
|
48 |
MidiInputDevicePlugin::MidiInputDevicePlugin(std::map<String, DeviceCreationParameter*> Parameters, |
MidiInputDevicePlugin::MidiInputDevicePlugin(std::map<String, DeviceCreationParameter*> Parameters, |
49 |
void* pSampler) : |
void* pSampler) : |
50 |
MidiInputDevice(Parameters, pSampler) { |
MidiInputDevice(Parameters, pSampler) { |
51 |
AcquirePorts(1); |
AcquirePorts(((DeviceCreationParameterInt*)Parameters["PORTS"])->ValueAsInt()); |
52 |
} |
} |
53 |
|
|
54 |
MidiInputDevicePlugin::~MidiInputDevicePlugin() { |
MidiInputDevicePlugin::~MidiInputDevicePlugin() { |
86 |
return new MidiInputPortPlugin(this, Ports.size()); |
return new MidiInputPortPlugin(this, Ports.size()); |
87 |
} |
} |
88 |
|
|
89 |
void MidiInputDevicePlugin::DeleteMidiPort(MidiInputPort* pPort) { |
void MidiInputDevicePlugin::AddMidiPort() { |
90 |
delete (MidiInputPortPlugin*)pPort; |
static_cast<ParameterPortsPlugin*>( |
91 |
|
Parameters["PORTS"])->ForceSetValue(Ports.size() + 1); |
92 |
|
} |
93 |
|
|
94 |
|
void MidiInputDevicePlugin::RemoveMidiPort(MidiInputPort* pPort) { |
95 |
|
// reorder map so pPort is last |
96 |
|
int portNumber = 0; |
97 |
|
std::map<int, MidiInputPort*>::iterator i = Ports.begin(); |
98 |
|
for ( ; i != Ports.end(); ++i, portNumber++) { |
99 |
|
if (i->second == pPort) break; |
100 |
|
} |
101 |
|
std::map<int, MidiInputPort*>::iterator previ = i; |
102 |
|
for (++i ; i != Ports.end(); ++i, portNumber++) { |
103 |
|
previ->second = i->second; |
104 |
|
static_cast<MidiInputPortPlugin*>(previ->second)->portNumber = portNumber; |
105 |
|
previ->second->PortParameters()["NAME"]->SetValue("Port " + ToString(portNumber)); |
106 |
|
previ = i; |
107 |
|
} |
108 |
|
previ->second = pPort; |
109 |
|
|
110 |
|
// delete the last port |
111 |
|
static_cast<ParameterPortsPlugin*>( |
112 |
|
Parameters["PORTS"])->ForceSetValue(Ports.size() - 1); |
113 |
} |
} |
114 |
|
|
115 |
bool MidiInputDevicePlugin::isAutonomousDevice() { |
bool MidiInputDevicePlugin::isAutonomousDevice() { |