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

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

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

revision 295 by capela, Tue Nov 16 15:26:18 2004 UTC revision 343 by capela, Tue Jan 18 12:32:01 2005 UTC
# Line 1  Line 1 
1  // qsamplerChannel.cpp  // qsamplerChannel.cpp
2  //  //
3  /****************************************************************************  /****************************************************************************
4     Copyright (C) 2003-2004, rncbc aka Rui Nuno Capela. All rights reserved.     Copyright (C) 2003-2005, 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 22  Line 22 
22  #include "qsamplerChannel.h"  #include "qsamplerChannel.h"
23    
24  #include "qsamplerMainForm.h"  #include "qsamplerMainForm.h"
25    #include "qsamplerChannelForm.h"
26    
27  #include "config.h"  #include "config.h"
28    
29    #include <qfileinfo.h>
30    
31    #ifdef CONFIG_LIBGIG
32    #include "gig.h"
33    #endif
34    
35    #define QSAMPLER_INSTRUMENT_MAX 8
36    
37    
38  //-------------------------------------------------------------------------  //-------------------------------------------------------------------------
39  // qsamplerChannel - Sampler channel structure.  // qsamplerChannel - Sampler channel structure.
40  //  //
41    bool qsamplerChannel::g_bInstrumentNames = false;
42    
43  // Constructor.  // Constructor.
44  qsamplerChannel::qsamplerChannel ( qsamplerMainForm *pMainForm, int iChannelID )  qsamplerChannel::qsamplerChannel ( qsamplerMainForm *pMainForm, int iChannelID )
# Line 394  bool qsamplerChannel::resetChannel (void Line 404  bool qsamplerChannel::resetChannel (void
404  }  }
405    
406    
407    // Channel setup dialog form.
408    bool qsamplerChannel::channelSetup ( QWidget *pParent )
409    {
410        bool bResult = false;
411    
412        qsamplerChannelForm *pChannelForm = new qsamplerChannelForm(pParent);
413        if (pChannelForm) {
414            pChannelForm->setup(this);
415            bResult = pChannelForm->exec();
416            delete pChannelForm;
417        }
418    
419        return bResult;
420    }
421    
422    
423  // Redirected messages output methods.  // Redirected messages output methods.
424  void qsamplerChannel::appendMessages( const QString& s )  void qsamplerChannel::appendMessages( const QString& s )
425  {  {
426      m_pMainForm->appendMessages(s);      if (m_pMainForm) m_pMainForm->appendMessages(s);
427  }  }
428    
429  void qsamplerChannel::appendMessagesColor( const QString& s, const QString& c )  void qsamplerChannel::appendMessagesColor( const QString& s, const QString& c )
430  {  {
431      m_pMainForm->appendMessagesColor(s, c);      if (m_pMainForm) m_pMainForm->appendMessagesColor(s, c);
432  }  }
433    
434  void qsamplerChannel::appendMessagesText( const QString& s )  void qsamplerChannel::appendMessagesText( const QString& s )
435  {  {
436      m_pMainForm->appendMessagesText(s);      if (m_pMainForm) m_pMainForm->appendMessagesText(s);
437  }  }
438    
439  void qsamplerChannel::appendMessagesError( const QString& s )  void qsamplerChannel::appendMessagesError( const QString& s )
440  {  {
441      m_pMainForm->appendMessagesError(s);      if (m_pMainForm) m_pMainForm->appendMessagesError(s);
442  }  }
443    
444  void qsamplerChannel::appendMessagesClient( const QString& s )  void qsamplerChannel::appendMessagesClient( const QString& s )
445  {  {
446      m_pMainForm->appendMessagesClient(s);      if (m_pMainForm) m_pMainForm->appendMessagesClient(s);
447    }
448    
449    
450    // Context menu event handler.
451    void qsamplerChannel::contextMenuEvent( QContextMenuEvent *pEvent )
452    {
453        if (m_pMainForm) m_pMainForm->contextMenuEvent(pEvent);
454    }
455    
456    
457    // Retrieve the instrument list of a instrument file (.gig).
458    QStringList qsamplerChannel::getInstrumentList( const QString& sInstrumentFile )
459    {
460        QFileInfo fileinfo(sInstrumentFile);
461        QString sInstrumentName = fileinfo.fileName();
462        QStringList instlist;
463    
464        if (fileinfo.exists()) {
465    #ifdef CONFIG_LIBGIG
466                    if (g_bInstrumentNames) {
467                    RIFF::File *pRiff = new RIFF::File(sInstrumentFile);
468                    gig::File  *pGig  = new gig::File(pRiff);
469                    gig::Instrument *pInstrument = pGig->GetFirstInstrument();
470                    while (pInstrument) {
471                        instlist.append((pInstrument->pInfo)->Name.c_str());
472                        pInstrument = pGig->GetNextInstrument();
473                    }
474                    delete pGig;
475                    delete pRiff;
476                    }
477                    else
478    #endif
479            for (int iInstrumentNr = 0; iInstrumentNr < QSAMPLER_INSTRUMENT_MAX; iInstrumentNr++)
480                instlist.append(sInstrumentName + " [" + QString::number(iInstrumentNr) + "]");
481        }
482        else instlist.append(sInstrumentName);
483    
484        return instlist;
485    }
486    
487    
488    // Retrieve the spacific instrument name of a instrument file (.gig), given its index.
489    QString qsamplerChannel::getInstrumentName( const QString& sInstrumentFile, int iInstrumentNr )
490    {
491        QFileInfo fileinfo(sInstrumentFile);
492        QString sInstrumentName = fileinfo.fileName();
493    
494        if (fileinfo.exists()) {
495    #ifdef CONFIG_LIBGIG
496                    if (g_bInstrumentNames) {
497                    RIFF::File *pRiff = new RIFF::File(sInstrumentFile);
498                    gig::File  *pGig  = new gig::File(pRiff);
499                    int iIndex = 0;
500                    gig::Instrument *pInstrument = pGig->GetFirstInstrument();
501                    while (pInstrument) {
502                        if (iIndex == iInstrumentNr) {
503                            sInstrumentName = (pInstrument->pInfo)->Name.c_str();
504                            break;
505                        }
506                        iIndex++;
507                        pInstrument = pGig->GetNextInstrument();
508                    }
509                    delete pGig;
510                    delete pRiff;
511                    }
512                    else
513    #endif
514            sInstrumentName += " [" + QString::number(iInstrumentNr) + "]";
515        }
516    
517        return sInstrumentName;
518    }
519    
520    
521    // Instrument name(s) retrieval mode--global option.
522    bool qsamplerChannel::instrumentNames (void)
523    {
524            return g_bInstrumentNames;
525    }
526    
527    void qsamplerChannel::setInstrumentNames ( bool bInstrumentNames )
528    {
529            g_bInstrumentNames = bInstrumentNames;
530  }  }
531    
532    

Legend:
Removed from v.295  
changed lines
  Added in v.343

  ViewVC Help
Powered by ViewVC