/[svn]/qsampler/trunk/src/qsamplerInstrument.cpp
ViewVC logotype

Diff of /qsampler/trunk/src/qsamplerInstrument.cpp

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

revision 964 by capela, Mon Dec 4 17:06:04 2006 UTC revision 1386 by schoenebeck, Fri Oct 5 17:41:49 2007 UTC
# Line 1  Line 1 
1  // qsamplerInstrument.cpp  // qsamplerInstrument.cpp
2  //  //
3  /****************************************************************************  /****************************************************************************
4     Copyright (C) 2004-2006, rncbc aka Rui Nuno Capela. All rights reserved.     Copyright (C) 2004-2007, rncbc aka Rui Nuno Capela. All rights reserved.
5    
6     This program is free software; you can redistribute it and/or     This program is free software; you can redistribute it and/or
7     modify it under the terms of the GNU General Public License     modify it under the terms of the GNU General Public License
# Line 19  Line 19 
19    
20  *****************************************************************************/  *****************************************************************************/
21    
22    #include "qsamplerUtilities.h"
23  #include "qsamplerAbout.h"  #include "qsamplerAbout.h"
24  #include "qsamplerInstrument.h"  #include "qsamplerInstrument.h"
25    
# Line 30  Line 31 
31  //  //
32    
33  // Constructor.  // Constructor.
34  qsamplerInstrument::qsamplerInstrument ( int iBank, int iProgram )  qsamplerInstrument::qsamplerInstrument ( int iMap, int iBank, int iProg )
35  {  {
36            m_iMap          = iMap;
37          m_iBank         = iBank;          m_iBank         = iBank;
38          m_iProgram      = iProgram;          m_iProg         = iProg;
39          m_iInstrumentNr = 0;;          m_iInstrumentNr = 0;;
40          m_fVolume       = 1.0f;          m_fVolume       = 1.0f;
41          m_iLoadMode     = 0;          m_iLoadMode     = 0;
# Line 46  qsamplerInstrument::~qsamplerInstrument Line 48  qsamplerInstrument::~qsamplerInstrument
48    
49    
50  // Instrument accessors.  // Instrument accessors.
51    void qsamplerInstrument::setMap ( int iMap )
52    {
53            m_iMap = iMap;
54    }
55    
56    int qsamplerInstrument::map (void) const
57    {
58            return m_iMap;
59    }
60    
61    
62  void qsamplerInstrument::setBank ( int iBank )  void qsamplerInstrument::setBank ( int iBank )
63  {  {
64          m_iBank = iBank;          m_iBank = iBank;
# Line 57  int qsamplerInstrument::bank (void) cons Line 70  int qsamplerInstrument::bank (void) cons
70  }  }
71    
72    
73  void qsamplerInstrument::setProgram ( int iProgram )  void qsamplerInstrument::setProg ( int iProg )
74  {  {
75          m_iProgram = iProgram;          m_iProg = iProg;
76  }  }
77    
78  int qsamplerInstrument::program (void) const  int qsamplerInstrument::prog (void) const
79  {  {
80          return m_iProgram;          return m_iProg;
81  }  }
82    
83    
# Line 141  int qsamplerInstrument::loadMode (void) Line 154  int qsamplerInstrument::loadMode (void)
154    
155    
156  // Sync methods.  // Sync methods.
157  bool qsamplerInstrument::map (void)  bool qsamplerInstrument::mapInstrument (void)
158  {  {
159  #ifdef CONFIG_MIDI_INSTRUMENT  #ifdef CONFIG_MIDI_INSTRUMENT
160    
# Line 151  bool qsamplerInstrument::map (void) Line 164  bool qsamplerInstrument::map (void)
164          if (pMainForm->client() == NULL)          if (pMainForm->client() == NULL)
165                  return false;                  return false;
166    
167          if (m_iBank < 0 || m_iProgram < 0)          if (m_iMap < 0 || m_iBank < 0 || m_iProg < 0)
168                  return false;                  return false;
169    
170          lscp_midi_instrument_t instr;          lscp_midi_instrument_t instr;
171    
172          instr.bank_msb = (m_iBank & 0x3f80) >> 7;          instr.map  = m_iMap;
173          instr.bank_lsb = (m_iBank & 0x7f);          instr.bank = (m_iBank & 0x0fff);
174          instr.program  = (m_iProgram & 0x7f);          instr.prog = (m_iProg & 0x7f);
175    
176          lscp_load_mode_t load_mode;          lscp_load_mode_t load_mode;
177          switch (m_iLoadMode) {          switch (m_iLoadMode) {
# Line 178  bool qsamplerInstrument::map (void) Line 191  bool qsamplerInstrument::map (void)
191          }          }
192    
193          if (::lscp_map_midi_instrument(pMainForm->client(), &instr,          if (::lscp_map_midi_instrument(pMainForm->client(), &instr,
194                  m_sEngineName.latin1(),                          m_sEngineName.latin1(),
195                  m_sInstrumentFile.latin1(),                          lscpEscapePath(m_sInstrumentFile).latin1(),
196                  m_iInstrumentNr,                          m_iInstrumentNr,
197                  m_fVolume,                          m_fVolume,
198                  load_mode,                          load_mode,
199                  m_sName.latin1()) != LSCP_OK) {                          m_sName.latin1()) != LSCP_OK) {
200                  pMainForm->appendMessagesClient("lscp_map_midi_instrument");                  pMainForm->appendMessagesClient("lscp_map_midi_instrument");
201                  return false;                  return false;
202          }          }
# Line 198  bool qsamplerInstrument::map (void) Line 211  bool qsamplerInstrument::map (void)
211  }  }
212    
213    
214  bool qsamplerInstrument::unmap (void)  bool qsamplerInstrument::unmapInstrument (void)
215  {  {
216  #ifdef CONFIG_MIDI_INSTRUMENT  #ifdef CONFIG_MIDI_INSTRUMENT
217    
218          if (m_iBank < 0 || m_iProgram < 0)          if (m_iMap < 0 || m_iBank < 0 || m_iProg < 0)
219                  return false;                  return false;
220    
221          qsamplerMainForm *pMainForm = qsamplerMainForm::getInstance();          qsamplerMainForm *pMainForm = qsamplerMainForm::getInstance();
# Line 213  bool qsamplerInstrument::unmap (void) Line 226  bool qsamplerInstrument::unmap (void)
226    
227          lscp_midi_instrument_t instr;          lscp_midi_instrument_t instr;
228    
229          instr.bank_msb = (m_iBank & 0x3f80) >> 7;          instr.map  = m_iMap;
230          instr.bank_lsb = (m_iBank & 0x7f);          instr.bank = (m_iBank & 0x0fff);
231          instr.program  = (m_iProgram & 0x7f);          instr.prog = (m_iProg & 0x7f);
232    
233          if (::lscp_unmap_midi_instrument(pMainForm->client(), &instr) != LSCP_OK) {          if (::lscp_unmap_midi_instrument(pMainForm->client(), &instr) != LSCP_OK) {
234                  pMainForm->appendMessagesClient("lscp_unmap_midi_instrument");                  pMainForm->appendMessagesClient("lscp_unmap_midi_instrument");
# Line 232  bool qsamplerInstrument::unmap (void) Line 245  bool qsamplerInstrument::unmap (void)
245  }  }
246    
247    
248  bool qsamplerInstrument::get (void)  bool qsamplerInstrument::getInstrument (void)
249  {  {
250  #ifdef CONFIG_MIDI_INSTRUMENT  #ifdef CONFIG_MIDI_INSTRUMENT
251    
252          if (m_iBank < 0 || m_iProgram < 0)          if (m_iMap < 0 || m_iBank < 0 || m_iProg < 0)
253                  return false;                  return false;
254    
255          qsamplerMainForm *pMainForm = qsamplerMainForm::getInstance();          qsamplerMainForm *pMainForm = qsamplerMainForm::getInstance();
# Line 247  bool qsamplerInstrument::get (void) Line 260  bool qsamplerInstrument::get (void)
260    
261          lscp_midi_instrument_t instr;          lscp_midi_instrument_t instr;
262    
263          instr.bank_msb = (m_iBank & 0x3f80) >> 7;          instr.map  = m_iMap;
264          instr.bank_lsb = (m_iBank & 0x7f);          instr.bank = (m_iBank & 0x0fff);
265          instr.program  = (m_iProgram & 0x7f);          instr.prog = (m_iProg & 0x7f);
266    
267          lscp_midi_instrument_info_t *pInstrInfo          lscp_midi_instrument_info_t *pInstrInfo
268                  = ::lscp_get_midi_instrument_info(pMainForm->client(), &instr);                  = ::lscp_get_midi_instrument_info(pMainForm->client(), &instr);
# Line 295  bool qsamplerInstrument::get (void) Line 308  bool qsamplerInstrument::get (void)
308  }  }
309    
310    
311    // Instrument map name enumerator.
312    QStringList qsamplerInstrument::getMapNames (void)
313    {
314            QStringList maps;
315    
316            qsamplerMainForm *pMainForm = qsamplerMainForm::getInstance();
317            if (pMainForm == NULL)
318                    return maps;
319            if (pMainForm->client() == NULL)
320                    return maps;
321    
322    #ifdef CONFIG_MIDI_INSTRUMENT
323            int *piMaps = ::lscp_list_midi_instrument_maps(pMainForm->client());
324            if (piMaps == NULL) {
325                    if (::lscp_client_get_errno(pMainForm->client()))
326                            pMainForm->appendMessagesClient("lscp_list_midi_instruments");
327            } else {
328                    for (int iMap = 0; piMaps[iMap] >= 0; iMap++) {
329                            const QString& sMapName = getMapName(piMaps[iMap]);
330                            if (!sMapName.isEmpty())
331                                    maps.append(sMapName);
332                    }
333            }
334    #endif
335    
336            return maps;
337    }
338    
339    // Instrument map name enumerator.
340    QString qsamplerInstrument::getMapName ( int iMidiMap )
341    {
342            QString sMapName;
343    
344            qsamplerMainForm *pMainForm = qsamplerMainForm::getInstance();
345            if (pMainForm == NULL)
346                    return sMapName;
347            if (pMainForm->client() == NULL)
348                    return sMapName;
349    
350    #ifdef CONFIG_MIDI_INSTRUMENT
351            const char *pszMapName
352                    = ::lscp_get_midi_instrument_map_name(pMainForm->client(), iMidiMap);
353            if (pszMapName == NULL) {
354                    pszMapName = " -";
355                    if (::lscp_client_get_errno(pMainForm->client()))
356                            pMainForm->appendMessagesClient("lscp_get_midi_instrument_name");
357            }
358            sMapName = QString("%1 - %2").arg(iMidiMap).arg(pszMapName);
359    #endif
360    
361            return sMapName;
362    }
363    
364    
365  // end of qsamplerInstrument.cpp  // end of qsamplerInstrument.cpp

Legend:
Removed from v.964  
changed lines
  Added in v.1386

  ViewVC Help
Powered by ViewVC