summaryrefslogtreecommitdiff
path: root/muse2/synti/simpledrums/simpledrumsgui.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'muse2/synti/simpledrums/simpledrumsgui.cpp')
-rw-r--r--muse2/synti/simpledrums/simpledrumsgui.cpp893
1 files changed, 0 insertions, 893 deletions
diff --git a/muse2/synti/simpledrums/simpledrumsgui.cpp b/muse2/synti/simpledrums/simpledrumsgui.cpp
deleted file mode 100644
index f874a136..00000000
--- a/muse2/synti/simpledrums/simpledrumsgui.cpp
+++ /dev/null
@@ -1,893 +0,0 @@
-//
-// C++ Implementation: testogui
-//
-// Description:
-//
-//
-// Author: Mathias Lundgren <lunar_shuttle@users.sf.net>, (C) 2004
-//
-// Copyright: See COPYING file that comes with this distribution
-//
-//
-
-#include <q3buttongroup.h>
-#include <qlabel.h>
-#include <q3filedialog.h>
-#include <qsocketnotifier.h>
-#include <qlayout.h>
-#include <qtooltip.h>
-#include <qlineedit.h>
-#include <QtGui>
-//Added by qt3to4:
-#include <Q3HBoxLayout>
-#include <Q3GridLayout>
-#include <Q3VBoxLayout>
-
-#include "simpledrumsgui.h"
-//#include "libsynti/mpevent.h"
-#include "muse/mpevent.h"
-#include "muse/midi.h"
-#include "ssplugingui.h"
-
-#define SS_VOLUME_MIN_VALUE 0
-#define SS_VOLUME_MAX_VALUE 127
-#define SS_VOLUME_DEFAULT_VALUE 100
-#define SS_MASTERVOL_MAX_VALUE 127
-#define SS_MASTERVOL_DEFAULT_VALUE 100.0/127.0
-#define SS_SENDFX_MIN_VALUE 0
-#define SS_SENDFX_MAX_VALUE 127
-
-//Gui constants:
-#define SS_BTNGRP_WIDTH 50
-#define SS_BTNGRP_HEIGHT 80
-#define SS_ONOFF_WIDTH 16
-#define SS_ONOFF_HEIGHT 21
-#define SS_VOLSLDR_WIDTH (SS_BTNGRP_WIDTH - 8)
-#define SS_VOLSLDR_LENGTH 120
-#define SS_PANSLDR_WIDTH (SS_BTNGRP_WIDTH - 8)
-#define SS_PANSLDR_LENGTH 20
-#define SS_PANSLDR_DEFAULT_VALUE 63
-#define SS_NONOFF_LABEL_WIDTH 30
-#define SS_NONOFF_LABEL_HEIGHT 16
-#define SS_NONOFF_WIDTH SS_ONOFF_WIDTH
-#define SS_NONOFF_HEIGHT SS_ONOFF_HEIGHT
-#define SS_SENDFX_WIDTH ((SS_BTNGRP_WIDTH/2) - 4)
-//#define SS_SENDFX_WIDTH 28
-#define SS_SENDFX_HEIGHT SS_SENDFX_WIDTH
-#define SS_MASTERSLDR_WIDTH (SS_BTNGRP_WIDTH - 8)
-#define SS_MASTERSLDR_HEIGHT (SS_BTNGRP_HEIGHT - 4)
-
-
-// Sample groupbox
-
-#define SS_SAMPLENAME_LABEL_WIDTH 30
-#define SS_SAMPLENAME_LABEL_HEIGHT 21
-#define SS_SAMPLENAME_LABEL_XOFF 4
-
-#define SS_SAMPLE_LOAD_WIDTH 15
-#define SS_SAMPLE_LOAD_HEIGHT 19
-
-#define SS_SAMPLE_CLEAR_WIDTH SS_SAMPLE_LOAD_WIDTH
-#define SS_SAMPLE_CLEAR_HEIGHT SS_SAMPLE_LOAD_HEIGHT
-
-#define SS_SAMPLENAME_LINEEDIT_WIDTH 90
-#define SS_SAMPLENAME_LINEEDIT_HEIGHT 21
-
-#define SS_SAMPLE_INFO_LINE_HEIGHT 22
-#define SS_SAMPLE_INFO_LINE_WIDTH (SS_SAMPLENAME_LINEEDIT_XOFF + SS_SAMPLENAME_LINEEDIT_WIDTH)
-
-#define SS_GUI_WINDOW_WIDTH ((SS_NR_OF_CHANNELS +1) * SS_BTNGRP_XOFF)
-#define SS_MAIN_GROUPBOX_HEIGHT 200
-#define SS_GUI_WINDOW_HEIGHT (SS_BTNGRP_HEIGHT + SS_MAIN_GROUPBOX_HEIGHT)
-#define SS_MAIN_GROUPBOX_WIDTH SS_GUI_WINDOW_WIDTH
-
-SimpleSynthGui* simplesynthgui_ptr;
-
-
-/*!
- \fn QChannelSlider::QChannelSlider(Qt::Orientation orientation, int ch, QWidget* parent, const char* name)
- */
-QChannelSlider::QChannelSlider(Qt::Orientation orientation, int ch, QWidget* parent, const char* name)
- : QSlider(orientation, parent, name)
- {
- channel = ch;
- }
-
-
-/*!
- \fn QChannelSlider::getChannel()
- */
-int QChannelSlider::getChannel()
- {
- return channel;
- }
-
-
-/*!
- \fn QChannelSlider::setChannel(int ch)
- */
-void QChannelSlider::setChannel(int ch)
- {
- channel = ch;
- }
-
-/*!
- \fn QChannelSlider::setValue(int val)
- */
-void QChannelSlider::setValue(int val)
- {
- val = (val > 127 ? 127 : val);
- val = (val < 0 ? 0 : val);
- QSlider::setValue(val);
- emit valueChanged(channel, val);
- }
-
-/*!
- \fn QInvertedChannelSlider::setValue(int val)
- */
-void QInvertedChannelSlider::setValue(int val)
- {
- int inverted = this->maxValue() - val;
- inverted = (inverted > 127 ? 127 : inverted);
- inverted = (inverted < 0 ? 0 : inverted);
- QSlider::setValue(val);
- emit valueChanged(channel, inverted);
- }
-
-/*!
- \fn QInvertedSlider::setValue(int val)
- */
-void QInvertedSlider::setValue(int val)
- {
- int inverted = this->maxValue() - val;
- inverted = (inverted > 127 ? 127 : inverted);
- inverted = (inverted < 0 ? 0 : inverted);
- emit invertedValueChanged(inverted);
- QSlider::setValue(val);
- }
-
-
-/*!
- \fn QChannelCheckbox::QChannelCheckbox(QWidget* parent, int ch, const char* name)
- */
-QChannelCheckbox::QChannelCheckbox(QWidget* parent, int ch, const char* name)
- : QCheckBox(parent, name)
- {
- channel = ch;
- connect(this, SIGNAL(clicked()), SLOT(isClicked()));
- }
-
-
-/*!
- \fn QChannelCheckbox::isClicked()
- */
-void QChannelCheckbox::isClicked()
- {
- emit channelState(channel, this->isOn());
- }
-
-/*!
- \fn QChannelButton::QChannelButton(QWidget* parent, const char* text, int ch, const char* name)
- */
-QChannelButton::QChannelButton(QWidget* parent, const char* text, int ch, const char* name)
- : QPushButton(parent, name), channel (ch)
- {
- connect(this, SIGNAL(clicked()), SLOT(isClicked()));
- setText(text);
- }
-
-/*!
- \fn QChannelButton::isClicked()
- */
-void QChannelButton::isClicked()
- {
- emit channelState(channel, this->isOn());
- }
-
-/*!
- \fn QChannelDial()
- */
-QChannelDial::QChannelDial(QWidget* parent, int ch, int fxid, const char* name)
- : QDial(parent, name)
- {
- setTracking(true);
- channel = ch;
- sendfxid = fxid;
- }
-
-/*!
- \fn QChannelSlider::setValue(int val)
- */
-void QChannelDial::setValue(int val)
- {
- QDial::setValue(val);
- emit valueChanged(channel, sendfxid, val);
- }
-
-/*!
- \fn SimpleSynthGui::SimpleSynthGui()
- */
-SimpleSynthGui::SimpleSynthGui()
- {
- SS_TRACE_IN
- simplesynthgui_ptr = this;
- pluginGui = new SS_PluginGui(this);
- pluginGui->hide();
-
- Q3VBoxLayout* mainLayout = new Q3VBoxLayout(this, 3);
- Q3HBoxLayout* channelLayout = new Q3HBoxLayout(mainLayout, 1, "channellayout");
-
- //this->setFixedWidth(SS_GUI_WINDOW_WIDTH);
- //this->setFixedHeight(SS_GUI_WINDOW_HEIGHT);
- for (int i=0; i<SS_NR_OF_CHANNELS; i++) {
- channelButtonGroups[i] = new Q3ButtonGroup(this);
- channelButtonGroups[i]->setMinimumSize(SS_BTNGRP_WIDTH, SS_BTNGRP_HEIGHT);
- channelButtonGroups[i]->setTitle(QString::number(i + 1));
-
- QString name = QString("volumeSlider");
- name.append(i + 1);
-
- channelLayout->add(channelButtonGroups[i]);
-
- Q3VBoxLayout* inchnlLayout = new Q3VBoxLayout(channelButtonGroups[i], 2, 0, "channelinternallayout");
- inchnlLayout->setAlignment(Qt::AlignHCenter);
-
- onOff[i] = new QChannelCheckbox(channelButtonGroups[i], i);
- onOff[i]->setMinimumSize(SS_ONOFF_WIDTH, SS_ONOFF_HEIGHT);
- QToolTip::add(onOff[i], "Channel " + QString::number(i + 1) + " on/off");
- inchnlLayout->add(onOff[i]);
- connect(onOff[i], SIGNAL(channelState(int, bool)), SLOT(channelOnOff(int, bool)));
-
- volumeSliders[i] = new QInvertedChannelSlider(Qt::Vertical, i, channelButtonGroups[i], name);
- volumeSliders[i]->setMinValue(SS_VOLUME_MIN_VALUE);
- volumeSliders[i]->setMaxValue(SS_VOLUME_MAX_VALUE);
- volumeSliders[i]->setValue(SS_VOLUME_MAX_VALUE - SS_VOLUME_DEFAULT_VALUE);
- volumeSliders[i]->setMinimumSize(SS_VOLSLDR_WIDTH, SS_VOLSLDR_LENGTH);
- QToolTip::add(volumeSliders[i], "Volume, channel " + QString::number(i + 1));
- setMinimumSize(SS_VOLSLDR_WIDTH, SS_VOLSLDR_LENGTH);
- inchnlLayout->add(volumeSliders[i]);
- connect(volumeSliders[i], SIGNAL(valueChanged(int, int)), SLOT(volumeChanged(int, int)));
-
- nOffLabel[i] = new QLabel(channelButtonGroups[i]);
- nOffLabel[i]->setMinimumSize(SS_NONOFF_LABEL_WIDTH, SS_NONOFF_LABEL_HEIGHT);
- nOffLabel[i]->setText("nOff");
- inchnlLayout->add(nOffLabel[i]);
-
- nOffIgnore[i] = new QChannelCheckbox(channelButtonGroups[i], i);
- nOffIgnore[i]->setMinimumSize(SS_NONOFF_WIDTH, SS_NONOFF_HEIGHT);
- QToolTip::add(nOffIgnore[i], "Note off ignore, channel " + QString::number(i + 1));
- inchnlLayout->add(nOffIgnore[i]);
- connect(nOffIgnore[i], SIGNAL(channelState(int, bool)),SLOT(channelNoteOffIgnore(int, bool)));
-
- panSliders[i] = new QChannelSlider(Qt::Horizontal, i, channelButtonGroups[i]);
- panSliders[i]->setRange(0, 127);
- panSliders[i]->setValue(SS_PANSLDR_DEFAULT_VALUE);
- panSliders[i]->setMinimumSize(SS_PANSLDR_WIDTH, SS_PANSLDR_LENGTH);
- QToolTip::add(panSliders[i], "Pan, channel " + QString::number(i + 1));
- inchnlLayout->add(panSliders[i]);
- connect(panSliders[i], SIGNAL(valueChanged(int, int)), SLOT(panChanged(int, int)));
-
- Q3GridLayout* dialGrid = new Q3GridLayout(inchnlLayout, 2, 2, 0);
- sendFxDial[i][0] = new QChannelDial(channelButtonGroups[i], i, 0);
- sendFxDial[i][0]->setRange(0, 127);
- sendFxDial[i][0]->setMaximumSize(SS_SENDFX_WIDTH, SS_SENDFX_HEIGHT);
- QToolTip::add(sendFxDial[i][0], "Fx 1 send amount");
- //inchnlLayout->add(sendFxDial[i][0]);
- dialGrid->addWidget(sendFxDial[i][0], 0, 0, Qt::AlignCenter | Qt::AlignTop);
-
- connect(sendFxDial[i][0], SIGNAL(valueChanged(int, int, int)), SLOT(sendFxChanged(int, int, int)));
-
- sendFxDial[i][1] = new QChannelDial(channelButtonGroups[i], i, 1);
- sendFxDial[i][1]->setRange(0, 127);
- //inchnlLayout->add(sendFxDial[i][1]);
- dialGrid->addWidget(sendFxDial[i][1], 0, 1, Qt::AlignCenter | Qt::AlignTop);
- sendFxDial[i][1]->setMaximumSize(SS_SENDFX_WIDTH, SS_SENDFX_HEIGHT);
- QToolTip::add(sendFxDial[i][1], "Fx 2 send amount");
-
- connect(sendFxDial[i][1], SIGNAL(valueChanged(int, int, int)), SLOT(sendFxChanged(int, int, int)));
-
- sendFxDial[i][2] = new QChannelDial(channelButtonGroups[i], i, 2);
- sendFxDial[i][2]->setRange(0, 127);
- sendFxDial[i][2]->setMaximumSize(SS_SENDFX_WIDTH, SS_SENDFX_HEIGHT);
- //inchnlLayout->add(sendFxDial[i][2]);
- dialGrid->addWidget(sendFxDial[i][2], 1, 0, Qt::AlignCenter | Qt::AlignTop);
- QToolTip::add(sendFxDial[i][2], "Fx 3 send amount");
- connect(sendFxDial[i][2], SIGNAL(valueChanged(int, int, int)), SLOT(sendFxChanged(int, int, int)));
-
- sendFxDial[i][3] = new QChannelDial(channelButtonGroups[i], i, 3);
- sendFxDial[i][3]->setRange(0, 127);
- sendFxDial[i][3]->setMaximumSize(SS_SENDFX_WIDTH, SS_SENDFX_HEIGHT);
- QToolTip::add(sendFxDial[i][3], "Fx 4 send amount");
-
- dialGrid->addWidget(sendFxDial[i][3], 1, 1, Qt::AlignCenter | Qt::AlignTop);
- connect(sendFxDial[i][3], SIGNAL(valueChanged(int, int, int)), SLOT(sendFxChanged(int, int, int)));
- inchnlLayout->activate();
- //channelLayout->activate();
- }
-
- //Master buttongroup:
- masterButtonGroup = new Q3ButtonGroup(this, "masterButtonGroup");
- channelLayout->add(masterButtonGroup);
- Q3VBoxLayout* mbgLayout = new Q3VBoxLayout(masterButtonGroup, 0);
- mbgLayout->setAlignment(Qt::AlignCenter);
- masterButtonGroup->setMinimumSize(SS_BTNGRP_WIDTH, SS_BTNGRP_HEIGHT);
- masterSlider = new QInvertedSlider(Qt::Vertical, masterButtonGroup);
- QToolTip::add(masterSlider, "Master volume");
- mbgLayout->add(masterSlider);
- masterSlider->setRange(0, 127);
- masterSlider->setValue(SS_VOLUME_MAX_VALUE - (int)(SS_MASTERVOL_DEFAULT_VALUE*SS_VOLUME_MAX_VALUE));
- masterSlider->setMinimumSize(SS_MASTERSLDR_WIDTH, SS_MASTERSLDR_HEIGHT);
- connect(masterSlider, SIGNAL(invertedValueChanged(int)), SLOT(masterVolChanged(int)));
-
- //Main groupbox
- mainGroupBox = new Q3GroupBox(this, "mainGroupBox");
- mainLayout->add(mainGroupBox);
-
- Q3GridLayout* mgbLayout = new Q3GridLayout(mainGroupBox, 8, 3, 1);
-
- int i=0;
-
- for (int c=0; c<2; c++) {
- for (int r=0; r<SS_NR_OF_CHANNELS/2; r++) {
- Q3HBoxLayout* strip = new Q3HBoxLayout;//(mgbLayout, 5);
- mgbLayout->addLayout(strip, r, c);
-
- QLabel* channelLabel = new QLabel(QString("Ch ") + QString::number(i + 1), mainGroupBox);
- strip->add(channelLabel);
-
- sampleNameLineEdit[i] = new QLineEdit(mainGroupBox);
- sampleNameLineEdit[i]->setReadOnly(true);
- strip->add(sampleNameLineEdit[i]);
-
- loadSampleButton[i] = new QChannelButton(mainGroupBox, "L", i);
- loadSampleButton[i]->setMinimumSize(SS_SAMPLE_LOAD_WIDTH, SS_SAMPLE_LOAD_HEIGHT);
- QToolTip::add(loadSampleButton[i], "Load sample on channel " + QString::number(i + 1));
- strip->add(loadSampleButton[i]);
- connect(loadSampleButton[i], SIGNAL(channelState(int, bool)), SLOT(loadSampleDialogue(int)));
-
- clearSampleButton[i] = new QChannelButton(mainGroupBox, "C", i);
- clearSampleButton[i]->setMinimumSize(SS_SAMPLE_CLEAR_WIDTH, SS_SAMPLE_CLEAR_HEIGHT);
- QToolTip::add(clearSampleButton[i], "Clear sample on channel " + QString::number(i + 1));
- strip->add(clearSampleButton[i]);
- connect(clearSampleButton[i], SIGNAL(channelState(int, bool)), SLOT(clearSample(int)));
-
- i++;
- }
- }
-
- // Right bottom panel:
- Q3ButtonGroup* rbPanel= new Q3ButtonGroup(mainGroupBox, "right_bottom_panel");
- mgbLayout->addMultiCellWidget(rbPanel, 1, 8, 3, 3, Qt::AlignCenter);
- Q3GridLayout* rbLayout = new Q3GridLayout(rbPanel, 6, 1, 8, 5);
- openPluginsButton = new QPushButton("&Send Effects", rbPanel);
- QToolTip::add(openPluginsButton, "Configure LADSPA send effects");
- connect(openPluginsButton, SIGNAL(clicked()), SLOT(openPluginButtonClicked()));
- aboutButton = new QPushButton("About SimpleDrums", rbPanel);
- connect(aboutButton, SIGNAL(clicked()), SLOT(aboutButtonClicked()));
- QPushButton* loadButton = new QPushButton(tr("&Load setup"), rbPanel);
- connect(loadButton, SIGNAL(clicked()), SLOT(loadSetup()));
- QPushButton* saveButton = new QPushButton(tr("&Save setup"), rbPanel);
- connect(saveButton, SIGNAL(clicked()), SLOT(saveSetup()));
-
- rbLayout->addWidget(openPluginsButton, 1, 1, Qt::AlignCenter | Qt::AlignVCenter);
- rbLayout->addRowSpacing(2, 20);
- rbLayout->addWidget(loadButton, 3, 1, Qt::AlignCenter | Qt::AlignVCenter);
- rbLayout->addWidget(saveButton, 4, 1, Qt::AlignCenter | Qt::AlignVCenter);
- rbLayout->addRowSpacing(5, 20);
- rbLayout->addWidget(aboutButton, 6, 1, Qt::AlignCenter | Qt::AlignVCenter);
-
- lastDir = "";
- //Connect socketnotifier to fifo
- QSocketNotifier* s = new QSocketNotifier(readFd, QSocketNotifier::Read);
- connect(s, SIGNAL(activated(int)), SLOT(readMessage(int)));
- SS_TRACE_OUT
-
- // work around for probable QT/WM interaction bug.
- // for certain window managers, e.g xfce, this window is
- // is displayed although not specifically set to show();
- // bug: 2811156 Softsynth GUI unclosable with XFCE4 (and a few others)
- show();
- hide();
- }
-
-/*!
- \fn SimpleSynthGui::~SimpleSynthGui()
- */
-SimpleSynthGui::~SimpleSynthGui()
- {
- SS_TRACE_IN
- simplesynthgui_ptr = 0;
- delete pluginGui;
- SS_TRACE_OUT
- }
-
-/*!
- \fn SimpleSynthGui::readMessage(int)
- */
-void SimpleSynthGui::readMessage(int)
- {
- MessGui::readMessage();
- }
-
-/*!
- \fn SimpleSynthGui::processEvent(const MidiPlayEvent& ev)
- */
-void SimpleSynthGui::processEvent(const MidiPlayEvent& ev)
- {
- SS_TRACE_IN
- if (SS_DEBUG_MIDI) {
- printf("GUI received midi event\n");
- }
- if (ev.type() == ME_CONTROLLER) {
- int id = ev.dataA();
- int val = ev.dataB();
-
- // Channel controllers:
- if (id >= SS_FIRST_CHANNEL_CONTROLLER && id <= SS_LAST_CHANNEL_CONTROLLER ) {
- // Find out which channel we're dealing with:
- id-= SS_FIRST_CHANNEL_CONTROLLER;
- int ch = (id / SS_NR_OF_CHANNEL_CONTROLLERS);
- id = (id % SS_NR_OF_CHANNEL_CONTROLLERS);
-
- int fxid = -1;
-
- if (SS_DEBUG_MIDI) {
- printf("GUI received midi controller - id: %d val %d channel %d\n", id, val, ch);
- }
-
- switch(id) {
- case SS_CHANNEL_CTRL_VOLUME:
- volumeSliders[ch]->blockSignals(true);
- volumeSliders[ch]->setValue(SS_VOLUME_MAX_VALUE - val);
- volumeSliders[ch]->blockSignals(false);
- break;
-
- case SS_CHANNEL_CTRL_PAN:
- panSliders[ch]->blockSignals(true);
- panSliders[ch]->setValue(val);
- panSliders[ch]->blockSignals(false);
- break;
-
- case SS_CHANNEL_CTRL_NOFF:
- nOffIgnore[ch]->blockSignals(true);
- nOffIgnore[ch]->setChecked(val);
- nOffIgnore[ch]->blockSignals(false);
- break;
-
- case SS_CHANNEL_CTRL_ONOFF:
- onOff[ch]->blockSignals(true);
- onOff[ch]->setChecked(val);
- onOff[ch]->blockSignals(false);
- break;
-
- case SS_CHANNEL_SENDFX1:
- case SS_CHANNEL_SENDFX2:
- case SS_CHANNEL_SENDFX3:
- case SS_CHANNEL_SENDFX4:
- fxid = id - SS_CHANNEL_SENDFX1;
- if (SS_DEBUG_MIDI) {
- printf("SimpleSynthGui::processEvent - Channel sendfx, fxid: %d, val: %d\n", fxid, val);
- }
- sendFxDial[ch][fxid]->blockSignals(true);
- sendFxDial[ch][fxid]->setValue(val);
- sendFxDial[ch][fxid]->blockSignals(false);
- break;
-
- default:
- if (SS_DEBUG_MIDI)
- printf("SimpleSynthGui::processEvent - unknown controller received: %d\n", id);
- }
- }
- // Master controllers:
- else if (id >= SS_FIRST_MASTER_CONTROLLER && id <= SS_LAST_MASTER_CONTROLLER) {
- if (id == SS_MASTER_CTRL_VOLUME) {
- masterSlider->blockSignals(true);
- masterSlider->setValue(SS_MASTERVOL_MAX_VALUE - val);
- masterSlider->blockSignals(false);
- }
- }
- else if (id>= SS_FIRST_PLUGIN_CONTROLLER && id <= SS_LAST_PLUGIN_CONTROLLER) {
- int fxid = (id - SS_FIRST_PLUGIN_CONTROLLER) / SS_NR_OF_PLUGIN_CONTROLLERS;
- int cmd = (id - SS_FIRST_PLUGIN_CONTROLLER) % SS_NR_OF_PLUGIN_CONTROLLERS;
-
- // Plugin return-gain:
- if (cmd == SS_PLUGIN_RETURN) {
- if (SS_DEBUG_MIDI)
- printf("SimpleSynthGui::processEvent - fx retgain received: fxid: %d val: %d\n", fxid, val);
-
- SS_PluginFront* pf = pluginGui->getPluginFront((unsigned)fxid);
- pf->setRetGain(val);
- }
- }
- }
- //
- // Sysexes:
- //
- else if (ev.type() == ME_SYSEX) {
- byte* data = ev.data();
- int cmd = *data;
- switch (cmd) {
- case SS_SYSEX_LOAD_SAMPLE_OK: {
- int ch = *(data+1);
- QString filename = (const char*) (data+2);
- sampleNameLineEdit[ch]->setText(filename.section('/',-1,-1));
- if (SS_DEBUG_MIDI) {
- printf("SimpleSynthGui - sample %s loaded OK on channel: %d\n", filename.toLatin1(), ch);
- }
- if (!onOff[ch]->isChecked()) {
- onOff[ch]->blockSignals(true);
- onOff[ch]->setChecked(true);
- onOff[ch]->blockSignals(false);
- channelOnOff(ch, true);
- }
- break;
- }
-
- case SS_SYSEX_LOAD_SAMPLE_ERROR: {
- //int ch = *(data+1);
- const char* filename = (const char*) (data+2);
- /*QMessageBox* yn = new QMessageBox("Sample not found", "Failed to load sample: " + QString(filename) + "\n" +
- "Do you want to open file browser and try to locate it elsewhere?",
- QMessageBox::Warning,
- QMessageBox::Yes,
- QMessageBox::No,
- QMessageBox::NoButton,
- this);*/
- /*int res = QMessageBox::warning(this,
- "SimpleDrums","Failed to load sample: " + QString(filename) + "\n" +
- "Do you want to open file browser and try to locate it elsewhere?",
- "&Yes", "&No");
- */
- //int res = yn->exec();
- printf("Error: Sample %s not found! TODO: Fix this\n", filename);
- //if (res == 0) {
- // loadSampleDialogue(ch);
- // }
- break;
- }
-
- case SS_SYSEX_LOAD_SENDEFFECT_OK: {
- if (SS_DEBUG_MIDI) {
- printf("SimpleSynthGui - sysex load sendeffect OK on fxid: %d\n", *(data+1));
- }
- int fxid = *(data+1);
- SS_PluginFront* pf = pluginGui->getPluginFront((unsigned)fxid);
- pf->updatePluginValue(*(data+2));
- break;
- }
-
- case SS_SYSEX_CLEAR_SENDEFFECT_OK: {
- if (SS_DEBUG_MIDI) {
- printf("SimpleSynthGui - sysex clear sendeffect OK on fxid: %d\n", *(data+1));
- }
- SS_PluginFront* pf = pluginGui->getPluginFront((unsigned)*(data+1));
- pf->clearPluginDisplay();
- break;
- }
-
- case SS_SYSEX_CLEAR_SAMPLE_OK: {
- if (SS_DEBUG_MIDI) {
- printf("SimpleSynthGui - sysex clear samle OK on channel: %d\n", *(data+1));
- }
- byte ch = *(data+1);
- sampleNameLineEdit[ch]->setText("");
- break;
- }
-
- case SS_SYSEX_SET_PLUGIN_PARAMETER_OK: {
- if (SS_DEBUG_MIDI) {
- printf("SimpleSynthGui - plugin parameter OK on fxid: %d\n", *(data+1));
- }
- SS_PluginFront* pf = pluginGui->getPluginFront((unsigned)*(data+1));
- int param = *(data+2);
- int val = *(data+3);
- pf->blockSignals(true);
- pf->setParameterValue(param, val);
- pf->blockSignals(false);
- break;
- }
-
- case SS_SYSEX_SEND_INIT_DATA: {
- const unsigned initdata_len = ev.len() - 1;
- byte* init_data = (data + 1);
- QFileInfo fileInfo = QFileInfo(lastSavedProject);
-
- lastProjectDir = fileInfo.dirPath(true);
- if (fileInfo.extension(false) != "sds" && fileInfo.extension(false) != "SDS") {
- lastSavedProject += ".sds";
- fileInfo = QFileInfo(lastSavedProject);
- }
- QFile theFile(fileInfo.filePath());
-
- // Write data
- if (theFile.open(QIODevice::WriteOnly)) {
- theFile.writeBlock((const char*)&initdata_len, sizeof(initdata_len)); // First write length
- if (theFile.writeBlock((const char*)init_data, initdata_len) == -1) {
- // Fatal error writing
- QMessageBox msgBox("IO error", "Fatal error when writing to file. Setup not saved.",
- QMessageBox::Warning,
- QMessageBox::Ok,
- QMessageBox::NoButton,
- QMessageBox::NoButton,
- this);
- msgBox.exec();
- }
- theFile.close();
- }
- else {
- // An error occured when opening
- QMessageBox msgBox("IO error", "Error opening file. Setup was not saved.", QMessageBox::Warning,
- QMessageBox::Ok, QMessageBox::NoButton, QMessageBox::NoButton, this);
- msgBox.exec();
- }
-
- break;
- }
-
- default:
- if (SS_DEBUG_MIDI) {
- printf("SimpleSynthGui::processEvent - unknown sysex cmd received: %d\n", cmd);
- }
- break;
- }
- }
- SS_TRACE_OUT
- }
-
-
-/*!
- \fn SimpleSynthGui::volumeChanged(int val)
- */
-void SimpleSynthGui::volumeChanged(int channel, int val)
- {
- setChannelVolume(channel, val);
- }
-
-/*!
- \fn SimpleSynthGui::panChanged(int channel, int value)
- */
-void SimpleSynthGui::panChanged(int channel, int value)
- {
- sendController(0, SS_CHANNEL_PAN_CONTROLLER(channel), value);
- }
-
-/*!
- \fn SimpleSynthGui::channelOnOff(int channel, bool state)
- */
-void SimpleSynthGui::channelOnOff(int channel, bool state)
- {
- sendController(0, SS_CHANNEL_ONOFF_CONTROLLER(channel), state);
- }
-
-/*!
- \fn SimpleSynthGui::channelNoteOffIgnore(bool state)
- */
-void SimpleSynthGui::channelNoteOffIgnore(int channel, bool state)
- {
- sendController(0, SS_CHANNEL_NOFF_CONTROLLER(channel), (int) state);
- }
-
-/*!
- \fn SimpleSynthGui::sendFxChanged(int ch, int fxid, int val)
- */
-void SimpleSynthGui::sendFxChanged(int ch, int fxid, int val)
- {
- sendController(0, SS_CHANNEL_SENDFX_CONTROLLER(ch, fxid), (int) val);
- }
-
-/*!
- \fn SimpleSynthGui::masterVolChanged(int val)
- */
-void SimpleSynthGui::masterVolChanged(int val)
- {
- sendController(0, SS_MASTER_CTRL_VOLUME, val);
- }
-
-/*!
- \fn SimpleSynthGui::setChannelVolume(int channel, byte volume)
- */
-void SimpleSynthGui::setChannelVolume(int channel, int volume)
- {
- //volumeSliders[channel]->setValue(SS_VOLUME_MAX_VALUE - volume);
- sendController(0, SS_CHANNEL_VOLUME_CONTROLLER(channel), (int)volume);
- }
-
-
-/*!
- \fn SimpleSynthGui::loadSampleDialogue(int channel)
- */
-void SimpleSynthGui::loadSampleDialogue(int channel)
- {
- QString filename =
- Q3FileDialog::getOpenFileName(lastDir,
- QString("*.wav;*.WAV"),
- this,
- "Load sample dialog","Choose sample");
-
- if (filename != QString::null) {
- lastDir = filename.left(filename.findRev("/"));
-
- if (SS_DEBUG)
- printf("lastDir = %s\n", lastDir.toLatin1());
-
- int l = filename.length() + 4;
- byte d[l];
-
- d[0] = SS_SYSEX_LOAD_SAMPLE;
- d[1] = (byte) channel;
- d[2] = (byte) filename.length();
- memcpy(d+3, filename.toLatin1(), filename.length()+1);
- sendSysex(d, l);
- }
- }
-
-
-
-/*!
- \fn SimpleSynthGui::clearSample(int ch)
- */
-void SimpleSynthGui::clearSample(int ch)
- {
- if (sampleNameLineEdit[ch]->text().length() > 0) { //OK, we've got a live one here
- byte d[2];
- d[0] = SS_SYSEX_CLEAR_SAMPLE;
- d[1] = (byte) ch;
- sendSysex(d, 2);
- }
- }
-
-/*!
- \fn SimpleSynthGui::displayPluginGui()
- */
-void SimpleSynthGui::displayPluginGui()
- {
- pluginGui->show();
- }
-
-/*!
- \fn SimpleSynthGui::loadEffectInvoked(int fxid, QString lib, QString label)
- */
-void SimpleSynthGui::loadEffectInvoked(int fxid, QString lib, QString label)
- {
- int l = 4 + lib.length() + label.length();
- byte d[l];
- d[0] = SS_SYSEX_LOAD_SENDEFFECT;
- d[1] = (byte) fxid;
- memcpy (d+2, lib.toLatin1(), lib.length()+1);
- memcpy (d+3+lib.length(), label.toLatin1(), label.length()+1);
- sendSysex(d, l);
- }
-
-
-/*!
- \fn SimpleSynthGui::returnLevelChanged(int fxid, int val)
- */
-void SimpleSynthGui::returnLevelChanged(int fxid, int val)
- {
- sendController(0, SS_PLUGIN_RETURNLEVEL_CONTROLLER(fxid), val);
- }
-
-
-/*!
- \fn SimpleSynthGui::toggleEffectOnOff(int fxid, int state)
- */
-void SimpleSynthGui::toggleEffectOnOff(int fxid, int state)
- {
- sendController(0, SS_PLUGIN_ONOFF_CONTROLLER(fxid), state);
- }
-
-
-/*!
- \fn SimpleSynthGui::clearPlugin(int fxid)
- */
-void SimpleSynthGui::clearPlugin(int fxid)
- {
- byte d[2];
- d[0] = SS_SYSEX_CLEAR_SENDEFFECT;
- d[1] = fxid;
- sendSysex(d, 2);
- }
-
-
-/*!
- \fn SimpleSynthGui::effectParameterChanged(int fxid, int parameter, int val)
- */
-void SimpleSynthGui::effectParameterChanged(int fxid, int parameter, int val)
- {
- //printf("Gui: effectParameterChanged: %d %d %d\n", fxid, parameter, val);
- int len = 4;
- byte d[len];
- d[0] = SS_SYSEX_SET_PLUGIN_PARAMETER;
- d[1] = (byte) fxid;
- d[2] = (byte) parameter;
- d[3] = (byte) val;
- sendSysex(d, len);
- }
-
-
-/*!
- \fn SimpleSynthGui::openPluginButtonClicked()
- */
-void SimpleSynthGui::openPluginButtonClicked()
- {
- if (pluginGui->isShown())
- pluginGui->raise();
- else
- displayPluginGui();
- }
-
-
-/*!
- \fn SimpleSynthGui::aboutButtonClicked()
- */
-void SimpleSynthGui::aboutButtonClicked()
- {
- QString caption = "SimpleDrums ver";
- caption+= SS_VERSIONSTRING;
- QString text = caption + "\n\n(C) Copyright 2000-2005 Mathias Lundgren (lunar_shuttle@users.sf.net), Werner Schweer\nPublished under the GNU Public License";
- QMessageBox msgBox(caption, text, QMessageBox::NoIcon,
- QMessageBox::Ok, QMessageBox::NoButton, QMessageBox::NoButton, this);
- msgBox.exec();
- }
-
-
-
-/*!
- \fn SimpleSynthGui::loadSetup()
- \brief Load setup from file
- */
-void SimpleSynthGui::loadSetup()
- {
- bool success = true;
- QString filename =
- Q3FileDialog::getOpenFileName(lastProjectDir,
- QString("*.sds;*.SDS"),
- this,
- "Load setup dialog", "Choose SimpleDrums setup");
-
- if (filename != QString::null) {
- QFile theFile(filename);
- if (theFile.open(QIODevice::ReadOnly)) {
- unsigned initdata_len = 0;
- if (theFile.readBlock((char*)&initdata_len, sizeof(initdata_len)) == -1)
- success = false;
-
- byte* init_data = new byte[initdata_len];
- if (theFile.readBlock((char*)(init_data), initdata_len) == -1)
- success = false;
-
- if (!success) {
- QMessageBox msgBox("IO error", "Error opening/reading from file. Setup not loaded.", QMessageBox::Warning,
- QMessageBox::Ok, QMessageBox::NoButton, QMessageBox::NoButton, this);
- msgBox.exec();
- }
- else {
- sendSysex(init_data, initdata_len);
- }
-
- delete[] init_data;
- }
- }
- }
-
-
-/*!
- \fn SimpleSynthGui::saveSetup()
- \brief Save setup to file
- */
-void SimpleSynthGui::saveSetup()
- {
- QString filename =
- Q3FileDialog::getSaveFileName(lastProjectDir,
- QString("*.sds;*.SDS"),
- this,
- "Save setup dialog", "Save SimpleDrums setup");
-
- if (filename != QString::null) {
- lastSavedProject = filename;
- byte d[1];
- d[0] = SS_SYSEX_GET_INIT_DATA;
- sendSysex(d, 1); // Makes synth send gui initdata, where rest of the saving takes place
- }
- }
-