1 |
// qsamplerChannel.cpp |
// qsamplerChannel.cpp |
2 |
// |
// |
3 |
/**************************************************************************** |
/**************************************************************************** |
4 |
Copyright (C) 2004-2014, rncbc aka Rui Nuno Capela. All rights reserved. |
Copyright (C) 2004-2019, rncbc aka Rui Nuno Capela. All rights reserved. |
5 |
Copyright (C) 2007, 2008 Christian Schoenebeck |
Copyright (C) 2007, 2008 Christian Schoenebeck |
6 |
|
|
7 |
This program is free software; you can redistribute it and/or |
This program is free software; you can redistribute it and/or |
32 |
|
|
33 |
#ifdef CONFIG_LIBGIG |
#ifdef CONFIG_LIBGIG |
34 |
#include "gig.h" |
#include "gig.h" |
35 |
|
#ifdef CONFIG_LIBGIG_SF2 |
36 |
#include "SF.h" |
#include "SF.h" |
37 |
#endif |
#endif |
38 |
|
#endif |
39 |
|
|
40 |
namespace QSampler { |
namespace QSampler { |
41 |
|
|
237 |
m_sInstrumentFile = sInstrumentFile; |
m_sInstrumentFile = sInstrumentFile; |
238 |
m_iInstrumentNr = iInstrumentNr; |
m_iInstrumentNr = iInstrumentNr; |
239 |
#ifdef CONFIG_INSTRUMENT_NAME |
#ifdef CONFIG_INSTRUMENT_NAME |
240 |
m_sInstrumentName = QString::null; // We'll get it, maybe later, on channel_info... |
m_sInstrumentName.clear(); // We'll get it, maybe later, on channel_info... |
241 |
#else |
#else |
242 |
m_sInstrumentName = getInstrumentName(sInstrumentFile, iInstrumentNr, true); |
m_sInstrumentName = getInstrumentName(sInstrumentFile, iInstrumentNr, true); |
243 |
#endif |
#endif |
632 |
#endif |
#endif |
633 |
// Some sanity checks. |
// Some sanity checks. |
634 |
if (m_sEngineName == "NONE" || m_sEngineName.isEmpty()) |
if (m_sEngineName == "NONE" || m_sEngineName.isEmpty()) |
635 |
m_sEngineName = QString::null; |
m_sEngineName.clear(); |
636 |
if (m_sInstrumentFile == "NONE" || m_sInstrumentFile.isEmpty()) { |
if (m_sInstrumentFile == "NONE" || m_sInstrumentFile.isEmpty()) { |
637 |
m_sInstrumentFile = QString::null; |
m_sInstrumentFile.clear(); |
638 |
m_sInstrumentName = QString::null; |
m_sInstrumentName.clear(); |
639 |
} |
} |
640 |
|
|
641 |
// Time for device info grabbing... |
// Time for device info grabbing... |
760 |
|
|
761 |
|
|
762 |
// Redirected messages output methods. |
// Redirected messages output methods. |
763 |
void Channel::appendMessages( const QString& s ) const |
void Channel::appendMessages ( const QString& sText ) const |
764 |
{ |
{ |
765 |
MainForm *pMainForm = MainForm::getInstance(); |
MainForm *pMainForm = MainForm::getInstance(); |
766 |
if (pMainForm) |
if (pMainForm) |
767 |
pMainForm->appendMessages(channelName() + ' ' + s); |
pMainForm->appendMessages(channelName() + ' ' + sText); |
768 |
} |
} |
769 |
|
|
770 |
void Channel::appendMessagesColor( const QString& s, |
void Channel::appendMessagesColor ( |
771 |
const QString& c ) const |
const QString& sText, const QString& sColor ) const |
772 |
{ |
{ |
773 |
MainForm *pMainForm = MainForm::getInstance(); |
MainForm *pMainForm = MainForm::getInstance(); |
774 |
if (pMainForm) |
if (pMainForm) |
775 |
pMainForm->appendMessagesColor(channelName() + ' ' + s, c); |
pMainForm->appendMessagesColor(channelName() + ' ' + sText, sColor); |
776 |
} |
} |
777 |
|
|
778 |
void Channel::appendMessagesText( const QString& s ) const |
void Channel::appendMessagesText ( const QString& sText ) const |
779 |
{ |
{ |
780 |
MainForm *pMainForm = MainForm::getInstance(); |
MainForm *pMainForm = MainForm::getInstance(); |
781 |
if (pMainForm) |
if (pMainForm) |
782 |
pMainForm->appendMessagesText(channelName() + ' ' + s); |
pMainForm->appendMessagesText(channelName() + ' ' + sText); |
783 |
} |
} |
784 |
|
|
785 |
void Channel::appendMessagesError( const QString& s ) const |
void Channel::appendMessagesError ( const QString& sText ) const |
786 |
{ |
{ |
787 |
MainForm *pMainForm = MainForm::getInstance(); |
MainForm *pMainForm = MainForm::getInstance(); |
788 |
if (pMainForm) |
if (pMainForm) |
789 |
pMainForm->appendMessagesError(channelName() + "\n\n" + s); |
pMainForm->appendMessagesError(channelName() + "\n\n" + sText); |
790 |
} |
} |
791 |
|
|
792 |
void Channel::appendMessagesClient( const QString& s ) const |
void Channel::appendMessagesClient ( const QString& sText ) const |
793 |
{ |
{ |
794 |
MainForm *pMainForm = MainForm::getInstance(); |
MainForm *pMainForm = MainForm::getInstance(); |
795 |
if (pMainForm) |
if (pMainForm) |
796 |
pMainForm->appendMessagesClient(channelName() + ' ' + s); |
pMainForm->appendMessagesClient(channelName() + ' ' + sText); |
797 |
} |
} |
798 |
|
|
799 |
|
|
800 |
// Context menu event handler. |
// Context menu event handler. |
801 |
void Channel::contextMenuEvent( QContextMenuEvent *pEvent ) |
void Channel::contextMenuEvent ( QContextMenuEvent *pEvent ) |
802 |
{ |
{ |
803 |
MainForm *pMainForm = MainForm::getInstance(); |
MainForm *pMainForm = MainForm::getInstance(); |
804 |
if (pMainForm) |
if (pMainForm) |
832 |
|
|
833 |
QFile file(sInstrumentFile); |
QFile file(sInstrumentFile); |
834 |
if (file.open(QIODevice::ReadOnly)) { |
if (file.open(QIODevice::ReadOnly)) { |
835 |
char achHeader[8]; |
char achHeader[12]; |
836 |
if (file.read(achHeader, 8) > 0) { |
if (file.read(achHeader, 12) > 0) { |
837 |
bResult = (::memcmp(&achHeader[0], "RIFF", 4) == 0 |
bResult = (::memcmp(&achHeader[0], "RIFF", 4) == 0 |
838 |
&& ::memcmp(&achHeader[4], "sfbk", 4) == 0); |
&& ::memcmp(&achHeader[8], "sfbk", 4) == 0); |
839 |
} |
} |
840 |
file.close(); |
file.close(); |
841 |
} |
} |
845 |
|
|
846 |
|
|
847 |
// Retrieve the instrument list of a instrument file (.gig). |
// Retrieve the instrument list of a instrument file (.gig). |
848 |
QStringList Channel::getInstrumentList( |
QStringList Channel::getInstrumentList ( |
849 |
const QString& sInstrumentFile, bool bInstrumentNames ) |
const QString& sInstrumentFile, bool bInstrumentNames ) |
850 |
{ |
{ |
851 |
QStringList instlist; |
QStringList instlist; |
861 |
if (isDlsInstrumentFile(sInstrumentFile)) { |
if (isDlsInstrumentFile(sInstrumentFile)) { |
862 |
RIFF::File *pRiff |
RIFF::File *pRiff |
863 |
= new RIFF::File(sInstrumentFile.toUtf8().constData()); |
= new RIFF::File(sInstrumentFile.toUtf8().constData()); |
864 |
gig::File *pGig = new gig::File(pRiff); |
gig::File *pGig = new gig::File(pRiff); |
865 |
#if HAVE_LIBGIG_SETAUTOLOAD |
#ifdef CONFIG_LIBGIG_SETAUTOLOAD |
866 |
// prevent sleepy response time on large .gig files |
// prevent sleepy response time on large .gig files |
867 |
pGig->SetAutoLoad(false); |
pGig->SetAutoLoad(false); |
868 |
#endif |
#endif |
874 |
delete pGig; |
delete pGig; |
875 |
delete pRiff; |
delete pRiff; |
876 |
} |
} |
877 |
|
#ifdef CONFIG_LIBGIG_SF2 |
878 |
else |
else |
879 |
if (isSf2InstrumentFile(sInstrumentFile)) { |
if (isSf2InstrumentFile(sInstrumentFile)) { |
880 |
RIFF::File *pRiff |
RIFF::File *pRiff |
893 |
delete pSf2; |
delete pSf2; |
894 |
delete pRiff; |
delete pRiff; |
895 |
} |
} |
896 |
|
#endif |
897 |
} |
} |
898 |
#endif |
#endif |
899 |
|
|
924 |
RIFF::File *pRiff |
RIFF::File *pRiff |
925 |
= new RIFF::File(sInstrumentFile.toUtf8().constData()); |
= new RIFF::File(sInstrumentFile.toUtf8().constData()); |
926 |
gig::File *pGig = new gig::File(pRiff); |
gig::File *pGig = new gig::File(pRiff); |
927 |
#if HAVE_LIBGIG_SETAUTOLOAD |
#ifdef CONFIG_LIBGIG_SETAUTOLOAD |
928 |
// prevent sleepy response time on large .gig files |
// prevent sleepy response time on large .gig files |
929 |
pGig->SetAutoLoad(false); |
pGig->SetAutoLoad(false); |
930 |
#endif |
#endif |
941 |
delete pGig; |
delete pGig; |
942 |
delete pRiff; |
delete pRiff; |
943 |
} |
} |
944 |
|
#ifdef CONFIG_LIBGIG_SF2 |
945 |
else |
else |
946 |
if (isSf2InstrumentFile(sInstrumentFile)) { |
if (isSf2InstrumentFile(sInstrumentFile)) { |
947 |
RIFF::File *pRiff |
RIFF::File *pRiff |
953 |
delete pSf2; |
delete pSf2; |
954 |
delete pRiff; |
delete pRiff; |
955 |
} |
} |
956 |
|
#endif |
957 |
} |
} |
958 |
#endif |
#endif |
959 |
|
|
1076 |
m_pDevice = pDevice; |
m_pDevice = pDevice; |
1077 |
m_routing = routing; |
m_routing = routing; |
1078 |
// inform the outer world (QTableView) that our data changed |
// inform the outer world (QTableView) that our data changed |
1079 |
#if QT_VERSION < 0x050000 |
#if QT_VERSION < QT_VERSION_CHECK(5, 0, 0) |
1080 |
QAbstractTableModel::reset(); |
QAbstractTableModel::reset(); |
1081 |
#else |
#else |
1082 |
QAbstractTableModel::beginResetModel(); |
QAbstractTableModel::beginResetModel(); |
1110 |
pComboBox->addItems(item.options); |
pComboBox->addItems(item.options); |
1111 |
pComboBox->setCurrentIndex(item.selection); |
pComboBox->setCurrentIndex(item.selection); |
1112 |
pComboBox->setEnabled(true); |
pComboBox->setEnabled(true); |
1113 |
|
pComboBox->setEditable(true); |
1114 |
pComboBox->setGeometry(option.rect); |
pComboBox->setGeometry(option.rect); |
1115 |
return pComboBox; |
return pComboBox; |
1116 |
} |
} |