diff options
Diffstat (limited to 'muse_qt4_evolution/muse/ctrl/definemidictrl.cpp')
-rw-r--r-- | muse_qt4_evolution/muse/ctrl/definemidictrl.cpp | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/muse_qt4_evolution/muse/ctrl/definemidictrl.cpp b/muse_qt4_evolution/muse/ctrl/definemidictrl.cpp new file mode 100644 index 00000000..197d7572 --- /dev/null +++ b/muse_qt4_evolution/muse/ctrl/definemidictrl.cpp @@ -0,0 +1,110 @@ +//============================================================================= +// MusE +// Linux Music Editor +// $Id:$ +// +// Copyright (C) 2002-2006 by Werner Schweer and others +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License version 2. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +//============================================================================= + +#include "definemidictrl.h" +#include "miditrack.h" +#include "instruments/minstrument.h" + +//--------------------------------------------------------- +// DefineMidiCtrlDialog +// controllerName QLineEdit +// controllerType QComboBox +// msbId lsbId minVal maxVal initVal QSpinBox +// moveWithPart QCheckBox +//--------------------------------------------------------- + +DefineMidiCtrl::DefineMidiCtrl(MidiTrack* t, QWidget* parent) + : QDialog(parent) + { + setupUi(this); + track = t; + connect(controllerType, SIGNAL(currentIndexChanged(int)), SLOT(typeChanged(int))); + } + +//--------------------------------------------------------- +// done +// val == 1 -> OK +//--------------------------------------------------------- + +void DefineMidiCtrl::done(int val) + { + if (val) { + ctrl.setName(controllerName->text()); + ctrl.setComment(controllerComment->toPlainText()); + int num = MidiController::genNum( + MidiController::ControllerType(controllerType->currentIndex()), + msbId->value(), lsbId->value()); + ctrl.setNum(num); + ctrl.setMinVal(minVal->value()); + ctrl.setMaxVal(maxVal->value()); + ctrl.setInitVal(initVal->value()); + ctrl.setMoveWithPart(moveWithPart->isChecked()); + + // + // add controller to instrument + // + MidiInstrument* instrument = track->instrument(); + MidiControllerList* mcl = instrument->controller(); + MidiController* c = new MidiController(ctrl); + mcl->append(c); + } + + QDialog::done(val); + } + +//--------------------------------------------------------- +// typeChanged +//--------------------------------------------------------- + +void DefineMidiCtrl::typeChanged(int val) + { + MidiController::ControllerType t = (MidiController::ControllerType)val; + switch (t) { + case MidiController::RPN: + case MidiController::NRPN: + case MidiController::Controller7: + msbId->setEnabled(false); + lsbId->setEnabled(true); + maxVal->setRange(0, 127); + maxVal->setValue(127); + initVal->setRange(0, 127); + break; + case MidiController::Controller14: + case MidiController::RPN14: + case MidiController::NRPN14: + msbId->setEnabled(true); + lsbId->setEnabled(true); + maxVal->setRange(0, 128*128-1); + maxVal->setValue(128*128-1); + initVal->setRange(0, 128*128-1); + break; + case MidiController::Pitch: + case MidiController::Program: + msbId->setEnabled(false); + lsbId->setEnabled(false); + maxVal->setRange(0, 128*128-1); + initVal->setRange(0, 128*128-1); + maxVal->setValue(128*128-1); + break; + default: + break; + } + } + |