From bcba4228312ebda2da2c16adc82a6b2b1ca299de Mon Sep 17 00:00:00 2001 From: Werner Schweer Date: Thu, 1 Jun 2006 15:13:49 +0000 Subject: updates --- muse/ChangeLog | 5 + muse/doc/man/de/CMakeLists.txt | 1 + muse/doc/man/de/man-de.tex | 3 +- muse/doc/man/de/struktur.tex | 21 + muse/muse/driver/alsamidi.cpp | 1 + muse/muse/midiport.cpp | 3 +- muse/muse/muse.cpp | 10 +- muse/muse/projectdialog.cpp | 180 ++- muse/muse/projectdialog.h | 23 +- muse/muse/projectdialog.ui | 39 +- muse/muse/song.cpp | 5 + muse/share/instruments/Roland-JV-1010-All.idf | 1502 ++++++++++++++++++++ muse/share/instruments/Roland-JV-1010-Catagory.idf | 1234 ++++++++++++++++ muse/share/instruments/Roland-JV-1010-Country.idf | 297 ++++ muse/share/instruments/Roland-JV-1010-Presets.idf | 971 +++++++++++++ muse/share/instruments/Roland-JV-1010-Session.idf | 326 +++++ 16 files changed, 4579 insertions(+), 42 deletions(-) create mode 100644 muse/doc/man/de/struktur.tex create mode 100644 muse/share/instruments/Roland-JV-1010-All.idf create mode 100644 muse/share/instruments/Roland-JV-1010-Catagory.idf create mode 100644 muse/share/instruments/Roland-JV-1010-Country.idf create mode 100644 muse/share/instruments/Roland-JV-1010-Presets.idf create mode 100644 muse/share/instruments/Roland-JV-1010-Session.idf diff --git a/muse/ChangeLog b/muse/ChangeLog index 54ac170d..d91d8eab 100644 --- a/muse/ChangeLog +++ b/muse/ChangeLog @@ -1,3 +1,8 @@ +1.6. (ws) + * fix crash when loading new song (old song has midi channels, new + song has not) + * drag/drop of projects in project dialog + * added Roland JV-1010 instrument definitions from f.fabre 29.5 (ws) * the list of available software synthesizer in edit->AddTrack->AddSoftSynth was always empty diff --git a/muse/doc/man/de/CMakeLists.txt b/muse/doc/man/de/CMakeLists.txt index 22619554..7c3ae733 100644 --- a/muse/doc/man/de/CMakeLists.txt +++ b/muse/doc/man/de/CMakeLists.txt @@ -24,6 +24,7 @@ add_custom_command ( ${CMAKE_CURRENT_SOURCE_DIR}/man-de.tex ${CMAKE_CURRENT_SOURCE_DIR}/projekte.tex ${CMAKE_CURRENT_SOURCE_DIR}/miditracks.tex + ${CMAKE_CURRENT_SOURCE_DIR}/struktur.tex COMMAND ${TEXEXEC_PATH}/texexec ARGS --language=en --verbose --batch --pdf --path=${CMAKE_CURRENT_SOURCE_DIR} diff --git a/muse/doc/man/de/man-de.tex b/muse/doc/man/de/man-de.tex index 648f4f2c..3928147e 100644 --- a/muse/doc/man/de/man-de.tex +++ b/muse/doc/man/de/man-de.tex @@ -166,8 +166,9 @@ \M\ ist ein ein ''open source'' Programm, veröffentlicht unter der GNU General Public License (GPL) (siehe Anhang). -\component miditracks.tex \component projekte.tex +\component struktur.tex +\component miditracks.tex \startappendices \component ../gpl.tex diff --git a/muse/doc/man/de/struktur.tex b/muse/doc/man/de/struktur.tex new file mode 100644 index 00000000..306ddb30 --- /dev/null +++ b/muse/doc/man/de/struktur.tex @@ -0,0 +1,21 @@ +\chapter{Struktur} + \section{Spuren} + + Ein Projekt besteht aus Spuren analog einer analogen Bandmaschine. + Die Spuren enthalten Midi- Audio- oder Controllerdaten. + Spuren werden in \M\ in zwei Formen dargestellt: + + \blank[big] + \Input{Arranger:} im Arranger werden alle Spuren vertikal in einer + Liste dargestellt + \Input{Mixer:} der Mixer zeigt alle Spuren in einer horizontalen + Darstellung + \par\blank[big] + + Tempo und Taktart sind interne Spuren, die nicht im Arranger oder + Mixer gezeigt werden. + + \section{Parts} + + Midi- und Audiospuren können auf der Zeitachse in Parts unterteilt + werden. diff --git a/muse/muse/driver/alsamidi.cpp b/muse/muse/driver/alsamidi.cpp index 94f46cff..a0353db5 100644 --- a/muse/muse/driver/alsamidi.cpp +++ b/muse/muse/driver/alsamidi.cpp @@ -38,6 +38,7 @@ bool AlsaMidi::init() printf("init AlsaMidi\n"); int error = snd_seq_open(&alsaSeq, "hw", SND_SEQ_OPEN_DUPLEX, SND_SEQ_NONBLOCK); if (error < 0) { + if (error == ENOENT) fprintf(stderr, "open ALSA sequencer failed: %s\n", snd_strerror(error)); return true; diff --git a/muse/muse/midiport.cpp b/muse/muse/midiport.cpp index a2382b65..84c75101 100644 --- a/muse/muse/midiport.cpp +++ b/muse/muse/midiport.cpp @@ -431,7 +431,8 @@ void MidiOutPort::playMidiEvent(MidiEvent* ev) if (i->type == Route::MIDIPORT) sendToFifo = true; else if (i->type == Route::SYNTIPORT) { - if (((SynthI*)i->track)->eventFifo()->put(*ev)) + SynthI* synti = (SynthI*)i->track; + if (synti->eventFifo()->put(*ev)) printf("MidiOut::playMidiEvent(): synti overflow, drop event\n"); } else diff --git a/muse/muse/muse.cpp b/muse/muse/muse.cpp index 10432616..d659b63c 100644 --- a/muse/muse/muse.cpp +++ b/muse/muse/muse.cpp @@ -1217,19 +1217,21 @@ void MusE::loadProject1(const QString& path) // // send "cur" controller values to devices // + for (iTrack i = tl->begin(); i != tl->end(); ++i) { - (*i)->blockSignals(true); - CtrlList* cl = (*i)->controller(); + Track* track = *i; + track->blockSignals(true); + CtrlList* cl = track->controller(); for (iCtrl ic = cl->begin(); ic != cl->end(); ++ic) { Ctrl* ctrl = ic->second; if (ctrl->type() & Ctrl::INT) { CVal val; val = ctrl->curVal(); ctrl->setCurVal(CTRL_VAL_UNKNOWN); - song->setControllerVal(*i, ctrl, val); + song->setControllerVal(track, ctrl, val); } } - (*i)->blockSignals(false); + track->blockSignals(false); } setWindowTitle(QString("MusE: Song: ") + name); } diff --git a/muse/muse/projectdialog.cpp b/muse/muse/projectdialog.cpp index 1c5f3219..968e6cc4 100644 --- a/muse/muse/projectdialog.cpp +++ b/muse/muse/projectdialog.cpp @@ -28,6 +28,157 @@ // enum { DIR_TYPE, PROJECT_TYPE }; +//--------------------------------------------------------- +// ProjectTree +//--------------------------------------------------------- + +ProjectTree::ProjectTree(QWidget* parent) + : QTreeWidget(parent) + { + setAcceptDrops(true); + } + +//--------------------------------------------------------- +// itemPath +//--------------------------------------------------------- + +QString ProjectTree::itemPath(QTreeWidgetItem* item) const + { + QString path; + QTreeWidgetItem* ti = item; + QStringList dirComponent; + do { + dirComponent.prepend(ti->text(0)); + ti = ti->parent(); + } while (ti); + foreach (QString s, dirComponent) { + if (!path.isEmpty()) + path += "/"; + path += s; + } + return path; + } + +//--------------------------------------------------------- +// mousePressEvent +//--------------------------------------------------------- + +void ProjectTree::mousePressEvent(QMouseEvent* event) + { + dragStartPosition = event->pos(); + QTreeWidget::mousePressEvent(event); + } + +//--------------------------------------------------------- +// mouseMoveEvent +//--------------------------------------------------------- + +void ProjectTree::mouseMoveEvent(QMouseEvent* ev) + { + QTreeWidgetItem* item = itemAt(ev->pos()); + if (item == 0 || item->type() != PROJECT_TYPE) // || ev->button() != Qt::LeftButton) + return; + if ((ev->pos() - dragStartPosition).manhattanLength() + < QApplication::startDragDistance()) + return; + QDrag* drag = new QDrag(this); + QMimeData* mimeData = new QMimeData; + mimeData->setText(itemPath(item)); + drag->setMimeData(mimeData); + drag->setPixmap(style()->standardPixmap(QStyle::SP_FileIcon)); + Qt::DropAction dropAction = drag->start(Qt::MoveAction); + if (dropAction == Qt::IgnoreAction) + return; + printf("drop action\n"); + if (dropAction == Qt::MoveAction) { + printf("move action\n"); + } + } + +//--------------------------------------------------------- +// dragEnterEvent +//--------------------------------------------------------- + +void ProjectTree::dragEnterEvent(QDragEnterEvent* event) + { + if (event->mimeData()->hasFormat("text/plain")) { + event->acceptProposedAction(); + } + } + +//--------------------------------------------------------- +// dragMoveEvent +//--------------------------------------------------------- + +void ProjectTree::dragMoveEvent(QDragMoveEvent* event) + { + QTreeWidgetItem* item = itemAt(event->pos()); + event->setAccepted(item && item->type() == DIR_TYPE); + } + +//--------------------------------------------------------- +// searchItem +//--------------------------------------------------------- + +QTreeWidgetItem* ProjectTree::searchItem(const QString& s, QTreeWidgetItem* p) + { + int n = p->childCount(); + for (int i = 0; i < n; ++i) { + QTreeWidgetItem* item = p->child(i); + if (s == itemPath(item)) + return p->takeChild(i); + item = searchItem(s, item); + if (item) + return item; + } + return 0; + } + +//--------------------------------------------------------- +// dropEvent +//--------------------------------------------------------- + +void ProjectTree::dropEvent(QDropEvent* event) + { + QTreeWidgetItem* dstItem = itemAt(event->pos()); + if (dstItem && dstItem->type() == DIR_TYPE) { + QString src = event->mimeData()->text(); + QTreeWidgetItem* srcItem; + int n = topLevelItemCount(); + for (int i = 0; i < n; ++i) { + QTreeWidgetItem* item = topLevelItem(i); + if (src == itemPath(item)) { + srcItem = takeTopLevelItem(i); + break; + } + srcItem = searchItem(src, item); + if (srcItem) + break; + } + if (srcItem == 0) { + printf("src item not found\n"); + return; + } + QString dst = itemPath(dstItem); + dstItem->addChild(srcItem); + // + // TODO: - actual move project + // - look for name conflicts + // - do nothing if src==dst + // + src = QDir::homePath() + "/" + config.projectPath + "/" + src; + dst = QDir::homePath() + "/" + config.projectPath + "/" + dst + + "/" + srcItem->text(0); + if (src != dst) { + QDir dir; + if (!dir.rename(src, dst)) { +printf("Rename <%s> -> <%s> failed\n", src.toLatin1().data(), dst.toLatin1().data()); + event->acceptProposedAction(); + } + } + } + } + //--------------------------------------------------------- // processSubdirectories //--------------------------------------------------------- @@ -134,27 +285,6 @@ void ProjectDialog::itemExpanded(QTreeWidgetItem* item) item->setIcon(0, style()->standardIcon(QStyle::SP_DirOpenIcon)); } -//--------------------------------------------------------- -// itemPath -//--------------------------------------------------------- - -QString ProjectDialog::itemPath(QTreeWidgetItem* item) const - { - QString path; - QTreeWidgetItem* ti = item; - QStringList dirComponent; - do { - dirComponent.prepend(ti->text(0)); - ti = ti->parent(); - } while (ti); - foreach (QString s, dirComponent) { - if (!path.isEmpty()) - path += "/"; - path += s; - } - return path; - } - //--------------------------------------------------------- // currentChanged //--------------------------------------------------------- @@ -174,7 +304,7 @@ void ProjectDialog::currentChanged(QTreeWidgetItem* item, QTreeWidgetItem*) projectNameEntry->setText(item->text(0)); QString pd(QDir::homePath() + "/" + config.projectPath + "/"); - pd += "/" + itemPath(item); + pd += "/" + projectTree->itemPath(item); QFileInfo pf(pd + "/" + item->text(0) + ".med"); modifiedDate->setDateTime(pf.lastModified()); @@ -254,9 +384,9 @@ QString ProjectDialog::projectPath() const QString s; if (item) { if (item->type() == PROJECT_TYPE) - s = itemPath(item); + s = projectTree->itemPath(item); else - s = itemPath(item) + "/" + projectNameEntry->text(); + s = projectTree->itemPath(item) + "/" + projectNameEntry->text(); } else s = projectNameEntry->text(); @@ -276,7 +406,7 @@ void ProjectDialog::newFolderClicked() QString path; QTreeWidgetItem* item = projectTree->currentItem(); if (item) { - QStringList sl = itemPath(item).split("/"); + QStringList sl = projectTree->itemPath(item).split("/"); int n = sl.size() - 1; for (int i = 0; i < n; ++i) { if (!path.isEmpty()) diff --git a/muse/muse/projectdialog.h b/muse/muse/projectdialog.h index 09593b02..81a70be1 100644 --- a/muse/muse/projectdialog.h +++ b/muse/muse/projectdialog.h @@ -21,6 +21,27 @@ #ifndef __PROJECT_DIALOG_H__ #define __PROJECT_DIALOG_H__ +//--------------------------------------------------------- +// ProjectTree +//--------------------------------------------------------- + +class ProjectTree : public QTreeWidget { + Q_OBJECT + + QPoint dragStartPosition; + virtual void mousePressEvent(QMouseEvent*); + virtual void mouseMoveEvent(QMouseEvent*); + virtual void dragEnterEvent(QDragEnterEvent*); + virtual void dragMoveEvent(QDragMoveEvent*); + virtual void dropEvent(QDropEvent*); + + QTreeWidgetItem* searchItem(const QString&, QTreeWidgetItem*); + + public: + ProjectTree(QWidget* parent = 0); + QString itemPath(QTreeWidgetItem*) const; + }; + #include "ui_projectdialog.h" //--------------------------------------------------------- @@ -33,8 +54,6 @@ class ProjectDialog : public QDialog, public Ui_ProjectDialogBase { void processSubdir(QTreeWidgetItem*, const QString&, const QString&, QTreeWidgetItem**); - QString itemPath(QTreeWidgetItem*) const; - private slots: void currentChanged(QTreeWidgetItem*, QTreeWidgetItem*); void projectNameEdited(const QString&); diff --git a/muse/muse/projectdialog.ui b/muse/muse/projectdialog.ui index ffc03eeb..0aef32c6 100644 --- a/muse/muse/projectdialog.ui +++ b/muse/muse/projectdialog.ui @@ -48,15 +48,6 @@ - - - - - Projectlist - - - - @@ -204,9 +195,39 @@ + + + + false + + + true + + + true + + + 1 + + + + Projectlist + + + + + + + ProjectTree + QTreeWidget +
projectdialog.h
+ 0 + +
+
okButton cancelButton diff --git a/muse/muse/song.cpp b/muse/muse/song.cpp index d987e734..87ec8523 100644 --- a/muse/muse/song.cpp +++ b/muse/muse/song.cpp @@ -1162,6 +1162,11 @@ void Song::clear(bool signal) _auxs.clearDelete(); // aux sends _synthIs.clearDelete(); + _midiSyntis.clearDelete(); + _midiOutPorts.clearDelete(); + _midiInPorts.clearDelete(); + _midiChannel.clear(); + AL::tempomap.clear(); AL::sigmap.clear(); undoList->clear(); diff --git a/muse/share/instruments/Roland-JV-1010-All.idf b/muse/share/instruments/Roland-JV-1010-All.idf new file mode 100644 index 00000000..7fe65137 --- /dev/null +++ b/muse/share/instruments/Roland-JV-1010-All.idf @@ -0,0 +1,1502 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/muse/share/instruments/Roland-JV-1010-Catagory.idf b/muse/share/instruments/Roland-JV-1010-Catagory.idf new file mode 100644 index 00000000..a64c7507 --- /dev/null +++ b/muse/share/instruments/Roland-JV-1010-Catagory.idf @@ -0,0 +1,1234 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/muse/share/instruments/Roland-JV-1010-Country.idf b/muse/share/instruments/Roland-JV-1010-Country.idf new file mode 100644 index 00000000..5f8e4a96 --- /dev/null +++ b/muse/share/instruments/Roland-JV-1010-Country.idf @@ -0,0 +1,297 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/muse/share/instruments/Roland-JV-1010-Presets.idf b/muse/share/instruments/Roland-JV-1010-Presets.idf new file mode 100644 index 00000000..ae5c622e --- /dev/null +++ b/muse/share/instruments/Roland-JV-1010-Presets.idf @@ -0,0 +1,971 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/muse/share/instruments/Roland-JV-1010-Session.idf b/muse/share/instruments/Roland-JV-1010-Session.idf new file mode 100644 index 00000000..b407d843 --- /dev/null +++ b/muse/share/instruments/Roland-JV-1010-Session.idf @@ -0,0 +1,326 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file -- cgit v1.2.3