diff options
-rw-r--r-- | muse/muse/CMakeLists.txt | 21 | ||||
-rw-r--r-- | muse/muse/ctrl/CMakeLists.txt | 7 | ||||
-rw-r--r-- | muse/muse/midiedit/CMakeLists.txt | 65 | ||||
-rw-r--r-- | muse/muse/midiedit/dcanvas.cpp | 2 | ||||
-rw-r--r-- | muse/muse/midiedit/gatetime.cpp (renamed from muse/muse/widgets/gatetime.cpp) | 4 | ||||
-rw-r--r-- | muse/muse/midiedit/gatetime.h (renamed from muse/muse/widgets/gatetime.h) | 3 | ||||
-rw-r--r-- | muse/muse/midiedit/gatetime.ui (renamed from muse/muse/widgets/gatetime.ui) | 0 | ||||
-rw-r--r-- | muse/muse/midiedit/midicmd.cpp | 154 | ||||
-rw-r--r-- | muse/muse/midiedit/midicmd.h | 22 | ||||
-rw-r--r-- | muse/muse/midiedit/prcanvas.cpp | 4 | ||||
-rw-r--r-- | muse/muse/midiedit/velocity.cpp (renamed from muse/muse/widgets/velocity.cpp) | 4 | ||||
-rw-r--r-- | muse/muse/midiedit/velocity.h (renamed from muse/muse/widgets/velocity.h) | 3 | ||||
-rw-r--r-- | muse/muse/midiedit/velocity.ui (renamed from muse/muse/widgets/velocity.ui) | 0 | ||||
-rw-r--r-- | muse/muse/muse.cpp | 14 | ||||
-rw-r--r-- | muse/muse/muse.h | 10 | ||||
-rw-r--r-- | muse/muse/muse.ui | 87 | ||||
-rw-r--r-- | muse/muse/widgets/CMakeLists.txt | 7 | ||||
-rw-r--r-- | muse/muse/widgets/noteinfo.cpp | 2 |
18 files changed, 262 insertions, 147 deletions
diff --git a/muse/muse/CMakeLists.txt b/muse/muse/CMakeLists.txt index a0b5f7d3..d1a6c806 100644 --- a/muse/muse/CMakeLists.txt +++ b/muse/muse/CMakeLists.txt @@ -41,11 +41,10 @@ MACRO(WRAP_UI outfiles ) ENDMACRO(WRAP_UI) subdirs( - ctrl widgets master driver instruments marker liste + ctrl midiedit widgets master driver instruments marker liste ) set (muse_uics - muse preferences exportmididialog configmidifile @@ -55,7 +54,6 @@ set (muse_uics projectpropsdialog projectdialog templatedialog - midiedit/quantconfig mixer/routedialog arranger/configtrack arranger/miditrackinfo @@ -71,14 +69,6 @@ set(muse_mocs cobject transpose track midisynti miditrack wavetrack audiotrack audioaux audiooutput audioinput audiogroup exportmidi - midiedit/pianoroll - midiedit/prcanvas - midiedit/quantconfig - midiedit/drumedit - midiedit/dcanvas - midiedit/ecanvas - midiedit/ctrledit - midiedit/midieditor mixer/mixer mixer/rack mixer/midirack @@ -124,11 +114,6 @@ add_executable ( muse gconfig.cpp midirc.cpp midififo.cpp midiport.cpp - midiedit/drummap.cpp - midiedit/citem.cpp - midiedit/midicmd.h - midiedit/midicmd.cpp - ${muse_mocCPP} ${muse_moc_headers} ${ui_headers} @@ -139,8 +124,8 @@ set_target_properties( muse ) target_link_libraries(muse - widgets ctrl master driver instruments marker liste - al awl synti + ctrl midiedit master driver instruments marker liste + al synti widgets awl ${QT_LIBRARIES} ${ALSA_LIB} ${JACK_LIB} diff --git a/muse/muse/ctrl/CMakeLists.txt b/muse/muse/ctrl/CMakeLists.txt index d2916fb4..d71bbede 100644 --- a/muse/muse/ctrl/CMakeLists.txt +++ b/muse/muse/ctrl/CMakeLists.txt @@ -19,10 +19,13 @@ #============================================================================= QT4_WRAP_CPP (ctrl_mocs - configmidictrl.h ctrleditor.h ctrldialog.h + configmidictrl.h + ctrleditor.h + ctrldialog.h ) QT4_WRAP_UI (ctrl_ui_headers - configmidictrl.ui ctrldialog.ui + configmidictrl.ui + ctrldialog.ui ) add_library ( ctrl STATIC diff --git a/muse/muse/midiedit/CMakeLists.txt b/muse/muse/midiedit/CMakeLists.txt new file mode 100644 index 00000000..c48d0f24 --- /dev/null +++ b/muse/muse/midiedit/CMakeLists.txt @@ -0,0 +1,65 @@ +#============================================================================= +# 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. +#============================================================================= + +QT4_WRAP_CPP ( midiedit_mocs + gatetime.h + velocity.h + quantconfig.h + ctrledit.h + dcanvas.h + drumedit.h + ecanvas.h + midieditor.h + pianoroll.h + prcanvas.h + ) + +QT4_WRAP_UI ( midiedit_ui_headers + gatetime.ui + velocity.ui + quantconfig.ui + ) + +add_library ( midiedit STATIC + gatetime.cpp + velocity.cpp + quantconfig.cpp + citem.h + cmd.h + drummap.h + midicmd.h + citem.cpp + ctrledit.cpp + dcanvas.cpp + drumedit.cpp + drummap.cpp + ecanvas.cpp + midicmd.cpp + midieditor.cpp + pianoroll.cpp + prcanvas.cpp + ${midiedit_mocs} + ${midiedit_ui_headers} + ) + +set_target_properties( midiedit + PROPERTIES COMPILE_FLAGS "-include ${PROJECT_SOURCE_DIR}/all.h" + ) + diff --git a/muse/muse/midiedit/dcanvas.cpp b/muse/muse/midiedit/dcanvas.cpp index 4a068c1a..d3ee766b 100644 --- a/muse/muse/midiedit/dcanvas.cpp +++ b/muse/muse/midiedit/dcanvas.cpp @@ -23,7 +23,7 @@ #include "midieditor.h" #include "drummap.h" #include "audio.h" -#include "widgets/velocity.h" +#include "velocity.h" #include "gconfig.h" #include "part.h" diff --git a/muse/muse/widgets/gatetime.cpp b/muse/muse/midiedit/gatetime.cpp index 83624fa8..e75710c8 100644 --- a/muse/muse/widgets/gatetime.cpp +++ b/muse/muse/midiedit/gatetime.cpp @@ -26,8 +26,8 @@ // GateTime //--------------------------------------------------------- -GateTime::GateTime(QWidget* parent) - : QDialog(parent) +GateTime::GateTime(QWidget*) + : MidiCmdDialog() { setupUi(this); rangeGroup = new QButtonGroup(this); diff --git a/muse/muse/widgets/gatetime.h b/muse/muse/midiedit/gatetime.h index cf0d6ff7..f438fc1d 100644 --- a/muse/muse/widgets/gatetime.h +++ b/muse/muse/midiedit/gatetime.h @@ -22,12 +22,13 @@ #define __GATETIME_H__ #include "ui_gatetime.h" +#include "midicmd.h" //--------------------------------------------------------- // GateTime //--------------------------------------------------------- -class GateTime : public QDialog, public Ui::GateTimeBase { +class GateTime : public MidiCmdDialog, public Ui::GateTimeBase { Q_OBJECT QButtonGroup* rangeGroup; diff --git a/muse/muse/widgets/gatetime.ui b/muse/muse/midiedit/gatetime.ui index 76d45ddc..76d45ddc 100644 --- a/muse/muse/widgets/gatetime.ui +++ b/muse/muse/midiedit/gatetime.ui diff --git a/muse/muse/midiedit/midicmd.cpp b/muse/muse/midiedit/midicmd.cpp index fd3f29ed..231a442f 100644 --- a/muse/muse/midiedit/midicmd.cpp +++ b/muse/muse/midiedit/midicmd.cpp @@ -20,8 +20,35 @@ #include "midicmd.h" #include "song.h" -#include "widgets/gatetime.h" +#include "gatetime.h" +#include "velocity.h" #include "audio.h" +#include "midieditor.h" + +//========================================================== +// class MidiCmd is an attempt to formalize the +// interface between midi command code and MusE. +// Maybe this can be extended to an specialized +// plugin interface +//========================================================== + +//--------------------------------------------------------- +// MidiCmdDialog +//--------------------------------------------------------- + +MidiCmdDialog::MidiCmdDialog() + : QDialog(0) + { + } + +//--------------------------------------------------------- +// MidiCmd +//--------------------------------------------------------- + +MidiCmd::MidiCmd(MidiEditor* e) + { + editor = e; + } //--------------------------------------------------------- // processEvents @@ -29,11 +56,21 @@ void MidiCmd::processEvents(CItemList* items) { + MidiCmdDialog* dialog = guiDialog(); + editor->applyTo(); + dialog->setRange(range); + bool rv = dialog->exec(); + if (!rv) { + delete dialog; + return; + } + range = dialog->range(); // all, selected, looped, sel+loop + editor->setApplyTo(range); + delete dialog; + modified = 0; song->startUndo(); - range = 0; //editor->applyTo(); - process(items, &range); -// editor->setApplyTo(range); + process(items); song->endUndo(modified); } @@ -65,6 +102,8 @@ void MidiCmd::changeEvent(Event oldEvent, Event newEvent, Part* part) } //================================================================== +// process midi event lists +//================================================================== //--------------------------------------------------------- // ModifyGateTimeCmd @@ -72,27 +111,43 @@ void MidiCmd::changeEvent(Event oldEvent, Event newEvent, Part* part) class ModifyGateTimeCmd : public MidiCmd { - protected: - virtual void process(CItemList* items, int* range); + GateTime* dialog; + virtual MidiCmdDialog* guiDialog(); + virtual void process(CItemList* items); public: - ModifyGateTimeCmd() {} + ModifyGateTimeCmd(MidiEditor* e); }; //--------------------------------------------------------- +// MidifyGateTime +//--------------------------------------------------------- + +ModifyGateTimeCmd::ModifyGateTimeCmd(MidiEditor* e) + : MidiCmd(e) + { + dialog = 0; + } + +//--------------------------------------------------------- +// guiDialog +//--------------------------------------------------------- + +MidiCmdDialog* ModifyGateTimeCmd::guiDialog() + { + if (dialog == 0) + dialog = new GateTime(0); + return dialog; + } + +//--------------------------------------------------------- // process -// return true if events are modified //--------------------------------------------------------- -void ModifyGateTimeCmd::process(CItemList* items, int* range) +void ModifyGateTimeCmd::process(CItemList* items) { - GateTime w(0); - w.setRange(*range); - if (!w.exec()) - return; - *range = w.range(); // all, selected, looped, sel+loop - int rate = w.rateVal(); - int offset = w.offsetVal(); + int rate = dialog->rateVal(); + int offset = dialog->offsetVal(); for (iCItem k = items->begin(); k != items->end(); ++k) { CItem* item = k->second; @@ -116,3 +171,70 @@ void ModifyGateTimeCmd::process(CItemList* items, int* range) } } +//--------------------------------------------------------- +// ModifyVelocityCmd +//--------------------------------------------------------- + +class ModifyVelocityCmd : public MidiCmd + { + Velocity* dialog; + virtual MidiCmdDialog* guiDialog(); + virtual void process(CItemList* items); + + public: + ModifyVelocityCmd(MidiEditor* e); + }; + +//--------------------------------------------------------- +// ModifyVelocityCmd +//--------------------------------------------------------- + +ModifyVelocityCmd::ModifyVelocityCmd(MidiEditor* e) + : MidiCmd(e) + { + dialog = 0; + } + +//--------------------------------------------------------- +// guiDialog +//--------------------------------------------------------- + +MidiCmdDialog* ModifyVelocityCmd::guiDialog() + { + if (dialog == 0) + dialog = new Velocity(0); + return dialog; + } + +//--------------------------------------------------------- +// process +//--------------------------------------------------------- + +void ModifyVelocityCmd::process(CItemList* items) + { + int rate = dialog->rateVal(); + int offset = dialog->offsetVal(); + + for (iCItem k = items->begin(); k != items->end(); ++k) { + CItem* item = k->second; + Event event = item->event; + if (event.type() != Note) + continue; + if (itemInRange(item)) { + int velo = event.velo(); + velo = (velo * rate) / 100; + velo += offset; + + if (velo <= 0) + velo = 1; + if (velo > 127) + velo = 127; + if (event.velo() != velo) { + Event newEvent = event.clone(); + newEvent.setVelo(velo); + audio->msgChangeEvent(event, newEvent, item->part, false); + } + } + } + } + diff --git a/muse/muse/midiedit/midicmd.h b/muse/muse/midiedit/midicmd.h index 2cfabb26..0e4a9b43 100644 --- a/muse/muse/midiedit/midicmd.h +++ b/muse/muse/midiedit/midicmd.h @@ -23,6 +23,22 @@ #include "citem.h" +class MidiEditor; +class MidiCmdDialog; + +//--------------------------------------------------------- +// MidiCmdDialog +//--------------------------------------------------------- + +class MidiCmdDialog : public QDialog + { + + public: + MidiCmdDialog(); + int range() const { return 0; } + void setRange(int /*val*/) { } + }; + //--------------------------------------------------------- // MidiCmd // abstract base class for midi commands @@ -32,6 +48,7 @@ class MidiCmd { int modified; protected: + MidiEditor* editor; int range; // convenience classes for derived classes @@ -39,10 +56,11 @@ class MidiCmd { void changeEvent(Event oldEvent, Event newEvent, Part* part); // virtual functions provided by derived classes - virtual void process(CItemList*, int*) = 0; + virtual void process(CItemList*) = 0; + virtual MidiCmdDialog* guiDialog() { return 0; } public: - MidiCmd() {} + MidiCmd(MidiEditor*); virtual ~MidiCmd() {} void processEvents(CItemList*); }; diff --git a/muse/muse/midiedit/prcanvas.cpp b/muse/muse/midiedit/prcanvas.cpp index 2b5b12f0..df674e0e 100644 --- a/muse/muse/midiedit/prcanvas.cpp +++ b/muse/muse/midiedit/prcanvas.cpp @@ -21,8 +21,8 @@ #include "midieditor.h" #include "prcanvas.h" #include "cmd.h" -#include "widgets/gatetime.h" -#include "widgets/velocity.h" +#include "gatetime.h" +#include "velocity.h" #include "song.h" #include "audio.h" #include "part.h" diff --git a/muse/muse/widgets/velocity.cpp b/muse/muse/midiedit/velocity.cpp index ed2cac4e..a011317d 100644 --- a/muse/muse/widgets/velocity.cpp +++ b/muse/muse/midiedit/velocity.cpp @@ -26,8 +26,8 @@ // Velocity //--------------------------------------------------------- -Velocity::Velocity(QWidget* parent) - : QDialog(parent) +Velocity::Velocity(QWidget*) + : MidiCmdDialog() { setupUi(this); rangeGroup = new QButtonGroup(this); diff --git a/muse/muse/widgets/velocity.h b/muse/muse/midiedit/velocity.h index f479bc0f..8cbf1e26 100644 --- a/muse/muse/widgets/velocity.h +++ b/muse/muse/midiedit/velocity.h @@ -22,12 +22,13 @@ #define __VELOCITY_H__ #include "ui_velocity.h" +#include "midicmd.h" //--------------------------------------------------------- // Velocity //--------------------------------------------------------- -class Velocity : public QDialog, public Ui::VelocityBase { +class Velocity : public MidiCmdDialog, public Ui::VelocityBase { Q_OBJECT QButtonGroup* rangeGroup; diff --git a/muse/muse/widgets/velocity.ui b/muse/muse/midiedit/velocity.ui index e0122520..e0122520 100644 --- a/muse/muse/widgets/velocity.ui +++ b/muse/muse/midiedit/velocity.ui diff --git a/muse/muse/muse.cpp b/muse/muse/muse.cpp index ba7db90f..35861a0c 100644 --- a/muse/muse/muse.cpp +++ b/muse/muse/muse.cpp @@ -41,7 +41,7 @@ #include "marker/markerview.h" #include "transpose.h" #include "preferences.h" -#include "widgets/gatetime.h" +// #include "widgets/gatetime.h" #include "audio.h" #include "midiseq.h" #include "audioprefetch.h" @@ -441,7 +441,7 @@ void MusE::setupTransportToolbar(QToolBar* tb) const MusE::MusE() : QMainWindow() { - setupUi(this); +// setupUi(this); setIconSize(ICON_SIZE); setFocusPolicy(Qt::WheelFocus); @@ -470,6 +470,12 @@ MusE::MusE() exportMidiDialog = 0; projectPropsDialog = 0; + startAction = new QAction(QIcon(":/xpm/start.xpm"), "start", this); + rewindAction = new QAction(QIcon(":/xpm/frewind.xpm"), "rewind", this); + forwardAction = new QAction(QIcon(":/xpm/fforward.xpm"), "forward", this); + stopAction = new QAction(QIcon(":/xpm/stop.xpm"), "stop", this); + playAction = new QAction(QIcon(":/xpm/play.xpm"), "play", this); + song->blockSignals(true); heartBeatTimer = new QTimer(this); connect(heartBeatTimer, SIGNAL(timeout()), song, SLOT(beat())); @@ -1954,8 +1960,8 @@ void MusE::transpose() void MusE::modifyGateTime() { - GateTime* w = new GateTime(this); - w->show(); +//TODO GateTime* w = new GateTime(this); +// w->show(); } //--------------------------------------------------------- diff --git a/muse/muse/muse.h b/muse/muse/muse.h index bcd13af9..43f5551e 100644 --- a/muse/muse/muse.h +++ b/muse/muse/muse.h @@ -21,7 +21,6 @@ #ifndef __APP_H__ #define __APP_H__ -#include "ui_muse.h" #include "cobject.h" #include "widgets/tools.h" @@ -61,7 +60,7 @@ extern void configMidiController(); // MusE //--------------------------------------------------------- -class MusE : public QMainWindow, public Ui::MuseBase +class MusE : public QMainWindow // , public Ui::MuseBase { Q_OBJECT enum { @@ -93,6 +92,7 @@ class MusE : public QMainWindow, public Ui::MuseBase QAction* fileOpenAction; QAction* pianoAction; QAction* fileNewAction; + QString appName; QToolBar *tools; @@ -292,6 +292,12 @@ class MusE : public QMainWindow, public Ui::MuseBase int raster() const { return _raster; } void setupTransportToolbar(QToolBar* tb) const; void readToplevels(QDomNode); + + QAction* startAction; + QAction* rewindAction; + QAction* forwardAction; + QAction* stopAction; + QAction* playAction; }; extern MusE* muse; diff --git a/muse/muse/muse.ui b/muse/muse/muse.ui deleted file mode 100644 index e8fda401..00000000 --- a/muse/muse/muse.ui +++ /dev/null @@ -1,87 +0,0 @@ -<ui version="4.0" > - <author></author> - <comment></comment> - <exportmacro></exportmacro> - <class>MuseBase</class> - <widget class="QMainWindow" name="MuseBase" > - <property name="geometry" > - <rect> - <x>0</x> - <y>0</y> - <width>800</width> - <height>600</height> - </rect> - </property> - <property name="windowTitle" > - <string>MusE</string> - </property> - <widget class="QWidget" name="centralwidget" /> - <widget class="QMenuBar" name="menubar" > - <property name="geometry" > - <rect> - <x>0</x> - <y>0</y> - <width>800</width> - <height>35</height> - </rect> - </property> - </widget> - <action name="startAction" > - <property name="icon" > - <iconset resource="../muse.qrc" >:/xpm/start.xpm</iconset> - </property> - <property name="text" > - <string>start action</string> - </property> - </action> - <action name="rewindAction" > - <property name="icon" > - <iconset resource="../muse.qrc" >:/xpm/frewind.xpm</iconset> - </property> - <property name="text" > - <string>rewind</string> - </property> - </action> - <action name="forwardAction" > - <property name="icon" > - <iconset resource="../muse.qrc" >:/xpm/fforward.xpm</iconset> - </property> - <property name="text" > - <string>forward</string> - </property> - </action> - <action name="stopAction" > - <property name="checkable" > - <bool>true</bool> - </property> - <property name="checked" > - <bool>true</bool> - </property> - <property name="icon" > - <iconset resource="../muse.qrc" >:/xpm/stop.xpm</iconset> - </property> - <property name="text" > - <string>stop</string> - </property> - </action> - <action name="playAction" > - <property name="checkable" > - <bool>true</bool> - </property> - <property name="checked" > - <bool>false</bool> - </property> - <property name="icon" > - <iconset resource="../muse.qrc" >:/xpm/play.xpm</iconset> - </property> - <property name="text" > - <string>play</string> - </property> - </action> - </widget> - <pixmapfunction></pixmapfunction> - <resources> - <include location="../muse.qrc" /> - </resources> - <connections/> -</ui> diff --git a/muse/muse/widgets/CMakeLists.txt b/muse/muse/widgets/CMakeLists.txt index 5bdaacdf..03866a0c 100644 --- a/muse/muse/widgets/CMakeLists.txt +++ b/muse/muse/widgets/CMakeLists.txt @@ -34,8 +34,7 @@ QT4_WRAP_CPP (widget_mocs comboQuant.h bigtime.h midisync.h mixdowndialog.h - comment.h gatetime.h - velocity.h + comment.h shortcutconfig.h shortcutcapturedialog.h greendotbutton.h recordbutton.h @@ -47,8 +46,6 @@ QT4_WRAP_UI (widget_ui_headers mixdowndialog.ui shortcutcapturedialog.ui shortcutconfig.ui - gatetime.ui - velocity.ui ) # add_custom_command(OUTPUT ui_midisync.h @@ -70,8 +67,6 @@ add_library ( widgets STATIC midisync.cpp comment.cpp mixdowndialog.cpp - velocity.cpp - gatetime.cpp tools.cpp doublelabel.cpp noteinfo.cpp diff --git a/muse/muse/widgets/noteinfo.cpp b/muse/muse/widgets/noteinfo.cpp index b495005f..9ae02ab0 100644 --- a/muse/muse/widgets/noteinfo.cpp +++ b/muse/muse/widgets/noteinfo.cpp @@ -27,7 +27,7 @@ //--------------------------------------------------- // NoteInfo // ToolBar -// Start, Länge, Note, Velo an, Velo aus, Kanal +// Start, Len, Note, Velo on, Velo off, Channel //--------------------------------------------------- NoteInfo::NoteInfo(QMainWindow* parent) |