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 |
|
#pragma GCC diagnostic push |
35 |
|
#pragma GCC diagnostic ignored "-Wunused-parameter" |
36 |
#include "gig.h" |
#include "gig.h" |
37 |
#ifdef CONFIG_LIBGIG_SF2 |
#ifdef CONFIG_LIBGIG_SF2 |
38 |
|
#pragma GCC diagnostic ignored "-Wunused-variable" |
39 |
#include "SF.h" |
#include "SF.h" |
40 |
#endif |
#endif |
41 |
|
#pragma GCC diagnostic pop |
42 |
#endif |
#endif |
43 |
|
|
44 |
namespace QSampler { |
namespace QSampler { |
84 |
bool Channel::addChannel (void) |
bool Channel::addChannel (void) |
85 |
{ |
{ |
86 |
MainForm* pMainForm = MainForm::getInstance(); |
MainForm* pMainForm = MainForm::getInstance(); |
87 |
if (pMainForm == NULL) |
if (pMainForm == nullptr) |
88 |
return false; |
return false; |
89 |
if (pMainForm->client() == NULL) |
if (pMainForm->client() == nullptr) |
90 |
return false; |
return false; |
91 |
|
|
92 |
// Are we a new channel? |
// Are we a new channel? |
109 |
bool Channel::removeChannel (void) |
bool Channel::removeChannel (void) |
110 |
{ |
{ |
111 |
MainForm *pMainForm = MainForm::getInstance(); |
MainForm *pMainForm = MainForm::getInstance(); |
112 |
if (pMainForm == NULL) |
if (pMainForm == nullptr) |
113 |
return false; |
return false; |
114 |
if (pMainForm->client() == NULL) |
if (pMainForm->client() == nullptr) |
115 |
return false; |
return false; |
116 |
|
|
117 |
// Are we an existing channel? |
// Are we an existing channel? |
159 |
bool Channel::loadEngine ( const QString& sEngineName ) |
bool Channel::loadEngine ( const QString& sEngineName ) |
160 |
{ |
{ |
161 |
MainForm *pMainForm = MainForm::getInstance(); |
MainForm *pMainForm = MainForm::getInstance(); |
162 |
if (pMainForm == NULL) |
if (pMainForm == nullptr) |
163 |
return false; |
return false; |
164 |
if (pMainForm->client() == NULL || m_iChannelID < 0) |
if (pMainForm->client() == nullptr || m_iChannelID < 0) |
165 |
return false; |
return false; |
166 |
if (m_iInstrumentStatus == 100 && m_sEngineName == sEngineName) |
if (m_iInstrumentStatus == 100 && m_sEngineName == sEngineName) |
167 |
return true; |
return true; |
207 |
bool Channel::loadInstrument ( const QString& sInstrumentFile, int iInstrumentNr ) |
bool Channel::loadInstrument ( const QString& sInstrumentFile, int iInstrumentNr ) |
208 |
{ |
{ |
209 |
MainForm *pMainForm = MainForm::getInstance(); |
MainForm *pMainForm = MainForm::getInstance(); |
210 |
if (pMainForm == NULL) |
if (pMainForm == nullptr) |
211 |
return false; |
return false; |
212 |
if (pMainForm->client() == NULL || m_iChannelID < 0) |
if (pMainForm->client() == nullptr || m_iChannelID < 0) |
213 |
return false; |
return false; |
214 |
if (!QFileInfo(sInstrumentFile).exists()) |
if (!QFileInfo(sInstrumentFile).exists()) |
215 |
return false; |
return false; |
260 |
bool Channel::setMidiDriver ( const QString& sMidiDriver ) |
bool Channel::setMidiDriver ( const QString& sMidiDriver ) |
261 |
{ |
{ |
262 |
MainForm *pMainForm = MainForm::getInstance(); |
MainForm *pMainForm = MainForm::getInstance(); |
263 |
if (pMainForm == NULL) |
if (pMainForm == nullptr) |
264 |
return false; |
return false; |
265 |
if (pMainForm->client() == NULL || m_iChannelID < 0) |
if (pMainForm->client() == nullptr || m_iChannelID < 0) |
266 |
return false; |
return false; |
267 |
if (m_iInstrumentStatus == 100 && m_sMidiDriver == sMidiDriver) |
if (m_iInstrumentStatus == 100 && m_sMidiDriver == sMidiDriver) |
268 |
return true; |
return true; |
289 |
bool Channel::setMidiDevice ( int iMidiDevice ) |
bool Channel::setMidiDevice ( int iMidiDevice ) |
290 |
{ |
{ |
291 |
MainForm *pMainForm = MainForm::getInstance(); |
MainForm *pMainForm = MainForm::getInstance(); |
292 |
if (pMainForm == NULL) |
if (pMainForm == nullptr) |
293 |
return false; |
return false; |
294 |
if (pMainForm->client() == NULL || m_iChannelID < 0) |
if (pMainForm->client() == nullptr || m_iChannelID < 0) |
295 |
return false; |
return false; |
296 |
if (m_iInstrumentStatus == 100 && m_iMidiDevice == iMidiDevice) |
if (m_iInstrumentStatus == 100 && m_iMidiDevice == iMidiDevice) |
297 |
return true; |
return true; |
317 |
bool Channel::setMidiPort ( int iMidiPort ) |
bool Channel::setMidiPort ( int iMidiPort ) |
318 |
{ |
{ |
319 |
MainForm *pMainForm = MainForm::getInstance(); |
MainForm *pMainForm = MainForm::getInstance(); |
320 |
if (pMainForm == NULL) |
if (pMainForm == nullptr) |
321 |
return false; |
return false; |
322 |
if (pMainForm->client() == NULL || m_iChannelID < 0) |
if (pMainForm->client() == nullptr || m_iChannelID < 0) |
323 |
return false; |
return false; |
324 |
if (m_iInstrumentStatus == 100 && m_iMidiPort == iMidiPort) |
if (m_iInstrumentStatus == 100 && m_iMidiPort == iMidiPort) |
325 |
return true; |
return true; |
345 |
bool Channel::setMidiChannel ( int iMidiChannel ) |
bool Channel::setMidiChannel ( int iMidiChannel ) |
346 |
{ |
{ |
347 |
MainForm *pMainForm = MainForm::getInstance(); |
MainForm *pMainForm = MainForm::getInstance(); |
348 |
if (pMainForm == NULL) |
if (pMainForm == nullptr) |
349 |
return false; |
return false; |
350 |
if (pMainForm->client() == NULL || m_iChannelID < 0) |
if (pMainForm->client() == nullptr || m_iChannelID < 0) |
351 |
return false; |
return false; |
352 |
if (m_iInstrumentStatus == 100 && m_iMidiChannel == iMidiChannel) |
if (m_iInstrumentStatus == 100 && m_iMidiChannel == iMidiChannel) |
353 |
return true; |
return true; |
373 |
bool Channel::setMidiMap ( int iMidiMap ) |
bool Channel::setMidiMap ( int iMidiMap ) |
374 |
{ |
{ |
375 |
MainForm *pMainForm = MainForm::getInstance(); |
MainForm *pMainForm = MainForm::getInstance(); |
376 |
if (pMainForm == NULL) |
if (pMainForm == nullptr) |
377 |
return false; |
return false; |
378 |
if (pMainForm->client() == NULL || m_iChannelID < 0) |
if (pMainForm->client() == nullptr || m_iChannelID < 0) |
379 |
return false; |
return false; |
380 |
if (m_iInstrumentStatus == 100 && m_iMidiMap == iMidiMap) |
if (m_iInstrumentStatus == 100 && m_iMidiMap == iMidiMap) |
381 |
return true; |
return true; |
401 |
bool Channel::setAudioDevice ( int iAudioDevice ) |
bool Channel::setAudioDevice ( int iAudioDevice ) |
402 |
{ |
{ |
403 |
MainForm *pMainForm = MainForm::getInstance(); |
MainForm *pMainForm = MainForm::getInstance(); |
404 |
if (pMainForm == NULL) |
if (pMainForm == nullptr) |
405 |
return false; |
return false; |
406 |
if (pMainForm->client() == NULL || m_iChannelID < 0) |
if (pMainForm->client() == nullptr || m_iChannelID < 0) |
407 |
return false; |
return false; |
408 |
if (m_iInstrumentStatus == 100 && m_iAudioDevice == iAudioDevice) |
if (m_iInstrumentStatus == 100 && m_iAudioDevice == iAudioDevice) |
409 |
return true; |
return true; |
429 |
bool Channel::setAudioDriver ( const QString& sAudioDriver ) |
bool Channel::setAudioDriver ( const QString& sAudioDriver ) |
430 |
{ |
{ |
431 |
MainForm *pMainForm = MainForm::getInstance(); |
MainForm *pMainForm = MainForm::getInstance(); |
432 |
if (pMainForm == NULL) |
if (pMainForm == nullptr) |
433 |
return false; |
return false; |
434 |
if (pMainForm->client() == NULL || m_iChannelID < 0) |
if (pMainForm->client() == nullptr || m_iChannelID < 0) |
435 |
return false; |
return false; |
436 |
if (m_iInstrumentStatus == 100 && m_sAudioDriver == sAudioDriver) |
if (m_iInstrumentStatus == 100 && m_sAudioDriver == sAudioDriver) |
437 |
return true; |
return true; |
458 |
bool Channel::setVolume ( float fVolume ) |
bool Channel::setVolume ( float fVolume ) |
459 |
{ |
{ |
460 |
MainForm *pMainForm = MainForm::getInstance(); |
MainForm *pMainForm = MainForm::getInstance(); |
461 |
if (pMainForm == NULL) |
if (pMainForm == nullptr) |
462 |
return false; |
return false; |
463 |
if (pMainForm->client() == NULL || m_iChannelID < 0) |
if (pMainForm->client() == nullptr || m_iChannelID < 0) |
464 |
return false; |
return false; |
465 |
if (m_iInstrumentStatus == 100 && m_fVolume == fVolume) |
if (m_iInstrumentStatus == 100 && m_fVolume == fVolume) |
466 |
return true; |
return true; |
486 |
bool Channel::setChannelMute ( bool bMute ) |
bool Channel::setChannelMute ( bool bMute ) |
487 |
{ |
{ |
488 |
MainForm *pMainForm = MainForm::getInstance(); |
MainForm *pMainForm = MainForm::getInstance(); |
489 |
if (pMainForm == NULL) |
if (pMainForm == nullptr) |
490 |
return false; |
return false; |
491 |
if (pMainForm->client() == NULL || m_iChannelID < 0) |
if (pMainForm->client() == nullptr || m_iChannelID < 0) |
492 |
return false; |
return false; |
493 |
if (m_iInstrumentStatus == 100 && ((m_bMute && bMute) || (!m_bMute && !bMute))) |
if (m_iInstrumentStatus == 100 && ((m_bMute && bMute) || (!m_bMute && !bMute))) |
494 |
return true; |
return true; |
516 |
bool Channel::setChannelSolo ( bool bSolo ) |
bool Channel::setChannelSolo ( bool bSolo ) |
517 |
{ |
{ |
518 |
MainForm *pMainForm = MainForm::getInstance(); |
MainForm *pMainForm = MainForm::getInstance(); |
519 |
if (pMainForm == NULL) |
if (pMainForm == nullptr) |
520 |
return false; |
return false; |
521 |
if (pMainForm->client() == NULL || m_iChannelID < 0) |
if (pMainForm->client() == nullptr || m_iChannelID < 0) |
522 |
return false; |
return false; |
523 |
if (m_iInstrumentStatus == 100 && ((m_bSolo && bSolo) || (!m_bSolo && !bSolo))) |
if (m_iInstrumentStatus == 100 && ((m_bSolo && bSolo) || (!m_bSolo && !bSolo))) |
524 |
return true; |
return true; |
546 |
bool Channel::setAudioChannel ( int iAudioOut, int iAudioIn ) |
bool Channel::setAudioChannel ( int iAudioOut, int iAudioIn ) |
547 |
{ |
{ |
548 |
MainForm *pMainForm = MainForm::getInstance(); |
MainForm *pMainForm = MainForm::getInstance(); |
549 |
if (pMainForm == NULL) |
if (pMainForm == nullptr) |
550 |
return false; |
return false; |
551 |
if (pMainForm->client() == NULL || m_iChannelID < 0) |
if (pMainForm->client() == nullptr || m_iChannelID < 0) |
552 |
return false; |
return false; |
553 |
if (m_iInstrumentStatus == 100 && |
if (m_iInstrumentStatus == 100 && |
554 |
m_audioRouting[iAudioOut] == iAudioIn) |
m_audioRouting[iAudioOut] == iAudioIn) |
588 |
bool Channel::updateChannelInfo (void) |
bool Channel::updateChannelInfo (void) |
589 |
{ |
{ |
590 |
MainForm *pMainForm = MainForm::getInstance(); |
MainForm *pMainForm = MainForm::getInstance(); |
591 |
if (pMainForm == NULL) |
if (pMainForm == nullptr) |
592 |
return false; |
return false; |
593 |
if (pMainForm->client() == NULL || m_iChannelID < 0) |
if (pMainForm->client() == nullptr || m_iChannelID < 0) |
594 |
return false; |
return false; |
595 |
|
|
596 |
// Read channel information. |
// Read channel information. |
597 |
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); |
598 |
if (pChannelInfo == NULL) { |
if (pChannelInfo == nullptr) { |
599 |
appendMessagesClient("lscp_get_channel_info"); |
appendMessagesClient("lscp_get_channel_info"); |
600 |
appendMessagesError(QObject::tr("Could not get channel information.\n\nSorry.")); |
appendMessagesError(QObject::tr("Could not get channel information.\n\nSorry.")); |
601 |
return false; |
return false; |
647 |
const QString sNone = QObject::tr("(none)"); |
const QString sNone = QObject::tr("(none)"); |
648 |
// Audio device driver type. |
// Audio device driver type. |
649 |
pDeviceInfo = ::lscp_get_audio_device_info(pMainForm->client(), m_iAudioDevice); |
pDeviceInfo = ::lscp_get_audio_device_info(pMainForm->client(), m_iAudioDevice); |
650 |
if (pDeviceInfo == NULL) { |
if (pDeviceInfo == nullptr) { |
651 |
appendMessagesClient("lscp_get_audio_device_info"); |
appendMessagesClient("lscp_get_audio_device_info"); |
652 |
m_sAudioDriver = sNone; |
m_sAudioDriver = sNone; |
653 |
} else { |
} else { |
655 |
} |
} |
656 |
// MIDI device driver type. |
// MIDI device driver type. |
657 |
pDeviceInfo = ::lscp_get_midi_device_info(pMainForm->client(), m_iMidiDevice); |
pDeviceInfo = ::lscp_get_midi_device_info(pMainForm->client(), m_iMidiDevice); |
658 |
if (pDeviceInfo == NULL) { |
if (pDeviceInfo == nullptr) { |
659 |
appendMessagesClient("lscp_get_midi_device_info"); |
appendMessagesClient("lscp_get_midi_device_info"); |
660 |
m_sMidiDriver = sNone; |
m_sMidiDriver = sNone; |
661 |
} else { |
} else { |
682 |
bool Channel::channelReset (void) |
bool Channel::channelReset (void) |
683 |
{ |
{ |
684 |
MainForm *pMainForm = MainForm::getInstance(); |
MainForm *pMainForm = MainForm::getInstance(); |
685 |
if (pMainForm == NULL) |
if (pMainForm == nullptr) |
686 |
return false; |
return false; |
687 |
if (pMainForm->client() == NULL || m_iChannelID < 0) |
if (pMainForm->client() == nullptr || m_iChannelID < 0) |
688 |
return false; |
return false; |
689 |
|
|
690 |
if (::lscp_reset_channel(pMainForm->client(), m_iChannelID) != LSCP_OK) { |
if (::lscp_reset_channel(pMainForm->client(), m_iChannelID) != LSCP_OK) { |
704 |
#ifdef CONFIG_EDIT_INSTRUMENT |
#ifdef CONFIG_EDIT_INSTRUMENT |
705 |
|
|
706 |
MainForm *pMainForm = MainForm::getInstance(); |
MainForm *pMainForm = MainForm::getInstance(); |
707 |
if (pMainForm == NULL) |
if (pMainForm == nullptr) |
708 |
return false; |
return false; |
709 |
if (pMainForm->client() == NULL || m_iChannelID < 0) |
if (pMainForm->client() == nullptr || m_iChannelID < 0) |
710 |
return false; |
return false; |
711 |
|
|
712 |
if (::lscp_edit_channel_instrument(pMainForm->client(), m_iChannelID) |
if (::lscp_edit_channel_instrument(pMainForm->client(), m_iChannelID) |
745 |
bool Channel::channelSetup ( QWidget *pParent ) |
bool Channel::channelSetup ( QWidget *pParent ) |
746 |
{ |
{ |
747 |
MainForm *pMainForm = MainForm::getInstance(); |
MainForm *pMainForm = MainForm::getInstance(); |
748 |
if (pMainForm == NULL) |
if (pMainForm == nullptr) |
749 |
return false; |
return false; |
750 |
|
|
751 |
bool bResult = false; |
bool bResult = false; |
772 |
} |
} |
773 |
|
|
774 |
void Channel::appendMessagesColor ( |
void Channel::appendMessagesColor ( |
775 |
const QString& sText, const QString& sColor ) const |
const QString& sText, const QColor& rgb ) const |
776 |
{ |
{ |
777 |
MainForm *pMainForm = MainForm::getInstance(); |
MainForm *pMainForm = MainForm::getInstance(); |
778 |
if (pMainForm) |
if (pMainForm) |
779 |
pMainForm->appendMessagesColor(channelName() + ' ' + sText, sColor); |
pMainForm->appendMessagesColor(channelName() + ' ' + sText, rgb); |
780 |
} |
} |
781 |
|
|
782 |
void Channel::appendMessagesText ( const QString& sText ) const |
void Channel::appendMessagesText ( const QString& sText ) const |
991 |
// (used for QTableView) |
// (used for QTableView) |
992 |
|
|
993 |
ChannelRoutingModel::ChannelRoutingModel ( QObject *pParent ) |
ChannelRoutingModel::ChannelRoutingModel ( QObject *pParent ) |
994 |
: QAbstractTableModel(pParent), m_pDevice(NULL) |
: QAbstractTableModel(pParent), m_pDevice(nullptr) |
995 |
{ |
{ |
996 |
} |
} |
997 |
|
|
1103 |
const QStyleOptionViewItem & option, const QModelIndex& index ) const |
const QStyleOptionViewItem & option, const QModelIndex& index ) const |
1104 |
{ |
{ |
1105 |
if (!index.isValid()) |
if (!index.isValid()) |
1106 |
return NULL; |
return nullptr; |
1107 |
|
|
1108 |
if (index.column() != 0) |
if (index.column() != 0) |
1109 |
return NULL; |
return nullptr; |
1110 |
|
|
1111 |
ChannelRoutingItem item = index.model()->data(index, Qt::DisplayRole).value<ChannelRoutingItem>(); |
ChannelRoutingItem item = index.model()->data(index, Qt::DisplayRole).value<ChannelRoutingItem>(); |
1112 |
|
|