31 |
String EngineName; |
String EngineName; |
32 |
String InstrumentFile; |
String InstrumentFile; |
33 |
uint InstrumentIndex; |
uint InstrumentIndex; |
34 |
|
float Volume; |
35 |
String Name; |
String Name; |
36 |
}; |
}; |
37 |
|
|
72 |
else |
else |
73 |
pEngine->GetInstrumentManager()->SetMode(id, static_cast<InstrumentManager::mode_t>(Entry.LoadMode)); |
pEngine->GetInstrumentManager()->SetMode(id, static_cast<InstrumentManager::mode_t>(Entry.LoadMode)); |
74 |
} |
} |
|
pEngine->GetInstrumentManager()->SetVolume(id, Entry.Volume); |
|
75 |
} else { |
} else { |
76 |
dmsg(1,("WARNING: no InstrumentManager for engine '%s'\n",Entry.EngineName.c_str())); |
dmsg(1,("WARNING: no InstrumentManager for engine '%s'\n",Entry.EngineName.c_str())); |
77 |
} |
} |
79 |
privateEntry.EngineName = Entry.EngineName; |
privateEntry.EngineName = Entry.EngineName; |
80 |
privateEntry.InstrumentFile = Entry.InstrumentFile; |
privateEntry.InstrumentFile = Entry.InstrumentFile; |
81 |
privateEntry.InstrumentIndex = Entry.InstrumentIndex; |
privateEntry.InstrumentIndex = Entry.InstrumentIndex; |
82 |
|
privateEntry.Volume = Entry.Volume; |
83 |
privateEntry.Name = Entry.Name; |
privateEntry.Name = Entry.Name; |
84 |
midiMapMutex.Lock(); |
midiMapMutex.Lock(); |
85 |
midiMap[Index] = privateEntry; |
midiMap[Index] = privateEntry; |
110 |
entry.EngineName = iter->second.EngineName; |
entry.EngineName = iter->second.EngineName; |
111 |
entry.InstrumentFile = iter->second.InstrumentFile; |
entry.InstrumentFile = iter->second.InstrumentFile; |
112 |
entry.InstrumentIndex = iter->second.InstrumentIndex; |
entry.InstrumentIndex = iter->second.InstrumentIndex; |
113 |
|
entry.Volume = iter->second.Volume; |
114 |
entry.Name = iter->second.Name; |
entry.Name = iter->second.Name; |
115 |
result[iter->first] = entry; |
result[iter->first] = entry; |
116 |
} |
} |
117 |
midiMapMutex.Unlock(); |
midiMapMutex.Unlock(); |
118 |
// complete it with current LoadMode & Volume of each entry |
// complete it with current LoadMode of each entry |
119 |
for (std::map<midi_prog_index_t,entry_t>::iterator iter = result.begin(); |
for (std::map<midi_prog_index_t,entry_t>::iterator iter = result.begin(); |
120 |
iter != result.end(); iter++) |
iter != result.end(); iter++) |
121 |
{ |
{ |
132 |
id.FileName = entry.InstrumentFile; |
id.FileName = entry.InstrumentFile; |
133 |
id.Index = entry.InstrumentIndex; |
id.Index = entry.InstrumentIndex; |
134 |
entry.LoadMode = static_cast<mode_t>(pManager->GetMode(id)); |
entry.LoadMode = static_cast<mode_t>(pManager->GetMode(id)); |
|
entry.Volume = pManager->GetVolume(id); |
|
135 |
} else { // engine does not provide an InstrumentManager |
} else { // engine does not provide an InstrumentManager |
136 |
// use default values |
// use default value |
137 |
entry.LoadMode = ON_DEMAND; |
entry.LoadMode = ON_DEMAND; |
|
entry.Volume = 1.0f; |
|
138 |
} |
} |
139 |
EngineFactory::Destroy(pEngine); |
EngineFactory::Destroy(pEngine); |
140 |
} |
} |
150 |
entry.EngineName = iter->second.EngineName; |
entry.EngineName = iter->second.EngineName; |
151 |
entry.InstrumentFile = iter->second.InstrumentFile; |
entry.InstrumentFile = iter->second.InstrumentFile; |
152 |
entry.InstrumentIndex = iter->second.InstrumentIndex; |
entry.InstrumentIndex = iter->second.InstrumentIndex; |
153 |
Engine* pEngine = EngineFactory::Create(iter->second.EngineName); |
entry.Volume = iter->second.Volume; |
|
// try to retrieve volume from InstrumentManager entry |
|
|
if (pEngine && pEngine->GetInstrumentManager()) { |
|
|
InstrumentManager::instrument_id_t id; |
|
|
id.FileName = iter->second.InstrumentFile; |
|
|
id.Index = iter->second.InstrumentIndex; |
|
|
entry.Volume = pEngine->GetInstrumentManager()->GetVolume(id); |
|
|
} else entry.Volume = 1.0f; // default value |
|
|
if (pEngine) EngineFactory::Destroy(pEngine); |
|
154 |
//TODO: for now we skip the LoadMode and Name entry here, since we don't need it in the MidiInputPort |
//TODO: for now we skip the LoadMode and Name entry here, since we don't need it in the MidiInputPort |
155 |
result = entry; |
result = entry; |
156 |
} |
} |