From: Mathias L. <lun...@us...> - 2004-12-11 23:24:16
|
Update of /cvsroot/lmuse/muse/synti/simpledrums In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20249/synti/simpledrums Modified Files: common.h README ReleaseNotes.txt simpledrums.cpp simpledrumsgui.cpp simpledrumsgui.h ssplugingui.cpp Log Message: Updates, tooltips etc Index: ssplugingui.cpp =================================================================== RCS file: /cvsroot/lmuse/muse/synti/simpledrums/ssplugingui.cpp,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** ssplugingui.cpp 11 Dec 2004 00:54:05 -0000 1.4 --- ssplugingui.cpp 11 Dec 2004 23:24:05 -0000 1.5 *************** *** 437,441 **** float max, min; plugin->range(i, &min, &max); ! int intval = 0; paramSlider->setParamValue(plugin->getGuiControlValue(i)); connect(paramSlider, SIGNAL(valueChanged(int, int, int)), SLOT(parameterValueChanged(int, int, int))); --- 437,441 ---- float max, min; plugin->range(i, &min, &max); ! //int intval = 0; paramSlider->setParamValue(plugin->getGuiControlValue(i)); connect(paramSlider, SIGNAL(valueChanged(int, int, int)), SLOT(parameterValueChanged(int, int, int))); *************** *** 473,476 **** --- 473,477 ---- : QDialog(parent, name, false) { + this->setCaption("SimpleDrums LADSPA sendeffects"); for (int i=0; i<SS_NR_OF_SENDEFFECTS; i++) { pluginFronts[i] = 0; *************** *** 489,492 **** --- 490,495 ---- connect(pluginFronts[i], SIGNAL(effectParameterChanged(int, int, int)), simplesynthgui_ptr, SLOT(effectParameterChanged(int, int, int))); } + setMinimumSize(QSize(SS_PLUGINGUI_WIDTH, geometry().height())); + setMaximumSize(QSize(SS_PLUGINGUI_MAX_WIDTH, geometry().height())); } *************** *** 495,499 **** \fn SS_PluginGui::pluginFrontSizeChanged(int fxid, int val) */ ! void SS_PluginGui::pluginFrontSizeChanged(int fxid, int val) { QRect r = geometry(); --- 498,502 ---- \fn SS_PluginGui::pluginFrontSizeChanged(int fxid, int val) */ ! void SS_PluginGui::pluginFrontSizeChanged(int /*fxid*/, int val) { QRect r = geometry(); Index: common.h =================================================================== RCS file: /cvsroot/lmuse/muse/synti/simpledrums/common.h,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** common.h 8 Dec 2004 23:18:17 -0000 1.7 --- common.h 11 Dec 2004 23:24:05 -0000 1.8 *************** *** 15,18 **** --- 15,20 ---- #include "muse/midictrl.h" + #define SS_VERSIONSTRING "0.2" + #define SS_DEBUG 0 #define SS_DEBUG_INIT 0 Index: simpledrums.cpp =================================================================== RCS file: /cvsroot/lmuse/muse/synti/simpledrums/simpledrums.cpp,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** simpledrums.cpp 9 Dec 2004 21:15:31 -0000 1.11 --- simpledrums.cpp 11 Dec 2004 23:24:05 -0000 1.12 *************** *** 840,844 **** len+=(namelen + labelnamelen); ! len+=2; //1 byte for nr of parameters, 1 byte for return gain len+=sendEffects[i].nrofparameters; // 1 byte for each parameter value } --- 840,844 ---- len+=(namelen + labelnamelen); ! len+=3; //1 byte for nr of parameters, 1 byte for return gain, 1 byte for effect on/off len+=sendEffects[i].nrofparameters; // 1 byte for each parameter value } Index: README =================================================================== RCS file: /cvsroot/lmuse/muse/synti/simpledrums/README,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** README 7 Dec 2004 23:33:00 -0000 1.4 --- README 11 Dec 2004 23:24:05 -0000 1.5 *************** *** 1,4 **** -------------------------------------- ! Simpledrums v 0.1, by Mathias Lundgren -------------------------------------- --- 1,4 ---- -------------------------------------- ! Simpledrums v 0.2, by Mathias Lundgren -------------------------------------- *************** *** 9,24 **** Features: - 16 channels/samples (1 sample/channel) ! - Simple controls for each individual channel: volume, balance, noteoff-ignore - Main volume ! - Integrated LADSPA send-effects for each individual channel That's all folks! - ------------- Known issues: ------------- ! - Ugly gui! ! - All samples are read directly to memory - More... --- 9,28 ---- Features: - 16 channels/samples (1 sample/channel) ! - Simple controls for each individual channel: volume, balance, noteoff-ignore, channel on/off - Main volume ! - 4 LADSPA send-effects can be used, 4 effect taps for each individual channel ! - All channel parameters are controllable via the GUI, or by MusE:s controller handling (controller pane in pianoroll/drumeditor) ! - All effect parameters can be controlled via the GUI, or by Sysex messages (f.ex. turn effect on/off, modify effect parameters) ! - Complete synth state (fx-parameters, samples etc) is saved together with MusE project, and restored later when loaded ! - Samples automatically resampled when loaded (if needed) That's all folks! ------------- Known issues: ------------- ! - Not the prettiest gui in the world ! - All samples are read directly into memory (no caching) ! - Some obscure LADSPA-effects make SimpleSynth segfault - More... *************** *** 28,35 **** - Fix all the known issues! ;-) - Sample loops ! - Velocity and sample offset variation - Treble/eq-controller for each individual channel ! - More... Mathias Lundgren, (lun...@us...), 2004 --- 32,43 ---- - Fix all the known issues! ;-) - Sample loops ! - Sample offset variation w respect to note velocity - Treble/eq-controller for each individual channel ! - Treble level variation w respect to note velocity - More... Mathias Lundgren, (lun...@us...), 2004 + Plugin management code based on Werner Schweers plugin management handling for MusE + + (C) Copyright Mathias Lundgren, Werner Schweer 2000-2004 + Licensed under the GNU General Public License Index: simpledrumsgui.h =================================================================== RCS file: /cvsroot/lmuse/muse/synti/simpledrums/simpledrumsgui.h,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** simpledrumsgui.h 7 Dec 2004 23:33:00 -0000 1.5 --- simpledrumsgui.h 11 Dec 2004 23:24:05 -0000 1.6 *************** *** 169,172 **** --- 169,175 ---- QChannelDial* sendFxDial[SS_NR_OF_CHANNELS][SS_NR_OF_SENDEFFECTS]; + QPushButton* openPluginsButton; + QPushButton* aboutButton; + QString lastDir; SS_PluginGui* pluginGui; *************** *** 179,185 **** void loadEffectInvoked(int fxid, QString lib, QString label); void returnLevelChanged(int fxid, int val); ! void toggleEffectOnOff(int fxid, int state); ! void clearPlugin(int fxid); ! void effectParameterChanged(int fxid, int parameter, int val); private slots: --- 182,188 ---- void loadEffectInvoked(int fxid, QString lib, QString label); void returnLevelChanged(int fxid, int val); ! void toggleEffectOnOff(int fxid, int state); ! void clearPlugin(int fxid); ! void effectParameterChanged(int fxid, int parameter, int val); private slots: *************** *** 193,196 **** --- 196,201 ---- void clearSample(int ch); void sendFxChanged(int ch, int fxid, int val); + void openPluginButtonClicked(); + void aboutButtonClicked(); }; Index: ReleaseNotes.txt =================================================================== RCS file: /cvsroot/lmuse/muse/synti/simpledrums/ReleaseNotes.txt,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** ReleaseNotes.txt 9 Nov 2004 20:58:17 -0000 1.1 --- ReleaseNotes.txt 11 Dec 2004 23:24:05 -0000 1.2 *************** *** 1,5 **** RELEASE NOTES: -------------- ! 2004-11-09 - Simpledrums initial release, v0.1 --- 1,18 ---- RELEASE NOTES: -------------- ! ????-??-?? ver 0.2 ! - Support for 4 LADSPA sendeffects added ! - Resampling of samples when loading (libsamplerate) ! - Synth state is saved to/restored from project file ! - Channel settings: balance, volume, effect tap for each sendeffect ! - Effect settings: all LADSPA parameters controllable and saved to MusE project, effect master volume, effect on/off ! - Support for mono + stereo samples ! - Support for stereo + mono LADSPA effects ! - Bugfixes, GUI-improvements etc... + 2004-11-09 ver 0.1 + - Simpledrums initial release + - 16 channels (1 sample for each channel) with parameters: volume, balance, noteoff-ignore + (C) Copyright Mathias Lundgren, Werner Schweer 2000-2004 + Licensed under the GNU General Public License Index: simpledrumsgui.cpp =================================================================== RCS file: /cvsroot/lmuse/muse/synti/simpledrums/simpledrumsgui.cpp,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** simpledrumsgui.cpp 11 Dec 2004 00:54:05 -0000 1.9 --- simpledrumsgui.cpp 11 Dec 2004 23:24:05 -0000 1.10 *************** *** 214,217 **** --- 214,218 ---- channelButtonGroups[i]->setMinimumSize(SS_BTNGRP_WIDTH, SS_BTNGRP_HEIGHT); channelButtonGroups[i]->setTitle(QString::number(i)); + QString name = QString("volumeSlider"); name.append(i); *************** *** 224,227 **** --- 225,229 ---- onOff[i] = new QChannelCheckbox(channelButtonGroups[i], i); onOff[i]->setMinimumSize(SS_ONOFF_WIDTH, SS_ONOFF_HEIGHT); + QToolTip::add(onOff[i], "Channel " + QString::number(i) + " on/off"); inchnlLayout->add(onOff[i]); connect(onOff[i], SIGNAL(channelState(int, bool)), SLOT(channelOnOff(int, bool))); *************** *** 232,240 **** volumeSliders[i]->setValue(SS_VOLUME_MAX_VALUE - SS_VOLUME_DEFAULT_VALUE); volumeSliders[i]->setMinimumSize(SS_VOLSLDR_WIDTH, SS_VOLSLDR_LENGTH); 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); --- 234,242 ---- 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)); 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); *************** *** 244,247 **** --- 246,250 ---- 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)); inchnlLayout->add(nOffIgnore[i]); connect(nOffIgnore[i], SIGNAL(channelState(int, bool)),SLOT(channelNoteOffIgnore(int, bool))); *************** *** 251,254 **** --- 254,258 ---- 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)); inchnlLayout->add(panSliders[i]); connect(panSliders[i], SIGNAL(valueChanged(int, int)), SLOT(panChanged(int, int))); *************** *** 258,261 **** --- 262,266 ---- 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); *************** *** 268,271 **** --- 273,277 ---- 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))); *************** *** 276,279 **** --- 282,286 ---- //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))); *************** *** 281,285 **** sendFxDial[i][3]->setRange(0, 127); sendFxDial[i][3]->setMaximumSize(SS_SENDFX_WIDTH, SS_SENDFX_HEIGHT); ! //inchnlLayout->add(sendFxDial[i][3]); 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))); --- 288,293 ---- 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))); *************** *** 295,298 **** --- 303,307 ---- masterButtonGroup->setMinimumSize(SS_BTNGRP_WIDTH, SS_BTNGRP_HEIGHT); masterSlider = new QInvertedSlider(QSlider::Vertical, masterButtonGroup); + QToolTip::add(masterSlider, "Master volume"); mbgLayout->add(masterSlider); masterSlider->setRange(0, 127); *************** *** 305,309 **** mainLayout->add(mainGroupBox); ! QGridLayout* mgbLayout = new QGridLayout(mainGroupBox, 8, 2, 1); int i=0; --- 314,318 ---- mainLayout->add(mainGroupBox); ! QGridLayout* mgbLayout = new QGridLayout(mainGroupBox, 8, 3, 1); int i=0; *************** *** 323,326 **** --- 332,336 ---- 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)); strip->add(loadSampleButton[i]); connect(loadSampleButton[i], SIGNAL(channelState(int, bool)), SLOT(loadSampleDialogue(int))); *************** *** 328,331 **** --- 338,342 ---- 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)); strip->add(clearSampleButton[i]); connect(clearSampleButton[i], SIGNAL(channelState(int, bool)), SLOT(clearSample(int))); *************** *** 335,360 **** } ! /*for (int i=0; i<SS_NR_OF_CHANNELS; i++) { ! ! // channelLabel ! QLabel* channelLabel = new QLabel(QString("Ch ") + QString::number(i), mainGroupBox); ! channelLabel->setGeometry(lineXOffset + SS_SAMPLENAME_LABEL_XOFF, lineYOffset, ! SS_SAMPLENAME_LABEL_WIDTH, SS_SAMPLENAME_LABEL_HEIGHT); ! // sampleNameLineEdit ! sampleNameLineEdit[i] = new QLineEdit(mainGroupBox); ! sampleNameLineEdit[i]->setReadOnly(true); ! sampleNameLineEdit[i]->setGeometry(lineXOffset + SS_SAMPLENAME_LINEEDIT_XOFF, lineYOffset, ! SS_SAMPLENAME_LINEEDIT_WIDTH, SS_SAMPLENAME_LINEEDIT_HEIGHT); ! // loadSampleButton ! loadSampleButton[i] = new QChannelButton(mainGroupBox, "L", i); ! loadSampleButton[i]->setGeometry(lineXOffset + SS_SAMPLE_LOAD_XOFF, ! lineYOffset + SS_SAMPLE_LOAD_YOFF, SS_SAMPLE_LOAD_WIDTH, SS_SAMPLE_LOAD_HEIGHT); ! connect(loadSampleButton[i], SIGNAL(channelState(int, bool)), SLOT(loadSampleDialogue(int))); ! // clearSampleButton ! clearSampleButton[i] = new QChannelButton(mainGroupBox, "C", i); ! clearSampleButton[i]->setGeometry(lineXOffset + SS_SAMPLE_CLEAR_XOFF, ! lineYOffset + SS_SAMPLE_CLEAR_YOFF, SS_SAMPLE_CLEAR_WIDTH, SS_SAMPLE_CLEAR_HEIGHT); ! connect(clearSampleButton[i], SIGNAL(channelState(int, bool)), SLOT(clearSample(int))); ! }*/ lastDir = ""; --- 346,361 ---- } ! // Right bottom panel: ! QButtonGroup* rbPanel= new QButtonGroup(mainGroupBox, "right_bottom_panel"); ! mgbLayout->addMultiCellWidget(rbPanel, 1, 8, 3, 3, Qt::AlignCenter); ! QGridLayout* rbLayout = new QGridLayout(rbPanel, 6, 1, 8, 5); ! openPluginsButton = new QPushButton("&Send Effects", rbPanel); ! QToolTip::add(openPluginsButton, "Configure LADSPA send effects"); ! connect(openPluginsButton, SIGNAL(clicked()), SLOT(openPluginButtonClicked())); ! rbLayout->addWidget(openPluginsButton, 2, 1, Qt::AlignLeft | Qt::AlignVCenter); ! aboutButton = new QPushButton("About SimpleDrums", rbPanel); ! connect(aboutButton, SIGNAL(clicked()), SLOT(aboutButtonClicked())); ! rbLayout->addRowSpacing(3, 20); ! rbLayout->addWidget(aboutButton, 4, 1, Qt::AlignLeft | Qt::AlignVCenter); lastDir = ""; *************** *** 362,369 **** QSocketNotifier* s = new QSocketNotifier(readFd, QSocketNotifier::Read); connect(s, SIGNAL(activated(int)), SLOT(readMessage(int))); - - //BEGIN TEST - displayPluginGui(); - //END TEST SS_TRACE_OUT } --- 363,366 ---- *************** *** 505,515 **** int ch = *(data+1); const char* filename = (const char*) (data+2); ! 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"); ! if (res == 0) { ! loadSampleDialogue(ch); ! } break; } --- 502,522 ---- 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; } *************** *** 623,627 **** QString filename = QFileDialog::getOpenFileName(lastDir, ! QString("*.wav"), this, "Load sample dialog","Choose sample"); --- 630,634 ---- QString filename = QFileDialog::getOpenFileName(lastDir, ! QString("*.wav;*.WAV"), this, "Load sample dialog","Choose sample"); *************** *** 727,728 **** --- 734,761 ---- 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-2004 Mathias Lundgren (lun...@us...), Werner Schweer\nPublished under the GNU Public License"; + QMessageBox* msgBox = new QMessageBox(caption, text, QMessageBox::NoIcon, + QMessageBox::Ok, QMessageBox::NoButton, QMessageBox::NoButton, this, "SimpleDrums About Dialog"); + msgBox->exec(); + } |