1 |
// qsamplerChannel.cpp |
// qsamplerChannel.cpp |
2 |
// |
// |
3 |
/**************************************************************************** |
/**************************************************************************** |
4 |
Copyright (C) 2004-2019, rncbc aka Rui Nuno Capela. All rights reserved. |
Copyright (C) 2004-2021, 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 |
31 |
#include <QComboBox> |
#include <QComboBox> |
32 |
|
|
33 |
#ifdef CONFIG_LIBGIG |
#ifdef CONFIG_LIBGIG |
34 |
|
#if defined(Q_CC_GNU) || defined(Q_CC_MINGW) |
35 |
|
#pragma GCC diagnostic push |
36 |
|
#pragma GCC diagnostic ignored "-Wunused-parameter" |
37 |
|
#endif |
38 |
#include "gig.h" |
#include "gig.h" |
39 |
#ifdef CONFIG_LIBGIG_SF2 |
#ifdef CONFIG_LIBGIG_SF2 |
40 |
|
#pragma GCC diagnostic ignored "-Wunused-variable" |
41 |
#include "SF.h" |
#include "SF.h" |
42 |
#endif |
#endif |
43 |
|
#if defined(Q_CC_GNU) || defined(Q_CC_MINGW) |
44 |
|
#pragma GCC diagnostic pop |
45 |
|
#endif |
46 |
#endif |
#endif |
47 |
|
|
48 |
namespace QSampler { |
namespace QSampler { |
88 |
bool Channel::addChannel (void) |
bool Channel::addChannel (void) |
89 |
{ |
{ |
90 |
MainForm* pMainForm = MainForm::getInstance(); |
MainForm* pMainForm = MainForm::getInstance(); |
91 |
if (pMainForm == NULL) |
if (pMainForm == nullptr) |
92 |
return false; |
return false; |
93 |
if (pMainForm->client() == NULL) |
if (pMainForm->client() == nullptr) |
94 |
return false; |
return false; |
95 |
|
|
96 |
// Are we a new channel? |
// Are we a new channel? |
113 |
bool Channel::removeChannel (void) |
bool Channel::removeChannel (void) |
114 |
{ |
{ |
115 |
MainForm *pMainForm = MainForm::getInstance(); |
MainForm *pMainForm = MainForm::getInstance(); |
116 |
if (pMainForm == NULL) |
if (pMainForm == nullptr) |
117 |
return false; |
return false; |
118 |
if (pMainForm->client() == NULL) |
if (pMainForm->client() == nullptr) |
119 |
return false; |
return false; |
120 |
|
|
121 |
// Are we an existing channel? |
// Are we an existing channel? |
163 |
bool Channel::loadEngine ( const QString& sEngineName ) |
bool Channel::loadEngine ( const QString& sEngineName ) |
164 |
{ |
{ |
165 |
MainForm *pMainForm = MainForm::getInstance(); |
MainForm *pMainForm = MainForm::getInstance(); |
166 |
if (pMainForm == NULL) |
if (pMainForm == nullptr) |
167 |
return false; |
return false; |
168 |
if (pMainForm->client() == NULL || m_iChannelID < 0) |
if (pMainForm->client() == nullptr || m_iChannelID < 0) |
169 |
return false; |
return false; |
170 |
if (m_iInstrumentStatus == 100 && m_sEngineName == sEngineName) |
if (m_iInstrumentStatus == 100 && m_sEngineName == sEngineName) |
171 |
return true; |
return true; |
211 |
bool Channel::loadInstrument ( const QString& sInstrumentFile, int iInstrumentNr ) |
bool Channel::loadInstrument ( const QString& sInstrumentFile, int iInstrumentNr ) |
212 |
{ |
{ |
213 |
MainForm *pMainForm = MainForm::getInstance(); |
MainForm *pMainForm = MainForm::getInstance(); |
214 |
if (pMainForm == NULL) |
if (pMainForm == nullptr) |
215 |
return false; |
return false; |
216 |
if (pMainForm->client() == NULL || m_iChannelID < 0) |
if (pMainForm->client() == nullptr || m_iChannelID < 0) |
217 |
return false; |
return false; |
218 |
if (!QFileInfo(sInstrumentFile).exists()) |
if (!QFileInfo(sInstrumentFile).exists()) |
219 |
return false; |
return false; |
264 |
bool Channel::setMidiDriver ( const QString& sMidiDriver ) |
bool Channel::setMidiDriver ( const QString& sMidiDriver ) |
265 |
{ |
{ |
266 |
MainForm *pMainForm = MainForm::getInstance(); |
MainForm *pMainForm = MainForm::getInstance(); |
267 |
if (pMainForm == NULL) |
if (pMainForm == nullptr) |
268 |
return false; |
return false; |
269 |
if (pMainForm->client() == NULL || m_iChannelID < 0) |
if (pMainForm->client() == nullptr || m_iChannelID < 0) |
270 |
return false; |
return false; |
271 |
if (m_iInstrumentStatus == 100 && m_sMidiDriver == sMidiDriver) |
if (m_iInstrumentStatus == 100 && m_sMidiDriver == sMidiDriver) |
272 |
return true; |
return true; |
293 |
bool Channel::setMidiDevice ( int iMidiDevice ) |
bool Channel::setMidiDevice ( int iMidiDevice ) |
294 |
{ |
{ |
295 |
MainForm *pMainForm = MainForm::getInstance(); |
MainForm *pMainForm = MainForm::getInstance(); |
296 |
if (pMainForm == NULL) |
if (pMainForm == nullptr) |
297 |
return false; |
return false; |
298 |
if (pMainForm->client() == NULL || m_iChannelID < 0) |
if (pMainForm->client() == nullptr || m_iChannelID < 0) |
299 |
return false; |
return false; |
300 |
if (m_iInstrumentStatus == 100 && m_iMidiDevice == iMidiDevice) |
if (m_iInstrumentStatus == 100 && m_iMidiDevice == iMidiDevice) |
301 |
return true; |
return true; |
321 |
bool Channel::setMidiPort ( int iMidiPort ) |
bool Channel::setMidiPort ( int iMidiPort ) |
322 |
{ |
{ |
323 |
MainForm *pMainForm = MainForm::getInstance(); |
MainForm *pMainForm = MainForm::getInstance(); |
324 |
if (pMainForm == NULL) |
if (pMainForm == nullptr) |
325 |
return false; |
return false; |
326 |
if (pMainForm->client() == NULL || m_iChannelID < 0) |
if (pMainForm->client() == nullptr || m_iChannelID < 0) |
327 |
return false; |
return false; |
328 |
if (m_iInstrumentStatus == 100 && m_iMidiPort == iMidiPort) |
if (m_iInstrumentStatus == 100 && m_iMidiPort == iMidiPort) |
329 |
return true; |
return true; |
349 |
bool Channel::setMidiChannel ( int iMidiChannel ) |
bool Channel::setMidiChannel ( int iMidiChannel ) |
350 |
{ |
{ |
351 |
MainForm *pMainForm = MainForm::getInstance(); |
MainForm *pMainForm = MainForm::getInstance(); |
352 |
if (pMainForm == NULL) |
if (pMainForm == nullptr) |
353 |
return false; |
return false; |
354 |
if (pMainForm->client() == NULL || m_iChannelID < 0) |
if (pMainForm->client() == nullptr || m_iChannelID < 0) |
355 |
return false; |
return false; |
356 |
if (m_iInstrumentStatus == 100 && m_iMidiChannel == iMidiChannel) |
if (m_iInstrumentStatus == 100 && m_iMidiChannel == iMidiChannel) |
357 |
return true; |
return true; |
377 |
bool Channel::setMidiMap ( int iMidiMap ) |
bool Channel::setMidiMap ( int iMidiMap ) |
378 |
{ |
{ |
379 |
MainForm *pMainForm = MainForm::getInstance(); |
MainForm *pMainForm = MainForm::getInstance(); |
380 |
if (pMainForm == NULL) |
if (pMainForm == nullptr) |
381 |
return false; |
return false; |
382 |
if (pMainForm->client() == NULL || m_iChannelID < 0) |
if (pMainForm->client() == nullptr || m_iChannelID < 0) |
383 |
return false; |
return false; |
384 |
if (m_iInstrumentStatus == 100 && m_iMidiMap == iMidiMap) |
if (m_iInstrumentStatus == 100 && m_iMidiMap == iMidiMap) |
385 |
return true; |
return true; |
405 |
bool Channel::setAudioDevice ( int iAudioDevice ) |
bool Channel::setAudioDevice ( int iAudioDevice ) |
406 |
{ |
{ |
407 |
MainForm *pMainForm = MainForm::getInstance(); |
MainForm *pMainForm = MainForm::getInstance(); |
408 |
if (pMainForm == NULL) |
if (pMainForm == nullptr) |
409 |
return false; |
return false; |
410 |
if (pMainForm->client() == NULL || m_iChannelID < 0) |
if (pMainForm->client() == nullptr || m_iChannelID < 0) |
411 |
return false; |
return false; |
412 |
if (m_iInstrumentStatus == 100 && m_iAudioDevice == iAudioDevice) |
if (m_iInstrumentStatus == 100 && m_iAudioDevice == iAudioDevice) |
413 |
return true; |
return true; |
433 |
bool Channel::setAudioDriver ( const QString& sAudioDriver ) |
bool Channel::setAudioDriver ( const QString& sAudioDriver ) |
434 |
{ |
{ |
435 |
MainForm *pMainForm = MainForm::getInstance(); |
MainForm *pMainForm = MainForm::getInstance(); |
436 |
if (pMainForm == NULL) |
if (pMainForm == nullptr) |
437 |
return false; |
return false; |
438 |
if (pMainForm->client() == NULL || m_iChannelID < 0) |
if (pMainForm->client() == nullptr || m_iChannelID < 0) |
439 |
return false; |
return false; |
440 |
if (m_iInstrumentStatus == 100 && m_sAudioDriver == sAudioDriver) |
if (m_iInstrumentStatus == 100 && m_sAudioDriver == sAudioDriver) |
441 |
return true; |
return true; |
462 |
bool Channel::setVolume ( float fVolume ) |
bool Channel::setVolume ( float fVolume ) |
463 |
{ |
{ |
464 |
MainForm *pMainForm = MainForm::getInstance(); |
MainForm *pMainForm = MainForm::getInstance(); |
465 |
if (pMainForm == NULL) |
if (pMainForm == nullptr) |
466 |
return false; |
return false; |
467 |
if (pMainForm->client() == NULL || m_iChannelID < 0) |
if (pMainForm->client() == nullptr || m_iChannelID < 0) |
468 |
return false; |
return false; |
469 |
if (m_iInstrumentStatus == 100 && m_fVolume == fVolume) |
if (m_iInstrumentStatus == 100 && m_fVolume == fVolume) |
470 |
return true; |
return true; |
490 |
bool Channel::setChannelMute ( bool bMute ) |
bool Channel::setChannelMute ( bool bMute ) |
491 |
{ |
{ |
492 |
MainForm *pMainForm = MainForm::getInstance(); |
MainForm *pMainForm = MainForm::getInstance(); |
493 |
if (pMainForm == NULL) |
if (pMainForm == nullptr) |
494 |
return false; |
return false; |
495 |
if (pMainForm->client() == NULL || m_iChannelID < 0) |
if (pMainForm->client() == nullptr || m_iChannelID < 0) |
496 |
return false; |
return false; |
497 |
if (m_iInstrumentStatus == 100 && ((m_bMute && bMute) || (!m_bMute && !bMute))) |
if (m_iInstrumentStatus == 100 && ((m_bMute && bMute) || (!m_bMute && !bMute))) |
498 |
return true; |
return true; |
520 |
bool Channel::setChannelSolo ( bool bSolo ) |
bool Channel::setChannelSolo ( bool bSolo ) |
521 |
{ |
{ |
522 |
MainForm *pMainForm = MainForm::getInstance(); |
MainForm *pMainForm = MainForm::getInstance(); |
523 |
if (pMainForm == NULL) |
if (pMainForm == nullptr) |
524 |
return false; |
return false; |
525 |
if (pMainForm->client() == NULL || m_iChannelID < 0) |
if (pMainForm->client() == nullptr || m_iChannelID < 0) |
526 |
return false; |
return false; |
527 |
if (m_iInstrumentStatus == 100 && ((m_bSolo && bSolo) || (!m_bSolo && !bSolo))) |
if (m_iInstrumentStatus == 100 && ((m_bSolo && bSolo) || (!m_bSolo && !bSolo))) |
528 |
return true; |
return true; |
550 |
bool Channel::setAudioChannel ( int iAudioOut, int iAudioIn ) |
bool Channel::setAudioChannel ( int iAudioOut, int iAudioIn ) |
551 |
{ |
{ |
552 |
MainForm *pMainForm = MainForm::getInstance(); |
MainForm *pMainForm = MainForm::getInstance(); |
553 |
if (pMainForm == NULL) |
if (pMainForm == nullptr) |
554 |
return false; |
return false; |
555 |
if (pMainForm->client() == NULL || m_iChannelID < 0) |
if (pMainForm->client() == nullptr || m_iChannelID < 0) |
556 |
return false; |
return false; |
557 |
if (m_iInstrumentStatus == 100 && |
if (m_iInstrumentStatus == 100 && |
558 |
m_audioRouting[iAudioOut] == iAudioIn) |
m_audioRouting[iAudioOut] == iAudioIn) |
592 |
bool Channel::updateChannelInfo (void) |
bool Channel::updateChannelInfo (void) |
593 |
{ |
{ |
594 |
MainForm *pMainForm = MainForm::getInstance(); |
MainForm *pMainForm = MainForm::getInstance(); |
595 |
if (pMainForm == NULL) |
if (pMainForm == nullptr) |
596 |
return false; |
return false; |
597 |
if (pMainForm->client() == NULL || m_iChannelID < 0) |
if (pMainForm->client() == nullptr || m_iChannelID < 0) |
598 |
return false; |
return false; |
599 |
|
|
600 |
// Read channel information. |
// Read channel information. |
601 |
lscp_channel_info_t *pChannelInfo = ::lscp_get_channel_info(pMainForm->client(), m_iChannelID); |
lscp_channel_info_t *pChannelInfo = ::lscp_get_channel_info(pMainForm->client(), m_iChannelID); |
602 |
if (pChannelInfo == NULL) { |
if (pChannelInfo == nullptr) { |
603 |
appendMessagesClient("lscp_get_channel_info"); |
appendMessagesClient("lscp_get_channel_info"); |
604 |
appendMessagesError(QObject::tr("Could not get channel information.\n\nSorry.")); |
appendMessagesError(QObject::tr("Could not get channel information.\n\nSorry.")); |
605 |
return false; |
return false; |
651 |
const QString sNone = QObject::tr("(none)"); |
const QString sNone = QObject::tr("(none)"); |
652 |
// Audio device driver type. |
// Audio device driver type. |
653 |
pDeviceInfo = ::lscp_get_audio_device_info(pMainForm->client(), m_iAudioDevice); |
pDeviceInfo = ::lscp_get_audio_device_info(pMainForm->client(), m_iAudioDevice); |
654 |
if (pDeviceInfo == NULL) { |
if (pDeviceInfo == nullptr) { |
655 |
appendMessagesClient("lscp_get_audio_device_info"); |
appendMessagesClient("lscp_get_audio_device_info"); |
656 |
m_sAudioDriver = sNone; |
m_sAudioDriver = sNone; |
657 |
} else { |
} else { |
659 |
} |
} |
660 |
// MIDI device driver type. |
// MIDI device driver type. |
661 |
pDeviceInfo = ::lscp_get_midi_device_info(pMainForm->client(), m_iMidiDevice); |
pDeviceInfo = ::lscp_get_midi_device_info(pMainForm->client(), m_iMidiDevice); |
662 |
if (pDeviceInfo == NULL) { |
if (pDeviceInfo == nullptr) { |
663 |
appendMessagesClient("lscp_get_midi_device_info"); |
appendMessagesClient("lscp_get_midi_device_info"); |
664 |
m_sMidiDriver = sNone; |
m_sMidiDriver = sNone; |
665 |
} else { |
} else { |
686 |
bool Channel::channelReset (void) |
bool Channel::channelReset (void) |
687 |
{ |
{ |
688 |
MainForm *pMainForm = MainForm::getInstance(); |
MainForm *pMainForm = MainForm::getInstance(); |
689 |
if (pMainForm == NULL) |
if (pMainForm == nullptr) |
690 |
return false; |
return false; |
691 |
if (pMainForm->client() == NULL || m_iChannelID < 0) |
if (pMainForm->client() == nullptr || m_iChannelID < 0) |
692 |
return false; |
return false; |
693 |
|
|
694 |
if (::lscp_reset_channel(pMainForm->client(), m_iChannelID) != LSCP_OK) { |
if (::lscp_reset_channel(pMainForm->client(), m_iChannelID) != LSCP_OK) { |
708 |
#ifdef CONFIG_EDIT_INSTRUMENT |
#ifdef CONFIG_EDIT_INSTRUMENT |
709 |
|
|
710 |
MainForm *pMainForm = MainForm::getInstance(); |
MainForm *pMainForm = MainForm::getInstance(); |
711 |
if (pMainForm == NULL) |
if (pMainForm == nullptr) |
712 |
return false; |
return false; |
713 |
if (pMainForm->client() == NULL || m_iChannelID < 0) |
if (pMainForm->client() == nullptr || m_iChannelID < 0) |
714 |
return false; |
return false; |
715 |
|
|
716 |
if (::lscp_edit_channel_instrument(pMainForm->client(), m_iChannelID) |
if (::lscp_edit_channel_instrument(pMainForm->client(), m_iChannelID) |
749 |
bool Channel::channelSetup ( QWidget *pParent ) |
bool Channel::channelSetup ( QWidget *pParent ) |
750 |
{ |
{ |
751 |
MainForm *pMainForm = MainForm::getInstance(); |
MainForm *pMainForm = MainForm::getInstance(); |
752 |
if (pMainForm == NULL) |
if (pMainForm == nullptr) |
753 |
return false; |
return false; |
754 |
|
|
755 |
bool bResult = false; |
bool bResult = false; |
776 |
} |
} |
777 |
|
|
778 |
void Channel::appendMessagesColor ( |
void Channel::appendMessagesColor ( |
779 |
const QString& sText, const QString& sColor ) const |
const QString& sText, const QColor& rgb ) const |
780 |
{ |
{ |
781 |
MainForm *pMainForm = MainForm::getInstance(); |
MainForm *pMainForm = MainForm::getInstance(); |
782 |
if (pMainForm) |
if (pMainForm) |
783 |
pMainForm->appendMessagesColor(channelName() + ' ' + sText, sColor); |
pMainForm->appendMessagesColor(channelName() + ' ' + sText, rgb); |
784 |
} |
} |
785 |
|
|
786 |
void Channel::appendMessagesText ( const QString& sText ) const |
void Channel::appendMessagesText ( const QString& sText ) const |
995 |
// (used for QTableView) |
// (used for QTableView) |
996 |
|
|
997 |
ChannelRoutingModel::ChannelRoutingModel ( QObject *pParent ) |
ChannelRoutingModel::ChannelRoutingModel ( QObject *pParent ) |
998 |
: QAbstractTableModel(pParent), m_pDevice(NULL) |
: QAbstractTableModel(pParent), m_pDevice(nullptr) |
999 |
{ |
{ |
1000 |
} |
} |
1001 |
|
|
1107 |
const QStyleOptionViewItem & option, const QModelIndex& index ) const |
const QStyleOptionViewItem & option, const QModelIndex& index ) const |
1108 |
{ |
{ |
1109 |
if (!index.isValid()) |
if (!index.isValid()) |
1110 |
return NULL; |
return nullptr; |
1111 |
|
|
1112 |
if (index.column() != 0) |
if (index.column() != 0) |
1113 |
return NULL; |
return nullptr; |
1114 |
|
|
1115 |
ChannelRoutingItem item = index.model()->data(index, Qt::DisplayRole).value<ChannelRoutingItem>(); |
ChannelRoutingItem item = index.model()->data(index, Qt::DisplayRole).value<ChannelRoutingItem>(); |
1116 |
|
|