/[svn]/linuxsampler/trunk/src/drivers/midi/MidiInstrumentMapper.cpp
ViewVC logotype

Diff of /linuxsampler/trunk/src/drivers/midi/MidiInstrumentMapper.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 957 by schoenebeck, Mon Nov 27 21:34:55 2006 UTC revision 958 by schoenebeck, Wed Nov 29 19:48:38 2006 UTC
# Line 31  namespace LinuxSampler { Line 31  namespace LinuxSampler {
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    
# Line 71  namespace LinuxSampler { Line 72  namespace LinuxSampler {
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          }          }
# Line 79  namespace LinuxSampler { Line 79  namespace LinuxSampler {
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;
# Line 109  namespace LinuxSampler { Line 110  namespace LinuxSampler {
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          {          {
# Line 130  namespace LinuxSampler { Line 132  namespace LinuxSampler {
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          }          }
# Line 150  namespace LinuxSampler { Line 150  namespace LinuxSampler {
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          }          }

Legend:
Removed from v.957  
changed lines
  Added in v.958

  ViewVC Help
Powered by ViewVC