19#include <QDialogButtonBox>
24#include "ui_sonivoxsettingsdialog.h"
35const QString SonivoxSettingsDialog::QSTR_PREFERENCES = QStringLiteral(
"SonivoxEAS");
36const QString SonivoxSettingsDialog::QSTR_BUFFERTIME = QStringLiteral(
"BufferTime");
37const QString SonivoxSettingsDialog::QSTR_REVERBTYPE = QStringLiteral(
"ReverbType");
38const QString SonivoxSettingsDialog::QSTR_REVERBAMT = QStringLiteral(
"ReverbAmt");
39const QString SonivoxSettingsDialog::QSTR_CHORUSTYPE = QStringLiteral(
"ChorusType");
40const QString SonivoxSettingsDialog::QSTR_CHORUSAMT = QStringLiteral(
"ChorusAmt");
42SonivoxSettingsDialog::SonivoxSettingsDialog(QWidget *parent) :
44 ui(new Ui::SonivoxSettingsDialog)
47 ui->combo_Reverb->addItem(QStringLiteral(
"Large Hall"), 0);
48 ui->combo_Reverb->addItem(QStringLiteral(
"Hall"), 1);
49 ui->combo_Reverb->addItem(QStringLiteral(
"Chamber"), 2);
50 ui->combo_Reverb->addItem(QStringLiteral(
"Room"), 3);
51 ui->combo_Reverb->addItem(QStringLiteral(
"None"), -1);
52 ui->combo_Reverb->setCurrentIndex(4);
54 ui->combo_Chorus->addItem(QStringLiteral(
"Preset 1"), 0);
55 ui->combo_Chorus->addItem(QStringLiteral(
"Preset 2"), 1);
56 ui->combo_Chorus->addItem(QStringLiteral(
"Preset 3"), 2);
57 ui->combo_Chorus->addItem(QStringLiteral(
"Preset 4"), 3);
58 ui->combo_Chorus->addItem(QStringLiteral(
"None"), -1);
59 ui->combo_Chorus->setCurrentIndex(4);
60 connect(ui->buttonBox->button(QDialogButtonBox::RestoreDefaults), &QPushButton::pressed,
61 this, &SonivoxSettingsDialog::restoreDefaults);
68SonivoxSettingsDialog::~SonivoxSettingsDialog()
71 if (m_driver !=
nullptr) {
77void SonivoxSettingsDialog::accept()
81 if (m_driver !=
nullptr) {
83 QVariant varStatus = m_driver->property(
"status");
84 if (varStatus.isValid()) {
85 title = varStatus.toBool() ? tr(
"Sonivox Initialized") : tr(
"Sonivox Initialization Failed");
86 QVariant varDiag = m_driver->property(
"diagnostics");
87 if (varDiag.isValid()) {
88 QString text = varDiag.toStringList().join(QChar::LineFeed).trimmed();
89 if (varStatus.toBool()) {
90 if (!text.isEmpty()) {
91 QMessageBox::information(
this, title, text);
94 QMessageBox::critical(
this, title, text);
103void SonivoxSettingsDialog::showEvent(QShowEvent *event)
110void SonivoxSettingsDialog::readSettings()
113 SettingsFactory settings;
114 settings->beginGroup(QSTR_PREFERENCES);
115 int bufferTime = settings->value(QSTR_BUFFERTIME, 30).toInt();
116 int reverbType = settings->value(QSTR_REVERBTYPE, 1).toInt();
117 int reverbAmt = settings->value(QSTR_REVERBAMT, 25800).toInt();
118 int chorusType = settings->value(QSTR_CHORUSTYPE, -1).toInt();
119 int chorusAmt = settings->value(QSTR_CHORUSAMT, 0).toInt();
120 settings->endGroup();
122 if (qEnvironmentVariableIsSet(
"PULSE_LATENCY_MSEC")) {
123 bufferTime = qEnvironmentVariableIntValue(
"PULSE_LATENCY_MSEC");
126 ui->spnTime->setValue(bufferTime);
127 ui->dial_Reverb->setValue(reverbAmt);
128 ui->dial_Chorus->setValue(chorusAmt);
129 int reverbIndex = ui->combo_Reverb->findData(reverbType);
130 int chorusIndex = ui->combo_Chorus->findData(chorusType);
131 ui->combo_Reverb->setCurrentIndex(reverbIndex);
132 ui->combo_Chorus->setCurrentIndex(chorusIndex);
134 chkDriverProperties(settings.getQSettings());
137void SonivoxSettingsDialog::writeSettings()
140 SettingsFactory settings;
141 settings->beginGroup(QSTR_PREFERENCES);
142 settings->setValue(QSTR_BUFFERTIME, ui->spnTime->value());
143 settings->setValue(QSTR_REVERBTYPE, ui->combo_Reverb->currentData());
144 settings->setValue(QSTR_CHORUSTYPE, ui->combo_Chorus->currentData());
145 settings->setValue(QSTR_REVERBAMT, ui->dial_Reverb->value());
146 settings->setValue(QSTR_CHORUSAMT, ui->dial_Chorus->value());
147 settings->endGroup();
149 qputenv(
"PULSE_LATENCY_MSEC", QByteArray::number( ui->spnTime->value() ));
150 chkDriverProperties(settings.getQSettings());
153void SonivoxSettingsDialog::chkDriverProperties(
QSettings *settings)
156 if (m_driver !=
nullptr) {
159 m_driver->initialize(settings);
162 QVariant varStatus = m_driver->property(
"status");
163 if (varStatus.isValid()) {
164 ui->lblStatusText->clear();
165 ui->lblStatusText->setText(varStatus.toBool() ? tr(
"Ready") : tr(
"Failed") );
166 ui->lblStatusIcon->setPixmap(varStatus.toBool() ? QPixmap(
":/checked.png") : QPixmap(
":/error.png") );
170void SonivoxSettingsDialog::restoreDefaults()
172 ui->spnTime->setValue(30);
173 ui->combo_Reverb->setCurrentIndex(1);
174 ui->dial_Reverb->setValue(25800);
175 ui->combo_Chorus->setCurrentIndex(4);
176 ui->dial_Chorus->setValue(0);
BackendManager class declaration.
The QSettings class provides persistent platform-independent application settings.
The BackendManager class manages lists of dynamic and static backends for applications based on drums...
MIDIOutput * outputBackendByName(const QString name)
outputBackendByName
virtual void close()=0
close the MIDI port
SettingsFactory class declaration.
Definition of the Sonivox Synth configuration dialog.