/[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 341 by capela, Tue Jan 18 11:29: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    #else
34    #define QSAMPLER_INSTRUMENT_MAX 8
35    #endif
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    #else
479            for (int iInstrumentNr = 0; iInstrumentNr < QSAMPLER_INSTRUMENT_MAX; iInstrumentNr++)
480                instlist.append(sInstrumentName + " [" + QString::number(iInstrumentNr) + "]");
481    #endif
482        }
483        else instlist.append(sInstrumentName);
484    
485        return instlist;
486    }
487    
488    
489    // Retrieve the spacific instrument name of a instrument file (.gig), given its index.
490    QString qsamplerChannel::getInstrumentName( const QString& sInstrumentFile, int iInstrumentNr )
491    {
492        QFileInfo fileinfo(sInstrumentFile);
493        QString sInstrumentName = fileinfo.fileName();
494    
495        if (fileinfo.exists()) {
496    #ifdef CONFIG_LIBGIG
497                    if (g_bInstrumentNames) {
498                    RIFF::File *pRiff = new RIFF::File(sInstrumentFile);
499                    gig::File  *pGig  = new gig::File(pRiff);
500                    int iIndex = 0;
501                    gig::Instrument *pInstrument = pGig->GetFirstInstrument();
502                    while (pInstrument) {
503                        if (iIndex == iInstrumentNr) {
504                            sInstrumentName = (pInstrument->pInfo)->Name.c_str();
505                            break;
506                        }
507                        iIndex++;
508                        pInstrument = pGig->GetNextInstrument();
509                    }
510                    delete pGig;
511                    delete pRiff;
512                    }
513                    else
514    #else
515            sInstrumentName += " [" + QString::number(iInstrumentNr) + "]";
516    #endif
517        }
518    
519        return sInstrumentName;
520    }
521    
522    
523    // Instrument name(s) retrieval mode--global option.
524    bool qsamplerChannel::instrumentNames (void)
525    {
526            return g_bInstrumentNames;
527    }
528    
529    void qsamplerChannel::setInstrumentNames ( bool bInstrumentNames )
530    {
531            g_bInstrumentNames = bInstrumentNames;
532  }  }
533    
534    

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

  ViewVC Help
Powered by ViewVC