23 |
#include "qsamplerAbout.h" |
#include "qsamplerAbout.h" |
24 |
#include "qsamplerDeviceForm.h" |
#include "qsamplerDeviceForm.h" |
25 |
|
|
26 |
|
#include "qsamplerMainForm.h" |
27 |
|
|
28 |
#include <qvalidator.h> |
#include <qvalidator.h> |
29 |
#include <qmessagebox.h> |
#include <qmessagebox.h> |
30 |
#include <qfiledialog.h> |
#include <qfiledialog.h> |
76 |
setCaption(QSAMPLER_TITLE ": " + m_pChannel->channelName()); |
setCaption(QSAMPLER_TITLE ": " + m_pChannel->channelName()); |
77 |
|
|
78 |
// Check if we're up and connected. |
// Check if we're up and connected. |
79 |
if (m_pChannel->client() == NULL) |
qsamplerMainForm *pMainForm = qsamplerMainForm::getInstance(); |
80 |
|
if (pMainForm == NULL) |
81 |
|
return; |
82 |
|
if (pMainForm->client() == NULL) |
83 |
return; |
return; |
84 |
|
|
85 |
qsamplerOptions *pOptions = m_pChannel->options(); |
qsamplerOptions *pOptions = pMainForm->options(); |
86 |
if (pOptions == NULL) |
if (pOptions == NULL) |
87 |
return; |
return; |
88 |
|
|
97 |
this, SLOT(changeAudioRouting(int,int))); |
this, SLOT(changeAudioRouting(int,int))); |
98 |
|
|
99 |
// Populate Engines list. |
// Populate Engines list. |
100 |
const char **ppszEngines = ::lscp_list_available_engines(m_pChannel->client()); |
const char **ppszEngines = ::lscp_list_available_engines(pMainForm->client()); |
101 |
if (ppszEngines) { |
if (ppszEngines) { |
102 |
EngineNameComboBox->clear(); |
EngineNameComboBox->clear(); |
103 |
for (int iEngine = 0; ppszEngines[iEngine]; iEngine++) |
for (int iEngine = 0; ppszEngines[iEngine]; iEngine++) |
108 |
// Populate Audio output type list. |
// Populate Audio output type list. |
109 |
AudioDriverComboBox->clear(); |
AudioDriverComboBox->clear(); |
110 |
AudioDriverComboBox->insertStringList( |
AudioDriverComboBox->insertStringList( |
111 |
qsamplerDevice::getDrivers(m_pChannel->client(), qsamplerDevice::Audio)); |
qsamplerDevice::getDrivers(pMainForm->client(), qsamplerDevice::Audio)); |
112 |
|
|
113 |
// Populate MIDI input type list. |
// Populate MIDI input type list. |
114 |
MidiDriverComboBox->clear(); |
MidiDriverComboBox->clear(); |
115 |
MidiDriverComboBox->insertStringList( |
MidiDriverComboBox->insertStringList( |
116 |
qsamplerDevice::getDrivers(m_pChannel->client(), qsamplerDevice::Midi)); |
qsamplerDevice::getDrivers(pMainForm->client(), qsamplerDevice::Midi)); |
117 |
|
|
118 |
// Read proper channel information, |
// Read proper channel information, |
119 |
// and populate the channel form fields. |
// and populate the channel form fields. |
141 |
InstrumentNrComboBox->setCurrentItem(pChannel->instrumentNr()); |
InstrumentNrComboBox->setCurrentItem(pChannel->instrumentNr()); |
142 |
|
|
143 |
// MIDI input device... |
// MIDI input device... |
144 |
qsamplerDevice midiDevice(m_pChannel->mainForm(), |
qsamplerDevice midiDevice(qsamplerDevice::Midi, m_pChannel->midiDevice()); |
|
qsamplerDevice::Midi, m_pChannel->midiDevice()); |
|
145 |
// MIDI input driver... |
// MIDI input driver... |
146 |
QString sMidiDriver = midiDevice.driverName(); |
QString sMidiDriver = midiDevice.driverName(); |
147 |
if (sMidiDriver.isEmpty() || bNew) |
if (sMidiDriver.isEmpty() || bNew) |
163 |
int iMidiChannel = pChannel->midiChannel(); |
int iMidiChannel = pChannel->midiChannel(); |
164 |
// When new, try to suggest a sensible MIDI channel... |
// When new, try to suggest a sensible MIDI channel... |
165 |
if (iMidiChannel < 0) |
if (iMidiChannel < 0) |
166 |
iMidiChannel = (::lscp_get_channels(m_pChannel->client()) % 16); |
iMidiChannel = (::lscp_get_channels(pMainForm->client()) % 16); |
167 |
MidiChannelComboBox->setCurrentItem(iMidiChannel); |
MidiChannelComboBox->setCurrentItem(iMidiChannel); |
168 |
|
|
169 |
// Audio output device... |
// Audio output device... |
170 |
qsamplerDevice audioDevice(m_pChannel->mainForm(), |
qsamplerDevice audioDevice(qsamplerDevice::Audio, m_pChannel->audioDevice()); |
|
qsamplerDevice::Audio, m_pChannel->audioDevice()); |
|
171 |
// Audio output driver... |
// Audio output driver... |
172 |
QString sAudioDriver = audioDevice.driverName(); |
QString sAudioDriver = audioDevice.driverName(); |
173 |
if (sAudioDriver.isEmpty() || bNew) |
if (sAudioDriver.isEmpty() || bNew) |
201 |
if (m_pChannel == NULL) |
if (m_pChannel == NULL) |
202 |
return; |
return; |
203 |
|
|
204 |
qsamplerOptions *pOptions = m_pChannel->options(); |
qsamplerMainForm *pMainForm = qsamplerMainForm::getInstance(); |
205 |
|
if (pMainForm == NULL) |
206 |
|
return; |
207 |
|
if (pMainForm->client() == NULL) |
208 |
|
return; |
209 |
|
|
210 |
|
qsamplerOptions *pOptions = pMainForm->options(); |
211 |
if (pOptions == NULL) |
if (pOptions == NULL) |
212 |
return; |
return; |
213 |
|
|
299 |
break; |
break; |
300 |
default: // Cancel. |
default: // Cancel. |
301 |
bReject = false; |
bReject = false; |
302 |
|
break; |
303 |
} |
} |
304 |
} |
} |
305 |
|
|
311 |
// Browse and open an instrument file. |
// Browse and open an instrument file. |
312 |
void qsamplerChannelForm::openInstrumentFile (void) |
void qsamplerChannelForm::openInstrumentFile (void) |
313 |
{ |
{ |
314 |
qsamplerOptions *pOptions = m_pChannel->options(); |
qsamplerMainForm *pMainForm = qsamplerMainForm::getInstance(); |
315 |
|
if (pMainForm == NULL) |
316 |
|
return; |
317 |
|
if (pMainForm->client() == NULL) |
318 |
|
return; |
319 |
|
|
320 |
|
qsamplerOptions *pOptions = pMainForm->options(); |
321 |
if (pOptions == NULL) |
if (pOptions == NULL) |
322 |
return; |
return; |
323 |
|
|
341 |
// Refresh the actual instrument name. |
// Refresh the actual instrument name. |
342 |
void qsamplerChannelForm::updateInstrumentName (void) |
void qsamplerChannelForm::updateInstrumentName (void) |
343 |
{ |
{ |
344 |
qsamplerOptions *pOptions = m_pChannel->options(); |
qsamplerMainForm *pMainForm = qsamplerMainForm::getInstance(); |
345 |
|
if (pMainForm == NULL) |
346 |
|
return; |
347 |
|
if (pMainForm->client() == NULL) |
348 |
|
return; |
349 |
|
|
350 |
|
qsamplerOptions *pOptions = pMainForm->options(); |
351 |
if (pOptions == NULL) |
if (pOptions == NULL) |
352 |
return; |
return; |
353 |
|
|
363 |
optionsChanged(); |
optionsChanged(); |
364 |
} |
} |
365 |
|
|
366 |
|
|
367 |
// Show device options dialog. |
// Show device options dialog. |
368 |
void qsamplerChannelForm::setupDevice ( qsamplerDevice *pDevice, |
void qsamplerChannelForm::setupDevice ( qsamplerDevice *pDevice, |
369 |
qsamplerDevice::qsamplerDeviceType deviceTypeMode, |
qsamplerDevice::qsamplerDeviceType deviceTypeMode, |
370 |
const QString& sDriverName ) |
const QString& sDriverName ) |
371 |
{ |
{ |
372 |
|
qsamplerMainForm *pMainForm = qsamplerMainForm::getInstance(); |
373 |
|
if (pMainForm == NULL) |
374 |
|
return; |
375 |
|
if (pMainForm->client() == NULL) |
376 |
|
return; |
377 |
|
|
378 |
// Create the device form if not already... |
// Create the device form if not already... |
379 |
if (m_pDeviceForm == NULL) { |
if (m_pDeviceForm == NULL) { |
380 |
m_pDeviceForm = new qsamplerDeviceForm(this, 0, |
m_pDeviceForm = new qsamplerDeviceForm(this, 0, |
381 |
WType_Dialog | WShowModal); |
WType_Dialog | WShowModal); |
|
m_pDeviceForm->setMainForm(m_pChannel->mainForm()); |
|
382 |
QObject::connect(m_pDeviceForm, SIGNAL(devicesChanged()), |
QObject::connect(m_pDeviceForm, SIGNAL(devicesChanged()), |
383 |
this, SLOT(updateDevices())); |
this, SLOT(updateDevices())); |
384 |
} |
} |
386 |
// Refresh the device form with selected data. |
// Refresh the device form with selected data. |
387 |
if (m_pDeviceForm) { |
if (m_pDeviceForm) { |
388 |
m_pDeviceForm->setDeviceTypeMode(deviceTypeMode); |
m_pDeviceForm->setDeviceTypeMode(deviceTypeMode); |
389 |
m_pDeviceForm->setClient(m_pChannel->client()); // -> refreshDevices(); |
m_pDeviceForm->refreshDevices(); |
390 |
m_pDeviceForm->setDevice(pDevice); |
m_pDeviceForm->setDevice(pDevice); |
391 |
m_pDeviceForm->setDriverName(sDriverName); |
m_pDeviceForm->setDriverName(sDriverName); |
392 |
m_pDeviceForm->show(); |
m_pDeviceForm->show(); |
397 |
// Refresh MIDI driver item devices. |
// Refresh MIDI driver item devices. |
398 |
void qsamplerChannelForm::selectMidiDriverItem ( const QString& sMidiDriver ) |
void qsamplerChannelForm::selectMidiDriverItem ( const QString& sMidiDriver ) |
399 |
{ |
{ |
400 |
|
qsamplerMainForm *pMainForm = qsamplerMainForm::getInstance(); |
401 |
|
if (pMainForm == NULL) |
402 |
|
return; |
403 |
|
if (pMainForm->client() == NULL) |
404 |
|
return; |
405 |
|
|
406 |
const QString sDriverName = sMidiDriver.upper(); |
const QString sDriverName = sMidiDriver.upper(); |
407 |
|
|
408 |
// Save current device id. |
// Save current device id. |
417 |
|
|
418 |
// Populate with the current ones... |
// Populate with the current ones... |
419 |
const QPixmap& midiPixmap = QPixmap::fromMimeSource("midi2.png"); |
const QPixmap& midiPixmap = QPixmap::fromMimeSource("midi2.png"); |
420 |
int *piDeviceIDs = qsamplerDevice::getDevices(m_pChannel->client(), |
int *piDeviceIDs = qsamplerDevice::getDevices(pMainForm->client(), |
421 |
qsamplerDevice::Midi); |
qsamplerDevice::Midi); |
422 |
for (int i = 0; piDeviceIDs && piDeviceIDs[i] >= 0; i++) { |
for (int i = 0; piDeviceIDs && piDeviceIDs[i] >= 0; i++) { |
423 |
pDevice = new qsamplerDevice(m_pChannel->mainForm(), |
pDevice = new qsamplerDevice(qsamplerDevice::Midi, piDeviceIDs[i]); |
|
qsamplerDevice::Midi, piDeviceIDs[i]); |
|
424 |
if (pDevice->driverName().upper() == sDriverName) { |
if (pDevice->driverName().upper() == sDriverName) { |
425 |
MidiDeviceComboBox->insertItem(midiPixmap, pDevice->deviceName()); |
MidiDeviceComboBox->insertItem(midiPixmap, pDevice->deviceName()); |
426 |
m_midiDevices.append(pDevice); |
m_midiDevices.append(pDevice); |
501 |
// Refresh Audio driver item devices. |
// Refresh Audio driver item devices. |
502 |
void qsamplerChannelForm::selectAudioDriverItem ( const QString& sAudioDriver ) |
void qsamplerChannelForm::selectAudioDriverItem ( const QString& sAudioDriver ) |
503 |
{ |
{ |
504 |
|
qsamplerMainForm *pMainForm = qsamplerMainForm::getInstance(); |
505 |
|
if (pMainForm == NULL) |
506 |
|
return; |
507 |
|
if (pMainForm->client() == NULL) |
508 |
|
return; |
509 |
|
|
510 |
const QString sDriverName = sAudioDriver.upper(); |
const QString sDriverName = sAudioDriver.upper(); |
511 |
|
|
512 |
// Save current device id. |
// Save current device id. |
521 |
|
|
522 |
// Populate with the current ones... |
// Populate with the current ones... |
523 |
const QPixmap& audioPixmap = QPixmap::fromMimeSource("audio2.png"); |
const QPixmap& audioPixmap = QPixmap::fromMimeSource("audio2.png"); |
524 |
int *piDeviceIDs = qsamplerDevice::getDevices(m_pChannel->client(), |
int *piDeviceIDs = qsamplerDevice::getDevices(pMainForm->client(), |
525 |
qsamplerDevice::Audio); |
qsamplerDevice::Audio); |
526 |
for (int i = 0; piDeviceIDs && piDeviceIDs[i] >= 0; i++) { |
for (int i = 0; piDeviceIDs && piDeviceIDs[i] >= 0; i++) { |
527 |
pDevice = new qsamplerDevice(m_pChannel->mainForm(), |
pDevice = new qsamplerDevice(qsamplerDevice::Audio, piDeviceIDs[i]); |
|
qsamplerDevice::Audio, piDeviceIDs[i]); |
|
528 |
if (pDevice->driverName().upper() == sDriverName) { |
if (pDevice->driverName().upper() == sDriverName) { |
529 |
AudioDeviceComboBox->insertItem(audioPixmap, pDevice->deviceName()); |
AudioDeviceComboBox->insertItem(audioPixmap, pDevice->deviceName()); |
530 |
m_audioDevices.append(pDevice); |
m_audioDevices.append(pDevice); |