From 85c5cffde8e20d912b559566470150d1a32d83a7 Mon Sep 17 00:00:00 2001 From: DevEd Date: Sun, 10 Sep 2023 17:08:32 -0400 Subject: [PATCH 01/72] reset arpeggio phase to zero on new note --- src/engine/playback.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/engine/playback.cpp b/src/engine/playback.cpp index eaeb1e81d..572add9cf 100644 --- a/src/engine/playback.cpp +++ b/src/engine/playback.cpp @@ -1067,6 +1067,7 @@ void DivEngine::processRow(int i, bool afterDelay) { } } else if (!chan[i].noteOnInhibit) { dispatchCmd(DivCommand(DIV_CMD_NOTE_ON,i,chan[i].note,chan[i].volume>>8)); + chan[i].arpStage=-1; chan[i].goneThroughNote=true; chan[i].wentThroughNote=true; keyHit[i]=true; From a2c9ec78d3cb772a856615b97a2f1c344b8ff820 Mon Sep 17 00:00:00 2001 From: DevEd Date: Sun, 10 Sep 2023 17:41:16 -0400 Subject: [PATCH 02/72] add compatibility flag for arp phase reset on new note --- src/engine/playback.cpp | 4 +++- src/engine/song.h | 4 +++- src/gui/compatFlags.cpp | 4 ++++ 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/engine/playback.cpp b/src/engine/playback.cpp index 572add9cf..bca403af2 100644 --- a/src/engine/playback.cpp +++ b/src/engine/playback.cpp @@ -1067,7 +1067,9 @@ void DivEngine::processRow(int i, bool afterDelay) { } } else if (!chan[i].noteOnInhibit) { dispatchCmd(DivCommand(DIV_CMD_NOTE_ON,i,chan[i].note,chan[i].volume>>8)); - chan[i].arpStage=-1; + if (song.resetArpPhaseOnNewNote) { + chan[i].arpStage=-1; + } chan[i].goneThroughNote=true; chan[i].wentThroughNote=true; keyHit[i]=true; diff --git a/src/engine/song.h b/src/engine/song.h index 78c49b4e1..ae144d714 100644 --- a/src/engine/song.h +++ b/src/engine/song.h @@ -377,6 +377,7 @@ struct DivSong { bool brokenPortaLegato; bool brokenFMOff; bool preNoteNoEffect; + bool resetArpPhaseOnNewNote; std::vector ins; std::vector wave; @@ -496,7 +497,8 @@ struct DivSong { patchbayAuto(true), brokenPortaLegato(false), brokenFMOff(false), - preNoteNoEffect(false) { + preNoteNoEffect(false), + resetArpPhaseOnNewNote(false) { for (int i=0; isong.resetArpPhaseOnNewNote); + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip("when enabled, the arpeggio phase is reset on a new note."); // TODO: Better description + } ImGui::EndTabItem(); } ImGui::EndTabBar(); From 79f92fab68b9b17583c3382faba38df105577fa8 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Tue, 3 Oct 2023 04:38:28 -0500 Subject: [PATCH 03/72] GUI: prepare for status view --- src/engine/engine.h | 3 +- src/engine/playback.cpp | 4 + src/gui/gui.cpp | 22 +++++- src/gui/gui.h | 12 ++- src/gui/guiConst.cpp | 5 ++ src/gui/pattern.cpp | 166 +++++++++++++++++++++++++++++++++++----- src/gui/settings.cpp | 4 + 7 files changed, 190 insertions(+), 26 deletions(-) diff --git a/src/engine/engine.h b/src/engine/engine.h index 734d10daf..cdb35e97f 100644 --- a/src/engine/engine.h +++ b/src/engine/engine.h @@ -105,7 +105,7 @@ struct DivChannelState { int vibratoDepth, vibratoRate, vibratoPos, vibratoPosGiant, vibratoDir, vibratoFine; int tremoloDepth, tremoloRate, tremoloPos; unsigned char arp, arpStage, arpTicks, panL, panR, panRL, panRR, lastVibrato, lastPorta; - bool doNote, legato, portaStop, keyOn, keyOff, nowYouCanStop, stopOnOff; + bool doNote, legato, portaStop, keyOn, keyOff, nowYouCanStop, stopOnOff, releasing; bool arpYield, delayLocked, inPorta, scheduledSlideReset, shorthandPorta, wasShorthandPorta, noteOnInhibit, resetArp; bool wentThroughNote, goneThroughNote; @@ -154,6 +154,7 @@ struct DivChannelState { keyOff(false), nowYouCanStop(true), stopOnOff(false), + releasing(false), arpYield(false), delayLocked(false), inPorta(false), diff --git a/src/engine/playback.cpp b/src/engine/playback.cpp index affd720e8..eaf3f7a5e 100644 --- a/src/engine/playback.cpp +++ b/src/engine/playback.cpp @@ -591,8 +591,10 @@ void DivEngine::processRow(int i, bool afterDelay) { chan[i].scheduledSlideReset=true; } dispatchCmd(DivCommand(DIV_CMD_NOTE_OFF_ENV,i)); + chan[i].releasing=true; } else if (pat->data[whatRow][0]==102) { // env release dispatchCmd(DivCommand(DIV_CMD_ENV_RELEASE,i)); + chan[i].releasing=true; } else if (!(pat->data[whatRow][0]==0 && pat->data[whatRow][1]==0)) { chan[i].oldNote=chan[i].note; chan[i].note=pat->data[whatRow][0]+((signed char)pat->data[whatRow][1])*12; @@ -1067,6 +1069,7 @@ void DivEngine::processRow(int i, bool afterDelay) { } } else if (!chan[i].noteOnInhibit) { dispatchCmd(DivCommand(DIV_CMD_NOTE_ON,i,chan[i].note,chan[i].volume>>8)); + chan[i].releasing=false; chan[i].goneThroughNote=true; chan[i].wentThroughNote=true; keyHit[i]=true; @@ -1366,6 +1369,7 @@ bool DivEngine::nextTick(bool noAccum, bool inhibitLowLat) { //dispatchCmd(DivCommand(DIV_CMD_VOLUME,note.channel,(note.volume*(chan[note.channel].volMax>>8))/127)); dispatchCmd(DivCommand(DIV_CMD_NOTE_ON,note.channel,note.note)); keyHit[note.channel]=true; + chan[note.channel].releasing=false; chan[note.channel].noteOnInhibit=true; chan[note.channel].lastIns=note.ins; } else { diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 08f5ca9f0..4fa69a16a 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -6342,7 +6342,18 @@ bool FurnaceGUI::init() { waveSigned=e->getConfBool("waveSigned",false); waveGenVisible=e->getConfBool("waveGenVisible",false); waveEditStyle=e->getConfInt("waveEditStyle",0); - extraChannelButtons=e->getConfInt("extraChannelButtons",0); + int extraChannelButtons=e->getConfInt("extraChannelButtons",0); + if (!e->hasConf("patExtraButtons")) { + patExtraButtons=(extraChannelButtons==1); + } else { + patExtraButtons=e->getConfBool("patExtraButtons",false); + } + if (!e->hasConf("patChannelNames")) { + patChannelNames=(extraChannelButtons==2); + } else { + patChannelNames=e->getConfBool("patChannelNames",false); + } + patChannelHints=e->getConfInt("patChannelHints",0); lockLayout=e->getConfBool("lockLayout",false); #ifdef IS_MOBILE fullScreen=true; @@ -6880,7 +6891,9 @@ void FurnaceGUI::commitState() { e->setConf("waveSigned",waveSigned); e->setConf("waveGenVisible",waveGenVisible); e->setConf("waveEditStyle",waveEditStyle); - e->setConf("extraChannelButtons",extraChannelButtons); + e->setConf("patExtraButtons",patExtraButtons); + e->setConf("patChannelNames",patChannelNames); + e->setConf("patChannelHints",(int)patChannelHints); e->setConf("lockLayout",lockLayout); e->setConf("fullScreen",fullScreen); e->setConf("mobileUI",mobileUI); @@ -7116,7 +7129,6 @@ FurnaceGUI::FurnaceGUI(): loopRow(-1), loopEnd(-1), isClipping(0), - extraChannelButtons(0), newSongCategory(0), latchTarget(0), wheelX(0), @@ -7131,6 +7143,10 @@ FurnaceGUI::FurnaceGUI(): exitDisabledTimer(0), soloTimeout(0.0f), exportFadeOut(5.0), + patExtraButtons(false), + patChannelNames(false), + patChannelPairs(false), + patChannelHints(0), newSongFirstFrame(false), oldRowChanged(false), editControlsOpen(true), diff --git a/src/gui/gui.h b/src/gui/gui.h index f0e2e7555..c87eafebc 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -305,6 +305,11 @@ enum FurnaceGUIColors { GUI_COLOR_PATTERN_EFFECT_SYS_SECONDARY, GUI_COLOR_PATTERN_EFFECT_MISC, + GUI_COLOR_PATTERN_STATUS_OFF, + GUI_COLOR_PATTERN_STATUS_REL, + GUI_COLOR_PATTERN_STATUS_REL_ON, + GUI_COLOR_PATTERN_STATUS_ON, + GUI_COLOR_SAMPLE_BG, GUI_COLOR_SAMPLE_FG, GUI_COLOR_SAMPLE_LOOP, @@ -1811,14 +1816,17 @@ class FurnaceGUI { DivInstrument* prevInsData; - int curIns, curWave, curSample, curOctave, curOrder, playOrder, prevIns, oldRow, editStep, exportLoops, soloChan,orderEditMode, orderCursor; - int loopOrder, loopRow, loopEnd, isClipping, extraChannelButtons, newSongCategory, latchTarget; + int curIns, curWave, curSample, curOctave, curOrder, playOrder, prevIns, oldRow, editStep, exportLoops, soloChan, orderEditMode, orderCursor; + int loopOrder, loopRow, loopEnd, isClipping, newSongCategory, latchTarget; int wheelX, wheelY, dragSourceX, dragSourceXFine, dragSourceY, dragDestinationX, dragDestinationXFine, dragDestinationY, oldBeat, oldBar; int curGroove, exitDisabledTimer; float soloTimeout; double exportFadeOut; + bool patExtraButtons, patChannelNames, patChannelPairs; + unsigned char patChannelHints; + bool newSongFirstFrame, oldRowChanged; bool editControlsOpen, ordersOpen, insListOpen, songInfoOpen, patternOpen, insEditOpen; bool waveListOpen, waveEditOpen, sampleListOpen, sampleEditOpen, aboutOpen, settingsOpen; diff --git a/src/gui/guiConst.cpp b/src/gui/guiConst.cpp index 954c29496..a4af8261d 100644 --- a/src/gui/guiConst.cpp +++ b/src/gui/guiConst.cpp @@ -988,6 +988,11 @@ const FurnaceGUIColorDef guiColors[GUI_COLOR_MAX]={ D(GUI_COLOR_PATTERN_EFFECT_SYS_SECONDARY,"",ImVec4(0.0f,1.0f,0.5f,1.0f)), D(GUI_COLOR_PATTERN_EFFECT_MISC,"",ImVec4(0.3f,0.3f,1.0f,1.0f)), + D(GUI_COLOR_PATTERN_STATUS_OFF,"",ImVec4(0.2f,0.2f,0.2f,1.0f)), + D(GUI_COLOR_PATTERN_STATUS_REL,"",ImVec4(0.7f,0.1f,0.1f,1.0f)), + D(GUI_COLOR_PATTERN_STATUS_REL_ON,"",ImVec4(1.0f,0.8f,0.1f,1.0f)), + D(GUI_COLOR_PATTERN_STATUS_ON,"",ImVec4(0.3f,1.0f,0.1f,1.0f)), + D(GUI_COLOR_SAMPLE_BG,"",ImVec4(0.04f,0.13f,0.2f,1.0f)), D(GUI_COLOR_SAMPLE_FG,"",ImVec4(0.7f,0.7f,0.7f,1.0f)), D(GUI_COLOR_SAMPLE_LOOP,"",ImVec4(0.1f,0.22f,0.35f,1.0f)), diff --git a/src/gui/pattern.cpp b/src/gui/pattern.cpp index efb949867..39c38f9a3 100644 --- a/src/gui/pattern.cpp +++ b/src/gui/pattern.cpp @@ -408,6 +408,7 @@ void FurnaceGUI::drawPattern() { sel1.xFine^=sel2.xFine; sel2.xFine^=sel1.xFine; } + ImVec2 origWinPadding=ImGui::GetStyle().WindowPadding; ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding,ImVec2(0.0f,0.0f)); if (mobileUI) { patWindowPos=(portrait?ImVec2(0.0f,(mobileMenuPos*-0.65*canvasH)+(0.12*canvasW)):ImVec2((0.16*canvasH)+0.5*canvasW*mobileMenuPos,0.0f)); @@ -465,17 +466,11 @@ void FurnaceGUI::drawPattern() { ImGui::TableNextRow(); ImGui::TableNextColumn(); float lpwStart=ImGui::GetCursorPosX(); - if (ImGui::Selectable((extraChannelButtons==2)?" --##ExtraChannelButtons":" ++##ExtraChannelButtons",false,ImGuiSelectableFlags_NoPadWithHalfSpacing,ImVec2(0.0f,lineHeight+1.0f*dpiScale))) { - if (++extraChannelButtons>2) extraChannelButtons=0; + if (ImGui::Selectable(" ++##ExtraChannelButtons",false,ImGuiSelectableFlags_NoPadWithHalfSpacing,ImVec2(0.0f,lineHeight+1.0f*dpiScale))) { + ImGui::OpenPopup("PatternOpt"); } if (ImGui::IsItemHovered() && !mobileUI) { - if (extraChannelButtons==2) { - ImGui::SetTooltip("Pattern names (click to collapse)\nRight-click for visualizer"); - } else if (extraChannelButtons==1) { - ImGui::SetTooltip("Expanded (click for pattern names)\nRight-click for visualizer"); - } else { - ImGui::SetTooltip("Compact (click to expand)\nRight-click for visualizer"); - } + ImGui::SetTooltip("click for pattern options (effect columns/pattern names/visualizer)"); } if (ImGui::IsItemClicked(ImGuiMouseButton_Right)) { fancyPattern=!fancyPattern; @@ -484,6 +479,41 @@ void FurnaceGUI::drawPattern() { e->getCommandStream(cmdStream); cmdStream.clear(); } + ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding,origWinPadding); + ImGui::PushFont(mainFont); + if (ImGui::BeginPopup("PatternOpt",ImGuiWindowFlags_NoMove|ImGuiWindowFlags_AlwaysAutoResize|ImGuiWindowFlags_NoTitleBar|ImGuiWindowFlags_NoSavedSettings)) { + ImGui::Text("Options:"); + ImGui::Indent(); + ImGui::Checkbox("Effect columns/collapse",&patExtraButtons); + ImGui::Checkbox("Pattern names",&patChannelNames); + ImGui::Checkbox("Channel group hints",&patChannelPairs); + if (ImGui::Checkbox("Visualizer",&fancyPattern)) { + inhibitMenu=true; + e->enableCommandStream(fancyPattern); + e->getCommandStream(cmdStream); + cmdStream.clear(); + } + ImGui::Unindent(); + + ImGui::Text("Channel status:"); + ImGui::Indent(); + if (ImGui::RadioButton("No##_PCS0",patChannelHints==0)) { + patChannelHints=0; + } + if (ImGui::RadioButton("Basic##_PCS0",patChannelHints==1)) { + patChannelHints=1; + } + if (ImGui::RadioButton("Regular##_PCS0",patChannelHints==2)) { + patChannelHints=2; + } + if (ImGui::RadioButton("Detailed##_PCS0",patChannelHints==3)) { + patChannelHints=3; + } + ImGui::Unindent(); + ImGui::EndPopup(); + } + ImGui::PopFont(); + ImGui::PopStyleVar(); for (int i=0; icurSubSong->chanShow[i]) continue; ImGui::TableNextColumn(); @@ -619,7 +649,7 @@ void FurnaceGUI::drawPattern() { minLabelArea.x+=0.5f*(maxLabelArea.x-minLabelArea.x-ImGui::CalcTextSize(chanID).x); } - if (extraChannelButtons==0 || settings.channelVolStyle!=0) ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing,ImVec2(0.0f,0.0f)); + if ((!patExtraButtons && !patChannelNames && !patChannelHints) || settings.channelVolStyle!=0) ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing,ImVec2(0.0f,0.0f)); ImGui::PushID(2048+i); switch (settings.channelStyle) { @@ -735,7 +765,7 @@ void FurnaceGUI::drawPattern() { } ImGui::PopID(); - if (extraChannelButtons==0 || settings.channelVolStyle!=0) ImGui::PopStyleVar(); + if ((!patExtraButtons && !patChannelNames && !patChannelHints) || settings.channelVolStyle!=0) ImGui::PopStyleVar(); if (displayTooltip && ImGui::IsItemHovered() && !mobileUI) { ImGui::SetTooltip("%s",e->getChannelName(i)); @@ -834,15 +864,7 @@ void FurnaceGUI::drawPattern() { } // extra buttons - if (extraChannelButtons==2) { - DivPattern* pat=e->curPat[i].getPattern(e->curOrders->ord[i][ord],true); - ImGui::PushFont(mainFont); - snprintf(chanID,2048," %s##PatName%d",pat->name.c_str(),i); - if (ImGui::Selectable(chanID,true,ImGuiSelectableFlags_NoPadWithHalfSpacing,ImVec2(0.0f,lineHeight+1.0f*dpiScale))) { - editStr(&pat->name); - } - ImGui::PopFont(); - } else if (extraChannelButtons==1) { + if (patExtraButtons) { snprintf(chanID,2048,"%c##_HCH%d",e->curSubSong->chanCollapse[i]?'+':'-',i); ImGui::SetCursorPosX(ImGui::GetCursorPosX()+4.0f*dpiScale); if (ImGui::SmallButton(chanID)) { @@ -872,6 +894,110 @@ void FurnaceGUI::drawPattern() { } ImGui::Spacing(); } + + if (patChannelNames) { + DivPattern* pat=e->curPat[i].getPattern(e->curOrders->ord[i][ord],true); + ImGui::PushFont(mainFont); + snprintf(chanID,2048," %s##PatName%d",pat->name.c_str(),i); + if (ImGui::Selectable(chanID,true,ImGuiSelectableFlags_NoPadWithHalfSpacing,ImVec2(0.0f,lineHeight+1.0f*dpiScale))) { + editStr(&pat->name); + } + ImGui::PopFont(); + } + + if (patChannelHints) { + DivChannelState* cs=e->getChanState(i); + if (cs!=NULL) { + ImGui::PushFont(mainFont); + if (cs->keyOn) { + if (cs->releasing) { + ImGui::PushStyleColor(ImGuiCol_Text,ImGui::GetColorU32(uiColors[GUI_COLOR_PATTERN_STATUS_REL_ON])); + } else { + ImGui::PushStyleColor(ImGuiCol_Text,ImGui::GetColorU32(uiColors[GUI_COLOR_PATTERN_STATUS_ON])); + } + ImGui::Text(ICON_FA_SQUARE); + ImGui::PopStyleColor(); + } else { + if (cs->releasing) { + ImGui::PushStyleColor(ImGuiCol_Text,ImGui::GetColorU32(uiColors[GUI_COLOR_PATTERN_STATUS_REL])); + } else { + ImGui::PushStyleColor(ImGuiCol_Text,ImGui::GetColorU32(uiColors[GUI_COLOR_PATTERN_STATUS_OFF])); + } + ImGui::Text(ICON_FA_SQUARE); + ImGui::PopStyleColor(); + } + ImGui::PopFont(); + + if (e->curSubSong->chanCollapse[i]==0) { + ImGui::SameLine(); + ImGui::PushStyleColor(ImGuiCol_Text,ImGui::GetColorU32(uiColors[GUI_COLOR_PATTERN_VOLUME_MAX])); + ImGui::Text("%.2X",cs->volume>>8); + ImGui::PopStyleColor(); + + if (cs->volSpeed!=0) { + ImGui::SameLine(); + ImGui::PushStyleColor(ImGuiCol_Text,ImGui::GetColorU32(uiColors[GUI_COLOR_PATTERN_EFFECT_VOLUME])); + ImGui::Text("%+2d",cs->volSpeed/4); + ImGui::PopStyleColor(); + } else { + ImGui::SameLine(); + ImGui::PushStyleColor(ImGuiCol_Text,ImGui::GetColorU32(uiColors[GUI_COLOR_PATTERN_STATUS_OFF])); + ImGui::Text(" 00"); + ImGui::PopStyleColor(); + } + + if (cs->vibratoDepth>0) { + ImGui::PushStyleColor(ImGuiCol_Text,ImGui::GetColorU32(uiColors[GUI_COLOR_PATTERN_EFFECT_PITCH])); + ImGui::Text("~%.1X%.1X",cs->vibratoRate,cs->vibratoDepth); + ImGui::PopStyleColor(); + } else { + ImGui::PushStyleColor(ImGuiCol_Text,ImGui::GetColorU32(uiColors[GUI_COLOR_PATTERN_STATUS_OFF])); + ImGui::Text("~00"); + ImGui::PopStyleColor(); + } + + /* + if (cs->legato) { + ImGui::SameLine(); + ImGui::PushStyleColor(ImGuiCol_Text,ImGui::GetColorU32(uiColors[GUI_COLOR_PATTERN_EFFECT_PITCH])); + ImGui::Text("="); + ImGui::PopStyleColor(); + } else { + ImGui::SameLine(); + ImGui::PushStyleColor(ImGuiCol_Text,ImGui::GetColorU32(uiColors[GUI_COLOR_PATTERN_STATUS_OFF])); + ImGui::Text("="); + ImGui::PopStyleColor(); + }*/ + + if (cs->inPorta) { + ImGui::SameLine(); + ImGui::PushStyleColor(ImGuiCol_Text,ImGui::GetColorU32(uiColors[GUI_COLOR_PATTERN_EFFECT_PITCH])); + if (cs->portaNote<-60 || cs->portaNote>=120) { + ImGui::Text("???@%.2X",cs->portaSpeed); + } else { + ImGui::Text("%s@%.2X",noteNames[60+cs->portaNote],cs->portaSpeed); + } + ImGui::PopStyleColor(); + } else { + if (cs->portaSpeed>0) { + ImGui::SameLine(); + ImGui::PushStyleColor(ImGuiCol_Text,ImGui::GetColorU32(uiColors[GUI_COLOR_PATTERN_EFFECT_PITCH])); + if (cs->portaNote<60) { + ImGui::Text(" v%.2X ",cs->portaSpeed); + } else { + ImGui::Text(" ^%.2X ",cs->portaSpeed); + } + ImGui::PopStyleColor(); + } else { + ImGui::SameLine(); + ImGui::PushStyleColor(ImGuiCol_Text,ImGui::GetColorU32(uiColors[GUI_COLOR_PATTERN_STATUS_OFF])); + ImGui::Text(" --- "); + ImGui::PopStyleColor(); + } + } + } + } + } } ImGui::TableNextColumn(); lastPatternWidth=ImGui::GetCursorPosX()-lpwStart+ImGui::GetStyle().ScrollbarSize; diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index 086793ae0..728b5bd47 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -3020,6 +3020,10 @@ void FurnaceGUI::drawSettings() { UI_COLOR_CONFIG(GUI_COLOR_PATTERN_EFFECT_SYS_SECONDARY,"Secondary specific effect"); UI_COLOR_CONFIG(GUI_COLOR_PATTERN_EFFECT_MISC,"Miscellaneous"); UI_COLOR_CONFIG(GUI_COLOR_EE_VALUE,"External command output"); + UI_COLOR_CONFIG(GUI_COLOR_PATTERN_STATUS_OFF,"Status: off"); + UI_COLOR_CONFIG(GUI_COLOR_PATTERN_STATUS_REL,"Status: off + macro rel"); + UI_COLOR_CONFIG(GUI_COLOR_PATTERN_STATUS_REL_ON,"Status: on + macro rel"); + UI_COLOR_CONFIG(GUI_COLOR_PATTERN_STATUS_ON,"Status: on"); ImGui::TreePop(); } if (ImGui::TreeNode("Sample Editor")) { From 3ad0fe208d05e8ffbe03edc324afe979b1a751ca Mon Sep 17 00:00:00 2001 From: Eknous-P Date: Tue, 3 Oct 2023 18:33:22 +0400 Subject: [PATCH 04/72] settings changed detect part 1 --- src/gui/gui.cpp | 2 ++ src/gui/gui.h | 2 ++ src/gui/settings.cpp | 76 ++++++++++++++++++++++++++++++++++++++++++-- 3 files changed, 77 insertions(+), 3 deletions(-) diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 4fa69a16a..29a2f3ac8 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -5531,12 +5531,14 @@ bool FurnaceGUI::loop() { ImGui::CloseCurrentPopup(); settingsOpen=false; willCommit=true; + settingsChanged=false; } ImGui::SameLine(); if (ImGui::Button("No")) { ImGui::CloseCurrentPopup(); settingsOpen=false; syncSettings(); + settingsChanged=false; } ImGui::SameLine(); if (ImGui::Button("Cancel") || ImGui::IsKeyPressed(ImGuiKey_Escape)) { diff --git a/src/gui/gui.h b/src/gui/gui.h index c87eafebc..1191dfe01 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -1436,6 +1436,7 @@ class FurnaceGUI { char emptyLabel2[32]; struct Settings { + bool settingsChanged; int mainFontSize, patFontSize, headFontSize, iconSize; int audioEngine; int audioQuality; @@ -1618,6 +1619,7 @@ class FurnaceGUI { DivConfig initialSys; Settings(): + settingsChanged(false), mainFontSize(18), patFontSize(18), headFontSize(27), diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index 728b5bd47..8e61c1348 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -216,21 +216,25 @@ const char* specificControls[18]={ #define SAMPLE_RATE_SELECTABLE(x) \ if (ImGui::Selectable(#x,settings.audioRate==x)) { \ settings.audioRate=x; \ + settingsChanged=true; \ } #define BUFFER_SIZE_SELECTABLE(x) \ if (ImGui::Selectable(#x,settings.audioBufSize==x)) { \ settings.audioBufSize=x; \ + settingsChanged=true; \ } #define CHANS_SELECTABLE(x) \ if (ImGui::Selectable(nonProAudioOuts[x-1],settings.audioChans==x)) { \ settings.audioChans=x; \ + settingsChanged=true; \ } #define UI_COLOR_CONFIG(what,label) \ if (ImGui::ColorEdit4(label "##CC_" #what,(float*)&uiColors[what])) { \ applyUISettings(false); \ + settingsChanged=true; \ } #define KEYBIND_CONFIG_BEGIN(id) \ @@ -248,6 +252,7 @@ const char* specificControls[18]={ ImGui::TableNextColumn(); \ if (ImGui::Button(fmt::sprintf("%s##KC_" #what,(bindSetPending && bindSetTarget==what)?"Press key...":getKeyName(actionKeys[what])).c_str())) { \ promptKey(what); \ + settingsChanged=true; \ } \ if (ImGui::IsItemClicked(ImGuiMouseButton_Right)) actionKeys[what]=0; @@ -318,8 +323,12 @@ void FurnaceGUI::drawSettings() { } if (ImGui::Begin("Settings",&settingsOpen,ImGuiWindowFlags_NoDocking|globalWinFlags)) { if (!settingsOpen) { - settingsOpen=true; - showWarning("Do you want to save your settings?",GUI_WARN_CLOSE_SETTINGS); + if(settingsChanged) { + settingsOpen=true; + showWarning("Do you want to save your settings?",GUI_WARN_CLOSE_SETTINGS); + } else { + settingsOpen=false; + } } if (ImGui::BeginTabBar("settingsTab")) { // NEW SETTINGS HERE @@ -331,16 +340,19 @@ void FurnaceGUI::drawSettings() { #ifdef HAVE_RENDER_SDL if (ImGui::Selectable("SDL Renderer",curRenderBackend=="SDL")) { settings.renderBackend="SDL"; + settingsChanged=true; } #endif #ifdef HAVE_RENDER_DX11 if (ImGui::Selectable("DirectX 11",curRenderBackend=="DirectX 11")) { settings.renderBackend="DirectX 11"; + settingsChanged=true; } #endif #ifdef HAVE_RENDER_GL if (ImGui::Selectable("OpenGL",curRenderBackend=="OpenGL")) { settings.renderBackend="OpenGL"; + settingsChanged=true; } #endif ImGui::EndCombo(); @@ -352,10 +364,12 @@ void FurnaceGUI::drawSettings() { if (ImGui::BeginCombo("Render driver",settings.renderDriver.empty()?"Automatic":settings.renderDriver.c_str())) { if (ImGui::Selectable("Automatic",settings.renderDriver.empty())) { settings.renderDriver=""; + settingsChanged=true; } for (String& i: availRenderDrivers) { if (ImGui::Selectable(i.c_str(),i==settings.renderDriver)) { settings.renderDriver=i; + settingsChanged=true; } } ImGui::EndCombo(); @@ -368,6 +382,7 @@ void FurnaceGUI::drawSettings() { bool renderClearPosB=settings.renderClearPos; if (ImGui::Checkbox("Late render clear",&renderClearPosB)) { settings.renderClearPos=renderClearPosB; + settingsChanged=true; } if (ImGui::IsItemHovered()) { ImGui::SetTooltip("calls rend->clear() after rend->present(). might reduce UI latency by one frame in some drivers."); @@ -376,6 +391,7 @@ void FurnaceGUI::drawSettings() { bool powerSaveB=settings.powerSave; if (ImGui::Checkbox("Power-saving mode",&powerSaveB)) { settings.powerSave=powerSaveB; + settingsChanged=true; } if (ImGui::IsItemHovered()) { ImGui::SetTooltip("saves power by lowering the frame rate to 2fps when idle.\nmay cause issues under Mesa drivers!"); @@ -385,6 +401,7 @@ void FurnaceGUI::drawSettings() { bool noThreadedInputB=settings.noThreadedInput; if (ImGui::Checkbox("Disable threaded input (restart after changing!)",&noThreadedInputB)) { settings.noThreadedInput=noThreadedInputB; + settingsChanged=true; } if (ImGui::IsItemHovered()) { ImGui::SetTooltip("threaded input processes key presses for note preview on a separate thread (on supported platforms), which reduces latency.\nhowever, crashes have been reported when threaded input is on. enable this option if that is the case."); @@ -394,6 +411,7 @@ void FurnaceGUI::drawSettings() { bool eventDelayB=settings.eventDelay; if (ImGui::Checkbox("Enable event delay",&eventDelayB)) { settings.eventDelay=eventDelayB; + settingsChanged=true; applyUISettings(false); } if (ImGui::IsItemHovered()) { @@ -405,6 +423,7 @@ void FurnaceGUI::drawSettings() { if (settings.chanOscThreads<0) settings.chanOscThreads=0; if (settings.chanOscThreads>(cpuCores*3)) settings.chanOscThreads=cpuCores*3; if (settings.chanOscThreads>256) settings.chanOscThreads=256; + settingsChanged=true; } if (settings.chanOscThreads>=(cpuCores*3)) { if (ImGui::IsItemHovered()) { @@ -427,16 +446,19 @@ void FurnaceGUI::drawSettings() { bool sysFileDialogB=settings.sysFileDialog; if (ImGui::Checkbox("Use system file picker",&sysFileDialogB)) { settings.sysFileDialog=sysFileDialogB; + settingsChanged=true; } if (ImGui::InputInt("Number of recent files",&settings.maxRecentFile)) { if (settings.maxRecentFile<0) settings.maxRecentFile=0; if (settings.maxRecentFile>30) settings.maxRecentFile=30; + settingsChanged=true; } bool compressB=settings.compress; if (ImGui::Checkbox("Compress when saving",&compressB)) { settings.compress=compressB; + settingsChanged=true; } if (ImGui::IsItemHovered()) { ImGui::SetTooltip("use zlib to compress saved songs."); @@ -445,11 +467,13 @@ void FurnaceGUI::drawSettings() { bool saveUnusedPatternsB=settings.saveUnusedPatterns; if (ImGui::Checkbox("Save unused patterns",&saveUnusedPatternsB)) { settings.saveUnusedPatterns=saveUnusedPatternsB; + settingsChanged=true; } bool newPatternFormatB=settings.newPatternFormat; if (ImGui::Checkbox("Use new pattern format when saving",&newPatternFormatB)) { settings.newPatternFormat=newPatternFormatB; + settingsChanged=true; } if (ImGui::IsItemHovered()) { ImGui::SetTooltip("use a packed format which saves space when saving songs.\ndisable if you need compatibility with older Furnace and/or tools\nwhich do not support this format."); @@ -458,6 +482,7 @@ void FurnaceGUI::drawSettings() { bool noDMFCompatB=settings.noDMFCompat; if (ImGui::Checkbox("Don't apply compatibility flags when loading .dmf",&noDMFCompatB)) { settings.noDMFCompat=noDMFCompatB; + settingsChanged=true; } if (ImGui::IsItemHovered()) { ImGui::SetTooltip("do not report any issues arising from the use of this option!"); @@ -467,12 +492,15 @@ void FurnaceGUI::drawSettings() { ImGui::Indent(); if (ImGui::RadioButton("No##pol0",settings.playOnLoad==0)) { settings.playOnLoad=0; + settingsChanged=true; } if (ImGui::RadioButton("Only if already playing##pol1",settings.playOnLoad==1)) { settings.playOnLoad=1; + settingsChanged=true; } if (ImGui::RadioButton("Yes##pol0",settings.playOnLoad==2)) { settings.playOnLoad=2; + settingsChanged=true; } ImGui::Unindent(); @@ -480,27 +508,32 @@ void FurnaceGUI::drawSettings() { ImGui::Indent(); if (ImGui::RadioButton("Set to these values on start-up:##fot0",settings.persistFadeOut==0)) { settings.persistFadeOut=0; + settingsChanged=true; } ImGui::BeginDisabled(settings.persistFadeOut); ImGui::Indent(); if (ImGui::InputInt("Loops",&settings.exportLoops,1,2)) { if (exportLoops<0) exportLoops=0; exportLoops=settings.exportLoops; + settingsChanged=true; } if (ImGui::InputDouble("Fade out (seconds)",&settings.exportFadeOut,1.0,2.0,"%.1f")) { if (exportFadeOut<0.0) exportFadeOut=0.0; exportFadeOut=settings.exportFadeOut; + settingsChanged=true; } ImGui::Unindent(); ImGui::EndDisabled(); if (ImGui::RadioButton("Remember last values##fot1",settings.persistFadeOut==1)) { settings.persistFadeOut=1; + settingsChanged=true; } ImGui::Unindent(); bool writeInsNamesB=settings.writeInsNames; if (ImGui::Checkbox("Store instrument name in .fui",&writeInsNamesB)) { settings.writeInsNames=writeInsNamesB; + settingsChanged=true; } if (ImGui::IsItemHovered()) { ImGui::SetTooltip("when enabled, saving an instrument will store its name.\nthis may increase file size."); @@ -509,6 +542,7 @@ void FurnaceGUI::drawSettings() { bool readInsNamesB=settings.readInsNames; if (ImGui::Checkbox("Load instrument name from .fui",&readInsNamesB)) { settings.readInsNames=readInsNamesB; + settingsChanged=true; } if (ImGui::IsItemHovered()) { ImGui::SetTooltip("when enabled, loading an instrument will use the stored name (if present).\notherwise, it will use the file name."); @@ -529,6 +563,7 @@ void FurnaceGUI::drawSettings() { settings.initialSys.set(fmt::sprintf("flags%d",i),e->song.systemFlags[i].toBase64()); } settings.initialSysName=e->song.systemName; + settingsChanged=true; } ImGui::SameLine(); if (ImGui::Button("Randomize")) { @@ -578,6 +613,7 @@ void FurnaceGUI::drawSettings() { settings.initialSysName+=wordPool[i][rand()%wordPool[i].size()]; settings.initialSysName+=" "; } + settingsChanged=true; } ImGui::SameLine(); if (ImGui::Button("Reset to defaults")) { @@ -593,13 +629,16 @@ void FurnaceGUI::drawSettings() { settings.initialSys.set("fr1",0.0f); settings.initialSys.set("flags1",""); settings.initialSysName="Sega Genesis/Mega Drive"; + settingsChanged=true; } ImGui::AlignTextToFramePadding(); ImGui::Text("Name"); ImGui::SameLine(); ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - ImGui::InputText("##InitSysName",&settings.initialSysName); + if (ImGui::InputText("##InitSysName",&settings.initialSysName)) { + settingsChanged=true; + } int sysCount=0; int doRemove=-1; @@ -623,6 +662,7 @@ void FurnaceGUI::drawSettings() { sysID=(DivSystem)availableSystems[j]; settings.initialSys.set(fmt::sprintf("id%d",i),(int)e->systemToFileFur(sysID)); settings.initialSys.set(fmt::sprintf("flags%d",i),""); + settingsChanged=true; } } ImGui::EndCombo(); @@ -632,12 +672,14 @@ void FurnaceGUI::drawSettings() { if (ImGui::Checkbox("Invert",&doInvert)) { sysVol=-sysVol; settings.initialSys.set(fmt::sprintf("vol%d",i),sysVol); + settingsChanged=true; } ImGui::SameLine(); //ImGui::BeginDisabled(settings.initialSys.size()<=4); pushDestColor(); if (ImGui::Button(ICON_FA_MINUS "##InitSysRemove")) { doRemove=i; + settingsChanged=true; } popDestColor(); //ImGui::EndDisabled(); @@ -650,18 +692,21 @@ void FurnaceGUI::drawSettings() { if (vol>10) vol=10; sysVol=doInvert?-vol:vol; settings.initialSys.set(fmt::sprintf("vol%d",i),(float)sysVol); + settingsChanged=true; } rightClickable ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x-ImGui::GetFrameHeightWithSpacing()*2.0-ImGui::GetStyle().ItemSpacing.x*2.0); if (CWSliderFloat("Panning",&sysPan,-1.0f,1.0f)) { if (sysPan<-1.0f) sysPan=-1.0f; if (sysPan>1.0f) sysPan=1.0f; settings.initialSys.set(fmt::sprintf("pan%d",i),(float)sysPan); + settingsChanged=true; } rightClickable ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x-ImGui::GetFrameHeightWithSpacing()*2.0-ImGui::GetStyle().ItemSpacing.x*2.0); if (CWSliderFloat("Front/Rear",&sysPanFR,-1.0f,1.0f)) { if (sysPanFR<-1.0f) sysPanFR=-1.0f; if (sysPanFR>1.0f) sysPanFR=1.0f; settings.initialSys.set(fmt::sprintf("fr%d",i),(float)sysPanFR); + settingsChanged=true; } rightClickable // oh please MSVC don't cry @@ -711,9 +756,11 @@ void FurnaceGUI::drawSettings() { ImGui::Indent(); if (ImGui::RadioButton("Display system preset selector##NSB0",settings.newSongBehavior==0)) { settings.newSongBehavior=0; + settingsChanged=true; } if (ImGui::RadioButton("Start with initial system##NSB1",settings.newSongBehavior==1)) { settings.newSongBehavior=1; + settingsChanged=true; } ImGui::Unindent(); @@ -723,26 +770,32 @@ void FurnaceGUI::drawSettings() { ImGui::Indent(); if (ImGui::RadioButton("No##pis0",settings.alwaysPlayIntro==0)) { settings.alwaysPlayIntro=0; + settingsChanged=true; } if (ImGui::RadioButton("Short##pis1",settings.alwaysPlayIntro==1)) { settings.alwaysPlayIntro=1; + settingsChanged=true; } if (ImGui::RadioButton("Full (short when loading song)##pis2",settings.alwaysPlayIntro==2)) { settings.alwaysPlayIntro=2; + settingsChanged=true; } if (ImGui::RadioButton("Full (always)##pis3",settings.alwaysPlayIntro==3)) { settings.alwaysPlayIntro=3; + settingsChanged=true; } ImGui::Unindent(); bool disableFadeInB=settings.disableFadeIn; if (ImGui::Checkbox("Disable fade-in during start-up",&disableFadeInB)) { settings.disableFadeIn=disableFadeInB; + settingsChanged=true; } bool partyTimeB=settings.partyTime; if (ImGui::Checkbox("About screen party time",&partyTimeB)) { settings.partyTime=partyTimeB; + settingsChanged=true; } if (ImGui::IsItemHovered()) { ImGui::SetTooltip("Warning: may cause epileptic seizures."); @@ -753,6 +806,7 @@ void FurnaceGUI::drawSettings() { bool blankInsB=settings.blankIns; if (ImGui::Checkbox("New instruments are blank",&blankInsB)) { settings.blankIns=blankInsB; + settingsChanged=true; } END_SECTION; @@ -774,14 +828,17 @@ void FurnaceGUI::drawSettings() { #ifdef HAVE_JACK if (ImGui::Selectable("JACK",settings.audioEngine==DIV_AUDIO_JACK)) { settings.audioEngine=DIV_AUDIO_JACK; + settingsChanged=true; } #endif if (ImGui::Selectable("SDL",settings.audioEngine==DIV_AUDIO_SDL)) { settings.audioEngine=DIV_AUDIO_SDL; + settingsChanged=true; } #ifdef HAVE_PA if (ImGui::Selectable("PortAudio",settings.audioEngine==DIV_AUDIO_PORTAUDIO)) { settings.audioEngine=DIV_AUDIO_PORTAUDIO; + settingsChanged=true; } #endif if (settings.audioEngine!=prevAudioEngine) { @@ -802,10 +859,12 @@ void FurnaceGUI::drawSettings() { if (ImGui::BeginCombo("##SDLADriver",settings.sdlAudioDriver.empty()?"Automatic":settings.sdlAudioDriver.c_str())) { if (ImGui::Selectable("Automatic",settings.sdlAudioDriver.empty())) { settings.sdlAudioDriver=""; + settingsChanged=true; } for (String& i: availAudioDrivers) { if (ImGui::Selectable(i.c_str(),i==settings.sdlAudioDriver)) { settings.sdlAudioDriver=i; + settingsChanged=true; } } ImGui::EndCombo(); @@ -836,10 +895,12 @@ void FurnaceGUI::drawSettings() { if (ImGui::BeginCombo("##AudioDevice",audioDevName.c_str())) { if (ImGui::Selectable("",settings.audioDevice.empty())) { settings.audioDevice=""; + settingsChanged=true; } for (String& i: e->getAudioDevices()) { if (ImGui::Selectable(i.c_str(),i==settings.audioDevice)) { settings.audioDevice=i; + settingsChanged=true; } } ImGui::EndCombo(); @@ -3158,18 +3219,27 @@ void FurnaceGUI::drawSettings() { if (ImGui::Button("OK##SettingsOK")) { settingsOpen=false; willCommit=true; + settingsChanged=false; } ImGui::SameLine(); if (ImGui::Button("Cancel##SettingsCancel")) { settingsOpen=false; audioEngineChanged=false; syncSettings(); + settingsChanged=false; } ImGui::SameLine(); + bool applyDisabled=false; + if (!settingsChanged) { + ImGui::BeginDisabled(); + applyDisabled=true; + } if (ImGui::Button("Apply##SettingsApply")) { settingsOpen=true; willCommit=true; + settingsChanged=false; } + if (!settingsChanged && applyDisabled) ImGui::EndDisabled(); } if (ImGui::IsWindowFocused(ImGuiFocusedFlags_ChildWindows)) curWindow=GUI_WINDOW_SETTINGS; ImGui::End(); From e8f1b36a1c7dff82c4f0ddbef72f8bc589d882a5 Mon Sep 17 00:00:00 2001 From: Eknous-P Date: Tue, 3 Oct 2023 18:59:41 +0400 Subject: [PATCH 05/72] settings change detect part 2 i hope i didnt miss anything --- src/gui/gui.cpp | 3 + src/gui/settings.cpp | 286 ++++++++++++++++++++++++++++++++++++++----- 2 files changed, 256 insertions(+), 33 deletions(-) diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 29a2f3ac8..dd293dd06 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -5499,6 +5499,7 @@ bool FurnaceGUI::loop() { reportError(fmt::sprintf("could NOT save layout! %s",strerror(errno))); } } + settingsChanged=true; } ImGui::SameLine(); if (ImGui::Button("No")) { @@ -5509,6 +5510,7 @@ bool FurnaceGUI::loop() { if (ImGui::Button("Yes")) { ImGui::CloseCurrentPopup(); resetKeybinds(); + settingsChanged=true; } ImGui::SameLine(); if (ImGui::Button("No")) { @@ -5520,6 +5522,7 @@ bool FurnaceGUI::loop() { ImGui::CloseCurrentPopup(); resetColors(); applyUISettings(false); + settingsChanged=true; } ImGui::SameLine(); if (ImGui::Button("No")) { diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index 8e61c1348..6ff5b9a4d 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -718,6 +718,7 @@ void FurnaceGUI::drawSettings() { settings.initialSys.set(fmt::sprintf("flags%d",i),sysFlags.toBase64()); } ImGui::TreePop(); + settingsChanged=true; } ImGui::PopID(); @@ -935,6 +936,7 @@ void FurnaceGUI::drawSettings() { if (ImGui::InputInt("##AudioChansI",&settings.audioChans,1,1)) { if (settings.audioChans<1) settings.audioChans=1; if (settings.audioChans>16) settings.audioChans=16; + settingsChanged=true; } } else { ImGui::AlignTextToFramePadding(); @@ -977,6 +979,7 @@ void FurnaceGUI::drawSettings() { } else { settings.renderPoolThreads=0; } + settingsChanged=true; } if (ImGui::IsItemHovered()) { ImGui::SetTooltip("runs chip emulation on separate threads.\nmay increase performance when using heavy emulation cores.\n\nwarnings:\n- experimental!\n- only useful on multi-chip songs."); @@ -987,6 +990,7 @@ void FurnaceGUI::drawSettings() { if (ImGui::InputInt("Number of threads",&settings.renderPoolThreads)) { if (settings.renderPoolThreads<2) settings.renderPoolThreads=2; if (settings.renderPoolThreads>32) settings.renderPoolThreads=32; + settingsChanged=true; } if (settings.renderPoolThreads>=DIV_MAX_CHIPS) { if (ImGui::IsItemHovered()) { @@ -1004,6 +1008,7 @@ void FurnaceGUI::drawSettings() { bool lowLatencyB=settings.lowLatency; if (ImGui::Checkbox("Low-latency mode",&lowLatencyB)) { settings.lowLatency=lowLatencyB; + settingsChanged=true; } if (ImGui::IsItemHovered()) { ImGui::SetTooltip("reduces latency by running the engine faster than the tick rate.\nuseful for live playback/jam mode.\n\nwarning: only enable if your buffer size is small (10ms or less)."); @@ -1012,6 +1017,7 @@ void FurnaceGUI::drawSettings() { bool forceMonoB=settings.forceMono; if (ImGui::Checkbox("Force mono audio",&forceMonoB)) { settings.forceMono=forceMonoB; + settingsChanged=true; } if (settings.audioEngine==DIV_AUDIO_PORTAUDIO) { @@ -1019,6 +1025,7 @@ void FurnaceGUI::drawSettings() { bool wasapiExB=settings.wasapiEx; if (ImGui::Checkbox("Exclusive mode",&wasapiExB)) { settings.wasapiEx=wasapiExB; + settingsChanged=true; } } } @@ -1034,11 +1041,14 @@ void FurnaceGUI::drawSettings() { ImGui::AlignTextToFramePadding(); ImGui::Text("Quality"); ImGui::SameLine(); - ImGui::Combo("##Quality",&settings.audioQuality,audioQualities,2); + if (ImGui::Combo("##Quality",&settings.audioQuality,audioQualities,2)) { + settingsChanged=true; + } bool clampSamplesB=settings.clampSamples; if (ImGui::Checkbox("Software clipping",&clampSamplesB)) { settings.clampSamples=clampSamplesB; + settingsChanged=true; } // SUBSECTION METRONOME @@ -1050,6 +1060,7 @@ void FurnaceGUI::drawSettings() { if (settings.metroVol<0) settings.metroVol=0; if (settings.metroVol>200) settings.metroVol=200; e->setMetronomeVol(((float)settings.metroVol)/100.0f); + settingsChanged=true; } // SUBSECTION SAMPLE PREVIEW @@ -1061,6 +1072,7 @@ void FurnaceGUI::drawSettings() { if (settings.sampleVol<0) settings.sampleVol=0; if (settings.sampleVol>100) settings.sampleVol=100; e->setSamplePreviewVol(((float)settings.sampleVol)/100.0f); + settingsChanged=true; } END_SECTION; @@ -1077,11 +1089,13 @@ void FurnaceGUI::drawSettings() { if (ImGui::Selectable("",settings.midiInDevice.empty())) { settings.midiInDevice=""; hasToReloadMidi=true; + settingsChanged=true; } for (String& i: e->getMidiIns()) { if (ImGui::Selectable(i.c_str(),i==settings.midiInDevice)) { settings.midiInDevice=i; hasToReloadMidi=true; + settingsChanged=true; } } ImGui::EndCombo(); @@ -1092,53 +1106,59 @@ void FurnaceGUI::drawSettings() { midiMap.compile(); } - ImGui::Checkbox("Note input",&midiMap.noteInput); - ImGui::Checkbox("Velocity input",&midiMap.volInput); + if (ImGui::Checkbox("Note input",&midiMap.noteInput)) settingsChanged=true; + if (ImGui::Checkbox("Velocity input",&midiMap.volInput)) settingsChanged=true; // TODO //ImGui::Checkbox("Use raw velocity value (don't map from linear to log)",&midiMap.rawVolume); //ImGui::Checkbox("Polyphonic/chord input",&midiMap.polyInput); - ImGui::Checkbox("Map MIDI channels to direct channels",&midiMap.directChannel); - ImGui::Checkbox("Map Yamaha FM voice data to instruments",&midiMap.yamahaFMResponse); - ImGui::Checkbox("Program change is instrument selection",&midiMap.programChange); + if (ImGui::Checkbox("Map MIDI channels to direct channels",&midiMap.directChannel)) settingsChanged=true; + if (ImGui::Checkbox("Map Yamaha FM voice data to instruments",&midiMap.yamahaFMResponse)) settingsChanged=true; + if (ImGui::Checkbox("Program change is instrument selection",&midiMap.programChange)) settingsChanged=true; //ImGui::Checkbox("Listen to MIDI clock",&midiMap.midiClock); //ImGui::Checkbox("Listen to MIDI time code",&midiMap.midiTimeCode); - ImGui::Combo("Value input style",&midiMap.valueInputStyle,valueInputStyles,7); + if (ImGui::Combo("Value input style",&midiMap.valueInputStyle,valueInputStyles,7)) settingsChanged=true; if (midiMap.valueInputStyle>3) { if (midiMap.valueInputStyle==6) { if (ImGui::InputInt("Control##valueCCS",&midiMap.valueInputControlSingle,1,16)) { if (midiMap.valueInputControlSingle<0) midiMap.valueInputControlSingle=0; if (midiMap.valueInputControlSingle>127) midiMap.valueInputControlSingle=127; + settingsChanged=true; } } else { if (ImGui::InputInt((midiMap.valueInputStyle==4)?"CC of upper nibble##valueCC1":"MSB CC##valueCC1",&midiMap.valueInputControlMSB,1,16)) { if (midiMap.valueInputControlMSB<0) midiMap.valueInputControlMSB=0; if (midiMap.valueInputControlMSB>127) midiMap.valueInputControlMSB=127; + settingsChanged=true; } if (ImGui::InputInt((midiMap.valueInputStyle==4)?"CC of lower nibble##valueCC2":"LSB CC##valueCC2",&midiMap.valueInputControlLSB,1,16)) { if (midiMap.valueInputControlLSB<0) midiMap.valueInputControlLSB=0; if (midiMap.valueInputControlLSB>127) midiMap.valueInputControlLSB=127; + settingsChanged=true; } } } if (ImGui::TreeNode("Per-column control change")) { for (int i=0; i<18; i++) { ImGui::PushID(i); - ImGui::Combo(specificControls[i],&midiMap.valueInputSpecificStyle[i],valueSInputStyles,4); + if (ImGui::Combo(specificControls[i],&midiMap.valueInputSpecificStyle[i],valueSInputStyles,4)) settingsChanged=true; if (midiMap.valueInputSpecificStyle[i]>0) { ImGui::Indent(); if (midiMap.valueInputSpecificStyle[i]==3) { if (ImGui::InputInt("Control##valueCCS",&midiMap.valueInputSpecificSingle[i],1,16)) { if (midiMap.valueInputSpecificSingle[i]<0) midiMap.valueInputSpecificSingle[i]=0; if (midiMap.valueInputSpecificSingle[i]>127) midiMap.valueInputSpecificSingle[i]=127; + settingsChanged=true; } } else { if (ImGui::InputInt((midiMap.valueInputSpecificStyle[i]==4)?"CC of upper nibble##valueCC1":"MSB CC##valueCC1",&midiMap.valueInputSpecificMSB[i],1,16)) { if (midiMap.valueInputSpecificMSB[i]<0) midiMap.valueInputSpecificMSB[i]=0; if (midiMap.valueInputSpecificMSB[i]>127) midiMap.valueInputSpecificMSB[i]=127; + settingsChanged=true; } if (ImGui::InputInt((midiMap.valueInputSpecificStyle[i]==4)?"CC of lower nibble##valueCC2":"LSB CC##valueCC2",&midiMap.valueInputSpecificLSB[i],1,16)) { if (midiMap.valueInputSpecificLSB[i]<0) midiMap.valueInputSpecificLSB[i]=0; if (midiMap.valueInputSpecificLSB[i]>127) midiMap.valueInputSpecificLSB[i]=127; + settingsChanged=true; } } ImGui::Unindent(); @@ -1150,6 +1170,7 @@ void FurnaceGUI::drawSettings() { if (ImGui::SliderFloat("Volume curve",&midiMap.volExp,0.01,8.0,"%.2f")) { if (midiMap.volExp<0.01) midiMap.volExp=0.01; if (midiMap.volExp>8.0) midiMap.volExp=8.0; + settingsChanged=true; } rightClickable float curve[128]; for (int i=0; i<128; i++) { @@ -1162,11 +1183,13 @@ void FurnaceGUI::drawSettings() { ImGui::SameLine(); if (ImGui::Button(ICON_FA_PLUS "##AddAction")) { midiMap.binds.push_back(MIDIBind()); + settingsChanged=true; } ImGui::SameLine(); if (ImGui::Button(ICON_FA_EXTERNAL_LINK "##AddLearnAction")) { midiMap.binds.push_back(MIDIBind()); learning=midiMap.binds.size()-1; + settingsChanged=true; } if (learning!=-1) { ImGui::SameLine(); @@ -1208,6 +1231,7 @@ void FurnaceGUI::drawSettings() { for (int j=8; j<15; j++) { if (ImGui::Selectable(messageTypes[j],bind.type==j)) { bind.type=j; + settingsChanged=true; } } ImGui::EndCombo(); @@ -1218,10 +1242,12 @@ void FurnaceGUI::drawSettings() { if (ImGui::BeginCombo("##BChannel",messageChannels[bind.channel])) { if (ImGui::Selectable(messageChannels[16],bind.channel==16)) { bind.channel=16; + settingsChanged=true; } for (int j=0; j<16; j++) { if (ImGui::Selectable(messageChannels[j],bind.channel==j)) { bind.channel=j; + settingsChanged=true; } } ImGui::EndCombo(); @@ -1241,6 +1267,7 @@ void FurnaceGUI::drawSettings() { if (ImGui::BeginCombo("##BValue1",bindID)) { if (ImGui::Selectable("Any",bind.data1==128)) { bind.data1=128; + settingsChanged=true; } for (int j=0; j<128; j++) { const char* nName="???"; @@ -1250,6 +1277,7 @@ void FurnaceGUI::drawSettings() { snprintf(bindID,1024,"%d (0x%.2X, %s)##BV1_%d",j,j,nName,j); if (ImGui::Selectable(bindID,bind.data1==j)) { bind.data1=j; + settingsChanged=true; } } ImGui::EndCombo(); @@ -1265,11 +1293,13 @@ void FurnaceGUI::drawSettings() { if (ImGui::BeginCombo("##BValue2",bindID)) { if (ImGui::Selectable("Any",bind.data2==128)) { bind.data2=128; + settingsChanged=true; } for (int j=0; j<128; j++) { snprintf(bindID,1024,"%d (0x%.2X)##BV2_%d",j,j,j); if (ImGui::Selectable(bindID,bind.data2==j)) { bind.data2=j; + settingsChanged=true; } } ImGui::EndCombo(); @@ -1280,6 +1310,7 @@ void FurnaceGUI::drawSettings() { if (ImGui::BeginCombo("##BAction",(bind.action==0)?"--none--":guiActions[bind.action].friendlyName)) { if (ImGui::Selectable("--none--",bind.action==0)) { bind.action=0; + settingsChanged=true; } for (int j=0; j",settings.midiOutDevice.empty())) { settings.midiOutDevice=""; + settingsChanged=true; } for (String& i: e->getMidiIns()) { if (ImGui::Selectable(i.c_str(),i==settings.midiOutDevice)) { settings.midiOutDevice=i; + settingsChanged=true; } } ImGui::EndCombo(); @@ -1340,9 +1376,11 @@ void FurnaceGUI::drawSettings() { ImGui::Indent(); if (ImGui::RadioButton("Off (use for TX81Z)",settings.midiOutMode==0)) { settings.midiOutMode=0; + settingsChanged=true; } if (ImGui::RadioButton("Melodic",settings.midiOutMode==1)) { settings.midiOutMode=1; + settingsChanged=true; } /* if (ImGui::RadioButton("Light Show (use for Launchpad)",settings.midiOutMode==2)) { @@ -1353,16 +1391,19 @@ void FurnaceGUI::drawSettings() { bool midiOutProgramChangeB=settings.midiOutProgramChange; if (ImGui::Checkbox("Send Program Change",&midiOutProgramChangeB)) { settings.midiOutProgramChange=midiOutProgramChangeB; + settingsChanged=true; } bool midiOutClockB=settings.midiOutClock; if (ImGui::Checkbox("Send MIDI clock",&midiOutClockB)) { settings.midiOutClock=midiOutClockB; + settingsChanged=true; } bool midiOutTimeB=settings.midiOutTime; if (ImGui::Checkbox("Send MIDI timecode",&midiOutTimeB)) { settings.midiOutTime=midiOutTimeB; + settingsChanged=true; } if (settings.midiOutTime) { @@ -1370,18 +1411,23 @@ void FurnaceGUI::drawSettings() { ImGui::Indent(); if (ImGui::RadioButton("Closest to Tick Rate",settings.midiOutTimeRate==0)) { settings.midiOutTimeRate=0; + settingsChanged=true; } if (ImGui::RadioButton("Film (24fps)",settings.midiOutTimeRate==1)) { settings.midiOutTimeRate=1; + settingsChanged=true; } if (ImGui::RadioButton("PAL (25fps)",settings.midiOutTimeRate==2)) { settings.midiOutTimeRate=2; + settingsChanged=true; } if (ImGui::RadioButton("NTSC drop (29.97fps)",settings.midiOutTimeRate==3)) { settings.midiOutTimeRate=3; + settingsChanged=true; } if (ImGui::RadioButton("NTSC non-drop (30fps)",settings.midiOutTimeRate==4)) { settings.midiOutTimeRate=4; + settingsChanged=true; } ImGui::Unindent(); } @@ -1415,10 +1461,10 @@ void FurnaceGUI::drawSettings() { ImGui::Text("YM2151"); ImGui::TableNextColumn(); ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - ImGui::Combo("##ArcadeCore",&settings.arcadeCore,arcadeCores,2); + if (ImGui::Combo("##ArcadeCore",&settings.arcadeCore,arcadeCores,2)) settingsChanged=true; ImGui::TableNextColumn(); ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - ImGui::Combo("##ArcadeCoreRender",&settings.arcadeCoreRender,arcadeCores,2); + if (ImGui::Combo("##ArcadeCoreRender",&settings.arcadeCoreRender,arcadeCores,2)) settingsChanged=true; ImGui::TableNextRow(); ImGui::TableNextColumn(); @@ -1426,10 +1472,10 @@ void FurnaceGUI::drawSettings() { ImGui::Text("YM2612"); ImGui::TableNextColumn(); ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - ImGui::Combo("##YM2612Core",&settings.ym2612Core,ym2612Cores,2); + if (ImGui::Combo("##YM2612Core",&settings.ym2612Core,ym2612Cores,2)) settingsChanged=true; ImGui::TableNextColumn(); ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - ImGui::Combo("##YM2612CoreRender",&settings.ym2612CoreRender,ym2612Cores,2); + if (ImGui::Combo("##YM2612CoreRender",&settings.ym2612CoreRender,ym2612Cores,2)) settingsChanged=true; ImGui::TableNextRow(); ImGui::TableNextColumn(); @@ -1437,10 +1483,10 @@ void FurnaceGUI::drawSettings() { ImGui::Text("SN76489"); ImGui::TableNextColumn(); ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - ImGui::Combo("##SNCore",&settings.snCore,snCores,2); + if (ImGui::Combo("##SNCore",&settings.snCore,snCores,2)) settingsChanged=true; ImGui::TableNextColumn(); ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - ImGui::Combo("##SNCoreRender",&settings.snCoreRender,snCores,2); + if (ImGui::Combo("##SNCoreRender",&settings.snCoreRender,snCores,2)) settingsChanged=true; ImGui::TableNextRow(); ImGui::TableNextColumn(); @@ -1448,10 +1494,10 @@ void FurnaceGUI::drawSettings() { ImGui::Text("NES"); ImGui::TableNextColumn(); ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - ImGui::Combo("##NESCore",&settings.nesCore,nesCores,2); + if (ImGui::Combo("##NESCore",&settings.nesCore,nesCores,2)) settingsChanged=true; ImGui::TableNextColumn(); ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - ImGui::Combo("##NESCoreRender",&settings.nesCoreRender,nesCores,2); + if (ImGui::Combo("##NESCoreRender",&settings.nesCoreRender,nesCores,2)) settingsChanged=true; ImGui::TableNextRow(); ImGui::TableNextColumn(); @@ -1459,10 +1505,10 @@ void FurnaceGUI::drawSettings() { ImGui::Text("FDS"); ImGui::TableNextColumn(); ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - ImGui::Combo("##FDSCore",&settings.fdsCore,nesCores,2); + if (ImGui::Combo("##FDSCore",&settings.fdsCore,nesCores,2)) settingsChanged=true; ImGui::TableNextColumn(); ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - ImGui::Combo("##FDSCoreRender",&settings.fdsCoreRender,nesCores,2); + if (ImGui::Combo("##FDSCoreRender",&settings.fdsCoreRender,nesCores,2)) settingsChanged=true; ImGui::TableNextRow(); ImGui::TableNextColumn(); @@ -1470,10 +1516,10 @@ void FurnaceGUI::drawSettings() { ImGui::Text("SID"); ImGui::TableNextColumn(); ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - ImGui::Combo("##C64Core",&settings.c64Core,c64Cores,3); + if (ImGui::Combo("##C64Core",&settings.c64Core,c64Cores,3)) settingsChanged=true; ImGui::TableNextColumn(); ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - ImGui::Combo("##C64CoreRender",&settings.c64CoreRender,c64Cores,3); + if (ImGui::Combo("##C64CoreRender",&settings.c64CoreRender,c64Cores,3)) settingsChanged=true; ImGui::TableNextRow(); ImGui::TableNextColumn(); @@ -1481,10 +1527,10 @@ void FurnaceGUI::drawSettings() { ImGui::Text("POKEY"); ImGui::TableNextColumn(); ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - ImGui::Combo("##POKEYCore",&settings.pokeyCore,pokeyCores,2); + if (ImGui::Combo("##POKEYCore",&settings.pokeyCore,pokeyCores,2)) settingsChanged=true; ImGui::TableNextColumn(); ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - ImGui::Combo("##POKEYCoreRender",&settings.pokeyCoreRender,pokeyCores,2); + if (ImGui::Combo("##POKEYCoreRender",&settings.pokeyCoreRender,pokeyCores,2)) settingsChanged=true; ImGui::TableNextRow(); ImGui::TableNextColumn(); @@ -1492,10 +1538,10 @@ void FurnaceGUI::drawSettings() { ImGui::Text("OPN/OPNA/OPNB"); ImGui::TableNextColumn(); ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - ImGui::Combo("##OPNCore",&settings.opnCore,opnCores,2); + if (ImGui::Combo("##OPNCore",&settings.opnCore,opnCores,2)) settingsChanged=true; ImGui::TableNextColumn(); ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - ImGui::Combo("##OPNCoreRender",&settings.opnCoreRender,opnCores,2); + if (ImGui::Combo("##OPNCoreRender",&settings.opnCoreRender,opnCores,2)) settingsChanged=true; ImGui::EndTable(); } ImGui::Separator(); @@ -1503,7 +1549,7 @@ void FurnaceGUI::drawSettings() { ImGui::AlignTextToFramePadding(); ImGui::Text("PC Speaker strategy"); ImGui::SameLine(); - ImGui::Combo("##PCSOutMethod",&settings.pcSpeakerOutMethod,pcspkrOutMethods,5); + if (ImGui::Combo("##PCSOutMethod",&settings.pcSpeakerOutMethod,pcspkrOutMethods,5)) settingsChanged=true; /* ImGui::Separator(); @@ -1544,10 +1590,12 @@ void FurnaceGUI::drawSettings() { CONFIG_SUBSECTION("Keyboard"); if (ImGui::Button("Import")) { openFileDialog(GUI_FILE_IMPORT_KEYBINDS); + settingsChanged=true; } ImGui::SameLine(); if (ImGui::Button("Export")) { openFileDialog(GUI_FILE_EXPORT_KEYBINDS); + settingsChanged=true; } ImGui::SameLine(); if (ImGui::Button("Reset defaults")) { @@ -1688,12 +1736,14 @@ void FurnaceGUI::drawSettings() { if (i.val<0) i.val=0; if (i.val>96) i.val=96; noteKeys[i.scan]=i.val; + settingsChanged=true; } } ImGui::TableNextColumn(); snprintf(id,4095,ICON_FA_TIMES "##SNRemove_%d",i.scan); if (ImGui::Button(id)) { noteKeys.erase(i.scan); + settingsChanged=true; } } ImGui::EndTable(); @@ -1706,6 +1756,7 @@ void FurnaceGUI::drawSettings() { snprintf(id,4095,"%s##SNNewKey_%d",sName,i); if (ImGui::Selectable(id)) { noteKeys[(SDL_Scancode)i]=0; + settingsChanged=true; } } ImGui::EndCombo(); @@ -1919,10 +1970,12 @@ void FurnaceGUI::drawSettings() { ImGui::SameLine(); if (ImGui::Button("Import")) { openFileDialog(GUI_FILE_IMPORT_LAYOUT); + settingsChanged=true; } ImGui::SameLine(); if (ImGui::Button("Export")) { openFileDialog(GUI_FILE_EXPORT_LAYOUT); + settingsChanged=true; } ImGui::SameLine(); if (ImGui::Button("Reset")) { @@ -1932,12 +1985,14 @@ void FurnaceGUI::drawSettings() { bool allowEditDockingB=settings.allowEditDocking; if (ImGui::Checkbox("Allow docking editors",&allowEditDockingB)) { settings.allowEditDocking=allowEditDockingB; + settingsChanged=true; } #ifndef IS_MOBILE bool saveWindowPosB=settings.saveWindowPos; if (ImGui::Checkbox("Remember window position",&saveWindowPosB)) { settings.saveWindowPos=saveWindowPosB; + settingsChanged=true; } if (ImGui::IsItemHovered()) { ImGui::SetTooltip("remembers the window's last position on start-up."); @@ -1948,26 +2003,32 @@ void FurnaceGUI::drawSettings() { if (ImGui::Checkbox("Only allow window movement when clicking on title bar",&moveWindowTitleB)) { settings.moveWindowTitle=moveWindowTitleB; applyUISettings(false); + settingsChanged=true; } bool centerPopupB=settings.centerPopup; if (ImGui::Checkbox("Center pop-up windows",¢erPopupB)) { settings.centerPopup=centerPopupB; + settingsChanged=true; } ImGui::Text("Play/edit controls layout:"); ImGui::Indent(); if (ImGui::RadioButton("Classic##ecl0",settings.controlLayout==0)) { settings.controlLayout=0; + settingsChanged=true; } if (ImGui::RadioButton("Compact##ecl1",settings.controlLayout==1)) { settings.controlLayout=1; + settingsChanged=true; } if (ImGui::RadioButton("Compact (vertical)##ecl2",settings.controlLayout==2)) { settings.controlLayout=2; + settingsChanged=true; } if (ImGui::RadioButton("Split##ecl3",settings.controlLayout==3)) { settings.controlLayout=3; + settingsChanged=true; } ImGui::Unindent(); @@ -1975,12 +2036,15 @@ void FurnaceGUI::drawSettings() { ImGui::Indent(); if (ImGui::RadioButton("Top##obp0",settings.orderButtonPos==0)) { settings.orderButtonPos=0; + settingsChanged=true; } if (ImGui::RadioButton("Left##obp1",settings.orderButtonPos==1)) { settings.orderButtonPos=1; + settingsChanged=true; } if (ImGui::RadioButton("Right##obp2",settings.orderButtonPos==2)) { settings.orderButtonPos=2; + settingsChanged=true; } ImGui::Unindent(); @@ -1992,31 +2056,38 @@ void FurnaceGUI::drawSettings() { if (settings.doubleClickTime>1.0) settings.doubleClickTime=1.0; applyUISettings(false); + settingsChanged=true; } bool avoidRaisingPatternB=settings.avoidRaisingPattern; if (ImGui::Checkbox("Don't raise pattern editor on click",&avoidRaisingPatternB)) { settings.avoidRaisingPattern=avoidRaisingPatternB; + settingsChanged=true; } bool insFocusesPatternB=settings.insFocusesPattern; if (ImGui::Checkbox("Focus pattern editor when selecting instrument",&insFocusesPatternB)) { settings.insFocusesPattern=insFocusesPatternB; + settingsChanged=true; } ImGui::Text("Note preview behavior:"); ImGui::Indent(); if (ImGui::RadioButton("Never##npb0",settings.notePreviewBehavior==0)) { settings.notePreviewBehavior=0; + settingsChanged=true; } if (ImGui::RadioButton("When cursor is in Note column##npb1",settings.notePreviewBehavior==1)) { settings.notePreviewBehavior=1; + settingsChanged=true; } if (ImGui::RadioButton("When cursor is in Note column or not in edit mode##npb2",settings.notePreviewBehavior==2)) { settings.notePreviewBehavior=2; + settingsChanged=true; } if (ImGui::RadioButton("Always##npb3",settings.notePreviewBehavior==3)) { settings.notePreviewBehavior=3; + settingsChanged=true; } ImGui::Unindent(); @@ -2024,12 +2095,15 @@ void FurnaceGUI::drawSettings() { ImGui::Indent(); if (ImGui::RadioButton("No##dms0",settings.dragMovesSelection==0)) { settings.dragMovesSelection=0; + settingsChanged=true; } if (ImGui::RadioButton("Yes##dms1",settings.dragMovesSelection==1)) { settings.dragMovesSelection=1; + settingsChanged=true; } if (ImGui::RadioButton("Yes (while holding Ctrl only)##dms2",settings.dragMovesSelection==2)) { settings.dragMovesSelection=2; + settingsChanged=true; } ImGui::Unindent(); @@ -2037,18 +2111,22 @@ void FurnaceGUI::drawSettings() { ImGui::Indent(); if (ImGui::RadioButton("Right-click or double-click##soloA",settings.soloAction==0)) { settings.soloAction=0; + settingsChanged=true; } if (ImGui::RadioButton("Right-click##soloR",settings.soloAction==1)) { settings.soloAction=1; + settingsChanged=true; } if (ImGui::RadioButton("Double-click##soloD",settings.soloAction==2)) { settings.soloAction=2; + settingsChanged=true; } ImGui::Unindent(); bool doubleClickColumnB=settings.doubleClickColumn; if (ImGui::Checkbox("Double click selects entire column",&doubleClickColumnB)) { settings.doubleClickColumn=doubleClickColumnB; + settingsChanged=true; } // SUBSECTION CURSOR BEHAVIOR @@ -2056,49 +2134,59 @@ void FurnaceGUI::drawSettings() { bool insertBehaviorB=settings.insertBehavior; if (ImGui::Checkbox("Insert pushes entire channel row",&insertBehaviorB)) { settings.insertBehavior=insertBehaviorB; + settingsChanged=true; } bool pullDeleteRowB=settings.pullDeleteRow; if (ImGui::Checkbox("Pull delete affects entire channel row",&pullDeleteRowB)) { settings.pullDeleteRow=pullDeleteRowB; + settingsChanged=true; } bool pushNibbleB=settings.pushNibble; if (ImGui::Checkbox("Push value when overwriting instead of clearing it",&pushNibbleB)) { settings.pushNibble=pushNibbleB; + settingsChanged=true; } ImGui::Text("Effect input behavior:"); ImGui::Indent(); if (ImGui::RadioButton("Move down##eicb0",settings.effectCursorDir==0)) { settings.effectCursorDir=0; + settingsChanged=true; } if (ImGui::RadioButton("Move to effect value (otherwise move down)##eicb1",settings.effectCursorDir==1)) { settings.effectCursorDir=1; + settingsChanged=true; } if (ImGui::RadioButton("Move to effect value/next effect and wrap around##eicb2",settings.effectCursorDir==2)) { settings.effectCursorDir=2; + settingsChanged=true; } ImGui::Unindent(); bool effectDeletionAltersValueB=settings.effectDeletionAltersValue; if (ImGui::Checkbox("Delete effect value when deleting effect",&effectDeletionAltersValueB)) { settings.effectDeletionAltersValue=effectDeletionAltersValueB; + settingsChanged=true; } bool absorbInsInputB=settings.absorbInsInput; if (ImGui::Checkbox("Change current instrument when changing instrument column (absorb)",&absorbInsInputB)) { settings.absorbInsInput=absorbInsInputB; + settingsChanged=true; } bool removeInsOffB=settings.removeInsOff; if (ImGui::Checkbox("Remove instrument value when inserting note off/release",&removeInsOffB)) { settings.removeInsOff=removeInsOffB; + settingsChanged=true; } bool removeVolOffB=settings.removeVolOff; if (ImGui::Checkbox("Remove volume value when inserting note off/release",&removeVolOffB)) { settings.removeVolOff=removeVolOffB; + settingsChanged=true; } // SUBSECTION CURSOR MOVEMENT @@ -2108,12 +2196,15 @@ void FurnaceGUI::drawSettings() { ImGui::Indent(); if (ImGui::RadioButton("No##wrapH0",settings.wrapHorizontal==0)) { settings.wrapHorizontal=0; + settingsChanged=true; } if (ImGui::RadioButton("Yes##wrapH1",settings.wrapHorizontal==1)) { settings.wrapHorizontal=1; + settingsChanged=true; } if (ImGui::RadioButton("Yes, and move to next/prev row##wrapH2",settings.wrapHorizontal==2)) { settings.wrapHorizontal=2; + settingsChanged=true; } ImGui::Unindent(); @@ -2121,15 +2212,19 @@ void FurnaceGUI::drawSettings() { ImGui::Indent(); if (ImGui::RadioButton("No##wrapV0",settings.wrapVertical==0)) { settings.wrapVertical=0; + settingsChanged=true; } if (ImGui::RadioButton("Yes##wrapV1",settings.wrapVertical==1)) { settings.wrapVertical=1; + settingsChanged=true; } if (ImGui::RadioButton("Yes, and move to next/prev pattern##wrapV2",settings.wrapVertical==2)) { settings.wrapVertical=2; + settingsChanged=true; } if (ImGui::RadioButton("Yes, and move to next/prev pattern (wrap around)##wrapV2",settings.wrapVertical==3)) { settings.wrapVertical=3; + settingsChanged=true; } ImGui::Unindent(); @@ -2137,30 +2232,36 @@ void FurnaceGUI::drawSettings() { ImGui::Indent(); if (ImGui::RadioButton("Move by one##cmk0",settings.scrollStep==0)) { settings.scrollStep=0; + settingsChanged=true; } if (ImGui::RadioButton("Move by Edit Step##cmk1",settings.scrollStep==1)) { settings.scrollStep=1; + settingsChanged=true; } ImGui::Unindent(); bool stepOnDeleteB=settings.stepOnDelete; if (ImGui::Checkbox("Move cursor by edit step on delete",&stepOnDeleteB)) { settings.stepOnDelete=stepOnDeleteB; + settingsChanged=true; } bool stepOnInsertB=settings.stepOnInsert; if (ImGui::Checkbox("Move cursor by edit step on insert (push)",&stepOnInsertB)) { settings.stepOnInsert=stepOnInsertB; + settingsChanged=true; } bool pullDeleteBehaviorB=settings.pullDeleteBehavior; if (ImGui::Checkbox("Move cursor up on backspace-delete",&pullDeleteBehaviorB)) { settings.pullDeleteBehavior=pullDeleteBehaviorB; + settingsChanged=true; } bool cursorPastePosB=settings.cursorPastePos; if (ImGui::Checkbox("Move cursor to end of clipboard content when pasting",&cursorPastePosB)) { settings.cursorPastePos=cursorPastePosB; + settingsChanged=true; } // SUBSECTION SCROLLING @@ -2170,18 +2271,22 @@ void FurnaceGUI::drawSettings() { ImGui::Indent(); if (ImGui::RadioButton("No##pscroll0",settings.scrollChangesOrder==0)) { settings.scrollChangesOrder=0; + settingsChanged=true; } if (ImGui::RadioButton("Yes##pscroll1",settings.scrollChangesOrder==1)) { settings.scrollChangesOrder=1; + settingsChanged=true; } if (ImGui::RadioButton("Yes, and wrap around song##pscroll2",settings.scrollChangesOrder==2)) { settings.scrollChangesOrder=2; + settingsChanged=true; } ImGui::Unindent(); bool cursorFollowsOrderB=settings.cursorFollowsOrder; if (ImGui::Checkbox("Cursor follows current order when moving it",&cursorFollowsOrderB)) { settings.cursorFollowsOrder=cursorFollowsOrderB; + settingsChanged=true; } if (ImGui::IsItemHovered()) { ImGui::SetTooltip("applies when playback is stopped."); @@ -2190,18 +2295,22 @@ void FurnaceGUI::drawSettings() { bool cursorMoveNoScrollB=settings.cursorMoveNoScroll; if (ImGui::Checkbox("Don't scroll when moving cursor",&cursorMoveNoScrollB)) { settings.cursorMoveNoScroll=cursorMoveNoScrollB; + settingsChanged=true; } ImGui::Text("Move cursor with scroll wheel:"); ImGui::Indent(); if (ImGui::RadioButton("No##csw0",settings.cursorFollowsWheel==0)) { settings.cursorFollowsWheel=0; + settingsChanged=true; } if (ImGui::RadioButton("Yes##csw1",settings.cursorFollowsWheel==1)) { settings.cursorFollowsWheel=1; + settingsChanged=true; } if (ImGui::RadioButton("Inverted##csw2",settings.cursorFollowsWheel==2)) { settings.cursorFollowsWheel=2; + settingsChanged=true; } ImGui::Unindent(); @@ -2217,17 +2326,20 @@ void FurnaceGUI::drawSettings() { } else { settings.dpiScale=1.0f; } + settingsChanged=true; } if (!dpiScaleAuto) { if (ImGui::SliderFloat("UI scaling factor",&settings.dpiScale,1.0f,3.0f,"%.2fx")) { if (settings.dpiScale<0.5f) settings.dpiScale=0.5f; if (settings.dpiScale>3.0f) settings.dpiScale=3.0f; + settingsChanged=true; } rightClickable } if (ImGui::InputInt("Icon size",&settings.iconSize)) { if (settings.iconSize<3) settings.iconSize=3; if (settings.iconSize>48) settings.iconSize=48; + settingsChanged=true; } // SUBSECTION TEXT @@ -2240,51 +2352,57 @@ void FurnaceGUI::drawSettings() { ImGui::AlignTextToFramePadding(); ImGui::Text("Main font"); ImGui::TableNextColumn(); - ImGui::Combo("##MainFont",&settings.mainFont,mainFonts,7); + if (ImGui::Combo("##MainFont",&settings.mainFont,mainFonts,7)) settingsChanged=true; if (settings.mainFont==6) { ImGui::InputText("##MainFontPath",&settings.mainFontPath); ImGui::SameLine(); if (ImGui::Button(ICON_FA_FOLDER "##MainFontLoad")) { openFileDialog(GUI_FILE_LOAD_MAIN_FONT); + settingsChanged=true; } } if (ImGui::InputInt("Size##MainFontSize",&settings.mainFontSize)) { if (settings.mainFontSize<3) settings.mainFontSize=3; if (settings.mainFontSize>96) settings.mainFontSize=96; + settingsChanged=true; } ImGui::TableNextRow(); ImGui::TableNextColumn(); ImGui::AlignTextToFramePadding(); ImGui::Text("Header font"); ImGui::TableNextColumn(); - ImGui::Combo("##HeadFont",&settings.headFont,headFonts,7); + if (ImGui::Combo("##HeadFont",&settings.headFont,headFonts,7)) settingsChanged=true; if (settings.headFont==6) { ImGui::InputText("##HeadFontPath",&settings.headFontPath); ImGui::SameLine(); if (ImGui::Button(ICON_FA_FOLDER "##HeadFontLoad")) { openFileDialog(GUI_FILE_LOAD_HEAD_FONT); + settingsChanged=true; } } if (ImGui::InputInt("Size##HeadFontSize",&settings.headFontSize)) { if (settings.headFontSize<3) settings.headFontSize=3; if (settings.headFontSize>96) settings.headFontSize=96; + settingsChanged=true; } ImGui::TableNextRow(); ImGui::TableNextColumn(); ImGui::AlignTextToFramePadding(); ImGui::Text("Pattern font"); ImGui::TableNextColumn(); - ImGui::Combo("##PatFont",&settings.patFont,patFonts,7); + if (ImGui::Combo("##PatFont",&settings.patFont,patFonts,7)) settingsChanged=true; if (settings.patFont==6) { ImGui::InputText("##PatFontPath",&settings.patFontPath); ImGui::SameLine(); if (ImGui::Button(ICON_FA_FOLDER "##PatFontLoad")) { openFileDialog(GUI_FILE_LOAD_PAT_FONT); + settingsChanged=true; } } if (ImGui::InputInt("Size##PatFontSize",&settings.patFontSize)) { if (settings.patFontSize<3) settings.patFontSize=3; if (settings.patFontSize>96) settings.patFontSize=96; + settingsChanged=true; } ImGui::EndTable(); } @@ -2292,6 +2410,7 @@ void FurnaceGUI::drawSettings() { bool loadJapaneseB=settings.loadJapanese; if (ImGui::Checkbox("Display Japanese characters",&loadJapaneseB)) { settings.loadJapanese=loadJapaneseB; + settingsChanged=true; } if (ImGui::IsItemHovered()) { ImGui::SetTooltip( @@ -2305,6 +2424,7 @@ void FurnaceGUI::drawSettings() { bool loadChineseB=settings.loadChinese; if (ImGui::Checkbox("Display Chinese (Simplified) characters",&loadChineseB)) { settings.loadChinese=loadChineseB; + settingsChanged=true; } if (ImGui::IsItemHovered()) { ImGui::SetTooltip( @@ -2318,6 +2438,7 @@ void FurnaceGUI::drawSettings() { bool loadChineseTraditionalB=settings.loadChineseTraditional; if (ImGui::Checkbox("Display Chinese (Traditional) characters",&loadChineseTraditionalB)) { settings.loadChineseTraditional=loadChineseTraditionalB; + settingsChanged=true; } if (ImGui::IsItemHovered()) { ImGui::SetTooltip( @@ -2331,6 +2452,7 @@ void FurnaceGUI::drawSettings() { bool loadKoreanB=settings.loadKorean; if (ImGui::Checkbox("Display Korean characters",&loadKoreanB)) { settings.loadKorean=loadKoreanB; + settingsChanged=true; } if (ImGui::IsItemHovered()) { ImGui::SetTooltip( @@ -2348,18 +2470,22 @@ void FurnaceGUI::drawSettings() { if (ImGui::RadioButton("Furnace##tbar0",settings.titleBarInfo==0)) { settings.titleBarInfo=0; updateWindowTitle(); + settingsChanged=true; } if (ImGui::RadioButton("Song Name - Furnace##tbar1",settings.titleBarInfo==1)) { settings.titleBarInfo=1; updateWindowTitle(); + settingsChanged=true; } if (ImGui::RadioButton("file_name.fur - Furnace##tbar2",settings.titleBarInfo==2)) { settings.titleBarInfo=2; updateWindowTitle(); + settingsChanged=true; } if (ImGui::RadioButton("/path/to/file.fur - Furnace##tbar3",settings.titleBarInfo==3)) { settings.titleBarInfo=3; updateWindowTitle(); + settingsChanged=true; } ImGui::Unindent(); @@ -2367,27 +2493,33 @@ void FurnaceGUI::drawSettings() { if (ImGui::Checkbox("Display system name on title bar",&titleBarSysB)) { settings.titleBarSys=titleBarSysB; updateWindowTitle(); + settingsChanged=true; } bool noMultiSystemB=settings.noMultiSystem; if (ImGui::Checkbox("Display chip names instead of \"multi-system\" in title bar",&noMultiSystemB)) { settings.noMultiSystem=noMultiSystemB; updateWindowTitle(); + settingsChanged=true; } ImGui::Text("Status bar:"); ImGui::Indent(); if (ImGui::RadioButton("Cursor details##sbar0",settings.statusDisplay==0)) { settings.statusDisplay=0; + settingsChanged=true; } if (ImGui::RadioButton("File path##sbar1",settings.statusDisplay==1)) { settings.statusDisplay=1; + settingsChanged=true; } if (ImGui::RadioButton("Cursor details or file path##sbar2",settings.statusDisplay==2)) { settings.statusDisplay=2; + settingsChanged=true; } if (ImGui::RadioButton("Nothing##sbar3",settings.statusDisplay==3)) { settings.statusDisplay=3; + settingsChanged=true; } ImGui::Unindent(); @@ -2395,10 +2527,12 @@ void FurnaceGUI::drawSettings() { if (ImGui::Checkbox("Capitalize menu bar",&capitalMenuBarB)) { settings.capitalMenuBar=capitalMenuBarB; } + settingsChanged=true; bool classicChipOptionsB=settings.classicChipOptions; if (ImGui::Checkbox("Display add/configure/change/remove chip menus in File menu",&classicChipOptionsB)) { settings.classicChipOptions=classicChipOptionsB; + settingsChanged=true; } // SUBSECTION ORDERS @@ -2412,15 +2546,18 @@ void FurnaceGUI::drawSettings() { bool ordersCursorB=settings.ordersCursor; if (ImGui::Checkbox("Highlight channel at cursor in Orders",&ordersCursorB)) { settings.ordersCursor=ordersCursorB; + settingsChanged=true; } ImGui::Text("Orders row number format:"); ImGui::Indent(); if (ImGui::RadioButton("Decimal##orbD",settings.orderRowsBase==0)) { settings.orderRowsBase=0; + settingsChanged=true; } if (ImGui::RadioButton("Hexadecimal##orbH",settings.orderRowsBase==1)) { settings.orderRowsBase=1; + settingsChanged=true; } ImGui::Unindent(); @@ -2429,75 +2566,88 @@ void FurnaceGUI::drawSettings() { bool centerPatternB=settings.centerPattern; if (ImGui::Checkbox("Center pattern view",¢erPatternB)) { settings.centerPattern=centerPatternB; + settingsChanged=true; } bool overflowHighlightB=settings.overflowHighlight; if (ImGui::Checkbox("Overflow pattern highlights",&overflowHighlightB)) { settings.overflowHighlight=overflowHighlightB; + settingsChanged=true; } bool viewPrevPatternB=settings.viewPrevPattern; if (ImGui::Checkbox("Display previous/next pattern",&viewPrevPatternB)) { settings.viewPrevPattern=viewPrevPatternB; + settingsChanged=true; } ImGui::Text("Pattern row number format:"); ImGui::Indent(); if (ImGui::RadioButton("Decimal##prbD",settings.patRowsBase==0)) { settings.patRowsBase=0; + settingsChanged=true; } if (ImGui::RadioButton("Hexadecimal##prbH",settings.patRowsBase==1)) { settings.patRowsBase=1; + settingsChanged=true; } ImGui::Unindent(); ImGui::Text("Pattern view labels:"); - ImGui::InputTextWithHint("Note off (3-char)","OFF",&settings.noteOffLabel); - ImGui::InputTextWithHint("Note release (3-char)","===",&settings.noteRelLabel); - ImGui::InputTextWithHint("Macro release (3-char)","REL",&settings.macroRelLabel); - ImGui::InputTextWithHint("Empty field (3-char)","...",&settings.emptyLabel); - ImGui::InputTextWithHint("Empty field (2-char)","..",&settings.emptyLabel2); + if (ImGui::InputTextWithHint("Note off (3-char)","OFF",&settings.noteOffLabel)) settingsChanged=true; + if (ImGui::InputTextWithHint("Note release (3-char)","===",&settings.noteRelLabel)) settingsChanged=true; + if (ImGui::InputTextWithHint("Macro release (3-char)","REL",&settings.macroRelLabel)) settingsChanged=true; + if (ImGui::InputTextWithHint("Empty field (3-char)","...",&settings.emptyLabel)) settingsChanged=true; + if (ImGui::InputTextWithHint("Empty field (2-char)","..",&settings.emptyLabel2)) settingsChanged=true; ImGui::Text("Pattern view spacing after:"); if (CWSliderInt("Note",&settings.noteCellSpacing,0,32)) { if (settings.noteCellSpacing<0) settings.noteCellSpacing=0; if (settings.noteCellSpacing>32) settings.noteCellSpacing=32; + settingsChanged=true; } if (CWSliderInt("Instrument",&settings.insCellSpacing,0,32)) { if (settings.insCellSpacing<0) settings.insCellSpacing=0; if (settings.insCellSpacing>32) settings.insCellSpacing=32; + settingsChanged=true; } if (CWSliderInt("Volume",&settings.volCellSpacing,0,32)) { if (settings.volCellSpacing<0) settings.volCellSpacing=0; if (settings.volCellSpacing>32) settings.volCellSpacing=32; + settingsChanged=true; } if (CWSliderInt("Effect",&settings.effectCellSpacing,0,32)) { if (settings.effectCellSpacing<0) settings.effectCellSpacing=0; if (settings.effectCellSpacing>32) settings.effectCellSpacing=32; + settingsChanged=true; } if (CWSliderInt("Effect value",&settings.effectValCellSpacing,0,32)) { if (settings.effectValCellSpacing<0) settings.effectValCellSpacing=0; if (settings.effectValCellSpacing>32) settings.effectValCellSpacing=32; + settingsChanged=true; } bool oneDigitEffectsB=settings.oneDigitEffects; if (ImGui::Checkbox("Single-digit effects for 00-0F",&oneDigitEffectsB)) { settings.oneDigitEffects=oneDigitEffectsB; + settingsChanged=true; } bool flatNotesB=settings.flatNotes; if (ImGui::Checkbox("Use flats instead of sharps",&flatNotesB)) { settings.flatNotes=flatNotesB; + settingsChanged=true; } bool germanNotationB=settings.germanNotation; if (ImGui::Checkbox("Use German notation",&germanNotationB)) { settings.germanNotation=germanNotationB; + settingsChanged=true; } // SUBSECTION CHANNEL @@ -2507,21 +2657,27 @@ void FurnaceGUI::drawSettings() { ImGui::Indent(); if (ImGui::RadioButton("Classic##CHS0",settings.channelStyle==0)) { settings.channelStyle=0; + settingsChanged=true; } if (ImGui::RadioButton("Line##CHS1",settings.channelStyle==1)) { settings.channelStyle=1; + settingsChanged=true; } if (ImGui::RadioButton("Round##CHS2",settings.channelStyle==2)) { settings.channelStyle=2; + settingsChanged=true; } if (ImGui::RadioButton("Split button##CHS3",settings.channelStyle==3)) { settings.channelStyle=3; + settingsChanged=true; } if (ImGui::RadioButton("Square border##CH42",settings.channelStyle==4)) { settings.channelStyle=4; + settingsChanged=true; } if (ImGui::RadioButton("Round border##CHS5",settings.channelStyle==5)) { settings.channelStyle=5; + settingsChanged=true; } ImGui::Unindent(); @@ -2529,18 +2685,23 @@ void FurnaceGUI::drawSettings() { ImGui::Indent(); if (ImGui::RadioButton("None##CHV0",settings.channelVolStyle==0)) { settings.channelVolStyle=0; + settingsChanged=true; } if (ImGui::RadioButton("Simple##CHV1",settings.channelVolStyle==1)) { settings.channelVolStyle=1; + settingsChanged=true; } if (ImGui::RadioButton("Stereo##CHV2",settings.channelVolStyle==2)) { settings.channelVolStyle=2; + settingsChanged=true; } if (ImGui::RadioButton("Real##CHV3",settings.channelVolStyle==3)) { settings.channelVolStyle=3; + settingsChanged=true; } if (ImGui::RadioButton("Real (stereo)##CHV4",settings.channelVolStyle==4)) { settings.channelVolStyle=4; + settingsChanged=true; } ImGui::Unindent(); @@ -2548,15 +2709,19 @@ void FurnaceGUI::drawSettings() { ImGui::Indent(); if (ImGui::RadioButton("Off##CHF0",settings.channelFeedbackStyle==0)) { settings.channelFeedbackStyle=0; + settingsChanged=true; } if (ImGui::RadioButton("Note##CHF1",settings.channelFeedbackStyle==1)) { settings.channelFeedbackStyle=1; + settingsChanged=true; } if (ImGui::RadioButton("Volume##CHF2",settings.channelFeedbackStyle==2)) { settings.channelFeedbackStyle=2; + settingsChanged=true; } if (ImGui::RadioButton("Active##CHF3",settings.channelFeedbackStyle==3)) { settings.channelFeedbackStyle=3; + settingsChanged=true; } ImGui::Unindent(); @@ -2564,27 +2729,33 @@ void FurnaceGUI::drawSettings() { ImGui::Indent(); if (ImGui::RadioButton("Regular##CHFont0",settings.channelFont==0)) { settings.channelFont=0; + settingsChanged=true; } if (ImGui::RadioButton("Monospace##CHFont1",settings.channelFont==1)) { settings.channelFont=1; + settingsChanged=true; } ImGui::Unindent(); bool channelTextCenterB=settings.channelTextCenter; if (ImGui::Checkbox("Center channel name",&channelTextCenterB)) { settings.channelTextCenter=channelTextCenterB; + settingsChanged=true; } ImGui::Text("Channel colors:"); ImGui::Indent(); if (ImGui::RadioButton("Single##CHC0",settings.channelColors==0)) { settings.channelColors=0; + settingsChanged=true; } if (ImGui::RadioButton("Channel type##CHC1",settings.channelColors==1)) { settings.channelColors=1; + settingsChanged=true; } if (ImGui::RadioButton("Instrument type##CHC2",settings.channelColors==2)) { settings.channelColors=2; + settingsChanged=true; } ImGui::Unindent(); @@ -2592,12 +2763,15 @@ void FurnaceGUI::drawSettings() { ImGui::Indent(); if (ImGui::RadioButton("Single##CTC0",settings.channelTextColors==0)) { settings.channelTextColors=0; + settingsChanged=true; } if (ImGui::RadioButton("Channel type##CTC1",settings.channelTextColors==1)) { settings.channelTextColors=1; + settingsChanged=true; } if (ImGui::RadioButton("Instrument type##CTC2",settings.channelTextColors==2)) { settings.channelTextColors=2; + settingsChanged=true; } ImGui::Unindent(); @@ -2606,6 +2780,7 @@ void FurnaceGUI::drawSettings() { bool unifiedDataViewB=settings.unifiedDataView; if (ImGui::Checkbox("Unified instrument/wavetable/sample list",&unifiedDataViewB)) { settings.unifiedDataView=unifiedDataViewB; + settingsChanged=true; } if (settings.unifiedDataView) { settings.horizontalDataView=0; @@ -2615,6 +2790,7 @@ void FurnaceGUI::drawSettings() { bool horizontalDataViewB=settings.horizontalDataView; if (ImGui::Checkbox("Horizontal instrument list",&horizontalDataViewB)) { settings.horizontalDataView=horizontalDataViewB; + settingsChanged=true; } ImGui::EndDisabled(); @@ -2622,23 +2798,28 @@ void FurnaceGUI::drawSettings() { ImGui::Indent(); if (ImGui::RadioButton("None##iis0",settings.insIconsStyle==0)) { settings.insIconsStyle=0; + settingsChanged=true; } if (ImGui::RadioButton("Graphical icons##iis1",settings.insIconsStyle==1)) { settings.insIconsStyle=1; + settingsChanged=true; } if (ImGui::RadioButton("Letter icons##iis2",settings.insIconsStyle==2)) { settings.insIconsStyle=2; + settingsChanged=true; } ImGui::Unindent(); bool insEditColorizeB=settings.insEditColorize; if (ImGui::Checkbox("Colorize instrument editor using instrument type",&insEditColorizeB)) { settings.insEditColorize=insEditColorizeB; + settingsChanged=true; } bool insTypeMenuB=settings.insTypeMenu; if (ImGui::Checkbox("Display instrument type menu when adding instrument",&insTypeMenuB)) { settings.insTypeMenu=insTypeMenuB; + settingsChanged=true; } // SUBSECTION MACRO EDITOR @@ -2647,21 +2828,26 @@ void FurnaceGUI::drawSettings() { ImGui::Indent(); if (ImGui::RadioButton("Unified##mel0",settings.macroLayout==0)) { settings.macroLayout=0; + settingsChanged=true; } /* if (ImGui::RadioButton("Tabs##mel1",settings.macroLayout==1)) { settings.macroLayout=1; + settingsChanged=true; } */ if (ImGui::RadioButton("Grid##mel2",settings.macroLayout==2)) { settings.macroLayout=2; + settingsChanged=true; } if (ImGui::RadioButton("Single (with list)##mel3",settings.macroLayout==3)) { settings.macroLayout=3; + settingsChanged=true; } /* if (ImGui::RadioButton("Single (combo box)##mel4",settings.macroLayout==4)) { settings.macroLayout=4; + settingsChanged=true; } */ ImGui::Unindent(); @@ -2669,6 +2855,7 @@ void FurnaceGUI::drawSettings() { bool oldMacroVSliderB=settings.oldMacroVSlider; if (ImGui::Checkbox("Use classic macro editor vertical slider",&oldMacroVSliderB)) { settings.oldMacroVSlider=oldMacroVSliderB; + settingsChanged=true; } // SUBSECTION WAVE EDITOR @@ -2676,6 +2863,7 @@ void FurnaceGUI::drawSettings() { bool waveLayoutB=settings.waveLayout; if (ImGui::Checkbox("Use compact wave editor",&waveLayoutB)) { settings.waveLayout=waveLayoutB; + settingsChanged=true; } // SUBSECTION FM EDITOR @@ -2684,42 +2872,53 @@ void FurnaceGUI::drawSettings() { ImGui::Indent(); if (ImGui::RadioButton("Friendly##fmn0",settings.fmNames==0)) { settings.fmNames=0; + settingsChanged=true; } if (ImGui::RadioButton("Technical##fmn1",settings.fmNames==1)) { settings.fmNames=1; + settingsChanged=true; } if (ImGui::RadioButton("Technical (alternate)##fmn2",settings.fmNames==2)) { settings.fmNames=2; + settingsChanged=true; } ImGui::Unindent(); bool oplStandardWaveNamesB=settings.oplStandardWaveNames; if (ImGui::Checkbox("Use standard OPL waveform names",&oplStandardWaveNamesB)) { settings.oplStandardWaveNames=oplStandardWaveNamesB; + settingsChanged=true; } ImGui::Text("FM parameter editor layout:"); ImGui::Indent(); if (ImGui::RadioButton("Modern##fml0",settings.fmLayout==0)) { settings.fmLayout=0; + settingsChanged=true; } if (ImGui::RadioButton("Compact (2x2, classic)##fml1",settings.fmLayout==1)) { settings.fmLayout=1; + settingsChanged=true; } if (ImGui::RadioButton("Compact (1x4)##fml2",settings.fmLayout==2)) { settings.fmLayout=2; + settingsChanged=true; } if (ImGui::RadioButton("Compact (4x1)##fml3",settings.fmLayout==3)) { settings.fmLayout=3; + settingsChanged=true; } if (ImGui::RadioButton("Alternate (2x2)##fml4",settings.fmLayout==4)) { settings.fmLayout=4; + settingsChanged=true; } if (ImGui::RadioButton("Alternate (1x4)##fml5",settings.fmLayout==5)) { settings.fmLayout=5; + settingsChanged=true; } if (ImGui::RadioButton("Alternate (4x1)##fml5",settings.fmLayout==6)) { settings.fmLayout=6; + settingsChanged=true; } ImGui::Unindent(); @@ -2727,20 +2926,24 @@ void FurnaceGUI::drawSettings() { ImGui::Indent(); if (ImGui::RadioButton("Between Decay and Sustain Rate##susp0",settings.susPosition==0)) { settings.susPosition=0; + settingsChanged=true; } if (ImGui::RadioButton("After Release Rate##susp1",settings.susPosition==1)) { settings.susPosition=1; + settingsChanged=true; } ImGui::Unindent(); bool separateFMColorsB=settings.separateFMColors; if (ImGui::Checkbox("Use separate colors for carriers/modulators in FM editor",&separateFMColorsB)) { settings.separateFMColors=separateFMColorsB; + settingsChanged=true; } bool unsignedDetuneB=settings.unsignedDetune; if (ImGui::Checkbox("Unsigned FM detune values",&unsignedDetuneB)) { settings.unsignedDetune=unsignedDetuneB; + settingsChanged=true; } // SUBSECTION STATISTICS @@ -2749,9 +2952,11 @@ void FurnaceGUI::drawSettings() { ImGui::Indent(); if (ImGui::RadioButton("Bytes##MUU0",settings.memUsageUnit==0)) { settings.memUsageUnit=0; + settingsChanged=true; } if (ImGui::RadioButton("Kilobytes##MUU1",settings.memUsageUnit==1)) { settings.memUsageUnit=1; + settingsChanged=true; } ImGui::Unindent(); @@ -2760,31 +2965,37 @@ void FurnaceGUI::drawSettings() { bool oscRoundedCornersB=settings.oscRoundedCorners; if (ImGui::Checkbox("Rounded corners",&oscRoundedCornersB)) { settings.oscRoundedCorners=oscRoundedCornersB; + settingsChanged=true; } bool oscBorderB=settings.oscBorder; if (ImGui::Checkbox("Border",&oscBorderB)) { settings.oscBorder=oscBorderB; + settingsChanged=true; } bool oscMonoB=settings.oscMono; if (ImGui::Checkbox("Mono",&oscMonoB)) { settings.oscMono=oscMonoB; + settingsChanged=true; } bool oscAntiAliasB=settings.oscAntiAlias; if (ImGui::Checkbox("Anti-aliased",&oscAntiAliasB)) { settings.oscAntiAlias=oscAntiAliasB; + settingsChanged=true; } bool oscTakesEntireWindowB=settings.oscTakesEntireWindow; if (ImGui::Checkbox("Fill entire window",&oscTakesEntireWindowB)) { settings.oscTakesEntireWindow=oscTakesEntireWindowB; + settingsChanged=true; } bool oscEscapesBoundaryB=settings.oscEscapesBoundary; if (ImGui::Checkbox("Waveform goes out of bounds",&oscEscapesBoundaryB)) { settings.oscEscapesBoundary=oscEscapesBoundaryB; + settingsChanged=true; } // SUBSECTION WINDOWS @@ -2792,21 +3003,25 @@ void FurnaceGUI::drawSettings() { bool roundedWindowsB=settings.roundedWindows; if (ImGui::Checkbox("Rounded window corners",&roundedWindowsB)) { settings.roundedWindows=roundedWindowsB; + settingsChanged=true; } bool roundedButtonsB=settings.roundedButtons; if (ImGui::Checkbox("Rounded buttons",&roundedButtonsB)) { settings.roundedButtons=roundedButtonsB; + settingsChanged=true; } bool roundedMenusB=settings.roundedMenus; if (ImGui::Checkbox("Rounded menu corners",&roundedMenusB)) { settings.roundedMenus=roundedMenusB; + settingsChanged=true; } bool frameBordersB=settings.frameBorders; if (ImGui::Checkbox("Borders around widgets",&frameBordersB)) { settings.frameBorders=frameBordersB; + settingsChanged=true; } END_SECTION; @@ -2816,10 +3031,12 @@ void FurnaceGUI::drawSettings() { CONFIG_SUBSECTION("Color scheme"); if (ImGui::Button("Import")) { openFileDialog(GUI_FILE_IMPORT_COLORS); + settingsChanged=true; } ImGui::SameLine(); if (ImGui::Button("Export")) { openFileDialog(GUI_FILE_EXPORT_COLORS); + settingsChanged=true; } ImGui::SameLine(); if (ImGui::Button("Reset defaults")) { @@ -2831,16 +3048,19 @@ void FurnaceGUI::drawSettings() { if (ImGui::RadioButton("Dark##gcb0",settings.guiColorsBase==0)) { settings.guiColorsBase=0; applyUISettings(false); + settingsChanged=true; } if (ImGui::RadioButton("Light##gcb1",settings.guiColorsBase==1)) { settings.guiColorsBase=1; applyUISettings(false); + settingsChanged=true; } ImGui::Unindent(); if (ImGui::SliderInt("Frame shading",&settings.guiColorsShading,0,100,"%d%%")) { if (settings.guiColorsShading<0) settings.guiColorsShading=0; if (settings.guiColorsShading>100) settings.guiColorsShading=100; applyUISettings(false); + settingsChanged=true; } UI_COLOR_CONFIG(GUI_COLOR_BACKGROUND,"Background"); UI_COLOR_CONFIG(GUI_COLOR_FRAME_BACKGROUND,"Window background"); From 1283f70646c11dd81564792f1120f71be12c47a4 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Tue, 3 Oct 2023 14:07:41 -0500 Subject: [PATCH 06/72] GUI: fix move cur chan actions being swapped --- src/gui/guiConst.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gui/guiConst.cpp b/src/gui/guiConst.cpp index a4af8261d..87a7f3c4a 100644 --- a/src/gui/guiConst.cpp +++ b/src/gui/guiConst.cpp @@ -624,8 +624,8 @@ const FurnaceGUIActionDef guiActions[GUI_ACTION_MAX]={ D("PAT_CURSOR_DOWN_ONE", "Move cursor down by one (override Edit Step)", FURKMOD_SHIFT|SDLK_END), D("PAT_CURSOR_LEFT_CHANNEL", "Move cursor to previous channel", 0), D("PAT_CURSOR_RIGHT_CHANNEL", "Move cursor to next channel", 0), - D("PAT_CURSOR_NEXT_CHANNEL", "Move cursor to previous channel (overflow)", 0), - D("PAT_CURSOR_PREVIOUS_CHANNEL", "Move cursor to next channel (overflow)", 0), + D("PAT_CURSOR_NEXT_CHANNEL", "Move cursor to next channel (overflow)", 0), + D("PAT_CURSOR_PREVIOUS_CHANNEL", "Move cursor to previous channel (overflow)", 0), D("PAT_CURSOR_BEGIN", "Move cursor to beginning of pattern", SDLK_HOME), D("PAT_CURSOR_END", "Move cursor to end of pattern", SDLK_END), D("PAT_CURSOR_UP_COARSE", "Move cursor up (coarse)", SDLK_PAGEUP), From daa7800e3ce09472d58b34e60a98422dd58768bb Mon Sep 17 00:00:00 2001 From: Eknous-P Date: Tue, 3 Oct 2023 23:21:11 +0400 Subject: [PATCH 07/72] part 2.5 inline-ize also rerun actions as the website is back up --- src/gui/settings.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index 6ff5b9a4d..d17ce29d0 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -636,9 +636,7 @@ void FurnaceGUI::drawSettings() { ImGui::Text("Name"); ImGui::SameLine(); ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - if (ImGui::InputText("##InitSysName",&settings.initialSysName)) { - settingsChanged=true; - } + if (ImGui::InputText("##InitSysName",&settings.initialSysName)) settingsChanged=true; int sysCount=0; int doRemove=-1; From 839dc3cd91169f3155120311633469c8717c31ad Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 5 Oct 2023 04:47:14 -0500 Subject: [PATCH 08/72] prepare to add channel pair and mode hints --- src/engine/dispatch.h | 49 ++++++++++++++++++++++++++++++++ src/engine/platform/abstract.cpp | 8 ++++++ src/engine/platform/opl.cpp | 9 ++++++ src/engine/platform/opl.h | 1 + src/gui/gui.cpp | 4 ++- 5 files changed, 70 insertions(+), 1 deletion(-) diff --git a/src/engine/dispatch.h b/src/engine/dispatch.h index ecb2ebc6e..1a8ec347d 100644 --- a/src/engine/dispatch.h +++ b/src/engine/dispatch.h @@ -339,6 +339,40 @@ struct DivDispatchOscBuffer { } }; +struct DivChannelPair { + const char* label; + // -1: none + signed char pairs[8]; + + DivChannelPair(const char* l, signed char p0, signed char p1, signed char p2, signed char p3, signed char p4, signed char p5, signed char p6, signed char p7): + label(l), + pairs{p0,p1,p2,p3,p4,p5,p6,p7} {} + DivChannelPair(const char* l, signed char p): + label(l), + pairs{p,-1,-1,-1,-1,-1,-1,-1} {} + DivChannelPair(): + label(NULL), + pairs{-1,-1,-1,-1,-1,-1,-1,-1} {} +}; + +struct DivChannelModeHints { + const char* hint[4]; + // valid types: + // - 0: disabled + // - 1: volume + // - 2: pitch + // - 3: panning + // - 4: ??? + unsigned char type[4]; + // up to 4 + unsigned char count; + + DivChannelModeHints(): + hint{NULL,NULL,NULL,NULL}, + type{0,0,0,0}, + count(0) {} +}; + class DivEngine; class DivMacroInt; @@ -418,6 +452,21 @@ class DivDispatch { */ virtual unsigned short getPan(int chan); + /** + * get "paired" channels. + * @param chan the channel to query. + * @return a DivChannelPair. + */ + virtual DivChannelPair getPaired(int chan); + + /** + * get channel mode hints. + * @param chan the channel to query. + * @return a DivChannelModeHints. + */ + virtual DivChannelModeHints getModeHints(int chan); + + /** * get currently playing sample (and its position). * @param chan the channel. diff --git a/src/engine/platform/abstract.cpp b/src/engine/platform/abstract.cpp index a06d9caf0..26221ebfd 100644 --- a/src/engine/platform/abstract.cpp +++ b/src/engine/platform/abstract.cpp @@ -37,6 +37,14 @@ unsigned short DivDispatch::getPan(int chan) { return 0; } +DivChannelPair DivDispatch::getPaired(int chan) { + return DivChannelPair(); +} + +DivChannelModeHints DivDispatch::getModeHints(int chan) { + return DivChannelModeHints(); +} + DivMacroInt* DivDispatch::getChanMacroInt(int chan) { return NULL; } diff --git a/src/engine/platform/opl.cpp b/src/engine/platform/opl.cpp index 5a7580a78..52968a1a5 100644 --- a/src/engine/platform/opl.cpp +++ b/src/engine/platform/opl.cpp @@ -1582,6 +1582,15 @@ unsigned short DivPlatformOPL::getPan(int ch) { return ((chan[ch].pan&1)<<8)|((chan[ch].pan&2)>>1); } +DivChannelPair DivPlatformOPL::getPaired(int ch) { + if (oplType==3 && ch<12 && !(ch&1)) { + if (chan[ch].fourOp) { + return DivChannelPair("4OP",ch+1); + } + } + return DivChannelPair(); +} + DivDispatchOscBuffer* DivPlatformOPL::getOscBuffer(int ch) { if (oplType==759 || chipType==8950) { if (ch>=totalChans+1) return NULL; diff --git a/src/engine/platform/opl.h b/src/engine/platform/opl.h index bcc147da1..54cf0c24d 100644 --- a/src/engine/platform/opl.h +++ b/src/engine/platform/opl.h @@ -115,6 +115,7 @@ class DivPlatformOPL: public DivDispatch { void* getChanState(int chan); DivMacroInt* getChanMacroInt(int ch); unsigned short getPan(int chan); + DivChannelPair getPaired(int chan); DivDispatchOscBuffer* getOscBuffer(int chan); unsigned char* getRegisterPool(); int getRegisterPoolSize(); diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 4fa69a16a..67d631521 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -6353,6 +6353,7 @@ bool FurnaceGUI::init() { } else { patChannelNames=e->getConfBool("patChannelNames",false); } + patChannelPairs=e->getConfBool("patChannelPairs",true); patChannelHints=e->getConfInt("patChannelHints",0); lockLayout=e->getConfBool("lockLayout",false); #ifdef IS_MOBILE @@ -6893,6 +6894,7 @@ void FurnaceGUI::commitState() { e->setConf("waveEditStyle",waveEditStyle); e->setConf("patExtraButtons",patExtraButtons); e->setConf("patChannelNames",patChannelNames); + e->setConf("patChannelPairs",patChannelPairs); e->setConf("patChannelHints",(int)patChannelHints); e->setConf("lockLayout",lockLayout); e->setConf("fullScreen",fullScreen); @@ -7145,7 +7147,7 @@ FurnaceGUI::FurnaceGUI(): exportFadeOut(5.0), patExtraButtons(false), patChannelNames(false), - patChannelPairs(false), + patChannelPairs(true), patChannelHints(0), newSongFirstFrame(false), oldRowChanged(false), From 655025bfdeacf7312ab642249ba2527ac464a5e6 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 5 Oct 2023 05:12:59 -0500 Subject: [PATCH 09/72] update readme with mention of Flatpak --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index de00c5ffe..fa2ae5ee6 100644 --- a/README.md +++ b/README.md @@ -136,6 +136,8 @@ for other operating systems, you may [build the source](#developer-info). some people have provided packages for Unix/Unix-like distributions. here's a list. +- **Flatpak**: yes! Furnace is now available on [Flathub](https://flathub.org/apps/org.tildearrow.furnace) thanks to ColinKinloch. + - **Arch Linux**: [furnace](https://archlinux.org/packages/extra/x86_64/furnace/) is in the official repositories. - **FreeBSD**: [a package in ports](https://www.freshports.org/audio/furnace/) is available courtesy of ehaupt. - **Nix**: [package](https://search.nixos.org/packages?channel=unstable&show=furnace&from=0&size=50&sort=relevance&type=packages&query=furnace) thanks to OPNA2608. From b032c181a48cdebe0e50cc78388e98898fccfb1b Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 5 Oct 2023 05:15:17 -0500 Subject: [PATCH 10/72] "about 90% complete"? --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index fa2ae5ee6..2c9e0e861 100644 --- a/README.md +++ b/README.md @@ -128,7 +128,7 @@ for other operating systems, you may [build the source](#developer-info). # quick references - **discussion**: see the [Discussions](https://github.com/tildearrow/furnace/discussions) section, the [official Revolt](https://rvlt.gg/GRPS6tmc) or the [official Discord server](https://discord.gg/EfrwT2wq7z). -- **help**: check out the [documentation](doc/README.md). it's about 90% complete. +- **help**: check out the [documentation](doc/README.md). ## packages From 277a695f5eb6beba96177d2c51aefadecac0cd39 Mon Sep 17 00:00:00 2001 From: Eknous-P Date: Thu, 5 Oct 2023 14:43:06 +0400 Subject: [PATCH 11/72] s p a c e and another inline if i suppose --- src/gui/settings.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index d17ce29d0..f229714ec 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -323,7 +323,7 @@ void FurnaceGUI::drawSettings() { } if (ImGui::Begin("Settings",&settingsOpen,ImGuiWindowFlags_NoDocking|globalWinFlags)) { if (!settingsOpen) { - if(settingsChanged) { + if (settingsChanged) { settingsOpen=true; showWarning("Do you want to save your settings?",GUI_WARN_CLOSE_SETTINGS); } else { @@ -1039,9 +1039,7 @@ void FurnaceGUI::drawSettings() { ImGui::AlignTextToFramePadding(); ImGui::Text("Quality"); ImGui::SameLine(); - if (ImGui::Combo("##Quality",&settings.audioQuality,audioQualities,2)) { - settingsChanged=true; - } + if (ImGui::Combo("##Quality",&settings.audioQuality,audioQualities,2)) settingsChanged=true; bool clampSamplesB=settings.clampSamples; if (ImGui::Checkbox("Software clipping",&clampSamplesB)) { From 7736ced611ac60604e60ce3ca3e61a11ee097868 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 5 Oct 2023 14:23:57 -0500 Subject: [PATCH 12/72] GUI: settings grammar --- src/gui/settings.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index 728b5bd47..ed60a273b 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -965,8 +965,8 @@ void FurnaceGUI::drawSettings() { TAAudioDesc& audioWant=e->getAudioDescWant(); TAAudioDesc& audioGot=e->getAudioDescGot(); - ImGui::Text("want: %d samples @ %.0fHz (%d channels)",audioWant.bufsize,audioWant.rate,audioWant.outChans); - ImGui::Text("got: %d samples @ %.0fHz (%d channels)",audioGot.bufsize,audioGot.rate,audioWant.outChans); + ImGui::Text("want: %d samples @ %.0fHz (%d %s)",audioWant.bufsize,audioWant.rate,audioWant.outChans,(audioWant.outChans==1)?"channel":"channels"); + ImGui::Text("got: %d samples @ %.0fHz (%d %s)",audioGot.bufsize,audioGot.rate,audioWant.outChans,(audioWant.outChans==1)?"channel":"channels"); // SUBSECTION MIXING CONFIG_SUBSECTION("Mixing"); From 2f9320ca7a484dd4e3da814142a6559d759b5046 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 5 Oct 2023 18:10:58 -0500 Subject: [PATCH 13/72] GUI: fix apply --- src/gui/settings.cpp | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index 0d4ed41b2..549f35d23 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -1586,12 +1586,10 @@ void FurnaceGUI::drawSettings() { CONFIG_SUBSECTION("Keyboard"); if (ImGui::Button("Import")) { openFileDialog(GUI_FILE_IMPORT_KEYBINDS); - settingsChanged=true; } ImGui::SameLine(); if (ImGui::Button("Export")) { openFileDialog(GUI_FILE_EXPORT_KEYBINDS); - settingsChanged=true; } ImGui::SameLine(); if (ImGui::Button("Reset defaults")) { @@ -1966,12 +1964,10 @@ void FurnaceGUI::drawSettings() { ImGui::SameLine(); if (ImGui::Button("Import")) { openFileDialog(GUI_FILE_IMPORT_LAYOUT); - settingsChanged=true; } ImGui::SameLine(); if (ImGui::Button("Export")) { openFileDialog(GUI_FILE_EXPORT_LAYOUT); - settingsChanged=true; } ImGui::SameLine(); if (ImGui::Button("Reset")) { @@ -3027,12 +3023,10 @@ void FurnaceGUI::drawSettings() { CONFIG_SUBSECTION("Color scheme"); if (ImGui::Button("Import")) { openFileDialog(GUI_FILE_IMPORT_COLORS); - settingsChanged=true; } ImGui::SameLine(); if (ImGui::Button("Export")) { openFileDialog(GUI_FILE_EXPORT_COLORS); - settingsChanged=true; } ImGui::SameLine(); if (ImGui::Button("Reset defaults")) { @@ -3445,17 +3439,13 @@ void FurnaceGUI::drawSettings() { settingsChanged=false; } ImGui::SameLine(); - bool applyDisabled=false; - if (!settingsChanged) { - ImGui::BeginDisabled(); - applyDisabled=true; - } + ImGui::BeginDisabled(!settingsChanged); if (ImGui::Button("Apply##SettingsApply")) { settingsOpen=true; willCommit=true; settingsChanged=false; } - if (!settingsChanged && applyDisabled) ImGui::EndDisabled(); + ImGui::EndDisabled(); } if (ImGui::IsWindowFocused(ImGuiFocusedFlags_ChildWindows)) curWindow=GUI_WINDOW_SETTINGS; ImGui::End(); From 687fbf5436a3db5f9703a758c0e4aece8b4d0982 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 5 Oct 2023 23:51:34 -0500 Subject: [PATCH 14/72] macro name refactor --- src/engine/instrument.cpp | 84 ++++++++++----------- src/engine/instrument.h | 130 +++++++++++++++++++++++++-------- src/engine/macroInt.cpp | 150 +++++++++++++------------------------- src/engine/macroInt.h | 92 +++++++++++------------ src/gui/insEdit.cpp | 6 +- 5 files changed, 243 insertions(+), 219 deletions(-) diff --git a/src/engine/instrument.cpp b/src/engine/instrument.cpp index 6b871155c..3abbe51a5 100644 --- a/src/engine/instrument.cpp +++ b/src/engine/instrument.cpp @@ -291,7 +291,7 @@ void DivInstrument::writeFeatureFM(SafeWriter* w, bool fui) { FEATURE_END; } -void DivInstrument::writeMacro(SafeWriter* w, const DivInstrumentMacro& m, unsigned char macroCode) { +void DivInstrument::writeMacro(SafeWriter* w, const DivInstrumentMacro& m) { if (!m.len) return; // determine word size @@ -314,7 +314,7 @@ void DivInstrument::writeMacro(SafeWriter* w, const DivInstrumentMacro& m, unsig wordSize=192; // 32-bit signed } - w->writeC(macroCode); + w->writeC(m.macroType&31); w->writeC(m.len); w->writeC(m.loop); w->writeC(m.rel); @@ -355,26 +355,26 @@ void DivInstrument::writeFeatureMA(SafeWriter* w) { w->writeS(8); // write macros - writeMacro(w,std.volMacro,0); - writeMacro(w,std.arpMacro,1); - writeMacro(w,std.dutyMacro,2); - writeMacro(w,std.waveMacro,3); - writeMacro(w,std.pitchMacro,4); - writeMacro(w,std.ex1Macro,5); - writeMacro(w,std.ex2Macro,6); - writeMacro(w,std.ex3Macro,7); - writeMacro(w,std.algMacro,8); - writeMacro(w,std.fbMacro,9); - writeMacro(w,std.fmsMacro,10); - writeMacro(w,std.amsMacro,11); - writeMacro(w,std.panLMacro,12); - writeMacro(w,std.panRMacro,13); - writeMacro(w,std.phaseResetMacro,14); - writeMacro(w,std.ex4Macro,15); - writeMacro(w,std.ex5Macro,16); - writeMacro(w,std.ex6Macro,17); - writeMacro(w,std.ex7Macro,18); - writeMacro(w,std.ex8Macro,19); + writeMacro(w,std.volMacro); + writeMacro(w,std.arpMacro); + writeMacro(w,std.dutyMacro); + writeMacro(w,std.waveMacro); + writeMacro(w,std.pitchMacro); + writeMacro(w,std.ex1Macro); + writeMacro(w,std.ex2Macro); + writeMacro(w,std.ex3Macro); + writeMacro(w,std.algMacro); + writeMacro(w,std.fbMacro); + writeMacro(w,std.fmsMacro); + writeMacro(w,std.amsMacro); + writeMacro(w,std.panLMacro); + writeMacro(w,std.panRMacro); + writeMacro(w,std.phaseResetMacro); + writeMacro(w,std.ex4Macro); + writeMacro(w,std.ex5Macro); + writeMacro(w,std.ex6Macro); + writeMacro(w,std.ex7Macro); + writeMacro(w,std.ex8Macro); // "stop reading" code w->writeC(-1); @@ -471,26 +471,26 @@ void DivInstrument::writeFeatureOx(SafeWriter* w, int ope) { // write macros const DivInstrumentSTD::OpMacro& o=std.opMacros[ope]; - writeMacro(w,o.amMacro,0); - writeMacro(w,o.arMacro,1); - writeMacro(w,o.drMacro,2); - writeMacro(w,o.multMacro,3); - writeMacro(w,o.rrMacro,4); - writeMacro(w,o.slMacro,5); - writeMacro(w,o.tlMacro,6); - writeMacro(w,o.dt2Macro,7); - writeMacro(w,o.rsMacro,8); - writeMacro(w,o.dtMacro,9); - writeMacro(w,o.d2rMacro,10); - writeMacro(w,o.ssgMacro,11); - writeMacro(w,o.damMacro,12); - writeMacro(w,o.dvbMacro,13); - writeMacro(w,o.egtMacro,14); - writeMacro(w,o.kslMacro,15); - writeMacro(w,o.susMacro,16); - writeMacro(w,o.vibMacro,17); - writeMacro(w,o.wsMacro,18); - writeMacro(w,o.ksrMacro,19); + writeMacro(w,o.amMacro); + writeMacro(w,o.arMacro); + writeMacro(w,o.drMacro); + writeMacro(w,o.multMacro); + writeMacro(w,o.rrMacro); + writeMacro(w,o.slMacro); + writeMacro(w,o.tlMacro); + writeMacro(w,o.dt2Macro); + writeMacro(w,o.rsMacro); + writeMacro(w,o.dtMacro); + writeMacro(w,o.d2rMacro); + writeMacro(w,o.ssgMacro); + writeMacro(w,o.damMacro); + writeMacro(w,o.dvbMacro); + writeMacro(w,o.egtMacro); + writeMacro(w,o.kslMacro); + writeMacro(w,o.susMacro); + writeMacro(w,o.vibMacro); + writeMacro(w,o.wsMacro); + writeMacro(w,o.ksrMacro); // "stop reading" code w->writeC(-1); diff --git a/src/engine/instrument.h b/src/engine/instrument.h index a804f87f2..5970cfdea 100644 --- a/src/engine/instrument.h +++ b/src/engine/instrument.h @@ -89,6 +89,52 @@ enum DivInstrumentType: unsigned short { DIV_INS_NULL }; +enum DivMacroType: unsigned char { + DIV_MACRO_VOL=0, + DIV_MACRO_ARP, + DIV_MACRO_DUTY, + DIV_MACRO_WAVE, + DIV_MACRO_PITCH, + DIV_MACRO_EX1, + DIV_MACRO_EX2, + DIV_MACRO_EX3, + DIV_MACRO_ALG, + DIV_MACRO_FB, + DIV_MACRO_FMS, + DIV_MACRO_AMS, + DIV_MACRO_PAN_LEFT, + DIV_MACRO_PAN_RIGHT, + DIV_MACRO_PHASE_RESET, + DIV_MACRO_EX4, + DIV_MACRO_EX5, + DIV_MACRO_EX6, + DIV_MACRO_EX7, + DIV_MACRO_EX8 +}; + +enum DivMacroTypeOp: unsigned char { + DIV_MACRO_OP_AM=32, + DIV_MACRO_OP_AR, + DIV_MACRO_OP_DR, + DIV_MACRO_OP_MULT, + DIV_MACRO_OP_RR, + DIV_MACRO_OP_SL, + DIV_MACRO_OP_TL, + DIV_MACRO_OP_DT2, + DIV_MACRO_OP_RS, + DIV_MACRO_OP_DT, + DIV_MACRO_OP_D2R, + DIV_MACRO_OP_SSG, + DIV_MACRO_OP_DAM, + DIV_MACRO_OP_DVB, + DIV_MACRO_OP_EGT, + DIV_MACRO_OP_KSL, + DIV_MACRO_OP_SUS, + DIV_MACRO_OP_VIB, + DIV_MACRO_OP_WS, + DIV_MACRO_OP_KSR, +}; + // FM operator structure: // - OPN: // - AM, AR, DR, MULT, RR, SL, TL, RS, DT, D2R, SSG-EG @@ -198,7 +244,9 @@ struct DivInstrumentFM { // this is getting out of hand struct DivInstrumentMacro { - String name; + // 0-31: normal + // 32+: operator (top 3 bits select operator, starting from 1) + unsigned char macroType; int val[256]; unsigned int mode; unsigned char open; @@ -209,8 +257,8 @@ struct DivInstrumentMacro { int typeMemory[16]; unsigned char lenMemory; - explicit DivInstrumentMacro(const String& n, bool initOpen=false): - name(n), + explicit DivInstrumentMacro(unsigned char initType, bool initOpen=false): + macroType(initType), mode(0), open(initOpen), len(0), @@ -271,33 +319,57 @@ struct DivInstrumentSTD { DivInstrumentMacro wsMacro; DivInstrumentMacro ksrMacro; OpMacro(): - amMacro("am"), arMacro("ar"), drMacro("dr"), multMacro("mult"), - rrMacro("rr"), slMacro("sl"), tlMacro("tl",true), dt2Macro("dt2"), - rsMacro("rs"), dtMacro("dt"), d2rMacro("d2r"), ssgMacro("ssg"), - damMacro("dam"), dvbMacro("dvb"), egtMacro("egt"), kslMacro("ksl"), - susMacro("sus"), vibMacro("vib"), wsMacro("ws"), ksrMacro("ksr") {} + amMacro(DIV_MACRO_OP_AM), arMacro(DIV_MACRO_OP_AR), drMacro(DIV_MACRO_OP_DR), multMacro(DIV_MACRO_OP_MULT), + rrMacro(DIV_MACRO_OP_RR), slMacro(DIV_MACRO_OP_SL), tlMacro(DIV_MACRO_OP_TL,true), dt2Macro(DIV_MACRO_OP_DT2), + rsMacro(DIV_MACRO_OP_RS), dtMacro(DIV_MACRO_OP_DT), d2rMacro(DIV_MACRO_OP_D2R), ssgMacro(DIV_MACRO_OP_SSG), + damMacro(DIV_MACRO_OP_DAM), dvbMacro(DIV_MACRO_OP_DVB), egtMacro(DIV_MACRO_OP_EGT), kslMacro(DIV_MACRO_OP_KSL), + susMacro(DIV_MACRO_OP_SUS), vibMacro(DIV_MACRO_OP_VIB), wsMacro(DIV_MACRO_OP_WS), ksrMacro(DIV_MACRO_OP_KSR) {} } opMacros[4]; DivInstrumentSTD(): - volMacro("vol",true), - arpMacro("arp"), - dutyMacro("duty"), - waveMacro("wave"), - pitchMacro("pitch"), - ex1Macro("ex1"), - ex2Macro("ex2"), - ex3Macro("ex3"), - algMacro("alg"), - fbMacro("fb"), - fmsMacro("fms"), - amsMacro("ams"), - panLMacro("panL"), - panRMacro("panR"), - phaseResetMacro("phaseReset"), - ex4Macro("ex4"), - ex5Macro("ex5"), - ex6Macro("ex6"), - ex7Macro("ex7"), - ex8Macro("ex8") {} + volMacro(DIV_MACRO_VOL,true), + arpMacro(DIV_MACRO_ARP), + dutyMacro(DIV_MACRO_DUTY), + waveMacro(DIV_MACRO_WAVE), + pitchMacro(DIV_MACRO_PITCH), + ex1Macro(DIV_MACRO_EX1), + ex2Macro(DIV_MACRO_EX2), + ex3Macro(DIV_MACRO_EX3), + algMacro(DIV_MACRO_ALG), + fbMacro(DIV_MACRO_FB), + fmsMacro(DIV_MACRO_FMS), + amsMacro(DIV_MACRO_AMS), + panLMacro(DIV_MACRO_PAN_LEFT), + panRMacro(DIV_MACRO_PAN_RIGHT), + phaseResetMacro(DIV_MACRO_PHASE_RESET), + ex4Macro(DIV_MACRO_EX4), + ex5Macro(DIV_MACRO_EX5), + ex6Macro(DIV_MACRO_EX6), + ex7Macro(DIV_MACRO_EX7), + ex8Macro(DIV_MACRO_EX8) { + for (int i=0; i<4; i++) { + opMacros[i].amMacro.macroType=DIV_MACRO_OP_AM+(i<<5); + opMacros[i].arMacro.macroType=DIV_MACRO_OP_AR+(i<<5); + opMacros[i].drMacro.macroType=DIV_MACRO_OP_DR+(i<<5); + opMacros[i].multMacro.macroType=DIV_MACRO_OP_MULT+(i<<5); + opMacros[i].rrMacro.macroType=DIV_MACRO_OP_RR+(i<<5); + opMacros[i].slMacro.macroType=DIV_MACRO_OP_SL+(i<<5); + opMacros[i].tlMacro.macroType=DIV_MACRO_OP_TL+(i<<5); + opMacros[i].dt2Macro.macroType=DIV_MACRO_OP_DT2+(i<<5); + opMacros[i].rsMacro.macroType=DIV_MACRO_OP_RS+(i<<5); + opMacros[i].dtMacro.macroType=DIV_MACRO_OP_DT+(i<<5); + opMacros[i].d2rMacro.macroType=DIV_MACRO_OP_D2R+(i<<5); + opMacros[i].ssgMacro.macroType=DIV_MACRO_OP_SSG+(i<<5); + + opMacros[i].damMacro.macroType=DIV_MACRO_OP_DAM+(i<<5); + opMacros[i].dvbMacro.macroType=DIV_MACRO_OP_DVB+(i<<5); + opMacros[i].egtMacro.macroType=DIV_MACRO_OP_EGT+(i<<5); + opMacros[i].kslMacro.macroType=DIV_MACRO_OP_KSL+(i<<5); + opMacros[i].susMacro.macroType=DIV_MACRO_OP_SUS+(i<<5); + opMacros[i].vibMacro.macroType=DIV_MACRO_OP_VIB+(i<<5); + opMacros[i].wsMacro.macroType=DIV_MACRO_OP_WS+(i<<5); + opMacros[i].ksrMacro.macroType=DIV_MACRO_OP_KSR+(i<<5); + } + } }; struct DivInstrumentGB { @@ -668,7 +740,7 @@ struct DivInstrument { /** * these are internal functions. */ - void writeMacro(SafeWriter* w, const DivInstrumentMacro& m, unsigned char macroCode); + void writeMacro(SafeWriter* w, const DivInstrumentMacro& m); void writeFeatureNA(SafeWriter* w); void writeFeatureFM(SafeWriter* w, bool fui); void writeFeatureMA(SafeWriter* w); diff --git a/src/engine/macroInt.cpp b/src/engine/macroInt.cpp index e53d53aed..178db00e6 100644 --- a/src/engine/macroInt.cpp +++ b/src/engine/macroInt.cpp @@ -42,7 +42,7 @@ void DivMacroStruct::prepare(DivInstrumentMacro& source, DivEngine* e) { has=had=actualHad=will=true; mode=source.mode; type=(source.open>>1)&3; - linger=(source.name=="vol" && e->song.volMacroLinger); + linger=(source.macroType==DIV_MACRO_VOL && e->song.volMacroLinger); lfoPos=LFO_PHASE; } @@ -419,108 +419,58 @@ void DivMacroInt::notifyInsDeletion(DivInstrument* which) { } } -// randomly-generated -constexpr unsigned int hashTable[256]={ - 0x0718657, 0xe904eb33, 0x14b2da2b, 0x0ef67ca9, - 0x0f0559a, 0x4142065a, 0x4d9ab4ba, 0x3cdd601a, - 0x6635aca, 0x2c41ab72, 0xf98e8d31, 0x1003ee63, - 0x3fd9fb5, 0x30734d16, 0xe8964431, 0x29bb9b79, - 0x817f580, 0xfe083b9e, 0x974b5e85, 0x3b5729c2, - 0x2afea96, 0xf1573b4b, 0x308a1024, 0xaa94b92d, - 0x693fa93, 0x547ba3da, 0xac4f206c, 0x93f72ea9, - 0xcc44001, 0x37e27670, 0xf35a63d0, 0xd1cdbb92, - 0x7c7ee24, 0xfa267ee9, 0xf9cd9956, 0x6a6768d4, - 0x9e6a108, 0xf6ca4bd0, 0xa53cba9f, 0x526a523a, - 0xf46f0c8, 0xf131bd4c, 0x82800d48, 0xabff9214, - 0x40eabd4, 0xea0ef8f7, 0xdc3968d6, 0x54c3cb63, - 0x8855023, 0xaab73861, 0xff0bea2c, 0x139b9765, - 0x4a21279, 0x6b2aa29a, 0xf147cc3f, 0xc42edc1a, - 0xfe2f86f, 0x6d352047, 0xd3cac3e4, 0x35e5c389, - 0xe923727, 0x12fe3b32, 0x204295c5, 0x254a8b7a, - 0xc1d995d, 0x26a512d2, 0xa3e34033, 0x9a968df0, - 0x53447ed, 0x36cf4077, 0x189b03a7, 0x558790e8, - 0x01f921a, 0x840f260c, 0x93dd2b86, 0x12f69cb0, - 0x117d93a, 0xcb2cbc2b, 0xd41e3aed, 0x5ff6ec75, - 0x607290d, 0xd41adb92, 0x64f94ba7, 0xaff720f7, - 0x6bf1d5d, 0xc8e36c6d, 0x7095bab5, 0xdfbf7b0d, - 0x01ddeea, 0xe8f262da, 0xf589512f, 0xc2ecac5d, - 0xbe29d98, 0xff8b5a2e, 0x18e7279e, 0x6ad24dcb, - 0x2b3b9b1, 0x6f5227d8, 0x076d7553, 0x6c5856e2, - 0x995f655, 0xe9fcf5a6, 0x83671b70, 0xaf3aed1e, - 0xac340f0, 0x5c7008b4, 0x14651282, 0x8bf855b9, - 0x4a933af, 0x829b87f1, 0x9a673070, 0xb19da64f, - 0x77d8f36, 0x584c9fdc, 0xa9e52c0d, 0x6da5e13d, - 0xae1051f, 0xe85e976f, 0xfeac2d9a, 0x19c46754, - 0x1cba6f3, 0xaf21bc31, 0x16b6a8d4, 0xe08b0fdb, - 0x97e6e54, 0x5da499ae, 0xab472e19, 0xc2491f2e, - 0xc08c563, 0xe91b131b, 0xc8e22451, 0x6995c8fe, - 0x7042718, 0x01043738, 0xc7d88b28, 0x2d9f330f, - 0x4b3aae5, 0xf1e705ba, 0xc5b8ee59, 0xa8ba4e8f, - 0x55f65a2, 0xa1899e41, 0x296243c8, 0x1e502bf2, - 0x20080de, 0x841d2239, 0x37b082af, 0xbdd7f7da, - 0x4075090, 0x1dc7dc49, 0x5cd3c69a, 0x7fb13b62, - 0xb382bf1, 0xa0cfbc2f, 0x9eca4dc1, 0xb9355453, - 0x5d0dd24, 0x834f4d8e, 0xe9b136b2, 0xe7b8738d, - 0x1c91d41, 0x8cb3ddb5, 0xdc600590, 0x607cff55, - 0x2ca7675, 0x4622a8e4, 0x9340e414, 0xcb44928a, - 0xa9e791c, 0x68849920, 0xc5b5fcd8, 0xbc352269, - 0x3ab13cf, 0xaa3cbbd0, 0x1abacc64, 0x623b5b49, - 0xcc8c4c3, 0x3c8f2f70, 0x3e584a28, 0x9316d24d, - 0xfe315a2, 0x10f0ba7a, 0xed15a523, 0x4f987369, - 0x7aa4a4a, 0x90eaf98f, 0xcf0af610, 0x1b38f4e7, - 0x19df72d, 0xd8306808, 0xd54e25ac, 0x76b79c6d, - 0x58110cf, 0x06a3e5f2, 0x873a6039, 0xf52684e3, - 0xecf39c3, 0x7cbb2759, 0xe280d361, 0x91e8471a, - 0xa67cdd3, 0x17cac3be, 0xfc9eff1f, 0x71abdf49, - 0x6168624, 0xb68f86f7, 0x67a8e72a, 0xe746911d, - 0xca48fd7, 0x8f3cc436, 0x3a3851a8, 0x30a7e26e, - 0xca49308, 0xb598ef74, 0x49ef167a, 0xa9e17632, - 0x0f7308a, 0xf156efed, 0xcf799645, 0xbae4b85a, - 0xecba3fe, 0xd97f861d, 0xc164af62, 0xb1aca42f, - 0xf249576, 0x83d1bf4e, 0x2f486a9c, 0xd3b53cc2, - 0x17d7c26, 0xd95ddae1, 0x76c1a2f5, 0xf8af6782, - 0xdbaece4, 0x010b2b53, 0x049be200, 0xd9fd0d1a, - 0x37d7e6c, 0x5b848651, 0x203c98c7, 0x669681b0, - 0x683086f, 0xdd0ee8ab, 0x5dbe008b, 0xe5d0690d, - 0x23dd758, 0x6b34acbc, 0x4b2b3e65, 0xcc7b56c1, - 0x196b0a0, 0x7b065105, 0xb731b01a, 0xd37daa16, - 0xf77816b, 0x3c9fa546, 0x81dfadb8, 0x39b1fb8b -}; +#define CONSIDER(x,y) case (y&0x1f): return &x; break; -constexpr unsigned int NAME_HASH(const char* name) { - unsigned int nameHash=0xffffffff; - for (const char* i=name; *i; i++) { - nameHash=(nameHash>>8)^hashTable[(unsigned char)*i]; +DivMacroStruct* DivMacroInt::structByType(unsigned char type) { + if (type>=0x20) { + unsigned char o=((type>>5)-1)&3; + switch (type&0x1f) { + CONSIDER(op[o].am,DIV_MACRO_OP_AM) + CONSIDER(op[o].ar,DIV_MACRO_OP_AR) + CONSIDER(op[o].dr,DIV_MACRO_OP_DR) + CONSIDER(op[o].mult,DIV_MACRO_OP_MULT) + CONSIDER(op[o].rr,DIV_MACRO_OP_RR) + CONSIDER(op[o].sl,DIV_MACRO_OP_SL) + CONSIDER(op[o].tl,DIV_MACRO_OP_TL) + CONSIDER(op[o].dt2,DIV_MACRO_OP_DT2) + CONSIDER(op[o].rs,DIV_MACRO_OP_RS) + CONSIDER(op[o].dt,DIV_MACRO_OP_DT) + CONSIDER(op[o].d2r,DIV_MACRO_OP_D2R) + CONSIDER(op[o].ssg,DIV_MACRO_OP_SSG) + CONSIDER(op[o].dam,DIV_MACRO_OP_DAM) + CONSIDER(op[o].dvb,DIV_MACRO_OP_DVB) + CONSIDER(op[o].egt,DIV_MACRO_OP_EGT) + CONSIDER(op[o].ksl,DIV_MACRO_OP_KSL) + CONSIDER(op[o].sus,DIV_MACRO_OP_SUS) + CONSIDER(op[o].vib,DIV_MACRO_OP_VIB) + CONSIDER(op[o].ws,DIV_MACRO_OP_WS) + CONSIDER(op[o].ksr,DIV_MACRO_OP_KSR) + } + + return NULL; } - return nameHash; -} -#define CONSIDER(x) case NAME_HASH(#x): return &x; break; - -DivMacroStruct* DivMacroInt::structByName(const String& name) { - unsigned int hash=NAME_HASH(name.c_str()); - - switch (hash) { - CONSIDER(vol) - CONSIDER(arp) - CONSIDER(duty) - CONSIDER(wave) - CONSIDER(pitch) - CONSIDER(ex1) - CONSIDER(ex2) - CONSIDER(ex3) - CONSIDER(alg) - CONSIDER(fb) - CONSIDER(fms) - CONSIDER(ams) - CONSIDER(panL) - CONSIDER(panR) - CONSIDER(phaseReset) - CONSIDER(ex4) - CONSIDER(ex5) - CONSIDER(ex6) - CONSIDER(ex7) - CONSIDER(ex8) + switch (type) { + CONSIDER(vol,DIV_MACRO_VOL) + CONSIDER(arp,DIV_MACRO_ARP) + CONSIDER(duty,DIV_MACRO_DUTY) + CONSIDER(wave,DIV_MACRO_WAVE) + CONSIDER(pitch,DIV_MACRO_PITCH) + CONSIDER(ex1,DIV_MACRO_EX1) + CONSIDER(ex2,DIV_MACRO_EX2) + CONSIDER(ex3,DIV_MACRO_EX3) + CONSIDER(alg,DIV_MACRO_ALG) + CONSIDER(fb,DIV_MACRO_FB) + CONSIDER(fms,DIV_MACRO_FMS) + CONSIDER(ams,DIV_MACRO_AMS) + CONSIDER(panL,DIV_MACRO_PAN_LEFT) + CONSIDER(panR,DIV_MACRO_PAN_RIGHT) + CONSIDER(phaseReset,DIV_MACRO_PHASE_RESET) + CONSIDER(ex4,DIV_MACRO_EX4) + CONSIDER(ex5,DIV_MACRO_EX5) + CONSIDER(ex6,DIV_MACRO_EX6) + CONSIDER(ex7,DIV_MACRO_EX7) + CONSIDER(ex8,DIV_MACRO_EX8) } return NULL; diff --git a/src/engine/macroInt.h b/src/engine/macroInt.h index ab3cc1216..d6c1b7993 100644 --- a/src/engine/macroInt.h +++ b/src/engine/macroInt.h @@ -29,6 +29,7 @@ struct DivMacroStruct { int val; bool has, had, actualHad, finished, will, linger, began, masked; unsigned int mode, type; + unsigned char macroType; void doMacro(DivInstrumentMacro& source, bool released, bool tick); void init() { pos=lastPos=lfoPos=mode=type=delay=0; @@ -39,7 +40,7 @@ struct DivMacroStruct { val=0; } void prepare(DivInstrumentMacro& source, DivEngine* e); - DivMacroStruct(): + DivMacroStruct(unsigned char mType): pos(0), lastPos(0), lfoPos(0), @@ -54,7 +55,8 @@ struct DivMacroStruct { began(true), masked(false), mode(0), - type(0) {} + type(0), + macroType(mType) {} }; class DivMacroInt { @@ -81,26 +83,26 @@ class DivMacroInt { DivMacroStruct dam, dvb, egt, ksl; DivMacroStruct sus, vib, ws, ksr; IntOp(): - am(), - ar(), - dr(), - mult(), - rr(), - sl(), - tl(), - dt2(), - rs(), - dt(), - d2r(), - ssg(), - dam(), - dvb(), - egt(), - ksl(), - sus(), - vib(), - ws(), - ksr() {} + am(DIV_MACRO_OP_AM), + ar(DIV_MACRO_OP_AR), + dr(DIV_MACRO_OP_DR), + mult(DIV_MACRO_OP_MULT), + rr(DIV_MACRO_OP_RR), + sl(DIV_MACRO_OP_SL), + tl(DIV_MACRO_OP_TL), + dt2(DIV_MACRO_OP_DT2), + rs(DIV_MACRO_OP_RS), + dt(DIV_MACRO_OP_DT), + d2r(DIV_MACRO_OP_D2R), + ssg(DIV_MACRO_OP_SSG), + dam(DIV_MACRO_OP_DAM), + dvb(DIV_MACRO_OP_DVB), + egt(DIV_MACRO_OP_EGT), + ksl(DIV_MACRO_OP_KSL), + sus(DIV_MACRO_OP_SUS), + vib(DIV_MACRO_OP_VIB), + ws(DIV_MACRO_OP_WS), + ksr(DIV_MACRO_OP_KSR) {} } op[4]; // state @@ -140,11 +142,11 @@ class DivMacroInt { void notifyInsDeletion(DivInstrument* which); /** - * get DivMacroStruct by macro name. - * @param which the macro name. + * get DivMacroStruct by macro type. + * @param which the macro type. * @return a DivMacroStruct, or NULL if none found. */ - DivMacroStruct* structByName(const String& name); + DivMacroStruct* structByType(unsigned char which); DivMacroInt(): e(NULL), @@ -152,26 +154,26 @@ class DivMacroInt { macroListLen(0), subTick(1), released(false), - vol(), - arp(), - duty(), - wave(), - pitch(), - ex1(), - ex2(), - ex3(), - alg(), - fb(), - fms(), - ams(), - panL(), - panR(), - phaseReset(), - ex4(), - ex5(), - ex6(), - ex7(), - ex8(), + vol(DIV_MACRO_VOL), + arp(DIV_MACRO_ARP), + duty(DIV_MACRO_DUTY), + wave(DIV_MACRO_WAVE), + pitch(DIV_MACRO_PITCH), + ex1(DIV_MACRO_EX1), + ex2(DIV_MACRO_EX2), + ex3(DIV_MACRO_EX3), + alg(DIV_MACRO_ALG), + fb(DIV_MACRO_FB), + fms(DIV_MACRO_FMS), + ams(DIV_MACRO_AMS), + panL(DIV_MACRO_PAN_LEFT), + panR(DIV_MACRO_PAN_RIGHT), + phaseReset(DIV_MACRO_PHASE_RESET), + ex4(DIV_MACRO_EX4), + ex5(DIV_MACRO_EX5), + ex6(DIV_MACRO_EX6), + ex7(DIV_MACRO_EX7), + ex8(DIV_MACRO_EX8), hasRelease(false) { memset(macroList,0,128*sizeof(void*)); memset(macroSource,0,128*sizeof(void*)); diff --git a/src/gui/insEdit.cpp b/src/gui/insEdit.cpp index f4542d06d..fa7b5ed4c 100644 --- a/src/gui/insEdit.cpp +++ b/src/gui/insEdit.cpp @@ -1387,10 +1387,10 @@ void FurnaceGUI::drawMacroEdit(FurnaceGUIMacroDesc& i, int totalFit, float avail ImGui::PushStyleVar(ImGuiStyleVar_FramePadding,ImVec2(0.0f,0.0f)); if (i.macro->vZoom<1) { - if (i.macro->name=="arp") { + if (i.macro->macroType==DIV_MACRO_ARP) { i.macro->vZoom=24; i.macro->vScroll=120-12; - } else if (i.macro->name=="pitch") { + } else if (i.macro->macroType==DIV_MACRO_PITCH) { i.macro->vZoom=128; i.macro->vScroll=2048-64; } else { @@ -1413,7 +1413,7 @@ void FurnaceGUI::drawMacroEdit(FurnaceGUIMacroDesc& i, int totalFit, float avail DivMacroInt* macroInt=e->getMacroInt(j); if (macroInt==NULL) continue; - DivMacroStruct* macroStruct=macroInt->structByName(i.macro->name); + DivMacroStruct* macroStruct=macroInt->structByType(i.macro->macroType); if (macroStruct==NULL) continue; if (macroStruct->lastPos>i.macro->len) continue; From 750406e0be50dc5dad847e4bd97763a8a2a2a393 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 6 Oct 2023 00:34:51 -0500 Subject: [PATCH 15/72] fix missing pre effects issue #1513 --- src/engine/engine.cpp | 4 ++++ src/engine/instrument.h | 10 +++++----- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/engine/engine.cpp b/src/engine/engine.cpp index 4d07acd45..435cb54dd 100644 --- a/src/engine/engine.cpp +++ b/src/engine/engine.cpp @@ -150,6 +150,10 @@ const char* DivEngine::getEffectDesc(unsigned char effect, int chan, bool notNul if (iter!=sysDef->postEffectHandlers.end()) { return iter->second.description; } + iter=sysDef->preEffectHandlers.find(effect); + if (iter!=sysDef->preEffectHandlers.end()) { + return iter->second.description; + } } break; } diff --git a/src/engine/instrument.h b/src/engine/instrument.h index 5970cfdea..a4024addf 100644 --- a/src/engine/instrument.h +++ b/src/engine/instrument.h @@ -244,13 +244,13 @@ struct DivInstrumentFM { // this is getting out of hand struct DivInstrumentMacro { - // 0-31: normal - // 32+: operator (top 3 bits select operator, starting from 1) - unsigned char macroType; int val[256]; unsigned int mode; unsigned char open; unsigned char len, delay, speed, loop, rel; + // 0-31: normal + // 32+: operator (top 3 bits select operator, starting from 1) + unsigned char macroType; // the following variables are used by the GUI and not saved in the file int vScroll, vZoom; @@ -258,7 +258,6 @@ struct DivInstrumentMacro { unsigned char lenMemory; explicit DivInstrumentMacro(unsigned char initType, bool initOpen=false): - macroType(initType), mode(0), open(initOpen), len(0), @@ -266,6 +265,7 @@ struct DivInstrumentMacro { speed(1), loop(255), rel(255), + macroType(initType), vScroll(0), vZoom(-1), lenMemory(0) { @@ -343,7 +343,7 @@ struct DivInstrumentSTD { phaseResetMacro(DIV_MACRO_PHASE_RESET), ex4Macro(DIV_MACRO_EX4), ex5Macro(DIV_MACRO_EX5), - ex6Macro(DIV_MACRO_EX6), + ex6Macro(DIV_MACRO_EX6), ex7Macro(DIV_MACRO_EX7), ex8Macro(DIV_MACRO_EX8) { for (int i=0; i<4; i++) { From c8597c3c3e1ae19210f2faa21f27517092c9e214 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 6 Oct 2023 00:36:23 -0500 Subject: [PATCH 16/72] Y8950: fix missing drum toggle effect --- src/engine/sysDef.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/engine/sysDef.cpp b/src/engine/sysDef.cpp index 6b1365e4d..de1798d11 100644 --- a/src/engine/sysDef.cpp +++ b/src/engine/sysDef.cpp @@ -1617,7 +1617,7 @@ void DivEngine::registerSystems() { {DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_PCM}, {DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL_DRUMS, DIV_INS_OPL_DRUMS, DIV_INS_OPL_DRUMS, DIV_INS_OPL_DRUMS, DIV_INS_ADPCMB}, {DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_AMIGA}, - fmEffectHandlerMap, + fmOPLDrumsEffectHandlerMap, fmOPLPostEffectHandlerMap ); From e879759f2daad14b98343894b7f46b6ea8491af1 Mon Sep 17 00:00:00 2001 From: Lunathir <18320914+lunathir@users.noreply.github.com> Date: Fri, 6 Oct 2023 01:11:23 -0700 Subject: [PATCH 17/72] Resort instruments --- .../(AY) Closed Hat.fui => AY/Closed Hat.fui} | Bin .../Hat-EnvBass.fui} | Bin .../Heavy Kick and Snare.fui} | Bin .../AY Heavy Kick.fui => AY/Heavy Kick.fui} | Bin .../(AY) Kick E-1.fui => AY/Kick E-1.fui} | Bin .../(AY) Open Hat.fui => AY/Open Hat.fui} | Bin .../(AY) Snare A#3.fui => AY/Snare A#3.fui} | Bin .../{other/AY kick.fui => AY/kick.fui} | Bin .../{other/AY snare.fui => AY/snare.fui} | Bin instruments/{other => C64}/Castanets.fui | Bin instruments/{other => C64}/Closed_Hi-hat.fui | Bin instruments/{other => C64}/Gunshot.fui | Bin instruments/{other => C64}/Open_Hi-hat.fui | Bin instruments/{other => C64}/Side_Stick.fui | Bin .../{other/C64_Snare.fui => C64/Snare.fui} | Bin instruments/{other/GBkick.fui => GB/kick.fui} | Bin .../{other/GBsnare.fui => GB/snare.fui} | Bin instruments/NES/0-2-5_arp_lead.fui | Bin 0 -> 91 bytes instruments/NES/0-3-5_arp_lead.fui | Bin 0 -> 91 bytes instruments/NES/Noise Hi-Hat Closed.fui | Bin 0 -> 72 bytes instruments/NES/Noise Hi-Hat Open.fui | Bin 0 -> 91 bytes instruments/NES/Noise Kick.fui | Bin 0 -> 63 bytes instruments/NES/Noise Snare.fui | Bin 0 -> 85 bytes instruments/NES/Triangle Kick+Bass.fui | Bin 0 -> 68 bytes instruments/NES/Triangle Kick.fui | Bin 0 -> 80 bytes instruments/NES/Triangle Snare+Bass.fui | Bin 0 -> 73 bytes instruments/NES/Triangle Snare.fui | Bin 0 -> 76 bytes ... Wave.dmp => Near Perfect Square Wave.dmp} | Bin instruments/{OPL => OPLL}/OPLL_Clickik.fui | Bin .../{FM/percussion => OPLL}/Rainbow_Bell.fui | Bin instruments/{FM/keys => OPM}/80's Organ.dmp | Bin instruments/{FM/bass => OPM}/Basses.opm | 174 +- .../Chromatic Percussion.opm | 2080 ++++++++--------- .../Computer Shutdown [C-6 0213].dmp} | Bin .../Deep Marimba.dmp} | Bin .../Dog Whistle.dmp} | Bin .../Donkey Kong Lead.dmp} | Bin .../{FM/guitar => OPM}/Guitar Test.opm | 2060 ++++++++-------- instruments/{FM/wind => OPM}/Harmonica.dmp | Bin .../Hi-Hat Closed.dmp} | Bin .../Hi-Hat Open.dmp} | Bin .../{FM/drums => OPM}/OPM Power Snare.fui | Bin .../{FM/keys => OPM}/Organ 2 (Percussive).dmp | Bin .../{FM/keys => OPM}/Organ 3 (Rock Organ).dmp | Bin .../Organ 3 Alt (Rock Organ Alt).dmp | Bin .../Organ 5 (Percussive Variation).dmp | Bin .../Perfect Square Wave + Hi-Hat Closed.dmp} | Bin .../Perfect Square Wave + Hi-Hat Open.dmp} | Bin .../(GEN) Piano 2.dmp => OPM/Piano 2.dmp} | Bin .../keys => OPM}/Piano 3 (Electric Grand).dmp | Bin instruments/{FM/keys => OPM}/Piano Test.opm | 2060 ++++++++-------- .../Portal Cast.dmp} | Bin .../keys => OPM}/Reed Organ or Bandoneon.dmp | Bin .../Techno Bass 2.dmp} | Bin .../{FM/horn => OPM}/ass overtone brass.dmp | Bin .../{FM/synth => OPM}/ass-loud lead.dmp | Bin .../brickblock369 Accordion.dmp | Bin .../brickblock369 Church Organ.dmp | Bin .../{FM/synth => OPM}/early 80s bs.dmp | Bin instruments/{FM/synth => OPM}/huh.dmp | Bin .../strings => OPM}/orchestal bullshit.dmp | Bin .../organ_test/Organ Test - Notes.txt | 22 +- .../keys => OPM}/organ_test/Organ Test.opm | 186 +- .../synth => OPM}/saw + whatever the fuck.dmp | Bin .../{FM/guitar => OPM}/trashy guitar.dmp | Bin .../percussion => OPM}/trashy handbells.dmp | Bin .../{FM => OPN}/accordion/Accordion.dmp | Bin .../{FM => OPN}/accordion/Harmonium.dmp | Bin .../{FM => OPN}/bass/(CH3) Double Synth.dmp | Bin .../{FM => OPN}/bass/4-OP_Vowel_Bass.fui | Bin .../{FM => OPN}/bass/4_OP_Funky_Bass.fui | Bin .../{FM => OPN}/bass/Acoustic Bass 2.dmp | Bin .../{FM => OPN}/bass/Acoustic Bass.dmp | Bin .../{FM => OPN}/bass/Algorithmic Bass.fui | Bin .../bass/Bass Guitar 1.dmp} | Bin .../bass/Bass Guitar 2.dmp} | Bin .../bass/Bass Guitar 3.dmp} | Bin instruments/{FM => OPN}/bass/Bass Guitar.dmp | Bin instruments/{FM => OPN}/bass/Bass.fui | Bin instruments/{FM => OPN}/bass/BassThing.dmp | Bin .../bass/Common Genesis Bass.dmp} | Bin instruments/{FM => OPN}/bass/Double Bass.dmp | Bin .../bass/Electric Bass Guitar.dmp} | Bin .../{FM => OPN}/bass/Electric Finger Bass.dmp | Bin .../bass/Electric Fretless Bass.dmp | Bin .../{FM => OPN}/bass/Electric Picked Bass.dmp | Bin .../{FM => OPN}/bass/Electric Slap Bass.dmp | Bin instruments/{FM => OPN}/bass/FM-Bass-2.dmp | Bin instruments/{FM => OPN}/bass/FM_Bass.dmp | Bin .../{FM => OPN}/bass/FM_CriminalBass.fui | Bin instruments/{FM => OPN}/bass/Finger Bass.fui | Bin .../bass/FingerBass.fui} | Bin .../{FM => OPN}/bass/GEMSLike Bass.dmp | Bin .../bass/Growl Bass.dmp} | Bin .../bass/Heavy Electric Bass.dmp} | Bin instruments/{FM => OPN}/bass/House_Bass.fui | Bin instruments/{FM => OPN}/bass/Levin Bass.dmp | Bin .../bass/Low Piano.dmp} | Bin .../bass/Low Sax.dmp} | Bin .../bass/Low Square.dmp} | Bin .../bass/Low Trumpet.dmp} | Bin .../{FM => OPN}/bass/Passport Bass.dmp | Bin instruments/{FM => OPN}/bass/Piano Bass.dmp | Bin .../bass/PickBass.fui} | Bin instruments/{FM => OPN}/bass/PickMD.fui | Bin instruments/{FM => OPN}/bass/Power Bass.dmp | Bin instruments/{FM => OPN}/bass/Punch Bass.dmp | Bin .../bass/Punch Packer.dmp} | Bin instruments/{FM => OPN}/bass/Radical Bass.dmp | Bin instruments/{FM => OPN}/bass/Real Bass 1.dmp | Bin instruments/{FM => OPN}/bass/Real Bass 2.dmp | Bin .../{FM => OPN}/bass/Resonant Bass.dmp | Bin .../bass/Rounded Saw.dmp} | Bin .../{FM => OPN}/bass/SC-55 Synth Bass 1.dmp | Bin .../{FM => OPN}/bass/SC-55 SynthBass101.dmp | Bin .../bass/Slap Bass 1.dmp} | Bin .../bass/Slap Bass 2.dmp} | Bin .../bass/Slap Bass 3.dmp} | Bin instruments/{FM => OPN}/bass/Slap Bass.dmp | Bin instruments/{FM => OPN}/bass/Slap Bass.fui | Bin .../bass/Space Synth.dmp} | Bin instruments/{FM => OPN}/bass/Spooky Bass.dmp | Bin instruments/{FM => OPN}/bass/Squire Bass.dmp | Bin instruments/{FM => OPN}/bass/Sublime Bass.dmp | Bin .../bass/Sunsoft Slap Bass.dmp} | Bin .../(GEN) Synth.dmp => OPN/bass/Synth.dmp} | Bin .../bass/Techno Bass 1.dmp} | Bin .../bass/Thiel Bass.dmp} | Bin .../(GEN) Tuba 1.dmp => OPN/bass/Tuba 1.dmp} | Bin .../(GEN) Tuba 2.dmp => OPN/bass/Tuba 2.dmp} | Bin .../(GEN) Twang.dmp => OPN/bass/Twang.dmp} | Bin .../bass/VRC7 Bass.dmp} | Bin .../bass/Yamaha MU Synth Bass 2.dmp | Bin instruments/{FM => OPN}/bass/algobass.dmp | Bin instruments/{FM => OPN}/bass/bass1.fui | Bin instruments/{FM => OPN}/bass/bass2.fui | Bin instruments/{FM => OPN}/bass/bass3.fui | Bin instruments/{FM => OPN}/bass/bass4.fui | Bin instruments/{FM => OPN}/bass/bass5.fui | Bin instruments/{FM => OPN}/bass/bass6.fui | Bin .../{FM => OPN}/bass/bass_acoustic_00.fui | Bin .../{FM => OPN}/bass/bass_electric_00.fui | Bin .../{FM => OPN}/bass/bass_electric_01.fui | Bin .../{FM => OPN}/bass/bass_electric_02.fui | Bin .../bass/bass_electric_03_muffled.fui | Bin .../{FM => OPN}/bass/bass_electric_04.fui | Bin .../{FM => OPN}/bass/bass_electric_05_amp.fui | Bin .../{FM => OPN}/bass/bass_growl_00_wobbly.fui | Bin .../bass/bass_growl_01_wobbly2.fui | Bin .../bass/bass_growl_02_wobbly3.fui | Bin .../{FM => OPN}/bass/bass_picked_00.fui | Bin .../bass/bass_picked_01_snappy.fui | Bin .../{FM => OPN}/bass/bass_picked_02.fui | Bin instruments/{FM => OPN}/bass/bass_slap_00.fui | Bin instruments/{FM => OPN}/bass/bass_slap_01.fui | Bin instruments/{FM => OPN}/bass/bass_slap_02.fui | Bin instruments/{FM => OPN}/bass/dxbass1.dmp | Bin instruments/{FM => OPN}/bass/dxbass2.dmp | Bin instruments/{FM => OPN}/bass/dxbass3.dmp | Bin instruments/{FM => OPN}/bass/dxbass4.dmp | Bin instruments/{FM => OPN}/bass/dxbass5.dmp | Bin instruments/{FM => OPN}/bass/dxbass5slap.dmp | Bin instruments/{FM => OPN}/bass/fm_bass1.fui | Bin instruments/{FM => OPN}/bass/fm_bass2.fui | Bin instruments/{FM => OPN}/bass/fm_bass3.fui | Bin .../{FM => OPN}/bass/generic alg 0 bass.dmp | Bin .../{FM => OPN}/bass/nicco1690 Slap Bass.dmp | Bin instruments/{FM => OPN}/bass/opm_nestri.fui | Bin .../{FM => OPN}/bass/sonic_modbass.dmp | Bin instruments/{FM => OPN}/bass/tarylbass1.fui | Bin instruments/{FM => OPN}/bass/weird bass.dmp | Bin instruments/{FM => OPN}/default.fui | Bin instruments/{FM => OPN}/drums/4-7 Snare.fui | Bin instruments/{FM => OPN}/drums/909 Hat.dmp | Bin .../{FM => OPN}/drums/Compressed Clap.fui | Bin .../(GEN) Crash.dmp => OPN/drums/Crash.dmp} | Bin instruments/{FM => OPN}/drums/Cymbal.dmp | Bin .../drums/Double Tom.dmp} | Bin instruments/{FM => OPN}/drums/Drum.fui | Bin instruments/{FM => OPN}/drums/GB Tom.fui | Bin instruments/{FM => OPN}/drums/Heavy Kick.fui | Bin .../drums/Hi-Hat Closed.dmp} | Bin .../drums/Hi-Hat Open.dmp} | Bin .../(GEN) Kick 1.dmp => OPN/drums/Kick 1.dmp} | Bin .../(GEN) Kick 2.dmp => OPN/drums/Kick 2.dmp} | Bin instruments/{FM => OPN}/drums/Kick_B0.dmp | Bin .../{FM => OPN}/drums/Less Chrunchy Snare.dmp | Bin .../drums/Light Snare.dmp} | Bin .../drums}/OPM-lowpitch-fmclap.fui | Bin .../drums/Obvious Kick (C-5 02CC).dmp} | Bin .../drums/Obvious Ride Closed (C-5).dmp} | Bin .../drums/Obvious Ride Open (C-5).dmp} | Bin .../drums/Obvious Snare (D#5 0299).dmp} | Bin ...us Tom (C-5 0266, G#4 0255, E-4 0244).dmp} | Bin instruments/{FM => OPN}/drums/Single Clap.fui | Bin .../drums/Snare 1.dmp} | Bin .../drums/Snare 2.dmp} | Bin .../drums/Snare 3.dmp} | Bin instruments/{FM => OPN}/drums/Snare_B2.dmp | Bin .../{FM => OPN}/drums/Squishy Snare.fui | Bin .../drums/Timpani.dmp} | Bin .../drums/(GEN) Tom.dmp => OPN/drums/Tom.dmp} | Bin instruments/{FM => OPN}/drums/Trap Kick.dmp | Bin .../drums/Trap Snare Carry (C-4, 0201).dmp} | Bin .../drums/Trap Snare Start (D-4 023F).dmp} | Bin instruments/{FM => OPN}/drums/Trap Snare.dmp | Bin .../drums/Triangle.dmp} | Bin .../drums/Wood Block.dmp} | Bin .../drums/[2OPHigh]HatClosed_B2.dmp | Bin .../{FM => OPN}/drums/[2OPHigh]HatOpen_B2.dmp | Bin instruments/{FM => OPN}/drums/crash_00.fui | Bin instruments/{FM => OPN}/drums/fmbigkick.fui | Bin instruments/{FM => OPN}/drums/fmclap.fui | Bin instruments/{FM => OPN}/drums/fmclap2.fui | Bin instruments/{FM => OPN}/drums/fmhat.fui | Bin instruments/{FM => OPN}/drums/fmopenhat.fui | Bin instruments/{FM => OPN}/drums/hihat_00.fui | Bin .../drums/idk_something_percussion.fui | Bin .../{FM => OPN}/drums/kick_00_classic.fui | Bin .../{FM => OPN}/drums/kick_01_power.fui | Bin .../{FM => OPN}/drums/kick_02_power2.fui | Bin .../{FM => OPN}/drums/kick_03_muffled.fui | Bin .../{FM => OPN}/drums/kick_04_bassdrum.fui | Bin .../{FM => OPN}/drums/kick_05_noisy.fui | Bin instruments/{FM => OPN}/drums/kick_06_fat.fui | Bin .../{FM => OPN}/drums/kick_07_fat2.fui | Bin instruments/{FM => OPN}/drums/powersnare.fui | Bin .../{FM => OPN}/drums/snare_00_simple.fui | Bin .../{FM => OPN}/drums/snare_01_curvy.fui | Bin .../{FM => OPN}/drums/snare_02_weak.fui | Bin .../{FM => OPN}/drums/snare_03_weak2.fui | Bin .../{FM => OPN}/drums/snare_04_muffled.fui | Bin .../{FM => OPN}/drums/snare_05_intense.fui | Bin .../{FM => OPN}/drums/snareclap_G-2.fui | Bin .../{FM => OPN}/drums/thinclosedhihat.dmp | Bin .../effect/Acoustic String Slap SFX.dmp | Bin .../effect/Buzzer.dmp} | Bin .../effect/C64 Wave Combo.dmp} | Bin .../(GEN) Clap.dmp => OPN/effect/Clap.dmp} | Bin .../(GEN) Clink.dmp => OPN/effect/Clink.dmp} | Bin .../effect/Crank Turn.dmp} | Bin .../effect/Decay Laser.dmp} | Bin instruments/{FM => OPN}/effect/Glide.dmp | Bin instruments/{FM => OPN}/effect/Heart.dmp | Bin .../{FM => OPN}/effect/Interference.dmp | Bin .../effect/Laser Gun.dmp} | Bin .../(GEN) Laser.dmp => OPN/effect/Laser.dmp} | Bin .../effect/Lightning Bolt.dmp} | Bin instruments/{FM => OPN}/effect/Ocean.dmp | Bin instruments/{FM => OPN}/effect/Skid.dmp | Bin .../{FM => OPN}/effect/Sore Throat.dmp | Bin .../effect/TV Static.dmp} | Bin .../effect/Techno TL Pitch Slider.dmp} | Bin .../effect/Thunder Strike.dmp} | Bin .../(GEN) U.F.O.dmp => OPN/effect/U.F.O.dmp} | Bin .../GEN_Wind.fui => OPN/effect/Wind.fui} | Bin .../effect/[2OPLow]Analog Horror 1.dmp | Bin .../effect/[2OPLow]Analog Horror 2.dmp | Bin .../{FM => OPN}/effect/fm_propeller.fui | Bin .../GEN_weird.fui => OPN/effect/weird.fui} | Bin .../{FM => OPN}/effect/white nosie.dmp | Bin .../guitar/(CH3) Double Guitar.dmp | Bin .../{FM => OPN}/guitar/Acoustic Guitar.dmp | Bin .../guitar/Acoustic Nylon Guitar.dmp | Bin .../guitar/Acoustic Steel Guitar.dmp | Bin .../{FM => OPN}/guitar/Banjo (Muted).opni | Bin .../(GEN) Banjo.dmp => OPN/guitar/Banjo.dmp} | Bin instruments/{FM => OPN}/guitar/Banjo.opni | Bin .../{FM => OPN}/guitar/Distorted Guitar 1.dmp | Bin .../{FM => OPN}/guitar/Distorted Guitar 2.dmp | Bin .../guitar/Electric Clean Guitar.dmp | Bin .../Electric Distorted Guitar (High).dmp | Bin .../Electric Distorted Guitar (Low).dmp | Bin .../guitar/Electric Funk Guitar.dmp | Bin .../guitar/Electric Guitar 1.dmp} | Bin .../guitar/Electric Guitar 2.dmp} | Bin .../guitar/Electric Guitar 3.dmp} | Bin .../guitar/Electric Guitar EX.dmp} | Bin .../guitar/Electric Guitar Harmonics.dmp | Bin .../guitar/Electric Jazz Guitar.dmp | Bin .../guitar/Electric Lap Guitar.dmp | Bin .../guitar/Electric Muted Guitar.dmp | Bin .../Electric Overdriven Guitar (High).dmp | Bin .../Electric Overdriven Guitar (Low).dmp | Bin .../guitar/ElectricGuitar.fui} | Bin .../{FM => OPN}/guitar/Funk Guitar.fui | Bin .../{FM => OPN}/guitar/Gardenshroom.dmp | Bin .../guitar/Grunge.dmp} | Bin .../guitar/Guitar.dmp} | Bin .../{FM => OPN}/guitar/Hard Guitar.fui | Bin instruments/{FM => OPN}/guitar/Koto.opni | Bin instruments/{FM => OPN}/guitar/Oud.opni | Bin .../guitar/Rough Sitar.dmp} | Bin .../{FM => OPN}/guitar/SSGuitar_A2.dmp | Bin .../{FM => OPN}/guitar/SSGuitar_B2.dmp | Bin .../{FM => OPN}/guitar/SSGuitar_F#2.dmp | Bin .../{FM => OPN}/guitar/SSGuitar_G2.dmp | Bin .../guitar/Shamisen (Regular Pluck).opni | Bin .../guitar/Shamisen (Tsugaru Slap).opni | Bin .../guitar/Shamisen.dmp} | Bin .../(GEN) Sitar.dmp => OPN/guitar/Sitar.dmp} | Bin instruments/{FM => OPN}/guitar/Sitar.opni | Bin .../guitar/Space Sitar.dmp} | Bin .../{FM => OPN}/guitar/Spanish Guitar.dmp | Bin .../guitar/Tamboura (Bass Sitar).opni | Bin instruments/{FM => OPN}/guitar/Ukulele.dmp | Bin .../{FM => OPN}/guitar/YM2151_DistGuitar.fui | Bin .../{FM => OPN}/guitar/distguitar_00.fui | Bin .../{FM => OPN}/guitar/high guitar.dmp | Bin instruments/{FM => OPN}/guitar/powerchord.fui | Bin .../guitar/sine distorted guitar.dmp | Bin .../{FM => OPN}/horn/(CH3) Trumpet + Echo.dmp | Bin .../horn/Dubious Trumpet.dmp} | Bin instruments/{FM => OPN}/horn/FM Brass.dmp | Bin .../horn/Ringing Trumpet.dmp} | Bin instruments/{FM => OPN}/horn/Saw Trumpet.dmp | Bin .../horn/SynthBrass.fui} | Bin .../horn/Trumpet 1.dmp} | Bin .../horn/Trumpet 2.dmp} | Bin .../horn/Trumpet 3.dmp} | Bin .../horn/Trumpet EX.dmp} | Bin instruments/{FM => OPN}/horn/Trumpet.dmp | Bin .../horn/GEN_Tuba.fui => OPN/horn/Tuba.fui} | Bin .../horn/VRC7 Trumpet.dmp} | Bin .../{FM => OPN}/horn/brass_00_wobbly.fui | Bin .../{FM => OPN}/horn/brass_01_bassish.fui | Bin .../{FM => OPN}/horn/brass_02_boring.fui | Bin .../{FM => OPN}/horn/brass_03_boring2.fui | Bin .../{FM => OPN}/keys/(CH3) Double Piano.dmp | Bin .../keys/(CH3) Double Reed Organ.dmp | Bin instruments/{FM => OPN}/keys/Bite Organ.dmp | Bin .../{FM => OPN}/keys/Celesta (High).dmp | Bin .../{FM => OPN}/keys/Celesta (Low).dmp | Bin .../keys/Church Organ (2).dmp} | Bin instruments/{FM => OPN}/keys/Church Organ.dmp | Bin instruments/{FM => OPN}/keys/Circus Organ.fui | Bin instruments/{FM => OPN}/keys/Clavinet.dmp | Bin instruments/{FM => OPN}/keys/Creep Organ.dmp | Bin .../{FM => OPN}/keys/E. Piano 1 (Rhodes).dmp | Bin .../{FM => OPN}/keys/E. Piano 2 (DX).dmp | Bin instruments/{FM => OPN}/keys/ElisOrgan.fui | Bin instruments/{FM => OPN}/keys/Harpsichord.dmp | Bin .../{FM => OPN}/keys/Less Soft E Piano.dmp | Bin instruments/{FM => OPN}/keys/Low Piano.dmp | Bin .../{FM => OPN}/keys/Organ 1 (Drawbar).dmp | Bin instruments/{FM => OPN}/keys/Organ.dmp | Bin .../{FM => OPN}/keys/Piano 1 (Acoustic).dmp | Bin .../keys/Piano 1.dmp} | Bin .../keys/Piano 2 (Bright Acoustic).dmp | Bin .../OPNx_Piano.fui => OPN/keys/Piano.fui} | Bin instruments/{FM => OPN}/keys/PianoMD.fui | Bin .../keys/Reed Organ.dmp} | Bin instruments/{FM => OPN}/keys/Rock Organ.dmp | Bin .../keys/Short Piano.dmp} | Bin instruments/{FM => OPN}/keys/Soft E Piano.dmp | Bin .../keys/Space Piano.dmp} | Bin instruments/{FM => OPN}/keys/Sparksichord.dmp | Bin .../keys/Spoopy Organ.dmp} | Bin .../keys/VRC7 Reed Organ.dmp} | Bin .../{FM => OPN}/keys/YM2151_E-PIANO.fui | Bin .../keys/brickblock369 Harpsichord.dmp | Bin instruments/{FM => OPN}/keys/fmpiano.fui | Bin instruments/{FM => OPN}/keys/harpsisine.dmp | Bin .../keys/nicco1690 Church Organ.dmp | Bin .../percussion/(CH3) Double Metalliphone.dmp | Bin .../percussion/(CH3) Double Steel Drum.dmp | Bin .../percussion/(CH3) Double Xylophone.dmp | Bin .../percussion/Agogo or Cowbell.dmp | Bin instruments/{FM => OPN}/percussion/BellMD.fui | Bin .../{FM => OPN}/percussion/Bell_Oct4-7.dmp | Bin .../percussion/Bongo.dmp} | Bin .../percussion/Chime.dmp} | Bin .../{FM => OPN}/percussion/ChurchBell.fui | Bin .../percussion/Cowbell.dmp} | Bin .../{FM => OPN}/percussion/Cowbell_F#5.dmp | Bin .../percussion/Dangerously Cheap Timpani.fui | Bin .../{FM => OPN}/percussion/Dulcimer.dmp | Bin .../{FM => OPN}/percussion/Glockenspiel.dmp | Bin .../{FM => OPN}/percussion/Kalimba.dmp | Bin .../{FM => OPN}/percussion/Kalimba.fui | Bin .../percussion/Marimba (2).dmp} | Bin .../{FM => OPN}/percussion/Marimba.dmp | Bin .../{FM => OPN}/percussion/Marimba.fui | Bin .../percussion/Metalliphone.dmp} | Bin .../{FM => OPN}/percussion/Music Box.dmp | Bin .../{FM => OPN}/percussion/MusicBox.fui | Bin .../percussion/Music_Box.fui} | Bin .../OPN/percussion/OPM-lowpitch-fmclap.fui | Bin 0 -> 1463 bytes instruments/{FM => OPN}/percussion/Peck.dmp | Bin .../{FM => OPN}/percussion/Realistic Bell.dmp | Bin .../percussion/Short Bongo.dmp} | Bin .../percussion/Space Chime.dmp} | Bin .../percussion/Space Marimba.dmp} | Bin .../percussion/Steel Drum (2).dmp} | Bin .../{FM => OPN}/percussion/Steel Drum.dmp | Bin .../{FM => OPN}/percussion/Timpani.dmp | Bin .../{FM => OPN}/percussion/Tubular Bells.dmp | Bin .../percussion/VRC7 Chime.dmp} | Bin .../percussion/VRC7 Marimba.dmp} | Bin .../percussion/VRC7 Metalliphone.dmp} | Bin .../percussion/VRC7 Soft Hestian.dmp} | Bin .../percussion/VRC7 Vibraphone.dmp | Bin .../percussion/VRC7 Xylophone.dmp} | Bin .../{FM => OPN}/percussion/Vibraphone.dmp | Bin .../percussion/Xylophone 1.dmp} | Bin .../percussion/Xylophone 2.dmp} | Bin .../{FM => OPN}/percussion/Xylophone.dmp | Bin instruments/{FM => OPN}/percussion/agogo.fui | Bin .../{FM => OPN}/percussion/alg 7 bongoes.dmp | Bin .../percussion/bell_00_glockenspiel.fui | Bin .../bell_01_glockenspiel_echoing.fui | Bin .../bell_02_glockenspiel_wobbly.fui | Bin .../percussion/brickblock369 Glockenspiel.dmp | Bin .../percussion/brickblock369 Steel Drum.dmp | Bin .../percussion/brickblock369 Timpani.dmp | Bin .../{FM => OPN}/percussion/fm_cowbell.fui | Bin .../{FM => OPN}/percussion/octave_8_bell.fui | Bin .../strings/(CH3) Double Viola.dmp | Bin .../strings/5thsPad.fui} | Bin .../(GEN) Choir.dmp => OPN/strings/Choir.dmp} | Bin .../strings/Earthbound Strings.dmp | Bin instruments/{FM => OPN}/strings/Enchant.dmp | Bin .../strings/Ethereal Something.dmp | Bin .../strings/Fiddle.dmp} | Bin .../{FM => OPN}/strings/Fifths Pad.dmp | Bin .../{FM => OPN}/strings/Fifths Type Beat.dmp | Bin instruments/{FM => OPN}/strings/Pad.dmp | Bin .../strings/Rapid Fiddle.dmp} | Bin instruments/{FM => OPN}/strings/SSGPad.dmp | Bin .../{FM => OPN}/strings/Sawsine pad.dmp | Bin .../{FM => OPN}/strings/Slow Strings.fui | Bin .../strings/Space Violin.dmp} | Bin .../strings/String.fui} | Bin .../strings/VRC7 Strings.dmp} | Bin .../strings/VRC7 Viola.dmp} | Bin .../strings/Violin 1.dmp} | Bin .../strings/Violin 2.dmp} | Bin instruments/{FM => OPN}/strings/Violin.fui | Bin instruments/{FM => OPN}/strings/ViolinMD.fui | Bin .../{FM => OPN}/strings/strings_00.fui | Bin .../synth/(CH3) Double Ambience.dmp | Bin .../{FM => OPN}/synth/(CH3) Double Choir.dmp | Bin .../synth/(CH3) Double Rounded Square.dmp | Bin .../{FM => OPN}/synth/(CH3) Saw & Organ.dmp | Bin .../{FM => OPN}/synth/(CH3) Sine Chord.dmp | Bin .../synth/(CH3) Synth with Light Snare.dmp | Bin .../synth/1 16 Pulse.dmp} | Bin .../synth/1 4 Pulse.dmp} | Bin .../synth/1 8 Pulse.dmp} | Bin .../synth/3 16 Pulse.dmp} | Bin .../synth/3 8 Pulse.dmp} | Bin .../synth/5 16 Pulse.dmp} | Bin .../synth/7 16 Pulse.dmp} | Bin instruments/{FM => OPN}/synth/Abduction.dmp | Bin .../{FM => OPN}/synth/Altered Square.dmp | Bin .../synth/Ambience.dmp} | Bin instruments/{FM => OPN}/synth/Buttermilk.dmp | Bin .../synth/Church Hestian.dmp} | Bin .../{FM => OPN}/synth/Circuitbird Donk.dmp | Bin .../{FM => OPN}/synth/Cricket Chorus.fui | Bin .../(GEN) Cutoff.dmp => OPN/synth/Cutoff.dmp} | Bin .../{FM => OPN}/synth/Desert Synth.dmp | Bin .../synth/Distorted Hestian.dmp} | Bin instruments/{FM => OPN}/synth/Ecco.dmp | Bin instruments/{FM => OPN}/synth/FM_noname1.fui | Bin instruments/{FM => OPN}/synth/Guess.dmp | Bin .../synth/Hestian.dmp} | Bin .../synth/High Hestian.dmp} | Bin .../synth/Hyperspeed Decay Sine.dmp} | Bin .../synth/K.K. Slider Aah.dmp} | Bin .../synth/K.K. Slider Weh.dmp} | Bin .../synth/Kirby SNES Synth Pad.fui | Bin instruments/{FM => OPN}/synth/Klax.dmp | Bin instruments/{FM => OPN}/synth/Kyd.dmp | Bin instruments/{FM => OPN}/synth/Love.dmp | Bin .../synth/Low Hestian.dmp} | Bin .../{FM => OPN}/synth/Metallic FM Lead.fui | Bin .../synth/NES Triangle.dmp} | Bin .../synth/Near Perfect Saw Wave.dmp} | Bin .../synth/Near Perfect Square Wave.dmp} | Bin .../{FM => OPN}/synth/Octave_Square.fui | Bin .../{FM => OPN}/synth/Octave_Square2.fui | Bin .../synth/Perfect Saw Wave.dmp} | Bin .../synth/Perfect Square Wave.dmp} | Bin .../synth/Perfect Triangle Wave.dmp} | Bin .../synth/Rattling Hestian.dmp} | Bin .../{FM => OPN}/synth/Reverby_Live_Chords.fui | Bin .../synth/Rough Hestian.dmp} | Bin .../synth/Rough Square.dmp} | Bin .../synth/Rounded Square.dmp} | Bin instruments/{FM => OPN}/synth/RustEcho.dmp | Bin .../synth/Saw Malleable.dmp} | Bin instruments/{FM => OPN}/synth/Saw.dmp | Bin .../synth/Sharp Saw.dmp} | Bin instruments/{FM => OPN}/synth/Signal.dmp | Bin .../synth/Sine Growl.dmp} | Bin .../{FM => OPN}/synth/Space Cowboy.dmp | Bin .../synth/Space Hestian.dmp} | Bin .../synth/Space Organ.dmp} | Bin .../synth/Space Saw.dmp} | Bin .../{FM => OPN}/synth/Space Shredder.dmp | Bin .../synth/Sparkle.dmp} | Bin .../(GEN) Spoopy.dmp => OPN/synth/Spoopy.dmp} | Bin .../synth/Square Wave.dmp} | Bin instruments/{FM => OPN}/synth/Square.dmp | Bin instruments/{FM => OPN}/synth/Square.fui | Bin instruments/{FM => OPN}/synth/Squid.dmp | Bin .../synth/Synth with Closed Hi-Hat.dmp} | Bin .../synth/Synth with Open Hi-Hat.dmp} | Bin instruments/{FM => OPN}/synth/Thin.dmp | Bin instruments/{FM => OPN}/synth/Tri.dmp | Bin .../synth/Twang EX.dmp} | Bin .../synth/Twang Whistle.dmp} | Bin instruments/{FM => OPN}/synth/Twoah.dmp | Bin .../synth/VRC7 Choir.dmp} | Bin .../synth/VRC7 Hestian.dmp} | Bin .../(GEN) Wahwah.dmp => OPN/synth/Wahwah.dmp} | Bin .../{FM => OPN}/synth/[1OPHigh]Saw.dmp | Bin .../synth/[2OPHigh]Filtered Square.dmp | Bin instruments/{FM => OPN}/synth/cool leaed.dmp | Bin instruments/{FM => OPN}/synth/fm_grinder.fui | Bin instruments/{FM => OPN}/synth/fm_horror.fui | Bin instruments/{FM => OPN}/synth/fm_noname2.fui | Bin instruments/{FM => OPN}/synth/fm_noname3.fui | Bin instruments/{FM => OPN}/synth/fm_noname4.fui | Bin instruments/{FM => OPN}/synth/fm_noname5.fui | Bin instruments/{FM => OPN}/synth/fm_noname6.fui | Bin instruments/{FM => OPN}/synth/fm_noname7.fui | Bin instruments/{FM => OPN}/synth/growl.fui | Bin .../{FM => OPN}/synth/mystic cave lead.dmp | Bin instruments/{FM => OPN}/synth/sawtooth.dmp | Bin .../{FM => OPN}/synth/snes-ish square.dmp | Bin .../sonic spinball toxic caves thingy.dmp | Bin instruments/{FM => OPN}/synth/whut.dmp | Bin instruments/{FM => OPN}/synth/yrwywryw.dmp | Bin instruments/{FM => OPN}/tfilib/banjo.tfi | Bin instruments/{FM => OPN}/tfilib/bass.tfi | Bin instruments/{FM => OPN}/tfilib/bell.tfi | Bin instruments/{FM => OPN}/tfilib/cymbal.tfi | Bin instruments/{FM => OPN}/tfilib/distbass.tfi | Bin instruments/{FM => OPN}/tfilib/distguit.tfi | Bin instruments/{FM => OPN}/tfilib/distslap.tfi | Bin instruments/{FM => OPN}/tfilib/elecbass.tfi | Bin instruments/{FM => OPN}/tfilib/fifths.tfi | Bin instruments/{FM => OPN}/tfilib/flute.tfi | Bin instruments/{FM => OPN}/tfilib/guitar.tfi | Bin instruments/{FM => OPN}/tfilib/harp.tfi | Bin instruments/{FM => OPN}/tfilib/harpsich.tfi | Bin instruments/{FM => OPN}/tfilib/hithat.tfi | Bin instruments/{FM => OPN}/tfilib/kick.tfi | Bin instruments/{FM => OPN}/tfilib/list.txt | 0 instruments/{FM => OPN}/tfilib/lyre.tfi | Bin instruments/{FM => OPN}/tfilib/marimba.tfi | Bin instruments/{FM => OPN}/tfilib/neslike.tfi | Bin instruments/{FM => OPN}/tfilib/ocarina.tfi | Bin instruments/{FM => OPN}/tfilib/organ.tfi | Bin instruments/{FM => OPN}/tfilib/piano.tfi | Bin instruments/{FM => OPN}/tfilib/sawtooth.tfi | Bin instruments/{FM => OPN}/tfilib/sax.tfi | Bin instruments/{FM => OPN}/tfilib/sine.tfi | Bin instruments/{FM => OPN}/tfilib/slapbass.tfi | Bin instruments/{FM => OPN}/tfilib/snare.tfi | Bin instruments/{FM => OPN}/tfilib/sofpiano.tfi | Bin instruments/{FM => OPN}/tfilib/softsaw.tfi | Bin instruments/{FM => OPN}/tfilib/softsqr.tfi | Bin instruments/{FM => OPN}/tfilib/square.tfi | Bin instruments/{FM => OPN}/tfilib/steldrum.tfi | Bin instruments/{FM => OPN}/tfilib/synbell.tfi | Bin instruments/{FM => OPN}/tfilib/tackpian.tfi | Bin instruments/{FM => OPN}/tfilib/timpani1.tfi | Bin instruments/{FM => OPN}/tfilib/timpani2.tfi | Bin instruments/{FM => OPN}/tfilib/toypiano.tfi | Bin instruments/{FM => OPN}/tfilib/triangle.tfi | Bin instruments/{FM => OPN}/tfilib/trumpet.tfi | Bin instruments/{FM => OPN}/tfilib/wooddrum.tfi | Bin .../wind/(CH3) Double Clarinet.dmp | Bin .../{FM => OPN}/wind/(CH3) Double Flute.dmp | Bin .../wind/(CH3) Double Woodwind.dmp | Bin .../wind/(CH3) Quadruple Ocarina.dmp | Bin instruments/{FM => OPN}/wind/B'arinet.dmp | Bin .../wind/BottleBlow.fui} | Bin .../wind/Clarinet (2).dmp} | Bin instruments/{FM => OPN}/wind/Clarinet.dmp | Bin .../wind/Didgeridoo.dmp} | Bin instruments/{FM => OPN}/wind/English Horn.dmp | Bin .../{FM => OPN}/wind/FM_4OP_-_Tenor_Sax.fui | Bin .../wind/Flute (2).dmp} | Bin instruments/{FM => OPN}/wind/Flute.dmp | Bin .../wind/Forest Flute.dmp} | Bin .../wind/Harmonica.dmp} | Bin .../wind/Ocarina.dmp} | Bin instruments/{FM => OPN}/wind/Pan Flute.dmp | Bin .../wind/Saxophone EX.dmp} | Bin .../wind/Saxophone.dmp} | Bin instruments/{FM => OPN}/wind/bassoon.fui | Bin .../{FM => OPN}/wind/bassoon_clarinet.fui | Bin instruments/{FM => OPN}/wind/fm_pipeflute.fui | Bin instruments/{FM => OPN}/wind/woodwind_00.fui | Bin .../Fake_Famicom_Tri.fui} | Bin .../{FM/bass => OPZ}/Heavy_synth_bass.fui | Bin instruments/README.md | 8 +- .../0-2-5_arp_lead.fui} | Bin .../0-3-5_arp_lead.fui} | Bin .../2-Arp Chord High.dmp} | Bin .../2-Arp High.dmp} | Bin .../2-Arp Major Low.dmp} | Bin .../2-Arp Minor Low.dmp} | Bin .../3-Arp High.dmp} | Bin .../3-Arp Major.dmp} | Bin .../3-Arp Minor.dmp} | Bin .../5-Arp Major.dmp} | Bin .../5-Arp Minor.dmp} | Bin .../(SMS) Arp Snare.dmp => SN7/Arp Snare.dmp} | Bin .../(SMS) Attack.dmp => SN7/Attack.dmp} | Bin .../Buzz Noise.dmp} | Bin .../{other/(SMS) Crash.dmp => SN7/Crash.dmp} | Bin .../Cyclic Noise.dmp} | Bin .../Decay Noise.dmp} | Bin .../{other/(SMS) Decay.dmp => SN7/Decay.dmp} | Bin .../Down Slider.dmp} | Bin instruments/{other => SN7}/Echo.fui | Bin instruments/{other => SN7}/Flute.fui | Bin .../{other => SN7}/Follin Guitar 2.fui | Bin instruments/{other => SN7}/Follin Guitar.fui | Bin instruments/{other => SN7}/Guitar.fui | Bin .../Hi-Hat & Note.dmp} | Bin .../Hi-Hat Closed.dmp} | Bin .../Hi-Hat Open.dmp} | Bin .../Kick Noise.dmp} | Bin .../Multi Slider.dmp} | Bin .../Obvious Crash.dmp} | Bin instruments/{other => SN7}/Octave Arp.fui | Bin .../Record Scratch Down.dmp} | Bin .../Record Scratch Up.dmp} | Bin .../(SMS) Retrig.dmp => SN7/Retrig.dmp} | Bin .../{other/(SMS) Ride.dmp => SN7/Ride.dmp} | Bin .../{other => SN7}/SMSPerc/SMSPerc About.txt | 50 +- .../SMSPerc/SMSPerc ExampleInst [Hat] CH3.fui | Bin .../SMSPerc ExampleInst [KickSnare] CH3.fui | Bin .../SMSPerc ExampleInst [Nothing] CH3.fui | Bin .../SMSPerc/SMSPerc Hat_Closed CH4 [D].fui | Bin .../SMSPerc/SMSPerc Hat_Open CH4 [D].fui | Bin .../SMSPerc/SMSPerc Kick CH4 [C].fui | Bin .../SMSPerc/SMSPerc KickSnare CH3.fui | Bin .../SMSPerc/SMSPerc Snare CH4 [D].fui | Bin .../{other/(SMS) Snare.dmp => SN7/Snare.dmp} | Bin .../(SMS) Splash.dmp => SN7/Splash.dmp} | Bin .../Thump & Note.dmp} | Bin .../Tim Follin 6-Arp Fast Major.dmp} | Bin .../Tim Follin 6-Arp Fast Minor.dmp} | Bin .../Tim Follin 6-Arp Slow Major.dmp} | Bin .../Tim Follin 6-Arp Slow Minor.dmp} | Bin .../Tim Follin Lead.dmp} | Bin .../{other/(SMS) Tom A.dmp => SN7/Tom A.dmp} | Bin .../{other/(SMS) Tom B.dmp => SN7/Tom B.dmp} | Bin .../(SMS) Up Slider.dmp => SN7/Up Slider.dmp} | Bin .../(SMS) Variable.dmp => SN7/Variable.dmp} | Bin .../(SMS) Whistle.dmp => SN7/Whistle.dmp} | Bin instruments/{other => SN7}/compatibility.fui | Bin .../TIA Bass Drum.fui => TIA/Bass Drum.fui} | Bin .../{other/TIA Clap.fui => TIA/Clap.fui} | Bin .../Hi-Hat Long.fui} | Bin .../{other/TIA Hi-Hat.fui => TIA/Hi-Hat.fui} | Bin .../TIA Snare Drum.fui => TIA/Snare Drum.fui} | Bin .../Supersaw.fui => TODO/(WSG) Supersaw.fui} | Bin ...japaneseguitarsidkhowtheyarecalledyeah.fui | Bin .../FDS-overfuckingholyshitdriven-guitar.fui | Bin .../{other => TODO}/FDS-slapassbass.fui | Bin .../0-2-5_arp_lead.fui} | Bin .../0-3-5_arp_lead.fui} | Bin .../Noise_Kick.fui} | Bin .../Noise_Snare.fui} | Bin .../{other/VIC20_kick.fui => VIC/kick.fui} | Bin .../other/2A03 Noise Hi-Hat Closed.fui | Bin 1937 -> 0 bytes instruments/other/2A03 Noise Hi-Hat Open.fui | Bin 2019 -> 0 bytes instruments/other/2A03 Noise Kick.fui | Bin 1928 -> 0 bytes instruments/other/2A03 Noise Snare.fui | Bin 2013 -> 0 bytes instruments/other/2A03 Triangle Kick+Bass.fui | Bin 1926 -> 0 bytes instruments/other/2A03 Triangle Kick.fui | Bin 1951 -> 0 bytes .../other/2A03 Triangle Snare+Bass.fui | Bin 1931 -> 0 bytes instruments/other/2A03 Triangle Snare.fui | Bin 1944 -> 0 bytes instruments/other/NES_0-2-5_arp_lead.fui | Bin 1807 -> 0 bytes instruments/other/NES_0-3-5_arp_lead.fui | Bin 1807 -> 0 bytes .../arbys.dmp => uhrwerk/(OPN) arbys.dmp} | Bin .../B Series/(OPM) b21.dmp} | Bin .../B Series/(OPM) b21b.dmp} | Bin .../B Series/(OPM) b21c.dmp} | Bin .../B Series/(OPN) b00.dmp} | Bin .../B Series/(OPN) b00a.dmp} | Bin .../B Series/(OPN) b00b.dmp} | Bin .../B Series/(OPN) b01.dmp} | Bin .../B Series/(OPN) b01b.dmp} | Bin .../B Series/(OPN) b02.dmp} | Bin .../B Series/(OPN) b02b.dmp} | Bin .../B Series/(OPN) b02c MUTE.dmp} | Bin .../B Series/(OPN) b02c.dmp} | Bin .../B Series/(OPN) b03.dmp} | Bin .../B Series/(OPN) b04.dmp} | Bin .../B Series/(OPN) b05.dmp} | Bin .../B Series/(OPN) b06.dmp} | Bin .../B Series/(OPN) b07.dmp} | Bin .../B Series/(OPN) b08.dmp} | Bin .../B Series/(OPN) b08b.dmp} | Bin .../B Series/(OPN) b08c.dmp} | Bin .../B Series/(OPN) b09.dmp} | Bin .../B Series/(OPN) b10.dmp} | Bin .../B Series/(OPN) b10b.dmp} | Bin .../B Series/(OPN) b11.dmp} | Bin .../B Series/(OPN) b12.dmp} | Bin .../B Series/(OPN) b13.dmp} | Bin .../B Series/(OPN) b14.dmp} | Bin .../B Series/(OPN) b15.dmp} | Bin .../B Series/(OPN) b16.dmp} | Bin .../B Series/(OPN) b17.dmp} | Bin .../B Series/(OPN) b17b MUTE.dmp} | Bin .../B Series/(OPN) b17b SLAP (actual).dmp} | Bin .../B Series/(OPN) b17b SLAP.dmp} | Bin .../B Series/(OPN) b17b.dmp} | Bin .../B Series/(OPN) b18 MUTE.dmp} | Bin .../B Series/(OPN) b18 SLAP.dmp} | Bin .../B Series/(OPN) b18.dmp} | Bin .../B Series/(OPN) b19 MUTE.dmp} | Bin .../B Series/(OPN) b19 SLAP.dmp} | Bin .../B Series/(OPN) b19.dmp} | Bin .../B Series/(OPN) b20.dmp} | Bin .../B Series/(OPN) b22 MUTE.dmp} | Bin .../B Series/(OPN) b22 SLAP.dmp} | Bin .../B Series/(OPN) b22.dmp} | Bin .../B Series/(OPN) b22b.dmp} | Bin .../B Series/(OPN) b22c MUTE.dmp} | Bin .../B Series/(OPN) b22c SLAP.dmp} | Bin .../B Series/(OPN) b22c.dmp} | Bin .../B Series/(OPN) b23 MUTE.dmp} | Bin .../B Series/(OPN) b23 SLAP.dmp} | Bin .../B Series/(OPN) b23.dmp} | Bin .../B Series/(OPN) b69.dmp} | Bin .../P Series/(OPM) p11.dmp} | Bin .../P Series/(OPN) p01.dmp} | Bin .../P Series/(OPN) p01b.dmp} | Bin .../P Series/(OPN) p02.dmp} | Bin .../P Series/(OPN) p02b.dmp} | Bin .../P Series/(OPN) p03.dmp} | Bin .../P Series/(OPN) p03b.dmp} | Bin .../P Series/(OPN) p04.dmp} | Bin .../P Series/(OPN) p05.dmp} | Bin .../P Series/(OPN) p06.dmp} | Bin .../P Series/(OPN) p06b.dmp} | Bin .../P Series/(OPN) p06c.dmp} | Bin .../P Series/(OPN) p07.dmp} | Bin .../P Series/(OPN) p08.dmp} | Bin .../P Series/(OPN) p09.dmp} | Bin .../P Series/(OPN) p10.dmp} | Bin .../P Series/(OPN) p10b.dmp} | Bin .../R Series/(OPM) r27.dmp} | Bin .../R Series/(OPN) act 1 void of space.dmp} | Bin .../R Series/(OPN) r10.dmp} | Bin .../R Series/(OPN) r10b.dmp} | Bin .../R Series/(OPN) r11.dmp} | Bin .../R Series/(OPN) r12.dmp} | Bin .../R Series/(OPN) r13.dmp} | Bin .../R Series/(OPN) r14.dmp} | Bin .../R Series/(OPN) r15.dmp} | Bin .../R Series/(OPN) r16.dmp} | Bin .../r2.dmp => uhrwerk/R Series/(OPN) r2.dmp} | Bin .../r3.dmp => uhrwerk/R Series/(OPN) r3.dmp} | Bin .../R Series/(OPN) r33.dmp} | Bin .../r4.dmp => uhrwerk/R Series/(OPN) r4.dmp} | Bin .../r5.dmp => uhrwerk/R Series/(OPN) r5.dmp} | Bin .../R Series/(OPN) r65.dmp} | Bin .../R Series/(OPN) r6b.dmp} | Bin .../r7.dmp => uhrwerk/R Series/(OPN) r7.dmp} | Bin .../R Series/(OPN) r7b.dmp} | Bin .../R Series/(OPN) r7c.dmp} | Bin .../r8.dmp => uhrwerk/R Series/(OPN) r8.dmp} | Bin .../R Series/(OPN) r8b.dmp} | Bin .../R Series/(OPN) r8c.dmp} | Bin .../r9.dmp => uhrwerk/R Series/(OPN) r9.dmp} | Bin .../R Series/(OPN) r9b.dmp} | Bin instruments/{FM => }/uhrwerk/README.txt | 0 .../Z Series/(OPM) z00.dmp} | Bin .../Z Series/(OPM) z01.dmp} | Bin .../Z Series/(OPM) z02.dmp} | Bin .../Z Series/(OPM) z02b.dmp} | Bin .../Z Series/(OPM) z02c.dmp} | Bin .../Z Series/(OPM) z03.dmp} | Bin .../Z Series/(OPM) z04.dmp} | Bin .../Z Series/(OPM) z04b.dmp} | Bin .../Z Series/(OPM) z04c.dmp} | Bin .../Z Series/(OPM) z11.dmp} | Bin .../Z Series/(OPM) z11b.dmp} | Bin .../Z Series/(OPM) z11c.dmp} | Bin .../Z Series/(OPM) z11d.dmp} | Bin .../Z Series/(OPM) z11e.dmp} | Bin .../Z Series/(OPM) z39.dmp} | Bin .../Z Series/(OPM) z39b low vol.dmp} | Bin .../Z Series/(OPM) z39b.dmp} | Bin .../Z Series/(OPM) z39c.dmp} | Bin .../Z Series/(OPM) z39d.dmp} | Bin .../Z Series/(OPM) z39e.dmp} | Bin .../Z Series/(OPM) z40.dmp} | Bin .../Z Series/(OPN) z05.dmp} | Bin .../Z Series/(OPN) z05b.dmp} | Bin .../Z Series/(OPN) z05c.dmp} | Bin .../Z Series/(OPN) z05d.dmp} | Bin .../Z Series/(OPN) z06.dmp} | Bin .../Z Series/(OPN) z06b.dmp} | Bin .../Z Series/(OPN) z07.dmp} | Bin .../Z Series/(OPN) z08.dmp} | Bin .../Z Series/(OPN) z09.dmp} | Bin .../Z Series/(OPN) z10.dmp} | Bin .../Z Series/(OPN) z10b.dmp} | Bin .../Z Series/(OPN) z10c.dmp} | Bin .../Z Series/(OPN) z10d.dmp} | Bin .../Z Series/(OPN) z10e.dmp} | Bin .../Z Series/(OPN) z12.dmp} | Bin .../Z Series/(OPN) z13.dmp} | Bin .../Z Series/(OPN) z14.dmp} | Bin .../Z Series/(OPN) z14b.dmp} | Bin .../Z Series/(OPN) z14c.dmp} | Bin .../Z Series/(OPN) z14d.dmp} | Bin .../Z Series/(OPN) z15.dmp} | Bin .../Z Series/(OPN) z15b (quiet).dmp} | Bin .../Z Series/(OPN) z15b.dmp} | Bin .../Z Series/(OPN) z16.dmp} | Bin .../Z Series/(OPN) z16b.dmp} | Bin .../Z Series/(OPN) z16c.dmp} | Bin .../Z Series/(OPN) z16d.dmp} | Bin .../Z Series/(OPN) z17.dmp} | Bin .../Z Series/(OPN) z17b.dmp} | Bin .../Z Series/(OPN) z17c.dmp} | Bin .../Z Series/(OPN) z17d.dmp} | Bin .../Z Series/(OPN) z17e.dmp} | Bin .../Z Series/(OPN) z18.dmp} | Bin .../Z Series/(OPN) z19.dmp} | Bin .../Z Series/(OPN) z20.dmp} | Bin .../Z Series/(OPN) z20b.dmp} | Bin .../Z Series/(OPN) z21.dmp} | Bin .../Z Series/(OPN) z22.dmp} | Bin .../Z Series/(OPN) z22b.dmp} | Bin .../Z Series/(OPN) z23.dmp} | Bin .../Z Series/(OPN) z24.dmp} | Bin .../Z Series/(OPN) z24b.dmp} | Bin .../Z Series/(OPN) z24c.dmp} | Bin .../Z Series/(OPN) z25.dmp} | Bin .../Z Series/(OPN) z26.dmp} | Bin .../Z Series/(OPN) z26b.dmp} | Bin .../Z Series/(OPN) z26c.dmp} | Bin .../Z Series/(OPN) z26d.dmp} | Bin .../Z Series/(OPN) z26e.dmp} | Bin .../Z Series/(OPN) z27.dmp} | Bin .../Z Series/(OPN) z28.dmp} | Bin .../Z Series/(OPN) z28b.dmp} | Bin .../Z Series/(OPN) z28c.dmp} | Bin .../Z Series/(OPN) z29.dmp} | Bin .../Z Series/(OPN) z30.dmp} | Bin .../Z Series/(OPN) z30b.dmp} | Bin .../Z Series/(OPN) z30c.dmp} | Bin .../Z Series/(OPN) z31.dmp} | Bin .../Z Series/(OPN) z32.dmp} | Bin .../Z Series/(OPN) z33.dmp} | Bin .../Z Series/(OPN) z33b.dmp} | Bin .../Z Series/(OPN) z33c.dmp} | Bin .../Z Series/(OPN) z33d.dmp} | Bin .../Z Series/(OPN) z33e.dmp} | Bin .../Z Series/(OPN) z34.dmp} | Bin .../Z Series/(OPN) z34b.dmp} | Bin .../Z Series/(OPN) z35.dmp} | Bin .../Z Series/(OPN) z36.dmp} | Bin .../Z Series/(OPN) z37.dmp} | Bin .../Z Series/(OPN) z38.dmp} | Bin .../Z Series/(OPN) z41.dmp} | Bin .../Z Series/(OPN) z41b.dmp} | Bin .../Z Series/(OPN) z42.dmp} | Bin 873 files changed, 3318 insertions(+), 3322 deletions(-) rename instruments/{other/(AY) Closed Hat.fui => AY/Closed Hat.fui} (100%) rename instruments/{other/(AY) Hat-EnvBass.fui => AY/Hat-EnvBass.fui} (100%) rename instruments/{other/AY Heavy Kick and Snare.fui => AY/Heavy Kick and Snare.fui} (100%) rename instruments/{other/AY Heavy Kick.fui => AY/Heavy Kick.fui} (100%) rename instruments/{other/(AY) Kick E-1.fui => AY/Kick E-1.fui} (100%) rename instruments/{other/(AY) Open Hat.fui => AY/Open Hat.fui} (100%) rename instruments/{other/(AY) Snare A#3.fui => AY/Snare A#3.fui} (100%) rename instruments/{other/AY kick.fui => AY/kick.fui} (100%) rename instruments/{other/AY snare.fui => AY/snare.fui} (100%) rename instruments/{other => C64}/Castanets.fui (100%) rename instruments/{other => C64}/Closed_Hi-hat.fui (100%) rename instruments/{other => C64}/Gunshot.fui (100%) rename instruments/{other => C64}/Open_Hi-hat.fui (100%) rename instruments/{other => C64}/Side_Stick.fui (100%) rename instruments/{other/C64_Snare.fui => C64/Snare.fui} (100%) rename instruments/{other/GBkick.fui => GB/kick.fui} (100%) rename instruments/{other/GBsnare.fui => GB/snare.fui} (100%) create mode 100644 instruments/NES/0-2-5_arp_lead.fui create mode 100644 instruments/NES/0-3-5_arp_lead.fui create mode 100644 instruments/NES/Noise Hi-Hat Closed.fui create mode 100644 instruments/NES/Noise Hi-Hat Open.fui create mode 100644 instruments/NES/Noise Kick.fui create mode 100644 instruments/NES/Noise Snare.fui create mode 100644 instruments/NES/Triangle Kick+Bass.fui create mode 100644 instruments/NES/Triangle Kick.fui create mode 100644 instruments/NES/Triangle Snare+Bass.fui create mode 100644 instruments/NES/Triangle Snare.fui rename instruments/OPLL/{(SMSFM) Near Perfect Square Wave.dmp => Near Perfect Square Wave.dmp} (100%) rename instruments/{OPL => OPLL}/OPLL_Clickik.fui (100%) rename instruments/{FM/percussion => OPLL}/Rainbow_Bell.fui (100%) rename instruments/{FM/keys => OPM}/80's Organ.dmp (100%) rename instruments/{FM/bass => OPM}/Basses.opm (96%) rename instruments/{FM/percussion => OPM}/Chromatic Percussion.opm (95%) rename instruments/{other/(S16) Computer Shutdown [C-6 0213].dmp => OPM/Computer Shutdown [C-6 0213].dmp} (100%) rename instruments/{FM/percussion/(GEN) Deep Marimba.dmp => OPM/Deep Marimba.dmp} (100%) rename instruments/{other/(S16) Dog Whistle.dmp => OPM/Dog Whistle.dmp} (100%) rename instruments/{other/(S16) Donkey Kong Lead.dmp => OPM/Donkey Kong Lead.dmp} (100%) rename instruments/{FM/guitar => OPM}/Guitar Test.opm (95%) rename instruments/{FM/wind => OPM}/Harmonica.dmp (100%) rename instruments/{other/(S16) Hi-Hat Closed.dmp => OPM/Hi-Hat Closed.dmp} (100%) rename instruments/{other/(S16) Hi-Hat Open.dmp => OPM/Hi-Hat Open.dmp} (100%) rename instruments/{FM/drums => OPM}/OPM Power Snare.fui (100%) rename instruments/{FM/keys => OPM}/Organ 2 (Percussive).dmp (100%) rename instruments/{FM/keys => OPM}/Organ 3 (Rock Organ).dmp (100%) rename instruments/{FM/keys => OPM}/Organ 3 Alt (Rock Organ Alt).dmp (100%) rename instruments/{FM/keys => OPM}/Organ 5 (Percussive Variation).dmp (100%) rename instruments/{other/(S16) Perfect Square Wave + Hi-Hat Closed.dmp => OPM/Perfect Square Wave + Hi-Hat Closed.dmp} (100%) rename instruments/{other/(S16) Perfect Square Wave + Hi-Hat Open.dmp => OPM/Perfect Square Wave + Hi-Hat Open.dmp} (100%) rename instruments/{FM/keys/(GEN) Piano 2.dmp => OPM/Piano 2.dmp} (100%) rename instruments/{FM/keys => OPM}/Piano 3 (Electric Grand).dmp (100%) rename instruments/{FM/keys => OPM}/Piano Test.opm (95%) rename instruments/{other/(S16) Portal Cast.dmp => OPM/Portal Cast.dmp} (100%) rename instruments/{FM/keys => OPM}/Reed Organ or Bandoneon.dmp (100%) rename instruments/{FM/bass/(GEN) Techno Bass 2.dmp => OPM/Techno Bass 2.dmp} (100%) rename instruments/{FM/horn => OPM}/ass overtone brass.dmp (100%) rename instruments/{FM/synth => OPM}/ass-loud lead.dmp (100%) rename instruments/{FM/accordion => OPM}/brickblock369 Accordion.dmp (100%) rename instruments/{FM/keys => OPM}/brickblock369 Church Organ.dmp (100%) rename instruments/{FM/synth => OPM}/early 80s bs.dmp (100%) rename instruments/{FM/synth => OPM}/huh.dmp (100%) rename instruments/{FM/strings => OPM}/orchestal bullshit.dmp (100%) rename instruments/{FM/keys => OPM}/organ_test/Organ Test - Notes.txt (95%) rename instruments/{FM/keys => OPM}/organ_test/Organ Test.opm (95%) rename instruments/{FM/synth => OPM}/saw + whatever the fuck.dmp (100%) rename instruments/{FM/guitar => OPM}/trashy guitar.dmp (100%) rename instruments/{FM/percussion => OPM}/trashy handbells.dmp (100%) rename instruments/{FM => OPN}/accordion/Accordion.dmp (100%) rename instruments/{FM => OPN}/accordion/Harmonium.dmp (100%) rename instruments/{FM => OPN}/bass/(CH3) Double Synth.dmp (100%) rename instruments/{FM => OPN}/bass/4-OP_Vowel_Bass.fui (100%) rename instruments/{FM => OPN}/bass/4_OP_Funky_Bass.fui (100%) rename instruments/{FM => OPN}/bass/Acoustic Bass 2.dmp (100%) rename instruments/{FM => OPN}/bass/Acoustic Bass.dmp (100%) rename instruments/{FM => OPN}/bass/Algorithmic Bass.fui (100%) rename instruments/{FM/bass/(GEN) Bass Guitar 1.dmp => OPN/bass/Bass Guitar 1.dmp} (100%) rename instruments/{FM/bass/(GEN) Bass Guitar 2.dmp => OPN/bass/Bass Guitar 2.dmp} (100%) rename instruments/{FM/bass/(GEN) Bass Guitar 3.dmp => OPN/bass/Bass Guitar 3.dmp} (100%) rename instruments/{FM => OPN}/bass/Bass Guitar.dmp (100%) rename instruments/{FM => OPN}/bass/Bass.fui (100%) rename instruments/{FM => OPN}/bass/BassThing.dmp (100%) rename instruments/{FM/bass/(GEN) Common Genesis Bass.dmp => OPN/bass/Common Genesis Bass.dmp} (100%) rename instruments/{FM => OPN}/bass/Double Bass.dmp (100%) rename instruments/{FM/bass/(GEN) Electric Bass Guitar.dmp => OPN/bass/Electric Bass Guitar.dmp} (100%) rename instruments/{FM => OPN}/bass/Electric Finger Bass.dmp (100%) rename instruments/{FM => OPN}/bass/Electric Fretless Bass.dmp (100%) rename instruments/{FM => OPN}/bass/Electric Picked Bass.dmp (100%) rename instruments/{FM => OPN}/bass/Electric Slap Bass.dmp (100%) rename instruments/{FM => OPN}/bass/FM-Bass-2.dmp (100%) rename instruments/{FM => OPN}/bass/FM_Bass.dmp (100%) rename instruments/{FM => OPN}/bass/FM_CriminalBass.fui (100%) rename instruments/{FM => OPN}/bass/Finger Bass.fui (100%) rename instruments/{FM/bass/OPNx_FingerBass.fui => OPN/bass/FingerBass.fui} (100%) rename instruments/{FM => OPN}/bass/GEMSLike Bass.dmp (100%) rename instruments/{FM/bass/(GEN) Growl Bass.dmp => OPN/bass/Growl Bass.dmp} (100%) rename instruments/{FM/bass/(GEN) Heavy Electric Bass.dmp => OPN/bass/Heavy Electric Bass.dmp} (100%) rename instruments/{FM => OPN}/bass/House_Bass.fui (100%) rename instruments/{FM => OPN}/bass/Levin Bass.dmp (100%) rename instruments/{FM/bass/(GEN) Low Piano.dmp => OPN/bass/Low Piano.dmp} (100%) rename instruments/{FM/bass/(GEN) Low Sax.dmp => OPN/bass/Low Sax.dmp} (100%) rename instruments/{FM/bass/(GEN) Low Square.dmp => OPN/bass/Low Square.dmp} (100%) rename instruments/{FM/bass/(GEN) Low Trumpet.dmp => OPN/bass/Low Trumpet.dmp} (100%) rename instruments/{FM => OPN}/bass/Passport Bass.dmp (100%) rename instruments/{FM => OPN}/bass/Piano Bass.dmp (100%) rename instruments/{FM/bass/OPNx_PickBass.fui => OPN/bass/PickBass.fui} (100%) rename instruments/{FM => OPN}/bass/PickMD.fui (100%) rename instruments/{FM => OPN}/bass/Power Bass.dmp (100%) rename instruments/{FM => OPN}/bass/Punch Bass.dmp (100%) rename instruments/{FM/bass/(GEN) Punch Packer.dmp => OPN/bass/Punch Packer.dmp} (100%) rename instruments/{FM => OPN}/bass/Radical Bass.dmp (100%) rename instruments/{FM => OPN}/bass/Real Bass 1.dmp (100%) rename instruments/{FM => OPN}/bass/Real Bass 2.dmp (100%) rename instruments/{FM => OPN}/bass/Resonant Bass.dmp (100%) rename instruments/{FM/bass/(GEN) Rounded Saw.dmp => OPN/bass/Rounded Saw.dmp} (100%) rename instruments/{FM => OPN}/bass/SC-55 Synth Bass 1.dmp (100%) rename instruments/{FM => OPN}/bass/SC-55 SynthBass101.dmp (100%) rename instruments/{FM/bass/(GEN) Slap Bass 1.dmp => OPN/bass/Slap Bass 1.dmp} (100%) rename instruments/{FM/bass/(GEN) Slap Bass 2.dmp => OPN/bass/Slap Bass 2.dmp} (100%) rename instruments/{FM/bass/(GEN) Slap Bass 3.dmp => OPN/bass/Slap Bass 3.dmp} (100%) rename instruments/{FM => OPN}/bass/Slap Bass.dmp (100%) rename instruments/{FM => OPN}/bass/Slap Bass.fui (100%) rename instruments/{FM/bass/(GEN) Space Synth.dmp => OPN/bass/Space Synth.dmp} (100%) rename instruments/{FM => OPN}/bass/Spooky Bass.dmp (100%) rename instruments/{FM => OPN}/bass/Squire Bass.dmp (100%) rename instruments/{FM => OPN}/bass/Sublime Bass.dmp (100%) rename instruments/{FM/bass/(GEN) Sunsoft Slap Bass.dmp => OPN/bass/Sunsoft Slap Bass.dmp} (100%) rename instruments/{FM/bass/(GEN) Synth.dmp => OPN/bass/Synth.dmp} (100%) rename instruments/{FM/bass/(GEN) Techno Bass 1.dmp => OPN/bass/Techno Bass 1.dmp} (100%) rename instruments/{FM/bass/(GEN) Thiel Bass.dmp => OPN/bass/Thiel Bass.dmp} (100%) rename instruments/{FM/bass/(GEN) Tuba 1.dmp => OPN/bass/Tuba 1.dmp} (100%) rename instruments/{FM/bass/(GEN) Tuba 2.dmp => OPN/bass/Tuba 2.dmp} (100%) rename instruments/{FM/bass/(GEN) Twang.dmp => OPN/bass/Twang.dmp} (100%) rename instruments/{FM/bass/(GEN) VRC7 Bass.dmp => OPN/bass/VRC7 Bass.dmp} (100%) rename instruments/{FM => OPN}/bass/Yamaha MU Synth Bass 2.dmp (100%) rename instruments/{FM => OPN}/bass/algobass.dmp (100%) rename instruments/{FM => OPN}/bass/bass1.fui (100%) rename instruments/{FM => OPN}/bass/bass2.fui (100%) rename instruments/{FM => OPN}/bass/bass3.fui (100%) rename instruments/{FM => OPN}/bass/bass4.fui (100%) rename instruments/{FM => OPN}/bass/bass5.fui (100%) rename instruments/{FM => OPN}/bass/bass6.fui (100%) rename instruments/{FM => OPN}/bass/bass_acoustic_00.fui (100%) rename instruments/{FM => OPN}/bass/bass_electric_00.fui (100%) rename instruments/{FM => OPN}/bass/bass_electric_01.fui (100%) rename instruments/{FM => OPN}/bass/bass_electric_02.fui (100%) rename instruments/{FM => OPN}/bass/bass_electric_03_muffled.fui (100%) rename instruments/{FM => OPN}/bass/bass_electric_04.fui (100%) rename instruments/{FM => OPN}/bass/bass_electric_05_amp.fui (100%) rename instruments/{FM => OPN}/bass/bass_growl_00_wobbly.fui (100%) rename instruments/{FM => OPN}/bass/bass_growl_01_wobbly2.fui (100%) rename instruments/{FM => OPN}/bass/bass_growl_02_wobbly3.fui (100%) rename instruments/{FM => OPN}/bass/bass_picked_00.fui (100%) rename instruments/{FM => OPN}/bass/bass_picked_01_snappy.fui (100%) rename instruments/{FM => OPN}/bass/bass_picked_02.fui (100%) rename instruments/{FM => OPN}/bass/bass_slap_00.fui (100%) rename instruments/{FM => OPN}/bass/bass_slap_01.fui (100%) rename instruments/{FM => OPN}/bass/bass_slap_02.fui (100%) rename instruments/{FM => OPN}/bass/dxbass1.dmp (100%) rename instruments/{FM => OPN}/bass/dxbass2.dmp (100%) rename instruments/{FM => OPN}/bass/dxbass3.dmp (100%) rename instruments/{FM => OPN}/bass/dxbass4.dmp (100%) rename instruments/{FM => OPN}/bass/dxbass5.dmp (100%) rename instruments/{FM => OPN}/bass/dxbass5slap.dmp (100%) rename instruments/{FM => OPN}/bass/fm_bass1.fui (100%) rename instruments/{FM => OPN}/bass/fm_bass2.fui (100%) rename instruments/{FM => OPN}/bass/fm_bass3.fui (100%) rename instruments/{FM => OPN}/bass/generic alg 0 bass.dmp (100%) rename instruments/{FM => OPN}/bass/nicco1690 Slap Bass.dmp (100%) rename instruments/{FM => OPN}/bass/opm_nestri.fui (100%) rename instruments/{FM => OPN}/bass/sonic_modbass.dmp (100%) rename instruments/{FM => OPN}/bass/tarylbass1.fui (100%) rename instruments/{FM => OPN}/bass/weird bass.dmp (100%) rename instruments/{FM => OPN}/default.fui (100%) rename instruments/{FM => OPN}/drums/4-7 Snare.fui (100%) rename instruments/{FM => OPN}/drums/909 Hat.dmp (100%) rename instruments/{FM => OPN}/drums/Compressed Clap.fui (100%) rename instruments/{FM/drums/(GEN) Crash.dmp => OPN/drums/Crash.dmp} (100%) rename instruments/{FM => OPN}/drums/Cymbal.dmp (100%) rename instruments/{FM/drums/(GEN) Double Tom.dmp => OPN/drums/Double Tom.dmp} (100%) rename instruments/{FM => OPN}/drums/Drum.fui (100%) rename instruments/{FM => OPN}/drums/GB Tom.fui (100%) rename instruments/{FM => OPN}/drums/Heavy Kick.fui (100%) rename instruments/{FM/drums/(GEN) Hi-Hat Closed.dmp => OPN/drums/Hi-Hat Closed.dmp} (100%) rename instruments/{FM/drums/(GEN) Hi-Hat Open.dmp => OPN/drums/Hi-Hat Open.dmp} (100%) rename instruments/{FM/drums/(GEN) Kick 1.dmp => OPN/drums/Kick 1.dmp} (100%) rename instruments/{FM/drums/(GEN) Kick 2.dmp => OPN/drums/Kick 2.dmp} (100%) rename instruments/{FM => OPN}/drums/Kick_B0.dmp (100%) rename instruments/{FM => OPN}/drums/Less Chrunchy Snare.dmp (100%) rename instruments/{FM/drums/(GEN) Light Snare.dmp => OPN/drums/Light Snare.dmp} (100%) rename instruments/{OPL => OPN/drums}/OPM-lowpitch-fmclap.fui (100%) rename instruments/{FM/drums/(GEN) Obvious Kick (C-5 02CC).dmp => OPN/drums/Obvious Kick (C-5 02CC).dmp} (100%) rename instruments/{FM/drums/(GEN) Obvious Ride Closed (C-5).dmp => OPN/drums/Obvious Ride Closed (C-5).dmp} (100%) rename instruments/{FM/drums/(GEN) Obvious Ride Open (C-5).dmp => OPN/drums/Obvious Ride Open (C-5).dmp} (100%) rename instruments/{FM/drums/(GEN) Obvious Snare (D#5 0299).dmp => OPN/drums/Obvious Snare (D#5 0299).dmp} (100%) rename instruments/{FM/drums/(GEN) Obvious Tom (C-5 0266, G#4 0255, E-4 0244).dmp => OPN/drums/Obvious Tom (C-5 0266, G#4 0255, E-4 0244).dmp} (100%) rename instruments/{FM => OPN}/drums/Single Clap.fui (100%) rename instruments/{FM/drums/(GEN) Snare 1.dmp => OPN/drums/Snare 1.dmp} (100%) rename instruments/{FM/drums/(GEN) Snare 2.dmp => OPN/drums/Snare 2.dmp} (100%) rename instruments/{FM/drums/(GEN) Snare 3.dmp => OPN/drums/Snare 3.dmp} (100%) rename instruments/{FM => OPN}/drums/Snare_B2.dmp (100%) rename instruments/{FM => OPN}/drums/Squishy Snare.fui (100%) rename instruments/{FM/drums/(GEN) Timpani.dmp => OPN/drums/Timpani.dmp} (100%) rename instruments/{FM/drums/(GEN) Tom.dmp => OPN/drums/Tom.dmp} (100%) rename instruments/{FM => OPN}/drums/Trap Kick.dmp (100%) rename instruments/{FM/drums/(GEN) Trap Snare Carry (C-4, 0201).dmp => OPN/drums/Trap Snare Carry (C-4, 0201).dmp} (100%) rename instruments/{FM/drums/(GEN) Trap Snare Start (D-4 023F).dmp => OPN/drums/Trap Snare Start (D-4 023F).dmp} (100%) rename instruments/{FM => OPN}/drums/Trap Snare.dmp (100%) rename instruments/{FM/drums/(GEN) Triangle.dmp => OPN/drums/Triangle.dmp} (100%) rename instruments/{FM/drums/(GEN) Wood Block.dmp => OPN/drums/Wood Block.dmp} (100%) rename instruments/{FM => OPN}/drums/[2OPHigh]HatClosed_B2.dmp (100%) rename instruments/{FM => OPN}/drums/[2OPHigh]HatOpen_B2.dmp (100%) rename instruments/{FM => OPN}/drums/crash_00.fui (100%) rename instruments/{FM => OPN}/drums/fmbigkick.fui (100%) rename instruments/{FM => OPN}/drums/fmclap.fui (100%) rename instruments/{FM => OPN}/drums/fmclap2.fui (100%) rename instruments/{FM => OPN}/drums/fmhat.fui (100%) rename instruments/{FM => OPN}/drums/fmopenhat.fui (100%) rename instruments/{FM => OPN}/drums/hihat_00.fui (100%) rename instruments/{FM => OPN}/drums/idk_something_percussion.fui (100%) rename instruments/{FM => OPN}/drums/kick_00_classic.fui (100%) rename instruments/{FM => OPN}/drums/kick_01_power.fui (100%) rename instruments/{FM => OPN}/drums/kick_02_power2.fui (100%) rename instruments/{FM => OPN}/drums/kick_03_muffled.fui (100%) rename instruments/{FM => OPN}/drums/kick_04_bassdrum.fui (100%) rename instruments/{FM => OPN}/drums/kick_05_noisy.fui (100%) rename instruments/{FM => OPN}/drums/kick_06_fat.fui (100%) rename instruments/{FM => OPN}/drums/kick_07_fat2.fui (100%) rename instruments/{FM => OPN}/drums/powersnare.fui (100%) rename instruments/{FM => OPN}/drums/snare_00_simple.fui (100%) rename instruments/{FM => OPN}/drums/snare_01_curvy.fui (100%) rename instruments/{FM => OPN}/drums/snare_02_weak.fui (100%) rename instruments/{FM => OPN}/drums/snare_03_weak2.fui (100%) rename instruments/{FM => OPN}/drums/snare_04_muffled.fui (100%) rename instruments/{FM => OPN}/drums/snare_05_intense.fui (100%) rename instruments/{FM => OPN}/drums/snareclap_G-2.fui (100%) rename instruments/{FM => OPN}/drums/thinclosedhihat.dmp (100%) rename instruments/{FM => OPN}/effect/Acoustic String Slap SFX.dmp (100%) rename instruments/{FM/effect/(GEN) Buzzer.dmp => OPN/effect/Buzzer.dmp} (100%) rename instruments/{FM/effect/(GEN) C64 Wave Combo.dmp => OPN/effect/C64 Wave Combo.dmp} (100%) rename instruments/{FM/effect/(GEN) Clap.dmp => OPN/effect/Clap.dmp} (100%) rename instruments/{FM/effect/(GEN) Clink.dmp => OPN/effect/Clink.dmp} (100%) rename instruments/{FM/effect/(GEN) Crank Turn.dmp => OPN/effect/Crank Turn.dmp} (100%) rename instruments/{FM/effect/(GEN) Decay Laser.dmp => OPN/effect/Decay Laser.dmp} (100%) rename instruments/{FM => OPN}/effect/Glide.dmp (100%) rename instruments/{FM => OPN}/effect/Heart.dmp (100%) rename instruments/{FM => OPN}/effect/Interference.dmp (100%) rename instruments/{FM/effect/(GEN) Laser Gun.dmp => OPN/effect/Laser Gun.dmp} (100%) rename instruments/{FM/effect/(GEN) Laser.dmp => OPN/effect/Laser.dmp} (100%) rename instruments/{FM/effect/(GEN) Lightning Bolt.dmp => OPN/effect/Lightning Bolt.dmp} (100%) rename instruments/{FM => OPN}/effect/Ocean.dmp (100%) rename instruments/{FM => OPN}/effect/Skid.dmp (100%) rename instruments/{FM => OPN}/effect/Sore Throat.dmp (100%) rename instruments/{FM/effect/(GEN) TV Static.dmp => OPN/effect/TV Static.dmp} (100%) rename instruments/{FM/effect/(GEN) Techno TL Pitch Slider.dmp => OPN/effect/Techno TL Pitch Slider.dmp} (100%) rename instruments/{FM/effect/(GEN) Thunder Strike.dmp => OPN/effect/Thunder Strike.dmp} (100%) rename instruments/{FM/effect/(GEN) U.F.O.dmp => OPN/effect/U.F.O.dmp} (100%) rename instruments/{FM/effect/GEN_Wind.fui => OPN/effect/Wind.fui} (100%) rename instruments/{FM => OPN}/effect/[2OPLow]Analog Horror 1.dmp (100%) rename instruments/{FM => OPN}/effect/[2OPLow]Analog Horror 2.dmp (100%) rename instruments/{FM => OPN}/effect/fm_propeller.fui (100%) rename instruments/{FM/effect/GEN_weird.fui => OPN/effect/weird.fui} (100%) rename instruments/{FM => OPN}/effect/white nosie.dmp (100%) rename instruments/{FM => OPN}/guitar/(CH3) Double Guitar.dmp (100%) rename instruments/{FM => OPN}/guitar/Acoustic Guitar.dmp (100%) rename instruments/{FM => OPN}/guitar/Acoustic Nylon Guitar.dmp (100%) rename instruments/{FM => OPN}/guitar/Acoustic Steel Guitar.dmp (100%) rename instruments/{FM => OPN}/guitar/Banjo (Muted).opni (100%) rename instruments/{FM/guitar/(GEN) Banjo.dmp => OPN/guitar/Banjo.dmp} (100%) rename instruments/{FM => OPN}/guitar/Banjo.opni (100%) rename instruments/{FM => OPN}/guitar/Distorted Guitar 1.dmp (100%) rename instruments/{FM => OPN}/guitar/Distorted Guitar 2.dmp (100%) rename instruments/{FM => OPN}/guitar/Electric Clean Guitar.dmp (100%) rename instruments/{FM => OPN}/guitar/Electric Distorted Guitar (High).dmp (100%) rename instruments/{FM => OPN}/guitar/Electric Distorted Guitar (Low).dmp (100%) rename instruments/{FM => OPN}/guitar/Electric Funk Guitar.dmp (100%) rename instruments/{FM/guitar/(GEN) Electric Guitar 1.dmp => OPN/guitar/Electric Guitar 1.dmp} (100%) rename instruments/{FM/guitar/(GEN) Electric Guitar 2.dmp => OPN/guitar/Electric Guitar 2.dmp} (100%) rename instruments/{FM/guitar/(GEN) Electric Guitar 3.dmp => OPN/guitar/Electric Guitar 3.dmp} (100%) rename instruments/{FM/guitar/(GEN) Electric Guitar EX.dmp => OPN/guitar/Electric Guitar EX.dmp} (100%) rename instruments/{FM => OPN}/guitar/Electric Guitar Harmonics.dmp (100%) rename instruments/{FM => OPN}/guitar/Electric Jazz Guitar.dmp (100%) rename instruments/{FM => OPN}/guitar/Electric Lap Guitar.dmp (100%) rename instruments/{FM => OPN}/guitar/Electric Muted Guitar.dmp (100%) rename instruments/{FM => OPN}/guitar/Electric Overdriven Guitar (High).dmp (100%) rename instruments/{FM => OPN}/guitar/Electric Overdriven Guitar (Low).dmp (100%) rename instruments/{FM/guitar/OPNx_ElectricGuitar.fui => OPN/guitar/ElectricGuitar.fui} (100%) rename instruments/{FM => OPN}/guitar/Funk Guitar.fui (100%) rename instruments/{FM => OPN}/guitar/Gardenshroom.dmp (100%) rename instruments/{FM/guitar/(GEN) Grunge.dmp => OPN/guitar/Grunge.dmp} (100%) rename instruments/{FM/guitar/(GEN) Guitar.dmp => OPN/guitar/Guitar.dmp} (100%) rename instruments/{FM => OPN}/guitar/Hard Guitar.fui (100%) rename instruments/{FM => OPN}/guitar/Koto.opni (100%) rename instruments/{FM => OPN}/guitar/Oud.opni (100%) rename instruments/{FM/guitar/(GEN) Rough Sitar.dmp => OPN/guitar/Rough Sitar.dmp} (100%) rename instruments/{FM => OPN}/guitar/SSGuitar_A2.dmp (100%) rename instruments/{FM => OPN}/guitar/SSGuitar_B2.dmp (100%) rename instruments/{FM => OPN}/guitar/SSGuitar_F#2.dmp (100%) rename instruments/{FM => OPN}/guitar/SSGuitar_G2.dmp (100%) rename instruments/{FM => OPN}/guitar/Shamisen (Regular Pluck).opni (100%) rename instruments/{FM => OPN}/guitar/Shamisen (Tsugaru Slap).opni (100%) rename instruments/{FM/guitar/(GEN) Shamisen.dmp => OPN/guitar/Shamisen.dmp} (100%) rename instruments/{FM/guitar/(GEN) Sitar.dmp => OPN/guitar/Sitar.dmp} (100%) rename instruments/{FM => OPN}/guitar/Sitar.opni (100%) rename instruments/{FM/guitar/(GEN) Space Sitar.dmp => OPN/guitar/Space Sitar.dmp} (100%) rename instruments/{FM => OPN}/guitar/Spanish Guitar.dmp (100%) rename instruments/{FM => OPN}/guitar/Tamboura (Bass Sitar).opni (100%) rename instruments/{FM => OPN}/guitar/Ukulele.dmp (100%) rename instruments/{FM => OPN}/guitar/YM2151_DistGuitar.fui (100%) rename instruments/{FM => OPN}/guitar/distguitar_00.fui (100%) rename instruments/{FM => OPN}/guitar/high guitar.dmp (100%) rename instruments/{FM => OPN}/guitar/powerchord.fui (100%) rename instruments/{FM => OPN}/guitar/sine distorted guitar.dmp (100%) rename instruments/{FM => OPN}/horn/(CH3) Trumpet + Echo.dmp (100%) rename instruments/{FM/horn/(GEN) Dubious Trumpet.dmp => OPN/horn/Dubious Trumpet.dmp} (100%) rename instruments/{FM => OPN}/horn/FM Brass.dmp (100%) rename instruments/{FM/horn/(GEN) Ringing Trumpet.dmp => OPN/horn/Ringing Trumpet.dmp} (100%) rename instruments/{FM => OPN}/horn/Saw Trumpet.dmp (100%) rename instruments/{FM/horn/OPNx_SynthBrass.fui => OPN/horn/SynthBrass.fui} (100%) rename instruments/{FM/horn/(GEN) Trumpet 1.dmp => OPN/horn/Trumpet 1.dmp} (100%) rename instruments/{FM/horn/(GEN) Trumpet 2.dmp => OPN/horn/Trumpet 2.dmp} (100%) rename instruments/{FM/horn/(GEN) Trumpet 3.dmp => OPN/horn/Trumpet 3.dmp} (100%) rename instruments/{FM/horn/(GEN) Trumpet EX.dmp => OPN/horn/Trumpet EX.dmp} (100%) rename instruments/{FM => OPN}/horn/Trumpet.dmp (100%) rename instruments/{FM/horn/GEN_Tuba.fui => OPN/horn/Tuba.fui} (100%) rename instruments/{FM/horn/(GEN) VRC7 Trumpet.dmp => OPN/horn/VRC7 Trumpet.dmp} (100%) rename instruments/{FM => OPN}/horn/brass_00_wobbly.fui (100%) rename instruments/{FM => OPN}/horn/brass_01_bassish.fui (100%) rename instruments/{FM => OPN}/horn/brass_02_boring.fui (100%) rename instruments/{FM => OPN}/horn/brass_03_boring2.fui (100%) rename instruments/{FM => OPN}/keys/(CH3) Double Piano.dmp (100%) rename instruments/{FM => OPN}/keys/(CH3) Double Reed Organ.dmp (100%) rename instruments/{FM => OPN}/keys/Bite Organ.dmp (100%) rename instruments/{FM => OPN}/keys/Celesta (High).dmp (100%) rename instruments/{FM => OPN}/keys/Celesta (Low).dmp (100%) rename instruments/{FM/keys/(GEN) Church Organ.dmp => OPN/keys/Church Organ (2).dmp} (100%) rename instruments/{FM => OPN}/keys/Church Organ.dmp (100%) rename instruments/{FM => OPN}/keys/Circus Organ.fui (100%) rename instruments/{FM => OPN}/keys/Clavinet.dmp (100%) rename instruments/{FM => OPN}/keys/Creep Organ.dmp (100%) rename instruments/{FM => OPN}/keys/E. Piano 1 (Rhodes).dmp (100%) rename instruments/{FM => OPN}/keys/E. Piano 2 (DX).dmp (100%) rename instruments/{FM => OPN}/keys/ElisOrgan.fui (100%) rename instruments/{FM => OPN}/keys/Harpsichord.dmp (100%) rename instruments/{FM => OPN}/keys/Less Soft E Piano.dmp (100%) rename instruments/{FM => OPN}/keys/Low Piano.dmp (100%) rename instruments/{FM => OPN}/keys/Organ 1 (Drawbar).dmp (100%) rename instruments/{FM => OPN}/keys/Organ.dmp (100%) rename instruments/{FM => OPN}/keys/Piano 1 (Acoustic).dmp (100%) rename instruments/{FM/keys/(GEN) Piano 1.dmp => OPN/keys/Piano 1.dmp} (100%) rename instruments/{FM => OPN}/keys/Piano 2 (Bright Acoustic).dmp (100%) rename instruments/{FM/keys/OPNx_Piano.fui => OPN/keys/Piano.fui} (100%) rename instruments/{FM => OPN}/keys/PianoMD.fui (100%) rename instruments/{FM/keys/(GEN) Reed Organ.dmp => OPN/keys/Reed Organ.dmp} (100%) rename instruments/{FM => OPN}/keys/Rock Organ.dmp (100%) rename instruments/{FM/keys/(GEN) Short Piano.dmp => OPN/keys/Short Piano.dmp} (100%) rename instruments/{FM => OPN}/keys/Soft E Piano.dmp (100%) rename instruments/{FM/keys/(GEN) Space Piano.dmp => OPN/keys/Space Piano.dmp} (100%) rename instruments/{FM => OPN}/keys/Sparksichord.dmp (100%) rename instruments/{FM/keys/(GEN) Spoopy Organ.dmp => OPN/keys/Spoopy Organ.dmp} (100%) rename instruments/{FM/keys/(GEN) VRC7 Reed Organ.dmp => OPN/keys/VRC7 Reed Organ.dmp} (100%) rename instruments/{FM => OPN}/keys/YM2151_E-PIANO.fui (100%) rename instruments/{FM => OPN}/keys/brickblock369 Harpsichord.dmp (100%) rename instruments/{FM => OPN}/keys/fmpiano.fui (100%) rename instruments/{FM => OPN}/keys/harpsisine.dmp (100%) rename instruments/{FM => OPN}/keys/nicco1690 Church Organ.dmp (100%) rename instruments/{FM => OPN}/percussion/(CH3) Double Metalliphone.dmp (100%) rename instruments/{FM => OPN}/percussion/(CH3) Double Steel Drum.dmp (100%) rename instruments/{FM => OPN}/percussion/(CH3) Double Xylophone.dmp (100%) rename instruments/{FM => OPN}/percussion/Agogo or Cowbell.dmp (100%) rename instruments/{FM => OPN}/percussion/BellMD.fui (100%) rename instruments/{FM => OPN}/percussion/Bell_Oct4-7.dmp (100%) rename instruments/{FM/percussion/(GEN) Bongo.dmp => OPN/percussion/Bongo.dmp} (100%) rename instruments/{FM/percussion/(GEN) Chime.dmp => OPN/percussion/Chime.dmp} (100%) rename instruments/{FM => OPN}/percussion/ChurchBell.fui (100%) rename instruments/{FM/percussion/(GEN) Cowbell.dmp => OPN/percussion/Cowbell.dmp} (100%) rename instruments/{FM => OPN}/percussion/Cowbell_F#5.dmp (100%) rename instruments/{FM => OPN}/percussion/Dangerously Cheap Timpani.fui (100%) rename instruments/{FM => OPN}/percussion/Dulcimer.dmp (100%) rename instruments/{FM => OPN}/percussion/Glockenspiel.dmp (100%) rename instruments/{FM => OPN}/percussion/Kalimba.dmp (100%) rename instruments/{FM => OPN}/percussion/Kalimba.fui (100%) rename instruments/{FM/percussion/(GEN) Marimba.dmp => OPN/percussion/Marimba (2).dmp} (100%) rename instruments/{FM => OPN}/percussion/Marimba.dmp (100%) rename instruments/{FM => OPN}/percussion/Marimba.fui (100%) rename instruments/{FM/percussion/(GEN) Metalliphone.dmp => OPN/percussion/Metalliphone.dmp} (100%) rename instruments/{FM => OPN}/percussion/Music Box.dmp (100%) rename instruments/{FM => OPN}/percussion/MusicBox.fui (100%) rename instruments/{FM/percussion/OPN_-_Music_Box.fui => OPN/percussion/Music_Box.fui} (100%) create mode 100644 instruments/OPN/percussion/OPM-lowpitch-fmclap.fui rename instruments/{FM => OPN}/percussion/Peck.dmp (100%) rename instruments/{FM => OPN}/percussion/Realistic Bell.dmp (100%) rename instruments/{FM/percussion/(GEN) Short Bongo.dmp => OPN/percussion/Short Bongo.dmp} (100%) rename instruments/{FM/percussion/(GEN) Space Chime.dmp => OPN/percussion/Space Chime.dmp} (100%) rename instruments/{FM/percussion/(GEN) Space Marimba.dmp => OPN/percussion/Space Marimba.dmp} (100%) rename instruments/{FM/percussion/(GEN) Steel Drum.dmp => OPN/percussion/Steel Drum (2).dmp} (100%) rename instruments/{FM => OPN}/percussion/Steel Drum.dmp (100%) rename instruments/{FM => OPN}/percussion/Timpani.dmp (100%) rename instruments/{FM => OPN}/percussion/Tubular Bells.dmp (100%) rename instruments/{FM/percussion/(GEN) VRC7 Chime.dmp => OPN/percussion/VRC7 Chime.dmp} (100%) rename instruments/{FM/percussion/(GEN) VRC7 Marimba.dmp => OPN/percussion/VRC7 Marimba.dmp} (100%) rename instruments/{FM/percussion/(GEN) VRC7 Metalliphone.dmp => OPN/percussion/VRC7 Metalliphone.dmp} (100%) rename instruments/{FM/percussion/(GEN) VRC7 Soft Hestian.dmp => OPN/percussion/VRC7 Soft Hestian.dmp} (100%) rename instruments/{FM => OPN}/percussion/VRC7 Vibraphone.dmp (100%) rename instruments/{FM/percussion/(GEN) VRC7 Xylophone.dmp => OPN/percussion/VRC7 Xylophone.dmp} (100%) rename instruments/{FM => OPN}/percussion/Vibraphone.dmp (100%) rename instruments/{FM/percussion/(GEN) Xylophone 1.dmp => OPN/percussion/Xylophone 1.dmp} (100%) rename instruments/{FM/percussion/(GEN) Xylophone 2.dmp => OPN/percussion/Xylophone 2.dmp} (100%) rename instruments/{FM => OPN}/percussion/Xylophone.dmp (100%) rename instruments/{FM => OPN}/percussion/agogo.fui (100%) rename instruments/{FM => OPN}/percussion/alg 7 bongoes.dmp (100%) rename instruments/{FM => OPN}/percussion/bell_00_glockenspiel.fui (100%) rename instruments/{FM => OPN}/percussion/bell_01_glockenspiel_echoing.fui (100%) rename instruments/{FM => OPN}/percussion/bell_02_glockenspiel_wobbly.fui (100%) rename instruments/{FM => OPN}/percussion/brickblock369 Glockenspiel.dmp (100%) rename instruments/{FM => OPN}/percussion/brickblock369 Steel Drum.dmp (100%) rename instruments/{FM => OPN}/percussion/brickblock369 Timpani.dmp (100%) rename instruments/{FM => OPN}/percussion/fm_cowbell.fui (100%) rename instruments/{FM => OPN}/percussion/octave_8_bell.fui (100%) rename instruments/{FM => OPN}/strings/(CH3) Double Viola.dmp (100%) rename instruments/{FM/strings/OPNx_5thsPad.fui => OPN/strings/5thsPad.fui} (100%) rename instruments/{FM/strings/(GEN) Choir.dmp => OPN/strings/Choir.dmp} (100%) rename instruments/{FM => OPN}/strings/Earthbound Strings.dmp (100%) rename instruments/{FM => OPN}/strings/Enchant.dmp (100%) rename instruments/{FM => OPN}/strings/Ethereal Something.dmp (100%) rename instruments/{FM/strings/(GEN) Fiddle.dmp => OPN/strings/Fiddle.dmp} (100%) rename instruments/{FM => OPN}/strings/Fifths Pad.dmp (100%) rename instruments/{FM => OPN}/strings/Fifths Type Beat.dmp (100%) rename instruments/{FM => OPN}/strings/Pad.dmp (100%) rename instruments/{FM/strings/(GEN) Rapid Fiddle.dmp => OPN/strings/Rapid Fiddle.dmp} (100%) rename instruments/{FM => OPN}/strings/SSGPad.dmp (100%) rename instruments/{FM => OPN}/strings/Sawsine pad.dmp (100%) rename instruments/{FM => OPN}/strings/Slow Strings.fui (100%) rename instruments/{FM/strings/(GEN) Space Violin.dmp => OPN/strings/Space Violin.dmp} (100%) rename instruments/{FM/strings/OPNx_String.fui => OPN/strings/String.fui} (100%) rename instruments/{FM/strings/(GEN) VRC7 Strings.dmp => OPN/strings/VRC7 Strings.dmp} (100%) rename instruments/{FM/strings/(GEN) VRC7 Viola.dmp => OPN/strings/VRC7 Viola.dmp} (100%) rename instruments/{FM/strings/(GEN) Violin 1.dmp => OPN/strings/Violin 1.dmp} (100%) rename instruments/{FM/strings/(GEN) Violin 2.dmp => OPN/strings/Violin 2.dmp} (100%) rename instruments/{FM => OPN}/strings/Violin.fui (100%) rename instruments/{FM => OPN}/strings/ViolinMD.fui (100%) rename instruments/{FM => OPN}/strings/strings_00.fui (100%) rename instruments/{FM => OPN}/synth/(CH3) Double Ambience.dmp (100%) rename instruments/{FM => OPN}/synth/(CH3) Double Choir.dmp (100%) rename instruments/{FM => OPN}/synth/(CH3) Double Rounded Square.dmp (100%) rename instruments/{FM => OPN}/synth/(CH3) Saw & Organ.dmp (100%) rename instruments/{FM => OPN}/synth/(CH3) Sine Chord.dmp (100%) rename instruments/{FM => OPN}/synth/(CH3) Synth with Light Snare.dmp (100%) rename instruments/{FM/synth/(GEN) 1 16 Pulse.dmp => OPN/synth/1 16 Pulse.dmp} (100%) rename instruments/{FM/synth/(GEN) 1 4 Pulse.dmp => OPN/synth/1 4 Pulse.dmp} (100%) rename instruments/{FM/synth/(GEN) 1 8 Pulse.dmp => OPN/synth/1 8 Pulse.dmp} (100%) rename instruments/{FM/synth/(GEN) 3 16 Pulse.dmp => OPN/synth/3 16 Pulse.dmp} (100%) rename instruments/{FM/synth/(GEN) 3 8 Pulse.dmp => OPN/synth/3 8 Pulse.dmp} (100%) rename instruments/{FM/synth/(GEN) 5 16 Pulse.dmp => OPN/synth/5 16 Pulse.dmp} (100%) rename instruments/{FM/synth/(GEN) 7 16 Pulse.dmp => OPN/synth/7 16 Pulse.dmp} (100%) rename instruments/{FM => OPN}/synth/Abduction.dmp (100%) rename instruments/{FM => OPN}/synth/Altered Square.dmp (100%) rename instruments/{FM/synth/(GEN) Ambience.dmp => OPN/synth/Ambience.dmp} (100%) rename instruments/{FM => OPN}/synth/Buttermilk.dmp (100%) rename instruments/{FM/synth/(GEN) Church Hestian.dmp => OPN/synth/Church Hestian.dmp} (100%) rename instruments/{FM => OPN}/synth/Circuitbird Donk.dmp (100%) rename instruments/{FM => OPN}/synth/Cricket Chorus.fui (100%) rename instruments/{FM/synth/(GEN) Cutoff.dmp => OPN/synth/Cutoff.dmp} (100%) rename instruments/{FM => OPN}/synth/Desert Synth.dmp (100%) rename instruments/{FM/synth/(GEN) Distorted Hestian.dmp => OPN/synth/Distorted Hestian.dmp} (100%) rename instruments/{FM => OPN}/synth/Ecco.dmp (100%) rename instruments/{FM => OPN}/synth/FM_noname1.fui (100%) rename instruments/{FM => OPN}/synth/Guess.dmp (100%) rename instruments/{FM/synth/(GEN) Hestian.dmp => OPN/synth/Hestian.dmp} (100%) rename instruments/{FM/synth/(GEN) High Hestian.dmp => OPN/synth/High Hestian.dmp} (100%) rename instruments/{FM/synth/(GEN) Hyperspeed Decay Sine.dmp => OPN/synth/Hyperspeed Decay Sine.dmp} (100%) rename instruments/{FM/synth/(GEN) K.K. Slider Aah.dmp => OPN/synth/K.K. Slider Aah.dmp} (100%) rename instruments/{FM/synth/(GEN) K.K. Slider Weh.dmp => OPN/synth/K.K. Slider Weh.dmp} (100%) rename instruments/{FM => OPN}/synth/Kirby SNES Synth Pad.fui (100%) rename instruments/{FM => OPN}/synth/Klax.dmp (100%) rename instruments/{FM => OPN}/synth/Kyd.dmp (100%) rename instruments/{FM => OPN}/synth/Love.dmp (100%) rename instruments/{FM/synth/(GEN) Low Hestian.dmp => OPN/synth/Low Hestian.dmp} (100%) rename instruments/{FM => OPN}/synth/Metallic FM Lead.fui (100%) rename instruments/{FM/synth/(GEN) NES Triangle.dmp => OPN/synth/NES Triangle.dmp} (100%) rename instruments/{FM/synth/(GEN) Near Perfect Saw Wave.dmp => OPN/synth/Near Perfect Saw Wave.dmp} (100%) rename instruments/{FM/synth/(GEN) Near Perfect Square Wave.dmp => OPN/synth/Near Perfect Square Wave.dmp} (100%) rename instruments/{FM => OPN}/synth/Octave_Square.fui (100%) rename instruments/{FM => OPN}/synth/Octave_Square2.fui (100%) rename instruments/{FM/synth/(GEN) Perfect Saw Wave.dmp => OPN/synth/Perfect Saw Wave.dmp} (100%) rename instruments/{FM/synth/(GEN) Perfect Square Wave.dmp => OPN/synth/Perfect Square Wave.dmp} (100%) rename instruments/{FM/synth/(GEN) Perfect Triangle Wave.dmp => OPN/synth/Perfect Triangle Wave.dmp} (100%) rename instruments/{FM/synth/(GEN) Rattling Hestian.dmp => OPN/synth/Rattling Hestian.dmp} (100%) rename instruments/{FM => OPN}/synth/Reverby_Live_Chords.fui (100%) rename instruments/{FM/synth/(GEN) Rough Hestian.dmp => OPN/synth/Rough Hestian.dmp} (100%) rename instruments/{FM/synth/(GEN) Rough Square.dmp => OPN/synth/Rough Square.dmp} (100%) rename instruments/{FM/synth/(GEN) Rounded Square.dmp => OPN/synth/Rounded Square.dmp} (100%) rename instruments/{FM => OPN}/synth/RustEcho.dmp (100%) rename instruments/{FM/synth/(GEN) Saw Malleable.dmp => OPN/synth/Saw Malleable.dmp} (100%) rename instruments/{FM => OPN}/synth/Saw.dmp (100%) rename instruments/{FM/synth/(GEN) Sharp Saw.dmp => OPN/synth/Sharp Saw.dmp} (100%) rename instruments/{FM => OPN}/synth/Signal.dmp (100%) rename instruments/{FM/synth/(GEN) Sine Growl.dmp => OPN/synth/Sine Growl.dmp} (100%) rename instruments/{FM => OPN}/synth/Space Cowboy.dmp (100%) rename instruments/{FM/synth/(GEN) Space Hestian.dmp => OPN/synth/Space Hestian.dmp} (100%) rename instruments/{FM/synth/(GEN) Space Organ.dmp => OPN/synth/Space Organ.dmp} (100%) rename instruments/{FM/synth/(GEN) Space Saw.dmp => OPN/synth/Space Saw.dmp} (100%) rename instruments/{FM => OPN}/synth/Space Shredder.dmp (100%) rename instruments/{FM/synth/(GEN) Sparkle.dmp => OPN/synth/Sparkle.dmp} (100%) rename instruments/{FM/synth/(GEN) Spoopy.dmp => OPN/synth/Spoopy.dmp} (100%) rename instruments/{FM/synth/(GEN) Square Wave.dmp => OPN/synth/Square Wave.dmp} (100%) rename instruments/{FM => OPN}/synth/Square.dmp (100%) rename instruments/{FM => OPN}/synth/Square.fui (100%) rename instruments/{FM => OPN}/synth/Squid.dmp (100%) rename instruments/{FM/synth/(GEN) Synth with Closed Hi-Hat.dmp => OPN/synth/Synth with Closed Hi-Hat.dmp} (100%) rename instruments/{FM/synth/(GEN) Synth with Open Hi-Hat.dmp => OPN/synth/Synth with Open Hi-Hat.dmp} (100%) rename instruments/{FM => OPN}/synth/Thin.dmp (100%) rename instruments/{FM => OPN}/synth/Tri.dmp (100%) rename instruments/{FM/synth/(GEN) Twang EX.dmp => OPN/synth/Twang EX.dmp} (100%) rename instruments/{FM/synth/(GEN) Twang Whistle.dmp => OPN/synth/Twang Whistle.dmp} (100%) rename instruments/{FM => OPN}/synth/Twoah.dmp (100%) rename instruments/{FM/synth/(GEN) VRC7 Choir.dmp => OPN/synth/VRC7 Choir.dmp} (100%) rename instruments/{FM/synth/(GEN) VRC7 Hestian.dmp => OPN/synth/VRC7 Hestian.dmp} (100%) rename instruments/{FM/synth/(GEN) Wahwah.dmp => OPN/synth/Wahwah.dmp} (100%) rename instruments/{FM => OPN}/synth/[1OPHigh]Saw.dmp (100%) rename instruments/{FM => OPN}/synth/[2OPHigh]Filtered Square.dmp (100%) rename instruments/{FM => OPN}/synth/cool leaed.dmp (100%) rename instruments/{FM => OPN}/synth/fm_grinder.fui (100%) rename instruments/{FM => OPN}/synth/fm_horror.fui (100%) rename instruments/{FM => OPN}/synth/fm_noname2.fui (100%) rename instruments/{FM => OPN}/synth/fm_noname3.fui (100%) rename instruments/{FM => OPN}/synth/fm_noname4.fui (100%) rename instruments/{FM => OPN}/synth/fm_noname5.fui (100%) rename instruments/{FM => OPN}/synth/fm_noname6.fui (100%) rename instruments/{FM => OPN}/synth/fm_noname7.fui (100%) rename instruments/{FM => OPN}/synth/growl.fui (100%) rename instruments/{FM => OPN}/synth/mystic cave lead.dmp (100%) rename instruments/{FM => OPN}/synth/sawtooth.dmp (100%) rename instruments/{FM => OPN}/synth/snes-ish square.dmp (100%) rename instruments/{FM => OPN}/synth/sonic spinball toxic caves thingy.dmp (100%) rename instruments/{FM => OPN}/synth/whut.dmp (100%) rename instruments/{FM => OPN}/synth/yrwywryw.dmp (100%) rename instruments/{FM => OPN}/tfilib/banjo.tfi (100%) rename instruments/{FM => OPN}/tfilib/bass.tfi (100%) rename instruments/{FM => OPN}/tfilib/bell.tfi (100%) rename instruments/{FM => OPN}/tfilib/cymbal.tfi (100%) rename instruments/{FM => OPN}/tfilib/distbass.tfi (100%) rename instruments/{FM => OPN}/tfilib/distguit.tfi (100%) rename instruments/{FM => OPN}/tfilib/distslap.tfi (100%) rename instruments/{FM => OPN}/tfilib/elecbass.tfi (100%) rename instruments/{FM => OPN}/tfilib/fifths.tfi (100%) rename instruments/{FM => OPN}/tfilib/flute.tfi (100%) rename instruments/{FM => OPN}/tfilib/guitar.tfi (100%) rename instruments/{FM => OPN}/tfilib/harp.tfi (100%) rename instruments/{FM => OPN}/tfilib/harpsich.tfi (100%) rename instruments/{FM => OPN}/tfilib/hithat.tfi (100%) rename instruments/{FM => OPN}/tfilib/kick.tfi (100%) rename instruments/{FM => OPN}/tfilib/list.txt (100%) rename instruments/{FM => OPN}/tfilib/lyre.tfi (100%) rename instruments/{FM => OPN}/tfilib/marimba.tfi (100%) rename instruments/{FM => OPN}/tfilib/neslike.tfi (100%) rename instruments/{FM => OPN}/tfilib/ocarina.tfi (100%) rename instruments/{FM => OPN}/tfilib/organ.tfi (100%) rename instruments/{FM => OPN}/tfilib/piano.tfi (100%) rename instruments/{FM => OPN}/tfilib/sawtooth.tfi (100%) rename instruments/{FM => OPN}/tfilib/sax.tfi (100%) rename instruments/{FM => OPN}/tfilib/sine.tfi (100%) rename instruments/{FM => OPN}/tfilib/slapbass.tfi (100%) rename instruments/{FM => OPN}/tfilib/snare.tfi (100%) rename instruments/{FM => OPN}/tfilib/sofpiano.tfi (100%) rename instruments/{FM => OPN}/tfilib/softsaw.tfi (100%) rename instruments/{FM => OPN}/tfilib/softsqr.tfi (100%) rename instruments/{FM => OPN}/tfilib/square.tfi (100%) rename instruments/{FM => OPN}/tfilib/steldrum.tfi (100%) rename instruments/{FM => OPN}/tfilib/synbell.tfi (100%) rename instruments/{FM => OPN}/tfilib/tackpian.tfi (100%) rename instruments/{FM => OPN}/tfilib/timpani1.tfi (100%) rename instruments/{FM => OPN}/tfilib/timpani2.tfi (100%) rename instruments/{FM => OPN}/tfilib/toypiano.tfi (100%) rename instruments/{FM => OPN}/tfilib/triangle.tfi (100%) rename instruments/{FM => OPN}/tfilib/trumpet.tfi (100%) rename instruments/{FM => OPN}/tfilib/wooddrum.tfi (100%) rename instruments/{FM => OPN}/wind/(CH3) Double Clarinet.dmp (100%) rename instruments/{FM => OPN}/wind/(CH3) Double Flute.dmp (100%) rename instruments/{FM => OPN}/wind/(CH3) Double Woodwind.dmp (100%) rename instruments/{FM => OPN}/wind/(CH3) Quadruple Ocarina.dmp (100%) rename instruments/{FM => OPN}/wind/B'arinet.dmp (100%) rename instruments/{FM/wind/OPNx_BottleBlow.fui => OPN/wind/BottleBlow.fui} (100%) rename instruments/{FM/wind/(GEN) Clarinet.dmp => OPN/wind/Clarinet (2).dmp} (100%) rename instruments/{FM => OPN}/wind/Clarinet.dmp (100%) rename instruments/{FM/wind/(GEN) Didgeridoo.dmp => OPN/wind/Didgeridoo.dmp} (100%) rename instruments/{FM => OPN}/wind/English Horn.dmp (100%) rename instruments/{FM => OPN}/wind/FM_4OP_-_Tenor_Sax.fui (100%) rename instruments/{FM/wind/(GEN) Flute.dmp => OPN/wind/Flute (2).dmp} (100%) rename instruments/{FM => OPN}/wind/Flute.dmp (100%) rename instruments/{FM/wind/(GEN) Forest Flute.dmp => OPN/wind/Forest Flute.dmp} (100%) rename instruments/{FM/wind/(GEN) Harmonica.dmp => OPN/wind/Harmonica.dmp} (100%) rename instruments/{FM/wind/(GEN) Ocarina.dmp => OPN/wind/Ocarina.dmp} (100%) rename instruments/{FM => OPN}/wind/Pan Flute.dmp (100%) rename instruments/{FM/wind/(GEN) Saxophone EX.dmp => OPN/wind/Saxophone EX.dmp} (100%) rename instruments/{FM/wind/(GEN) Saxophone.dmp => OPN/wind/Saxophone.dmp} (100%) rename instruments/{FM => OPN}/wind/bassoon.fui (100%) rename instruments/{FM => OPN}/wind/bassoon_clarinet.fui (100%) rename instruments/{FM => OPN}/wind/fm_pipeflute.fui (100%) rename instruments/{FM => OPN}/wind/woodwind_00.fui (100%) rename instruments/{FM/bass/OPZ-Fake_Famicom_Tri.fui => OPZ/Fake_Famicom_Tri.fui} (100%) rename instruments/{FM/bass => OPZ}/Heavy_synth_bass.fui (100%) rename instruments/{other/SMS_0-2-5_arp_lead.fui => SN7/0-2-5_arp_lead.fui} (100%) rename instruments/{other/SMS_0-3-5_arp_lead.fui => SN7/0-3-5_arp_lead.fui} (100%) rename instruments/{other/(SMS) 2-Arp Chord High.dmp => SN7/2-Arp Chord High.dmp} (100%) rename instruments/{other/(SMS) 2-Arp High.dmp => SN7/2-Arp High.dmp} (100%) rename instruments/{other/(SMS) 2-Arp Major Low.dmp => SN7/2-Arp Major Low.dmp} (100%) rename instruments/{other/(SMS) 2-Arp Minor Low.dmp => SN7/2-Arp Minor Low.dmp} (100%) rename instruments/{other/(SMS) 3-Arp High.dmp => SN7/3-Arp High.dmp} (100%) rename instruments/{other/(SMS) 3-Arp Major.dmp => SN7/3-Arp Major.dmp} (100%) rename instruments/{other/(SMS) 3-Arp Minor.dmp => SN7/3-Arp Minor.dmp} (100%) rename instruments/{other/(SMS) 5-Arp Major.dmp => SN7/5-Arp Major.dmp} (100%) rename instruments/{other/(SMS) 5-Arp Minor.dmp => SN7/5-Arp Minor.dmp} (100%) rename instruments/{other/(SMS) Arp Snare.dmp => SN7/Arp Snare.dmp} (100%) rename instruments/{other/(SMS) Attack.dmp => SN7/Attack.dmp} (100%) rename instruments/{other/(SMS) Buzz Noise.dmp => SN7/Buzz Noise.dmp} (100%) rename instruments/{other/(SMS) Crash.dmp => SN7/Crash.dmp} (100%) rename instruments/{other/(SMS) Cyclic Noise.dmp => SN7/Cyclic Noise.dmp} (100%) rename instruments/{other/(SMS) Decay Noise.dmp => SN7/Decay Noise.dmp} (100%) rename instruments/{other/(SMS) Decay.dmp => SN7/Decay.dmp} (100%) rename instruments/{other/(SMS) Down Slider.dmp => SN7/Down Slider.dmp} (100%) rename instruments/{other => SN7}/Echo.fui (100%) rename instruments/{other => SN7}/Flute.fui (100%) rename instruments/{other => SN7}/Follin Guitar 2.fui (100%) rename instruments/{other => SN7}/Follin Guitar.fui (100%) rename instruments/{other => SN7}/Guitar.fui (100%) rename instruments/{other/(SMS) Hi-Hat & Note.dmp => SN7/Hi-Hat & Note.dmp} (100%) rename instruments/{other/(SMS) Hi-Hat Closed.dmp => SN7/Hi-Hat Closed.dmp} (100%) rename instruments/{other/(SMS) Hi-Hat Open.dmp => SN7/Hi-Hat Open.dmp} (100%) rename instruments/{other/(SMS) Kick Noise.dmp => SN7/Kick Noise.dmp} (100%) rename instruments/{other/(SMS) Multi Slider.dmp => SN7/Multi Slider.dmp} (100%) rename instruments/{other/(SMS) Obvious Crash.dmp => SN7/Obvious Crash.dmp} (100%) rename instruments/{other => SN7}/Octave Arp.fui (100%) rename instruments/{other/(SMS) Record Scratch Down.dmp => SN7/Record Scratch Down.dmp} (100%) rename instruments/{other/(SMS) Record Scratch Up.dmp => SN7/Record Scratch Up.dmp} (100%) rename instruments/{other/(SMS) Retrig.dmp => SN7/Retrig.dmp} (100%) rename instruments/{other/(SMS) Ride.dmp => SN7/Ride.dmp} (100%) rename instruments/{other => SN7}/SMSPerc/SMSPerc About.txt (96%) rename instruments/{other => SN7}/SMSPerc/SMSPerc ExampleInst [Hat] CH3.fui (100%) rename instruments/{other => SN7}/SMSPerc/SMSPerc ExampleInst [KickSnare] CH3.fui (100%) rename instruments/{other => SN7}/SMSPerc/SMSPerc ExampleInst [Nothing] CH3.fui (100%) rename instruments/{other => SN7}/SMSPerc/SMSPerc Hat_Closed CH4 [D].fui (100%) rename instruments/{other => SN7}/SMSPerc/SMSPerc Hat_Open CH4 [D].fui (100%) rename instruments/{other => SN7}/SMSPerc/SMSPerc Kick CH4 [C].fui (100%) rename instruments/{other => SN7}/SMSPerc/SMSPerc KickSnare CH3.fui (100%) rename instruments/{other => SN7}/SMSPerc/SMSPerc Snare CH4 [D].fui (100%) rename instruments/{other/(SMS) Snare.dmp => SN7/Snare.dmp} (100%) rename instruments/{other/(SMS) Splash.dmp => SN7/Splash.dmp} (100%) rename instruments/{other/(SMS) Thump & Note.dmp => SN7/Thump & Note.dmp} (100%) rename instruments/{other/(SMS) Tim Follin 6-Arp Fast Major.dmp => SN7/Tim Follin 6-Arp Fast Major.dmp} (100%) rename instruments/{other/(SMS) Tim Follin 6-Arp Fast Minor.dmp => SN7/Tim Follin 6-Arp Fast Minor.dmp} (100%) rename instruments/{other/(SMS) Tim Follin 6-Arp Slow Major.dmp => SN7/Tim Follin 6-Arp Slow Major.dmp} (100%) rename instruments/{other/(SMS) Tim Follin 6-Arp Slow Minor.dmp => SN7/Tim Follin 6-Arp Slow Minor.dmp} (100%) rename instruments/{other/(SMS) Tim Follin Lead.dmp => SN7/Tim Follin Lead.dmp} (100%) rename instruments/{other/(SMS) Tom A.dmp => SN7/Tom A.dmp} (100%) rename instruments/{other/(SMS) Tom B.dmp => SN7/Tom B.dmp} (100%) rename instruments/{other/(SMS) Up Slider.dmp => SN7/Up Slider.dmp} (100%) rename instruments/{other/(SMS) Variable.dmp => SN7/Variable.dmp} (100%) rename instruments/{other/(SMS) Whistle.dmp => SN7/Whistle.dmp} (100%) rename instruments/{other => SN7}/compatibility.fui (100%) rename instruments/{other/TIA Bass Drum.fui => TIA/Bass Drum.fui} (100%) rename instruments/{other/TIA Clap.fui => TIA/Clap.fui} (100%) rename instruments/{other/TIA Hi-Hat Long.fui => TIA/Hi-Hat Long.fui} (100%) rename instruments/{other/TIA Hi-Hat.fui => TIA/Hi-Hat.fui} (100%) rename instruments/{other/TIA Snare Drum.fui => TIA/Snare Drum.fui} (100%) rename instruments/{other/Supersaw.fui => TODO/(WSG) Supersaw.fui} (100%) rename instruments/{other => TODO}/FDS-oneofthosejapaneseguitarsidkhowtheyarecalledyeah.fui (100%) rename instruments/{other => TODO}/FDS-overfuckingholyshitdriven-guitar.fui (100%) rename instruments/{other => TODO}/FDS-slapassbass.fui (100%) rename instruments/{other/VERA_0-2-5_arp_lead.fui => VERA/0-2-5_arp_lead.fui} (100%) rename instruments/{other/VERA_0-3-5_arp_lead.fui => VERA/0-3-5_arp_lead.fui} (100%) rename instruments/{other/VERA_Noise_Kick.fui => VERA/Noise_Kick.fui} (100%) rename instruments/{other/VERA_Noise_Snare.fui => VERA/Noise_Snare.fui} (100%) rename instruments/{other/VIC20_kick.fui => VIC/kick.fui} (100%) delete mode 100644 instruments/other/2A03 Noise Hi-Hat Closed.fui delete mode 100644 instruments/other/2A03 Noise Hi-Hat Open.fui delete mode 100644 instruments/other/2A03 Noise Kick.fui delete mode 100644 instruments/other/2A03 Noise Snare.fui delete mode 100644 instruments/other/2A03 Triangle Kick+Bass.fui delete mode 100644 instruments/other/2A03 Triangle Kick.fui delete mode 100644 instruments/other/2A03 Triangle Snare+Bass.fui delete mode 100644 instruments/other/2A03 Triangle Snare.fui delete mode 100644 instruments/other/NES_0-2-5_arp_lead.fui delete mode 100644 instruments/other/NES_0-3-5_arp_lead.fui rename instruments/{FM/uhrwerk/arbys.dmp => uhrwerk/(OPN) arbys.dmp} (100%) rename instruments/{FM/uhrwerk/B Series/b21.dmp => uhrwerk/B Series/(OPM) b21.dmp} (100%) rename instruments/{FM/uhrwerk/B Series/b21b.dmp => uhrwerk/B Series/(OPM) b21b.dmp} (100%) rename instruments/{FM/uhrwerk/B Series/b21c.dmp => uhrwerk/B Series/(OPM) b21c.dmp} (100%) rename instruments/{FM/uhrwerk/B Series/b00.dmp => uhrwerk/B Series/(OPN) b00.dmp} (100%) rename instruments/{FM/uhrwerk/B Series/b00a.dmp => uhrwerk/B Series/(OPN) b00a.dmp} (100%) rename instruments/{FM/uhrwerk/B Series/b00b.dmp => uhrwerk/B Series/(OPN) b00b.dmp} (100%) rename instruments/{FM/uhrwerk/B Series/b01.dmp => uhrwerk/B Series/(OPN) b01.dmp} (100%) rename instruments/{FM/uhrwerk/B Series/b01b.dmp => uhrwerk/B Series/(OPN) b01b.dmp} (100%) rename instruments/{FM/uhrwerk/B Series/b02.dmp => uhrwerk/B Series/(OPN) b02.dmp} (100%) rename instruments/{FM/uhrwerk/B Series/b02b.dmp => uhrwerk/B Series/(OPN) b02b.dmp} (100%) rename instruments/{FM/uhrwerk/B Series/b02c MUTE.dmp => uhrwerk/B Series/(OPN) b02c MUTE.dmp} (100%) rename instruments/{FM/uhrwerk/B Series/b02c.dmp => uhrwerk/B Series/(OPN) b02c.dmp} (100%) rename instruments/{FM/uhrwerk/B Series/b03.dmp => uhrwerk/B Series/(OPN) b03.dmp} (100%) rename instruments/{FM/uhrwerk/B Series/b04.dmp => uhrwerk/B Series/(OPN) b04.dmp} (100%) rename instruments/{FM/uhrwerk/B Series/b05.dmp => uhrwerk/B Series/(OPN) b05.dmp} (100%) rename instruments/{FM/uhrwerk/B Series/b06.dmp => uhrwerk/B Series/(OPN) b06.dmp} (100%) rename instruments/{FM/uhrwerk/B Series/b07.dmp => uhrwerk/B Series/(OPN) b07.dmp} (100%) rename instruments/{FM/uhrwerk/B Series/b08.dmp => uhrwerk/B Series/(OPN) b08.dmp} (100%) rename instruments/{FM/uhrwerk/B Series/b08b.dmp => uhrwerk/B Series/(OPN) b08b.dmp} (100%) rename instruments/{FM/uhrwerk/B Series/b08c.dmp => uhrwerk/B Series/(OPN) b08c.dmp} (100%) rename instruments/{FM/uhrwerk/B Series/b09.dmp => uhrwerk/B Series/(OPN) b09.dmp} (100%) rename instruments/{FM/uhrwerk/B Series/b10.dmp => uhrwerk/B Series/(OPN) b10.dmp} (100%) rename instruments/{FM/uhrwerk/B Series/b10b.dmp => uhrwerk/B Series/(OPN) b10b.dmp} (100%) rename instruments/{FM/uhrwerk/B Series/b11.dmp => uhrwerk/B Series/(OPN) b11.dmp} (100%) rename instruments/{FM/uhrwerk/B Series/b12.dmp => uhrwerk/B Series/(OPN) b12.dmp} (100%) rename instruments/{FM/uhrwerk/B Series/b13.dmp => uhrwerk/B Series/(OPN) b13.dmp} (100%) rename instruments/{FM/uhrwerk/B Series/b14.dmp => uhrwerk/B Series/(OPN) b14.dmp} (100%) rename instruments/{FM/uhrwerk/B Series/b15.dmp => uhrwerk/B Series/(OPN) b15.dmp} (100%) rename instruments/{FM/uhrwerk/B Series/b16.dmp => uhrwerk/B Series/(OPN) b16.dmp} (100%) rename instruments/{FM/uhrwerk/B Series/b17.dmp => uhrwerk/B Series/(OPN) b17.dmp} (100%) rename instruments/{FM/uhrwerk/B Series/b17b MUTE.dmp => uhrwerk/B Series/(OPN) b17b MUTE.dmp} (100%) rename instruments/{FM/uhrwerk/B Series/b17b SLAP (actual).dmp => uhrwerk/B Series/(OPN) b17b SLAP (actual).dmp} (100%) rename instruments/{FM/uhrwerk/B Series/b17b SLAP.dmp => uhrwerk/B Series/(OPN) b17b SLAP.dmp} (100%) rename instruments/{FM/uhrwerk/B Series/b17b.dmp => uhrwerk/B Series/(OPN) b17b.dmp} (100%) rename instruments/{FM/uhrwerk/B Series/b18 MUTE.dmp => uhrwerk/B Series/(OPN) b18 MUTE.dmp} (100%) rename instruments/{FM/uhrwerk/B Series/b18 SLAP.dmp => uhrwerk/B Series/(OPN) b18 SLAP.dmp} (100%) rename instruments/{FM/uhrwerk/B Series/b18.dmp => uhrwerk/B Series/(OPN) b18.dmp} (100%) rename instruments/{FM/uhrwerk/B Series/b19 MUTE.dmp => uhrwerk/B Series/(OPN) b19 MUTE.dmp} (100%) rename instruments/{FM/uhrwerk/B Series/b19 SLAP.dmp => uhrwerk/B Series/(OPN) b19 SLAP.dmp} (100%) rename instruments/{FM/uhrwerk/B Series/b19.dmp => uhrwerk/B Series/(OPN) b19.dmp} (100%) rename instruments/{FM/uhrwerk/B Series/b20.dmp => uhrwerk/B Series/(OPN) b20.dmp} (100%) rename instruments/{FM/uhrwerk/B Series/b22 MUTE.dmp => uhrwerk/B Series/(OPN) b22 MUTE.dmp} (100%) rename instruments/{FM/uhrwerk/B Series/b22 SLAP.dmp => uhrwerk/B Series/(OPN) b22 SLAP.dmp} (100%) rename instruments/{FM/uhrwerk/B Series/b22.dmp => uhrwerk/B Series/(OPN) b22.dmp} (100%) rename instruments/{FM/uhrwerk/B Series/b22b.dmp => uhrwerk/B Series/(OPN) b22b.dmp} (100%) rename instruments/{FM/uhrwerk/B Series/b22c MUTE.dmp => uhrwerk/B Series/(OPN) b22c MUTE.dmp} (100%) rename instruments/{FM/uhrwerk/B Series/b22c SLAP.dmp => uhrwerk/B Series/(OPN) b22c SLAP.dmp} (100%) rename instruments/{FM/uhrwerk/B Series/b22c.dmp => uhrwerk/B Series/(OPN) b22c.dmp} (100%) rename instruments/{FM/uhrwerk/B Series/b23 MUTE.dmp => uhrwerk/B Series/(OPN) b23 MUTE.dmp} (100%) rename instruments/{FM/uhrwerk/B Series/b23 SLAP.dmp => uhrwerk/B Series/(OPN) b23 SLAP.dmp} (100%) rename instruments/{FM/uhrwerk/B Series/b23.dmp => uhrwerk/B Series/(OPN) b23.dmp} (100%) rename instruments/{FM/uhrwerk/B Series/b69.dmp => uhrwerk/B Series/(OPN) b69.dmp} (100%) rename instruments/{FM/uhrwerk/P Series/p11.dmp => uhrwerk/P Series/(OPM) p11.dmp} (100%) rename instruments/{FM/uhrwerk/P Series/p01.dmp => uhrwerk/P Series/(OPN) p01.dmp} (100%) rename instruments/{FM/uhrwerk/P Series/p01b.dmp => uhrwerk/P Series/(OPN) p01b.dmp} (100%) rename instruments/{FM/uhrwerk/P Series/p02.dmp => uhrwerk/P Series/(OPN) p02.dmp} (100%) rename instruments/{FM/uhrwerk/P Series/p02b.dmp => uhrwerk/P Series/(OPN) p02b.dmp} (100%) rename instruments/{FM/uhrwerk/P Series/p03.dmp => uhrwerk/P Series/(OPN) p03.dmp} (100%) rename instruments/{FM/uhrwerk/P Series/p03b.dmp => uhrwerk/P Series/(OPN) p03b.dmp} (100%) rename instruments/{FM/uhrwerk/P Series/p04.dmp => uhrwerk/P Series/(OPN) p04.dmp} (100%) rename instruments/{FM/uhrwerk/P Series/p05.dmp => uhrwerk/P Series/(OPN) p05.dmp} (100%) rename instruments/{FM/uhrwerk/P Series/p06.dmp => uhrwerk/P Series/(OPN) p06.dmp} (100%) rename instruments/{FM/uhrwerk/P Series/p06b.dmp => uhrwerk/P Series/(OPN) p06b.dmp} (100%) rename instruments/{FM/uhrwerk/P Series/p06c.dmp => uhrwerk/P Series/(OPN) p06c.dmp} (100%) rename instruments/{FM/uhrwerk/P Series/p07.dmp => uhrwerk/P Series/(OPN) p07.dmp} (100%) rename instruments/{FM/uhrwerk/P Series/p08.dmp => uhrwerk/P Series/(OPN) p08.dmp} (100%) rename instruments/{FM/uhrwerk/P Series/p09.dmp => uhrwerk/P Series/(OPN) p09.dmp} (100%) rename instruments/{FM/uhrwerk/P Series/p10.dmp => uhrwerk/P Series/(OPN) p10.dmp} (100%) rename instruments/{FM/uhrwerk/P Series/p10b.dmp => uhrwerk/P Series/(OPN) p10b.dmp} (100%) rename instruments/{FM/uhrwerk/R Series/r27.dmp => uhrwerk/R Series/(OPM) r27.dmp} (100%) rename instruments/{FM/uhrwerk/R Series/act 1 void of space.dmp => uhrwerk/R Series/(OPN) act 1 void of space.dmp} (100%) rename instruments/{FM/uhrwerk/R Series/r10.dmp => uhrwerk/R Series/(OPN) r10.dmp} (100%) rename instruments/{FM/uhrwerk/R Series/r10b.dmp => uhrwerk/R Series/(OPN) r10b.dmp} (100%) rename instruments/{FM/uhrwerk/R Series/r11.dmp => uhrwerk/R Series/(OPN) r11.dmp} (100%) rename instruments/{FM/uhrwerk/R Series/r12.dmp => uhrwerk/R Series/(OPN) r12.dmp} (100%) rename instruments/{FM/uhrwerk/R Series/r13.dmp => uhrwerk/R Series/(OPN) r13.dmp} (100%) rename instruments/{FM/uhrwerk/R Series/r14.dmp => uhrwerk/R Series/(OPN) r14.dmp} (100%) rename instruments/{FM/uhrwerk/R Series/r15.dmp => uhrwerk/R Series/(OPN) r15.dmp} (100%) rename instruments/{FM/uhrwerk/R Series/r16.dmp => uhrwerk/R Series/(OPN) r16.dmp} (100%) rename instruments/{FM/uhrwerk/R Series/r2.dmp => uhrwerk/R Series/(OPN) r2.dmp} (100%) rename instruments/{FM/uhrwerk/R Series/r3.dmp => uhrwerk/R Series/(OPN) r3.dmp} (100%) rename instruments/{FM/uhrwerk/R Series/r33.dmp => uhrwerk/R Series/(OPN) r33.dmp} (100%) rename instruments/{FM/uhrwerk/R Series/r4.dmp => uhrwerk/R Series/(OPN) r4.dmp} (100%) rename instruments/{FM/uhrwerk/R Series/r5.dmp => uhrwerk/R Series/(OPN) r5.dmp} (100%) rename instruments/{FM/uhrwerk/R Series/r65.dmp => uhrwerk/R Series/(OPN) r65.dmp} (100%) rename instruments/{FM/uhrwerk/R Series/r6b.dmp => uhrwerk/R Series/(OPN) r6b.dmp} (100%) rename instruments/{FM/uhrwerk/R Series/r7.dmp => uhrwerk/R Series/(OPN) r7.dmp} (100%) rename instruments/{FM/uhrwerk/R Series/r7b.dmp => uhrwerk/R Series/(OPN) r7b.dmp} (100%) rename instruments/{FM/uhrwerk/R Series/r7c.dmp => uhrwerk/R Series/(OPN) r7c.dmp} (100%) rename instruments/{FM/uhrwerk/R Series/r8.dmp => uhrwerk/R Series/(OPN) r8.dmp} (100%) rename instruments/{FM/uhrwerk/R Series/r8b.dmp => uhrwerk/R Series/(OPN) r8b.dmp} (100%) rename instruments/{FM/uhrwerk/R Series/r8c.dmp => uhrwerk/R Series/(OPN) r8c.dmp} (100%) rename instruments/{FM/uhrwerk/R Series/r9.dmp => uhrwerk/R Series/(OPN) r9.dmp} (100%) rename instruments/{FM/uhrwerk/R Series/r9b.dmp => uhrwerk/R Series/(OPN) r9b.dmp} (100%) rename instruments/{FM => }/uhrwerk/README.txt (100%) rename instruments/{FM/uhrwerk/Z Series/z00.dmp => uhrwerk/Z Series/(OPM) z00.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z01.dmp => uhrwerk/Z Series/(OPM) z01.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z02.dmp => uhrwerk/Z Series/(OPM) z02.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z02b.dmp => uhrwerk/Z Series/(OPM) z02b.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z02c.dmp => uhrwerk/Z Series/(OPM) z02c.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z03.dmp => uhrwerk/Z Series/(OPM) z03.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z04.dmp => uhrwerk/Z Series/(OPM) z04.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z04b.dmp => uhrwerk/Z Series/(OPM) z04b.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z04c.dmp => uhrwerk/Z Series/(OPM) z04c.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z11.dmp => uhrwerk/Z Series/(OPM) z11.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z11b.dmp => uhrwerk/Z Series/(OPM) z11b.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z11c.dmp => uhrwerk/Z Series/(OPM) z11c.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z11d.dmp => uhrwerk/Z Series/(OPM) z11d.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z11e.dmp => uhrwerk/Z Series/(OPM) z11e.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z39.dmp => uhrwerk/Z Series/(OPM) z39.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z39b low vol.dmp => uhrwerk/Z Series/(OPM) z39b low vol.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z39b.dmp => uhrwerk/Z Series/(OPM) z39b.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z39c.dmp => uhrwerk/Z Series/(OPM) z39c.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z39d.dmp => uhrwerk/Z Series/(OPM) z39d.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z39e.dmp => uhrwerk/Z Series/(OPM) z39e.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z40.dmp => uhrwerk/Z Series/(OPM) z40.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z05.dmp => uhrwerk/Z Series/(OPN) z05.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z05b.dmp => uhrwerk/Z Series/(OPN) z05b.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z05c.dmp => uhrwerk/Z Series/(OPN) z05c.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z05d.dmp => uhrwerk/Z Series/(OPN) z05d.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z06.dmp => uhrwerk/Z Series/(OPN) z06.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z06b.dmp => uhrwerk/Z Series/(OPN) z06b.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z07.dmp => uhrwerk/Z Series/(OPN) z07.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z08.dmp => uhrwerk/Z Series/(OPN) z08.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z09.dmp => uhrwerk/Z Series/(OPN) z09.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z10.dmp => uhrwerk/Z Series/(OPN) z10.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z10b.dmp => uhrwerk/Z Series/(OPN) z10b.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z10c.dmp => uhrwerk/Z Series/(OPN) z10c.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z10d.dmp => uhrwerk/Z Series/(OPN) z10d.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z10e.dmp => uhrwerk/Z Series/(OPN) z10e.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z12.dmp => uhrwerk/Z Series/(OPN) z12.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z13.dmp => uhrwerk/Z Series/(OPN) z13.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z14.dmp => uhrwerk/Z Series/(OPN) z14.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z14b.dmp => uhrwerk/Z Series/(OPN) z14b.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z14c.dmp => uhrwerk/Z Series/(OPN) z14c.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z14d.dmp => uhrwerk/Z Series/(OPN) z14d.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z15.dmp => uhrwerk/Z Series/(OPN) z15.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z15b (quiet).dmp => uhrwerk/Z Series/(OPN) z15b (quiet).dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z15b.dmp => uhrwerk/Z Series/(OPN) z15b.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z16.dmp => uhrwerk/Z Series/(OPN) z16.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z16b.dmp => uhrwerk/Z Series/(OPN) z16b.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z16c.dmp => uhrwerk/Z Series/(OPN) z16c.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z16d.dmp => uhrwerk/Z Series/(OPN) z16d.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z17.dmp => uhrwerk/Z Series/(OPN) z17.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z17b.dmp => uhrwerk/Z Series/(OPN) z17b.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z17c.dmp => uhrwerk/Z Series/(OPN) z17c.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z17d.dmp => uhrwerk/Z Series/(OPN) z17d.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z17e.dmp => uhrwerk/Z Series/(OPN) z17e.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z18.dmp => uhrwerk/Z Series/(OPN) z18.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z19.dmp => uhrwerk/Z Series/(OPN) z19.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z20.dmp => uhrwerk/Z Series/(OPN) z20.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z20b.dmp => uhrwerk/Z Series/(OPN) z20b.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z21.dmp => uhrwerk/Z Series/(OPN) z21.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z22.dmp => uhrwerk/Z Series/(OPN) z22.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z22b.dmp => uhrwerk/Z Series/(OPN) z22b.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z23.dmp => uhrwerk/Z Series/(OPN) z23.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z24.dmp => uhrwerk/Z Series/(OPN) z24.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z24b.dmp => uhrwerk/Z Series/(OPN) z24b.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z24c.dmp => uhrwerk/Z Series/(OPN) z24c.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z25.dmp => uhrwerk/Z Series/(OPN) z25.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z26.dmp => uhrwerk/Z Series/(OPN) z26.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z26b.dmp => uhrwerk/Z Series/(OPN) z26b.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z26c.dmp => uhrwerk/Z Series/(OPN) z26c.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z26d.dmp => uhrwerk/Z Series/(OPN) z26d.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z26e.dmp => uhrwerk/Z Series/(OPN) z26e.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z27.dmp => uhrwerk/Z Series/(OPN) z27.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z28.dmp => uhrwerk/Z Series/(OPN) z28.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z28b.dmp => uhrwerk/Z Series/(OPN) z28b.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z28c.dmp => uhrwerk/Z Series/(OPN) z28c.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z29.dmp => uhrwerk/Z Series/(OPN) z29.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z30.dmp => uhrwerk/Z Series/(OPN) z30.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z30b.dmp => uhrwerk/Z Series/(OPN) z30b.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z30c.dmp => uhrwerk/Z Series/(OPN) z30c.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z31.dmp => uhrwerk/Z Series/(OPN) z31.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z32.dmp => uhrwerk/Z Series/(OPN) z32.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z33.dmp => uhrwerk/Z Series/(OPN) z33.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z33b.dmp => uhrwerk/Z Series/(OPN) z33b.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z33c.dmp => uhrwerk/Z Series/(OPN) z33c.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z33d.dmp => uhrwerk/Z Series/(OPN) z33d.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z33e.dmp => uhrwerk/Z Series/(OPN) z33e.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z34.dmp => uhrwerk/Z Series/(OPN) z34.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z34b.dmp => uhrwerk/Z Series/(OPN) z34b.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z35.dmp => uhrwerk/Z Series/(OPN) z35.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z36.dmp => uhrwerk/Z Series/(OPN) z36.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z37.dmp => uhrwerk/Z Series/(OPN) z37.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z38.dmp => uhrwerk/Z Series/(OPN) z38.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z41.dmp => uhrwerk/Z Series/(OPN) z41.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z41b.dmp => uhrwerk/Z Series/(OPN) z41b.dmp} (100%) rename instruments/{FM/uhrwerk/Z Series/z42.dmp => uhrwerk/Z Series/(OPN) z42.dmp} (100%) diff --git a/instruments/other/(AY) Closed Hat.fui b/instruments/AY/Closed Hat.fui similarity index 100% rename from instruments/other/(AY) Closed Hat.fui rename to instruments/AY/Closed Hat.fui diff --git a/instruments/other/(AY) Hat-EnvBass.fui b/instruments/AY/Hat-EnvBass.fui similarity index 100% rename from instruments/other/(AY) Hat-EnvBass.fui rename to instruments/AY/Hat-EnvBass.fui diff --git a/instruments/other/AY Heavy Kick and Snare.fui b/instruments/AY/Heavy Kick and Snare.fui similarity index 100% rename from instruments/other/AY Heavy Kick and Snare.fui rename to instruments/AY/Heavy Kick and Snare.fui diff --git a/instruments/other/AY Heavy Kick.fui b/instruments/AY/Heavy Kick.fui similarity index 100% rename from instruments/other/AY Heavy Kick.fui rename to instruments/AY/Heavy Kick.fui diff --git a/instruments/other/(AY) Kick E-1.fui b/instruments/AY/Kick E-1.fui similarity index 100% rename from instruments/other/(AY) Kick E-1.fui rename to instruments/AY/Kick E-1.fui diff --git a/instruments/other/(AY) Open Hat.fui b/instruments/AY/Open Hat.fui similarity index 100% rename from instruments/other/(AY) Open Hat.fui rename to instruments/AY/Open Hat.fui diff --git a/instruments/other/(AY) Snare A#3.fui b/instruments/AY/Snare A#3.fui similarity index 100% rename from instruments/other/(AY) Snare A#3.fui rename to instruments/AY/Snare A#3.fui diff --git a/instruments/other/AY kick.fui b/instruments/AY/kick.fui similarity index 100% rename from instruments/other/AY kick.fui rename to instruments/AY/kick.fui diff --git a/instruments/other/AY snare.fui b/instruments/AY/snare.fui similarity index 100% rename from instruments/other/AY snare.fui rename to instruments/AY/snare.fui diff --git a/instruments/other/Castanets.fui b/instruments/C64/Castanets.fui similarity index 100% rename from instruments/other/Castanets.fui rename to instruments/C64/Castanets.fui diff --git a/instruments/other/Closed_Hi-hat.fui b/instruments/C64/Closed_Hi-hat.fui similarity index 100% rename from instruments/other/Closed_Hi-hat.fui rename to instruments/C64/Closed_Hi-hat.fui diff --git a/instruments/other/Gunshot.fui b/instruments/C64/Gunshot.fui similarity index 100% rename from instruments/other/Gunshot.fui rename to instruments/C64/Gunshot.fui diff --git a/instruments/other/Open_Hi-hat.fui b/instruments/C64/Open_Hi-hat.fui similarity index 100% rename from instruments/other/Open_Hi-hat.fui rename to instruments/C64/Open_Hi-hat.fui diff --git a/instruments/other/Side_Stick.fui b/instruments/C64/Side_Stick.fui similarity index 100% rename from instruments/other/Side_Stick.fui rename to instruments/C64/Side_Stick.fui diff --git a/instruments/other/C64_Snare.fui b/instruments/C64/Snare.fui similarity index 100% rename from instruments/other/C64_Snare.fui rename to instruments/C64/Snare.fui diff --git a/instruments/other/GBkick.fui b/instruments/GB/kick.fui similarity index 100% rename from instruments/other/GBkick.fui rename to instruments/GB/kick.fui diff --git a/instruments/other/GBsnare.fui b/instruments/GB/snare.fui similarity index 100% rename from instruments/other/GBsnare.fui rename to instruments/GB/snare.fui diff --git a/instruments/NES/0-2-5_arp_lead.fui b/instruments/NES/0-2-5_arp_lead.fui new file mode 100644 index 0000000000000000000000000000000000000000..2328c4d06a4e1eff35b2735230aff724caae81ce GIT binary patch literal 91 zcmZ?s^b6j~pv2(k$j@M)You$ckXTfpkdvC2!r<#@!@$A7AS?5qfsuiciJ6&&g_V_! not=Y&larH+i;J6^hliJ!myeH+pOKjXtcZb$m5K2`ME!pN!Uhe| literal 0 HcmV?d00001 diff --git a/instruments/NES/0-3-5_arp_lead.fui b/instruments/NES/0-3-5_arp_lead.fui new file mode 100644 index 0000000000000000000000000000000000000000..b48ac669153f2355952e05e0096665ce974a1e69 GIT binary patch literal 91 zcmZ?s^b6j~pv2(k$j@M)YpiRkkXTfpkdvC2!r<#@!@$A7AS?5qfsuiciJ6&&g_V_! not=Y&larH+i;J6^hliJ!myeH+pOKjXtcZb`m5K2`ME!pN!e0&3 literal 0 HcmV?d00001 diff --git a/instruments/NES/Noise Hi-Hat Closed.fui b/instruments/NES/Noise Hi-Hat Closed.fui new file mode 100644 index 0000000000000000000000000000000000000000..0fb7b759fdfae35cd1eaa6b3bce66a60cae400ec GIT binary patch literal 72 zcmZ?s^b6j~pv2(kD8k^EpIMx$;E}28kyxVOoReRin!@1gsKUU(z`*+dKLaBJBR?Ax VkYr~0&v1}|k(+_Rfd`8J0|19255NEb literal 0 HcmV?d00001 diff --git a/instruments/NES/Noise Hi-Hat Open.fui b/instruments/NES/Noise Hi-Hat Open.fui new file mode 100644 index 0000000000000000000000000000000000000000..c59874c5affa5283ec47433a22c6d0d67c364e58 GIT binary patch literal 91 zcmZ?s^b6j~pv2(kD8%5GpIMx$;E}28kyxVOUyz!|;Ol6~z`?*E_5VKuBLgEpKOY}2 lFAp~tCkHzlD=P~#2rw}*0i~E({xck8VB}_CaNvRB{{UkY55E8a literal 0 HcmV?d00001 diff --git a/instruments/NES/Noise Kick.fui b/instruments/NES/Noise Kick.fui new file mode 100644 index 0000000000000000000000000000000000000000..3d86469952902910c5df3872b9406e116dd6edb0 GIT binary patch literal 63 zcmZ?s^b6j~pv2(k$j#uFpIMx$;GLPA&EV^(!ob16!216`10w??KPL;2WM=u#aFBtK OlYzm38;E&<_&)&10u09h literal 0 HcmV?d00001 diff --git a/instruments/NES/Noise Snare.fui b/instruments/NES/Noise Snare.fui new file mode 100644 index 0000000000000000000000000000000000000000..635d0bf214a70289efae5344bab0d47b4ecae937 GIT binary patch literal 85 zcmZ?s^b6j~pv2(k$iv{5pIMx$5S*7-l*-`iXvx6Az##SiKLaBJBR?N64>uPl2Rl0( gD=P~aFf%hTF#@HSfhrC%FtRZ)IB)_n7ZCpk0NO+j-2eap literal 0 HcmV?d00001 diff --git a/instruments/NES/Triangle Kick+Bass.fui b/instruments/NES/Triangle Kick+Bass.fui new file mode 100644 index 0000000000000000000000000000000000000000..baa0e9e9575da6329c23191c41e0fb763b37f3f1 GIT binary patch literal 68 zcmZ?s^b6j~pv2(kD9R90l$n^9o|CHJotd1ipsnDPSX|8D>nP8_!NADM`k&z-1EUrL RgM%s%D*~}B5HkS5e*i@24ut>! literal 0 HcmV?d00001 diff --git a/instruments/NES/Triangle Kick.fui b/instruments/NES/Triangle Kick.fui new file mode 100644 index 0000000000000000000000000000000000000000..35e8f3540e71b53eb7133a27079ea0513e115c28 GIT binary patch literal 80 zcmZ?s^b6j~pv2(k$j1;;l$n^9o|CHJotd1?;Ol6_z`?-4{{KG%BLgEp7%(uhvHfQ_ Y$iS$@z~G*{l$n^9o|CE&oR?UXs-UgllvrHM;OnT&z`?-C_WwV_K?X(x V1_lQ`Al3n5Eg)70Vg?}i4*Qy7wule# literal 0 HcmV?d00001 diff --git a/instruments/OPLL/(SMSFM) Near Perfect Square Wave.dmp b/instruments/OPLL/Near Perfect Square Wave.dmp similarity index 100% rename from instruments/OPLL/(SMSFM) Near Perfect Square Wave.dmp rename to instruments/OPLL/Near Perfect Square Wave.dmp diff --git a/instruments/OPL/OPLL_Clickik.fui b/instruments/OPLL/OPLL_Clickik.fui similarity index 100% rename from instruments/OPL/OPLL_Clickik.fui rename to instruments/OPLL/OPLL_Clickik.fui diff --git a/instruments/FM/percussion/Rainbow_Bell.fui b/instruments/OPLL/Rainbow_Bell.fui similarity index 100% rename from instruments/FM/percussion/Rainbow_Bell.fui rename to instruments/OPLL/Rainbow_Bell.fui diff --git a/instruments/FM/keys/80's Organ.dmp b/instruments/OPM/80's Organ.dmp similarity index 100% rename from instruments/FM/keys/80's Organ.dmp rename to instruments/OPM/80's Organ.dmp diff --git a/instruments/FM/bass/Basses.opm b/instruments/OPM/Basses.opm similarity index 96% rename from instruments/FM/bass/Basses.opm rename to instruments/OPM/Basses.opm index d1e025ab6..67a58e7e0 100644 --- a/instruments/FM/bass/Basses.opm +++ b/instruments/OPM/Basses.opm @@ -1,87 +1,87 @@ -//LFO: LFRQ AMD PMD WF NFRQ -//@:[Num] [Name] -//CH: PAN FL CON AMS PMS SLOT NE -//OP: AR D1R D2R RR D1L TL KS MUL DT1 DT2 AMS-EN - -// vgm offset = 000001d3, channels used = 1------- -@:0 Acoustic Bass -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 120 0 -M1: 25 18 14 6 3 28 0 5 6 0 0 -C1: 28 26 8 6 7 31 0 4 2 0 0 -M2: 27 7 0 6 15 21 0 1 1 0 0 -C2: 29 11 10 8 2 0 0 1 3 0 0 - -// vgm offset = 0000024e, channels used = 12------ -@:1 StringSlapSFX -LFO: 0 0 0 0 0 -CH: 64 7 4 0 0 120 0 -M1: 19 16 0 10 15 3 0 0 5 0 0 -C1: 31 20 0 9 15 4 0 7 0 0 0 -M2: 31 18 0 1 15 16 0 2 3 0 0 -C2: 31 17 0 9 15 30 0 1 3 0 0 - -// vgm offset = 0000093e, channels used = 1------- -@:2 Finger Bass -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 120 0 -M1: 31 15 0 11 1 31 0 3 3 0 0 -C1: 31 13 0 10 1 46 0 2 3 0 0 -M2: 31 10 0 10 1 24 0 1 3 0 0 -C2: 31 4 0 11 15 0 0 1 3 0 0 - -// vgm offset = 00000b30, channels used = 1------- -@:3 Fretless Bass -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 120 0 -M1: 31 0 0 3 15 21 0 1 5 0 0 -C1: 31 0 0 6 15 54 0 1 0 0 0 -M2: 31 0 0 7 11 26 0 1 5 0 0 -C2: 31 4 0 12 15 2 0 1 0 0 0 - -// vgm offset = 00000d2b, channels used = 1------- -@:4 Picked Bass -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 120 0 -M1: 31 18 1 11 3 24 0 5 3 0 0 -C1: 31 18 2 10 1 33 0 3 3 0 0 -M2: 31 10 3 10 1 33 0 1 3 0 0 -C2: 31 4 0 11 15 0 0 1 3 0 0 - -// vgm offset = 00000f2c, channels used = 1------- -@:5 Slap Bass -LFO: 0 0 0 0 0 -CH: 64 0 2 0 0 120 0 -M1: 31 20 0 3 15 0 1 0 0 0 0 -C1: 31 23 0 4 0 43 0 15 3 0 0 -M2: 31 17 0 1 2 16 1 1 3 0 0 -C2: 31 9 0 10 15 2 0 1 3 0 0 - -// vgm offset = 00001444, channels used = 1------- -@:6 Synth Bass 1 -LFO: 0 0 0 0 0 -CH: 64 6 2 0 0 120 0 -M1: 31 12 0 3 15 16 2 1 3 0 0 -C1: 31 10 0 4 15 127 0 1 0 0 0 -M2: 31 4 0 1 0 33 0 1 3 0 0 -C2: 31 9 0 11 15 0 0 1 3 0 0 - -// vgm offset = 0000189b, channels used = 1------- -@:7 SynthBass101 -LFO: 0 0 0 0 0 -CH: 64 5 2 0 0 120 0 -M1: 31 11 0 3 15 24 2 2 3 0 0 -C1: 31 10 0 4 15 127 0 1 0 0 0 -M2: 31 0 0 1 15 24 0 1 3 0 0 -C2: 31 9 0 11 15 0 0 1 3 0 0 - -// vgm offset = 00001d22, channels used = 1------- -@:8 Synth Bass 2 -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 120 0 -M1: 22 12 20 8 15 39 3 12 3 0 0 -C1: 31 13 11 11 4 25 3 4 3 0 0 -M2: 27 0 5 11 7 23 1 1 3 0 0 -C2: 31 0 15 11 7 3 0 1 3 0 0 - - +//LFO: LFRQ AMD PMD WF NFRQ +//@:[Num] [Name] +//CH: PAN FL CON AMS PMS SLOT NE +//OP: AR D1R D2R RR D1L TL KS MUL DT1 DT2 AMS-EN + +// vgm offset = 000001d3, channels used = 1------- +@:0 Acoustic Bass +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 120 0 +M1: 25 18 14 6 3 28 0 5 6 0 0 +C1: 28 26 8 6 7 31 0 4 2 0 0 +M2: 27 7 0 6 15 21 0 1 1 0 0 +C2: 29 11 10 8 2 0 0 1 3 0 0 + +// vgm offset = 0000024e, channels used = 12------ +@:1 StringSlapSFX +LFO: 0 0 0 0 0 +CH: 64 7 4 0 0 120 0 +M1: 19 16 0 10 15 3 0 0 5 0 0 +C1: 31 20 0 9 15 4 0 7 0 0 0 +M2: 31 18 0 1 15 16 0 2 3 0 0 +C2: 31 17 0 9 15 30 0 1 3 0 0 + +// vgm offset = 0000093e, channels used = 1------- +@:2 Finger Bass +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 120 0 +M1: 31 15 0 11 1 31 0 3 3 0 0 +C1: 31 13 0 10 1 46 0 2 3 0 0 +M2: 31 10 0 10 1 24 0 1 3 0 0 +C2: 31 4 0 11 15 0 0 1 3 0 0 + +// vgm offset = 00000b30, channels used = 1------- +@:3 Fretless Bass +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 120 0 +M1: 31 0 0 3 15 21 0 1 5 0 0 +C1: 31 0 0 6 15 54 0 1 0 0 0 +M2: 31 0 0 7 11 26 0 1 5 0 0 +C2: 31 4 0 12 15 2 0 1 0 0 0 + +// vgm offset = 00000d2b, channels used = 1------- +@:4 Picked Bass +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 120 0 +M1: 31 18 1 11 3 24 0 5 3 0 0 +C1: 31 18 2 10 1 33 0 3 3 0 0 +M2: 31 10 3 10 1 33 0 1 3 0 0 +C2: 31 4 0 11 15 0 0 1 3 0 0 + +// vgm offset = 00000f2c, channels used = 1------- +@:5 Slap Bass +LFO: 0 0 0 0 0 +CH: 64 0 2 0 0 120 0 +M1: 31 20 0 3 15 0 1 0 0 0 0 +C1: 31 23 0 4 0 43 0 15 3 0 0 +M2: 31 17 0 1 2 16 1 1 3 0 0 +C2: 31 9 0 10 15 2 0 1 3 0 0 + +// vgm offset = 00001444, channels used = 1------- +@:6 Synth Bass 1 +LFO: 0 0 0 0 0 +CH: 64 6 2 0 0 120 0 +M1: 31 12 0 3 15 16 2 1 3 0 0 +C1: 31 10 0 4 15 127 0 1 0 0 0 +M2: 31 4 0 1 0 33 0 1 3 0 0 +C2: 31 9 0 11 15 0 0 1 3 0 0 + +// vgm offset = 0000189b, channels used = 1------- +@:7 SynthBass101 +LFO: 0 0 0 0 0 +CH: 64 5 2 0 0 120 0 +M1: 31 11 0 3 15 24 2 2 3 0 0 +C1: 31 10 0 4 15 127 0 1 0 0 0 +M2: 31 0 0 1 15 24 0 1 3 0 0 +C2: 31 9 0 11 15 0 0 1 3 0 0 + +// vgm offset = 00001d22, channels used = 1------- +@:8 Synth Bass 2 +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 120 0 +M1: 22 12 20 8 15 39 3 12 3 0 0 +C1: 31 13 11 11 4 25 3 4 3 0 0 +M2: 27 0 5 11 7 23 1 1 3 0 0 +C2: 31 0 15 11 7 3 0 1 3 0 0 + + diff --git a/instruments/FM/percussion/Chromatic Percussion.opm b/instruments/OPM/Chromatic Percussion.opm similarity index 95% rename from instruments/FM/percussion/Chromatic Percussion.opm rename to instruments/OPM/Chromatic Percussion.opm index 76eb84505..592dcf5ce 100644 --- a/instruments/FM/percussion/Chromatic Percussion.opm +++ b/instruments/OPM/Chromatic Percussion.opm @@ -1,1040 +1,1040 @@ -//LFO: LFRQ AMD PMD WF NFRQ -//@:[Num] [Name] -//CH: PAN FL CON AMS PMS SLOT NE -//OP: AR D1R D2R RR D1L TL KS MUL DT1 DT2 AMS-EN - -// vgm offset = 000001de, channels used = 12------ -@:0 Celesta (Low) -LFO: 0 0 0 0 0 -CH: 64 0 4 0 0 120 0 -M1: 31 27 0 12 15 40 0 6 3 0 0 -C1: 31 26 0 12 15 0 0 6 3 0 0 -M2: 31 11 0 1 11 44 0 6 3 0 0 -C2: 31 11 0 7 15 0 0 1 3 0 0 - -// vgm offset = 00000387, channels used = --3-567- -@:1 Celesta (High) -LFO: 0 0 0 0 0 -CH: 64 0 4 0 0 120 0 -M1: 31 26 0 11 15 40 0 6 5 0 0 -C1: 31 26 0 11 15 18 0 6 3 0 0 -M2: 31 11 0 1 11 60 0 6 3 0 0 -C2: 31 11 0 7 15 0 0 1 3 0 0 - -// vgm offset = 0000095c, channels used = 12------ -@:2 Glockenspiel -LFO: 0 0 0 0 0 -CH: 64 0 2 0 0 120 0 -M1: 31 27 0 14 15 28 0 9 3 0 0 -C1: 31 11 0 6 15 43 0 12 3 0 0 -M2: 31 10 0 5 15 35 0 6 3 0 0 -C2: 31 13 12 7 6 0 0 1 3 0 0 - -// vgm offset = 00000bd2, channels used = 123-567- -@:3 Music Box -LFO: 0 0 0 0 0 -CH: 64 4 4 0 0 120 0 -M1: 31 8 0 6 15 47 0 10 3 0 0 -C1: 14 10 0 7 15 16 0 2 3 0 0 -M2: 21 11 0 1 11 45 0 6 3 0 0 -C2: 31 10 0 7 15 1 0 1 3 0 0 - -// vgm offset = 00000f9f, channels used = 123-56-- -@:4 Vibraphone -LFO: 0 0 0 0 0 -CH: 64 0 4 0 0 120 0 -M1: 31 14 6 11 10 45 0 5 3 0 0 -C1: 31 13 16 11 15 10 0 4 3 0 0 -M2: 31 10 0 1 11 80 0 5 3 0 0 -C2: 31 10 0 8 15 4 0 1 3 0 0 - -// vgm offset = 00001450, channels used = 12------ -@:5 Marimba -LFO: 0 0 0 0 0 -CH: 64 0 4 0 0 120 0 -M1: 31 16 6 11 14 29 0 5 3 0 0 -C1: 31 18 16 11 15 16 0 4 3 0 0 -M2: 31 19 12 1 7 30 0 5 3 0 0 -C2: 31 12 14 8 4 4 0 1 3 0 0 - -// vgm offset = 00001802, channels used = 12------ -@:6 Xylophone -LFO: 0 0 0 0 0 -CH: 64 0 4 0 0 120 0 -M1: 31 20 6 12 14 19 0 5 3 0 0 -C1: 31 22 16 11 15 16 0 4 3 0 0 -M2: 31 19 15 1 4 28 0 6 3 0 0 -C2: 31 18 14 8 4 4 0 1 3 0 0 - -// vgm offset = 00001d9c, channels used = 12------ -@:7 Tubular Bells -LFO: 0 0 0 0 0 -CH: 64 4 4 0 0 120 0 -M1: 31 8 0 4 15 43 0 10 6 0 0 -C1: 31 10 0 6 15 10 0 8 2 0 0 -M2: 31 4 0 1 11 36 0 8 0 0 0 -C2: 31 9 0 6 15 6 0 5 5 0 0 - -// vgm offset = 00002066, channels used = 123----- -@:8 Dulcimer -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 120 0 -M1: 31 17 9 3 2 33 0 3 3 0 0 -C1: 31 7 0 3 15 27 0 3 3 0 0 -M2: 31 4 0 5 11 38 0 1 3 0 0 -C2: 31 9 0 5 15 2 0 1 3 0 0 - -// vgm offset = 00002783, channels used = 12------ -@:9 Timpani -LFO: 0 0 0 0 0 -CH: 64 0 2 0 0 120 0 -M1: 31 19 0 9 15 23 0 3 3 0 0 -C1: 31 14 14 4 6 18 0 1 0 0 0 -M2: 31 12 8 1 2 18 0 1 1 0 0 -C2: 31 12 0 6 15 2 0 1 3 0 0 - -// vgm offset = 00002bb8, channels used = 123-567- -@:10 Steel Drum -LFO: 0 0 0 0 0 -CH: 64 4 0 0 0 120 0 -M1: 31 8 0 3 15 42 0 5 5 0 0 -C1: 16 13 0 9 15 71 0 5 0 0 0 -M2: 16 11 10 7 3 33 0 3 6 0 0 -C2: 31 10 0 7 15 0 0 1 3 0 0 - -@:11 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:12 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:13 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:14 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:15 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:16 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:17 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:18 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:19 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:20 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:21 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:22 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:23 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:24 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:25 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:26 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:27 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:28 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:29 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:30 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:31 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:32 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:33 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:34 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:35 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:36 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:37 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:38 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:39 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:40 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:41 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:42 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:43 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:44 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:45 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:46 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:47 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:48 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:49 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:50 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:51 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:52 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:53 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:54 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:55 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:56 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:57 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:58 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:59 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:60 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:61 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:62 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:63 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:64 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:65 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:66 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:67 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:68 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:69 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:70 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:71 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:72 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:73 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:74 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:75 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:76 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:77 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:78 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:79 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:80 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:81 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:82 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:83 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:84 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:85 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:86 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:87 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:88 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:89 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:90 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:91 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:92 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:93 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:94 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:95 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:96 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:97 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:98 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:99 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:100 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:101 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:102 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:103 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:104 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:105 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:106 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:107 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:108 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:109 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:110 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:111 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:112 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:113 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:114 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:115 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:116 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:117 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:118 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:119 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:120 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:121 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:122 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:123 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:124 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:125 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:126 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:127 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - +//LFO: LFRQ AMD PMD WF NFRQ +//@:[Num] [Name] +//CH: PAN FL CON AMS PMS SLOT NE +//OP: AR D1R D2R RR D1L TL KS MUL DT1 DT2 AMS-EN + +// vgm offset = 000001de, channels used = 12------ +@:0 Celesta (Low) +LFO: 0 0 0 0 0 +CH: 64 0 4 0 0 120 0 +M1: 31 27 0 12 15 40 0 6 3 0 0 +C1: 31 26 0 12 15 0 0 6 3 0 0 +M2: 31 11 0 1 11 44 0 6 3 0 0 +C2: 31 11 0 7 15 0 0 1 3 0 0 + +// vgm offset = 00000387, channels used = --3-567- +@:1 Celesta (High) +LFO: 0 0 0 0 0 +CH: 64 0 4 0 0 120 0 +M1: 31 26 0 11 15 40 0 6 5 0 0 +C1: 31 26 0 11 15 18 0 6 3 0 0 +M2: 31 11 0 1 11 60 0 6 3 0 0 +C2: 31 11 0 7 15 0 0 1 3 0 0 + +// vgm offset = 0000095c, channels used = 12------ +@:2 Glockenspiel +LFO: 0 0 0 0 0 +CH: 64 0 2 0 0 120 0 +M1: 31 27 0 14 15 28 0 9 3 0 0 +C1: 31 11 0 6 15 43 0 12 3 0 0 +M2: 31 10 0 5 15 35 0 6 3 0 0 +C2: 31 13 12 7 6 0 0 1 3 0 0 + +// vgm offset = 00000bd2, channels used = 123-567- +@:3 Music Box +LFO: 0 0 0 0 0 +CH: 64 4 4 0 0 120 0 +M1: 31 8 0 6 15 47 0 10 3 0 0 +C1: 14 10 0 7 15 16 0 2 3 0 0 +M2: 21 11 0 1 11 45 0 6 3 0 0 +C2: 31 10 0 7 15 1 0 1 3 0 0 + +// vgm offset = 00000f9f, channels used = 123-56-- +@:4 Vibraphone +LFO: 0 0 0 0 0 +CH: 64 0 4 0 0 120 0 +M1: 31 14 6 11 10 45 0 5 3 0 0 +C1: 31 13 16 11 15 10 0 4 3 0 0 +M2: 31 10 0 1 11 80 0 5 3 0 0 +C2: 31 10 0 8 15 4 0 1 3 0 0 + +// vgm offset = 00001450, channels used = 12------ +@:5 Marimba +LFO: 0 0 0 0 0 +CH: 64 0 4 0 0 120 0 +M1: 31 16 6 11 14 29 0 5 3 0 0 +C1: 31 18 16 11 15 16 0 4 3 0 0 +M2: 31 19 12 1 7 30 0 5 3 0 0 +C2: 31 12 14 8 4 4 0 1 3 0 0 + +// vgm offset = 00001802, channels used = 12------ +@:6 Xylophone +LFO: 0 0 0 0 0 +CH: 64 0 4 0 0 120 0 +M1: 31 20 6 12 14 19 0 5 3 0 0 +C1: 31 22 16 11 15 16 0 4 3 0 0 +M2: 31 19 15 1 4 28 0 6 3 0 0 +C2: 31 18 14 8 4 4 0 1 3 0 0 + +// vgm offset = 00001d9c, channels used = 12------ +@:7 Tubular Bells +LFO: 0 0 0 0 0 +CH: 64 4 4 0 0 120 0 +M1: 31 8 0 4 15 43 0 10 6 0 0 +C1: 31 10 0 6 15 10 0 8 2 0 0 +M2: 31 4 0 1 11 36 0 8 0 0 0 +C2: 31 9 0 6 15 6 0 5 5 0 0 + +// vgm offset = 00002066, channels used = 123----- +@:8 Dulcimer +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 120 0 +M1: 31 17 9 3 2 33 0 3 3 0 0 +C1: 31 7 0 3 15 27 0 3 3 0 0 +M2: 31 4 0 5 11 38 0 1 3 0 0 +C2: 31 9 0 5 15 2 0 1 3 0 0 + +// vgm offset = 00002783, channels used = 12------ +@:9 Timpani +LFO: 0 0 0 0 0 +CH: 64 0 2 0 0 120 0 +M1: 31 19 0 9 15 23 0 3 3 0 0 +C1: 31 14 14 4 6 18 0 1 0 0 0 +M2: 31 12 8 1 2 18 0 1 1 0 0 +C2: 31 12 0 6 15 2 0 1 3 0 0 + +// vgm offset = 00002bb8, channels used = 123-567- +@:10 Steel Drum +LFO: 0 0 0 0 0 +CH: 64 4 0 0 0 120 0 +M1: 31 8 0 3 15 42 0 5 5 0 0 +C1: 16 13 0 9 15 71 0 5 0 0 0 +M2: 16 11 10 7 3 33 0 3 6 0 0 +C2: 31 10 0 7 15 0 0 1 3 0 0 + +@:11 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:12 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:13 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:14 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:15 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:16 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:17 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:18 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:19 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:20 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:21 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:22 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:23 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:24 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:25 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:26 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:27 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:28 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:29 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:30 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:31 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:32 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:33 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:34 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:35 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:36 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:37 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:38 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:39 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:40 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:41 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:42 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:43 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:44 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:45 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:46 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:47 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:48 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:49 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:50 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:51 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:52 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:53 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:54 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:55 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:56 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:57 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:58 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:59 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:60 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:61 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:62 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:63 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:64 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:65 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:66 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:67 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:68 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:69 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:70 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:71 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:72 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:73 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:74 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:75 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:76 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:77 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:78 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:79 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:80 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:81 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:82 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:83 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:84 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:85 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:86 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:87 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:88 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:89 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:90 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:91 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:92 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:93 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:94 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:95 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:96 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:97 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:98 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:99 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:100 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:101 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:102 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:103 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:104 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:105 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:106 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:107 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:108 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:109 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:110 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:111 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:112 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:113 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:114 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:115 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:116 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:117 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:118 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:119 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:120 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:121 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:122 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:123 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:124 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:125 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:126 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:127 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + diff --git a/instruments/other/(S16) Computer Shutdown [C-6 0213].dmp b/instruments/OPM/Computer Shutdown [C-6 0213].dmp similarity index 100% rename from instruments/other/(S16) Computer Shutdown [C-6 0213].dmp rename to instruments/OPM/Computer Shutdown [C-6 0213].dmp diff --git a/instruments/FM/percussion/(GEN) Deep Marimba.dmp b/instruments/OPM/Deep Marimba.dmp similarity index 100% rename from instruments/FM/percussion/(GEN) Deep Marimba.dmp rename to instruments/OPM/Deep Marimba.dmp diff --git a/instruments/other/(S16) Dog Whistle.dmp b/instruments/OPM/Dog Whistle.dmp similarity index 100% rename from instruments/other/(S16) Dog Whistle.dmp rename to instruments/OPM/Dog Whistle.dmp diff --git a/instruments/other/(S16) Donkey Kong Lead.dmp b/instruments/OPM/Donkey Kong Lead.dmp similarity index 100% rename from instruments/other/(S16) Donkey Kong Lead.dmp rename to instruments/OPM/Donkey Kong Lead.dmp diff --git a/instruments/FM/guitar/Guitar Test.opm b/instruments/OPM/Guitar Test.opm similarity index 95% rename from instruments/FM/guitar/Guitar Test.opm rename to instruments/OPM/Guitar Test.opm index d1d27a04b..8b7536c6d 100644 --- a/instruments/FM/guitar/Guitar Test.opm +++ b/instruments/OPM/Guitar Test.opm @@ -1,1030 +1,1030 @@ -//MiOPMdrv sound bank Paramer Ver2002.04.22 -//LFO: LFRQ AMD PMD WF NFRQ -//@:[Num] [Name] -//CH: PAN FL CON AMS PMS SLOT NE -//[OPname]: AR D1R D2R RR D1L TL KS MUL DT1 DT2 AMS-EN - -@:0 Nylon Guitar -LFO: 0 0 0 0 0 -CH: 64 0 2 0 0 120 0 -M1: 25 28 0 15 15 50 0 8 3 0 0 -C1: 31 0 0 4 15 40 0 5 3 0 0 -M2: 31 4 0 1 9 38 0 2 3 0 0 -C2: 31 10 0 9 15 0 0 1 3 0 0 - -@:1 Ukulele -LFO: 0 0 0 0 0 -CH: 64 0 2 0 0 120 0 -M1: 20 24 0 15 15 42 0 4 3 0 0 -C1: 31 11 0 4 15 40 0 5 3 0 0 -M2: 31 4 0 1 11 50 0 2 3 0 0 -C2: 31 11 10 10 4 0 0 1 3 0 0 - -@:2 Steel Guitar -LFO: 0 0 0 0 0 -CH: 64 0 2 0 0 120 0 -M1: 25 28 0 15 15 39 0 8 3 0 0 -C1: 31 4 0 4 15 24 0 3 3 0 0 -M2: 31 5 0 1 9 40 0 1 3 0 0 -C2: 31 10 0 9 15 0 0 1 3 0 0 - -@:3 Jazz Guitar -LFO: 0 0 0 0 0 -CH: 64 7 2 0 0 120 0 -M1: 23 21 0 15 15 36 0 1 3 0 0 -C1: 31 0 0 4 15 45 0 4 2 0 0 -M2: 31 0 0 1 15 43 0 1 3 0 0 -C2: 31 10 0 9 15 0 0 1 3 0 0 - -@:4 Lap Guitar -LFO: 0 0 0 0 0 -CH: 64 7 2 0 0 120 0 -M1: 23 21 0 15 15 42 0 1 3 0 0 -C1: 31 0 0 4 15 37 0 2 2 0 0 -M2: 31 0 0 1 15 45 0 1 5 0 0 -C2: 31 8 0 9 15 0 0 1 3 0 0 - -@:5 Clean Guitar -LFO: 0 0 0 0 0 -CH: 64 7 0 0 0 120 0 -M1: 31 13 0 9 15 46 0 9 2 0 0 -C1: 31 8 0 4 15 15 0 1 2 0 0 -M2: 31 4 0 1 11 30 0 1 3 0 0 -C2: 31 9 0 11 15 0 0 1 3 0 0 - -@:6 Muted Guitar -LFO: 0 0 0 0 0 -CH: 64 4 2 0 0 120 0 -M1: 28 21 0 15 15 32 0 4 5 0 0 -C1: 31 3 0 4 15 50 0 1 0 0 0 -M2: 31 2 0 1 11 33 0 1 5 0 0 -C2: 31 10 0 9 15 0 0 1 0 0 0 - -@:7 Funk Guitar -LFO: 0 0 0 0 0 -CH: 64 7 0 0 0 120 0 -M1: 23 13 0 15 15 56 0 9 3 0 0 -C1: 31 8 0 4 15 20 0 1 2 0 0 -M2: 31 4 0 1 11 30 0 1 3 0 0 -C2: 31 9 0 11 15 0 0 1 3 0 0 - -@:8 Overdrive(Low) -LFO: 0 0 0 0 0 -CH: 64 6 2 0 0 120 0 -M1: 31 23 0 15 15 9 0 3 3 0 0 -C1: 31 0 0 4 15 18 0 1 4 0 0 -M2: 31 0 0 1 11 14 0 1 1 0 0 -C2: 31 7 0 12 15 0 0 1 3 0 0 - -@:9 Distorted(Low) -LFO: 0 0 0 0 0 -CH: 64 6 2 0 0 120 0 -M1: 31 23 0 15 15 9 0 4 3 0 0 -C1: 31 0 0 4 15 19 0 1 4 0 0 -M2: 31 6 0 1 11 6 0 1 1 0 0 -C2: 31 7 0 12 15 0 0 1 3 0 0 - -@:10 Overdrive(High) -LFO: 0 0 0 0 0 -CH: 64 7 2 0 0 120 0 -M1: 31 23 0 15 15 16 0 3 3 0 0 -C1: 31 0 0 4 15 37 0 2 3 0 0 -M2: 31 0 0 1 11 22 0 1 1 0 0 -C2: 31 7 0 11 15 0 0 3 3 0 0 - -@:11 Distorted(High) -LFO: 0 0 0 0 0 -CH: 64 7 2 0 0 120 0 -M1: 31 23 0 15 15 9 0 3 3 0 0 -C1: 31 0 0 4 15 27 0 1 3 0 0 -M2: 31 0 0 1 11 20 0 1 1 0 0 -C2: 31 7 0 11 15 0 0 3 3 0 0 - -@:12 GtrHarmonics -LFO: 0 0 0 0 0 -CH: 64 7 2 0 0 120 0 -M1: 31 23 0 15 15 16 0 2 3 0 0 -C1: 31 0 0 4 15 33 0 8 4 0 0 -M2: 31 0 0 1 11 22 0 4 4 0 0 -C2: 31 6 0 11 15 0 0 2 3 0 0 - -@:13 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:14 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:15 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:16 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:17 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:18 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:19 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:20 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:21 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:22 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:23 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:24 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:25 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:26 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:27 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:28 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:29 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:30 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:31 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:32 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:33 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:34 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:35 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:36 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:37 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:38 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:39 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:40 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:41 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:42 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:43 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:44 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:45 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:46 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:47 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:48 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:49 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:50 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:51 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:52 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:53 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:54 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:55 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:56 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:57 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:58 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:59 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:60 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:61 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:62 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:63 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:64 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:65 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:66 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:67 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:68 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:69 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:70 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:71 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:72 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:73 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:74 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:75 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:76 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:77 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:78 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:79 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:80 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:81 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:82 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:83 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:84 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:85 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:86 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:87 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:88 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:89 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:90 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:91 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:92 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:93 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:94 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:95 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:96 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:97 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:98 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:99 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:100 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:101 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:102 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:103 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:104 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:105 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:106 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:107 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:108 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:109 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:110 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:111 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:112 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:113 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:114 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:115 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:116 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:117 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:118 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:119 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:120 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:121 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:122 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:123 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:124 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:125 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:126 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:127 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - +//MiOPMdrv sound bank Paramer Ver2002.04.22 +//LFO: LFRQ AMD PMD WF NFRQ +//@:[Num] [Name] +//CH: PAN FL CON AMS PMS SLOT NE +//[OPname]: AR D1R D2R RR D1L TL KS MUL DT1 DT2 AMS-EN + +@:0 Nylon Guitar +LFO: 0 0 0 0 0 +CH: 64 0 2 0 0 120 0 +M1: 25 28 0 15 15 50 0 8 3 0 0 +C1: 31 0 0 4 15 40 0 5 3 0 0 +M2: 31 4 0 1 9 38 0 2 3 0 0 +C2: 31 10 0 9 15 0 0 1 3 0 0 + +@:1 Ukulele +LFO: 0 0 0 0 0 +CH: 64 0 2 0 0 120 0 +M1: 20 24 0 15 15 42 0 4 3 0 0 +C1: 31 11 0 4 15 40 0 5 3 0 0 +M2: 31 4 0 1 11 50 0 2 3 0 0 +C2: 31 11 10 10 4 0 0 1 3 0 0 + +@:2 Steel Guitar +LFO: 0 0 0 0 0 +CH: 64 0 2 0 0 120 0 +M1: 25 28 0 15 15 39 0 8 3 0 0 +C1: 31 4 0 4 15 24 0 3 3 0 0 +M2: 31 5 0 1 9 40 0 1 3 0 0 +C2: 31 10 0 9 15 0 0 1 3 0 0 + +@:3 Jazz Guitar +LFO: 0 0 0 0 0 +CH: 64 7 2 0 0 120 0 +M1: 23 21 0 15 15 36 0 1 3 0 0 +C1: 31 0 0 4 15 45 0 4 2 0 0 +M2: 31 0 0 1 15 43 0 1 3 0 0 +C2: 31 10 0 9 15 0 0 1 3 0 0 + +@:4 Lap Guitar +LFO: 0 0 0 0 0 +CH: 64 7 2 0 0 120 0 +M1: 23 21 0 15 15 42 0 1 3 0 0 +C1: 31 0 0 4 15 37 0 2 2 0 0 +M2: 31 0 0 1 15 45 0 1 5 0 0 +C2: 31 8 0 9 15 0 0 1 3 0 0 + +@:5 Clean Guitar +LFO: 0 0 0 0 0 +CH: 64 7 0 0 0 120 0 +M1: 31 13 0 9 15 46 0 9 2 0 0 +C1: 31 8 0 4 15 15 0 1 2 0 0 +M2: 31 4 0 1 11 30 0 1 3 0 0 +C2: 31 9 0 11 15 0 0 1 3 0 0 + +@:6 Muted Guitar +LFO: 0 0 0 0 0 +CH: 64 4 2 0 0 120 0 +M1: 28 21 0 15 15 32 0 4 5 0 0 +C1: 31 3 0 4 15 50 0 1 0 0 0 +M2: 31 2 0 1 11 33 0 1 5 0 0 +C2: 31 10 0 9 15 0 0 1 0 0 0 + +@:7 Funk Guitar +LFO: 0 0 0 0 0 +CH: 64 7 0 0 0 120 0 +M1: 23 13 0 15 15 56 0 9 3 0 0 +C1: 31 8 0 4 15 20 0 1 2 0 0 +M2: 31 4 0 1 11 30 0 1 3 0 0 +C2: 31 9 0 11 15 0 0 1 3 0 0 + +@:8 Overdrive(Low) +LFO: 0 0 0 0 0 +CH: 64 6 2 0 0 120 0 +M1: 31 23 0 15 15 9 0 3 3 0 0 +C1: 31 0 0 4 15 18 0 1 4 0 0 +M2: 31 0 0 1 11 14 0 1 1 0 0 +C2: 31 7 0 12 15 0 0 1 3 0 0 + +@:9 Distorted(Low) +LFO: 0 0 0 0 0 +CH: 64 6 2 0 0 120 0 +M1: 31 23 0 15 15 9 0 4 3 0 0 +C1: 31 0 0 4 15 19 0 1 4 0 0 +M2: 31 6 0 1 11 6 0 1 1 0 0 +C2: 31 7 0 12 15 0 0 1 3 0 0 + +@:10 Overdrive(High) +LFO: 0 0 0 0 0 +CH: 64 7 2 0 0 120 0 +M1: 31 23 0 15 15 16 0 3 3 0 0 +C1: 31 0 0 4 15 37 0 2 3 0 0 +M2: 31 0 0 1 11 22 0 1 1 0 0 +C2: 31 7 0 11 15 0 0 3 3 0 0 + +@:11 Distorted(High) +LFO: 0 0 0 0 0 +CH: 64 7 2 0 0 120 0 +M1: 31 23 0 15 15 9 0 3 3 0 0 +C1: 31 0 0 4 15 27 0 1 3 0 0 +M2: 31 0 0 1 11 20 0 1 1 0 0 +C2: 31 7 0 11 15 0 0 3 3 0 0 + +@:12 GtrHarmonics +LFO: 0 0 0 0 0 +CH: 64 7 2 0 0 120 0 +M1: 31 23 0 15 15 16 0 2 3 0 0 +C1: 31 0 0 4 15 33 0 8 4 0 0 +M2: 31 0 0 1 11 22 0 4 4 0 0 +C2: 31 6 0 11 15 0 0 2 3 0 0 + +@:13 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:14 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:15 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:16 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:17 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:18 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:19 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:20 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:21 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:22 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:23 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:24 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:25 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:26 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:27 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:28 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:29 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:30 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:31 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:32 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:33 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:34 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:35 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:36 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:37 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:38 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:39 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:40 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:41 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:42 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:43 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:44 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:45 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:46 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:47 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:48 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:49 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:50 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:51 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:52 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:53 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:54 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:55 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:56 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:57 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:58 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:59 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:60 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:61 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:62 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:63 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:64 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:65 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:66 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:67 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:68 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:69 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:70 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:71 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:72 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:73 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:74 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:75 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:76 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:77 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:78 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:79 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:80 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:81 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:82 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:83 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:84 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:85 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:86 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:87 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:88 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:89 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:90 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:91 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:92 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:93 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:94 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:95 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:96 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:97 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:98 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:99 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:100 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:101 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:102 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:103 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:104 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:105 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:106 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:107 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:108 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:109 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:110 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:111 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:112 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:113 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:114 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:115 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:116 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:117 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:118 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:119 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:120 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:121 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:122 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:123 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:124 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:125 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:126 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:127 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + diff --git a/instruments/FM/wind/Harmonica.dmp b/instruments/OPM/Harmonica.dmp similarity index 100% rename from instruments/FM/wind/Harmonica.dmp rename to instruments/OPM/Harmonica.dmp diff --git a/instruments/other/(S16) Hi-Hat Closed.dmp b/instruments/OPM/Hi-Hat Closed.dmp similarity index 100% rename from instruments/other/(S16) Hi-Hat Closed.dmp rename to instruments/OPM/Hi-Hat Closed.dmp diff --git a/instruments/other/(S16) Hi-Hat Open.dmp b/instruments/OPM/Hi-Hat Open.dmp similarity index 100% rename from instruments/other/(S16) Hi-Hat Open.dmp rename to instruments/OPM/Hi-Hat Open.dmp diff --git a/instruments/FM/drums/OPM Power Snare.fui b/instruments/OPM/OPM Power Snare.fui similarity index 100% rename from instruments/FM/drums/OPM Power Snare.fui rename to instruments/OPM/OPM Power Snare.fui diff --git a/instruments/FM/keys/Organ 2 (Percussive).dmp b/instruments/OPM/Organ 2 (Percussive).dmp similarity index 100% rename from instruments/FM/keys/Organ 2 (Percussive).dmp rename to instruments/OPM/Organ 2 (Percussive).dmp diff --git a/instruments/FM/keys/Organ 3 (Rock Organ).dmp b/instruments/OPM/Organ 3 (Rock Organ).dmp similarity index 100% rename from instruments/FM/keys/Organ 3 (Rock Organ).dmp rename to instruments/OPM/Organ 3 (Rock Organ).dmp diff --git a/instruments/FM/keys/Organ 3 Alt (Rock Organ Alt).dmp b/instruments/OPM/Organ 3 Alt (Rock Organ Alt).dmp similarity index 100% rename from instruments/FM/keys/Organ 3 Alt (Rock Organ Alt).dmp rename to instruments/OPM/Organ 3 Alt (Rock Organ Alt).dmp diff --git a/instruments/FM/keys/Organ 5 (Percussive Variation).dmp b/instruments/OPM/Organ 5 (Percussive Variation).dmp similarity index 100% rename from instruments/FM/keys/Organ 5 (Percussive Variation).dmp rename to instruments/OPM/Organ 5 (Percussive Variation).dmp diff --git a/instruments/other/(S16) Perfect Square Wave + Hi-Hat Closed.dmp b/instruments/OPM/Perfect Square Wave + Hi-Hat Closed.dmp similarity index 100% rename from instruments/other/(S16) Perfect Square Wave + Hi-Hat Closed.dmp rename to instruments/OPM/Perfect Square Wave + Hi-Hat Closed.dmp diff --git a/instruments/other/(S16) Perfect Square Wave + Hi-Hat Open.dmp b/instruments/OPM/Perfect Square Wave + Hi-Hat Open.dmp similarity index 100% rename from instruments/other/(S16) Perfect Square Wave + Hi-Hat Open.dmp rename to instruments/OPM/Perfect Square Wave + Hi-Hat Open.dmp diff --git a/instruments/FM/keys/(GEN) Piano 2.dmp b/instruments/OPM/Piano 2.dmp similarity index 100% rename from instruments/FM/keys/(GEN) Piano 2.dmp rename to instruments/OPM/Piano 2.dmp diff --git a/instruments/FM/keys/Piano 3 (Electric Grand).dmp b/instruments/OPM/Piano 3 (Electric Grand).dmp similarity index 100% rename from instruments/FM/keys/Piano 3 (Electric Grand).dmp rename to instruments/OPM/Piano 3 (Electric Grand).dmp diff --git a/instruments/FM/keys/Piano Test.opm b/instruments/OPM/Piano Test.opm similarity index 95% rename from instruments/FM/keys/Piano Test.opm rename to instruments/OPM/Piano Test.opm index ad372590c..9b2d03f64 100644 --- a/instruments/FM/keys/Piano Test.opm +++ b/instruments/OPM/Piano Test.opm @@ -1,1030 +1,1030 @@ -//MiOPMdrv sound bank Paramer Ver2002.04.22 -//LFO: LFRQ AMD PMD WF NFRQ -//@:[Num] [Name] -//CH: PAN FL CON AMS PMS SLOT NE -//[OPname]: AR D1R D2R RR D1L TL KS MUL DT1 DT2 AMS-EN - -@:0 Piano1 (Acou.) -LFO: 0 0 0 0 0 -CH: 64 7 2 0 0 120 0 -M1: 31 24 4 4 2 41 0 3 4 0 0 -C1: 31 0 0 4 15 41 0 1 3 0 0 -M2: 31 7 0 1 11 43 0 2 3 0 0 -C2: 29 9 0 9 15 0 0 1 3 0 0 - -@:1 Piano2 (Brite) -LFO: 0 0 0 0 0 -CH: 64 7 2 0 0 120 0 -M1: 31 24 4 4 3 31 0 1 4 0 0 -C1: 31 0 0 4 15 39 0 3 3 0 0 -M2: 31 4 0 1 11 40 0 2 3 0 0 -C2: 29 9 0 9 15 0 0 1 3 0 0 - -@:2 Piano3 (EGrand) -LFO: 0 0 0 0 0 -CH: 64 7 2 0 0 120 0 -M1: 27 24 4 4 3 29 0 1 4 0 0 -C1: 31 12 0 4 15 35 0 1 3 0 0 -M2: 31 18 8 1 2 24 0 2 3 0 0 -C2: 29 9 0 9 15 0 0 1 3 0 0 - -@:3 EPiano1 (Rhodes) -LFO: 0 0 0 0 0 -CH: 64 0 4 0 0 120 0 -M1: 31 21 0 3 3 57 0 14 5 0 0 -C1: 31 9 0 10 15 23 0 1 0 0 0 -M2: 31 1 0 1 5 53 0 1 5 0 0 -C2: 31 8 0 9 15 2 0 1 0 0 0 - -@:4 EPiano2 (DX) -LFO: 0 0 0 0 0 -CH: 64 7 4 0 0 120 0 -M1: 31 0 0 3 15 38 0 11 3 0 0 -C1: 31 15 0 8 15 30 0 12 3 0 0 -M2: 31 6 0 1 11 33 0 1 3 0 0 -C2: 31 8 0 9 15 0 0 1 3 0 0 - -@:5 Harpsichord -LFO: 0 0 0 0 0 -CH: 64 7 0 0 0 120 0 -M1: 31 4 0 3 15 42 0 2 3 0 0 -C1: 31 28 6 4 1 21 0 5 3 0 0 -M2: 31 5 0 1 1 31 0 9 3 0 0 -C2: 31 9 0 9 15 0 0 1 3 0 0 - -@:6 Clavinet -LFO: 0 0 0 0 0 -CH: 64 7 0 0 0 120 0 -M1: 31 23 8 3 4 32 0 1 3 0 0 -C1: 31 0 0 4 15 22 0 1 3 0 0 -M2: 31 0 0 1 11 19 0 2 3 0 0 -C2: 31 9 0 10 15 0 0 1 3 0 0 - -@:7 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:8 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:9 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:10 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:11 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:12 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:13 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:14 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:15 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:16 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:17 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:18 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:19 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:20 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:21 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:22 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:23 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:24 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:25 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:26 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:27 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:28 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:29 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:30 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:31 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:32 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:33 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:34 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:35 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:36 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:37 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:38 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:39 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:40 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:41 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:42 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:43 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:44 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:45 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:46 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:47 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:48 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:49 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:50 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:51 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:52 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:53 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:54 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:55 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:56 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:57 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:58 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:59 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:60 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:61 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:62 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:63 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:64 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:65 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:66 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:67 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:68 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:69 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:70 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:71 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:72 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:73 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:74 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:75 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:76 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:77 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:78 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:79 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:80 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:81 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:82 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:83 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:84 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:85 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:86 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:87 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:88 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:89 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:90 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:91 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:92 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:93 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:94 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:95 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:96 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:97 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:98 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:99 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:100 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:101 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:102 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:103 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:104 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:105 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:106 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:107 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:108 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:109 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:110 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:111 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:112 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:113 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:114 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:115 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:116 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:117 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:118 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:119 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:120 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:121 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:122 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:123 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:124 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:125 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:126 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - -@:127 no Name -LFO: 0 0 0 0 0 -CH: 64 0 0 0 0 64 0 -M1: 31 0 0 4 0 0 0 1 0 0 0 -C1: 31 0 0 4 0 0 0 1 0 0 0 -M2: 31 0 0 4 0 0 0 1 0 0 0 -C2: 31 0 0 4 0 0 0 1 0 0 0 - +//MiOPMdrv sound bank Paramer Ver2002.04.22 +//LFO: LFRQ AMD PMD WF NFRQ +//@:[Num] [Name] +//CH: PAN FL CON AMS PMS SLOT NE +//[OPname]: AR D1R D2R RR D1L TL KS MUL DT1 DT2 AMS-EN + +@:0 Piano1 (Acou.) +LFO: 0 0 0 0 0 +CH: 64 7 2 0 0 120 0 +M1: 31 24 4 4 2 41 0 3 4 0 0 +C1: 31 0 0 4 15 41 0 1 3 0 0 +M2: 31 7 0 1 11 43 0 2 3 0 0 +C2: 29 9 0 9 15 0 0 1 3 0 0 + +@:1 Piano2 (Brite) +LFO: 0 0 0 0 0 +CH: 64 7 2 0 0 120 0 +M1: 31 24 4 4 3 31 0 1 4 0 0 +C1: 31 0 0 4 15 39 0 3 3 0 0 +M2: 31 4 0 1 11 40 0 2 3 0 0 +C2: 29 9 0 9 15 0 0 1 3 0 0 + +@:2 Piano3 (EGrand) +LFO: 0 0 0 0 0 +CH: 64 7 2 0 0 120 0 +M1: 27 24 4 4 3 29 0 1 4 0 0 +C1: 31 12 0 4 15 35 0 1 3 0 0 +M2: 31 18 8 1 2 24 0 2 3 0 0 +C2: 29 9 0 9 15 0 0 1 3 0 0 + +@:3 EPiano1 (Rhodes) +LFO: 0 0 0 0 0 +CH: 64 0 4 0 0 120 0 +M1: 31 21 0 3 3 57 0 14 5 0 0 +C1: 31 9 0 10 15 23 0 1 0 0 0 +M2: 31 1 0 1 5 53 0 1 5 0 0 +C2: 31 8 0 9 15 2 0 1 0 0 0 + +@:4 EPiano2 (DX) +LFO: 0 0 0 0 0 +CH: 64 7 4 0 0 120 0 +M1: 31 0 0 3 15 38 0 11 3 0 0 +C1: 31 15 0 8 15 30 0 12 3 0 0 +M2: 31 6 0 1 11 33 0 1 3 0 0 +C2: 31 8 0 9 15 0 0 1 3 0 0 + +@:5 Harpsichord +LFO: 0 0 0 0 0 +CH: 64 7 0 0 0 120 0 +M1: 31 4 0 3 15 42 0 2 3 0 0 +C1: 31 28 6 4 1 21 0 5 3 0 0 +M2: 31 5 0 1 1 31 0 9 3 0 0 +C2: 31 9 0 9 15 0 0 1 3 0 0 + +@:6 Clavinet +LFO: 0 0 0 0 0 +CH: 64 7 0 0 0 120 0 +M1: 31 23 8 3 4 32 0 1 3 0 0 +C1: 31 0 0 4 15 22 0 1 3 0 0 +M2: 31 0 0 1 11 19 0 2 3 0 0 +C2: 31 9 0 10 15 0 0 1 3 0 0 + +@:7 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:8 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:9 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:10 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:11 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:12 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:13 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:14 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:15 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:16 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:17 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:18 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:19 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:20 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:21 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:22 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:23 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:24 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:25 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:26 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:27 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:28 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:29 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:30 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:31 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:32 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:33 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:34 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:35 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:36 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:37 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:38 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:39 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:40 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:41 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:42 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:43 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:44 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:45 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:46 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:47 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:48 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:49 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:50 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:51 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:52 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:53 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:54 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:55 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:56 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:57 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:58 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:59 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:60 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:61 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:62 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:63 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:64 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:65 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:66 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:67 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:68 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:69 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:70 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:71 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:72 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:73 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:74 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:75 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:76 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:77 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:78 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:79 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:80 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:81 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:82 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:83 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:84 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:85 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:86 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:87 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:88 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:89 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:90 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:91 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:92 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:93 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:94 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:95 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:96 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:97 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:98 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:99 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:100 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:101 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:102 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:103 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:104 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:105 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:106 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:107 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:108 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:109 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:110 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:111 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:112 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:113 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:114 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:115 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:116 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:117 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:118 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:119 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:120 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:121 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:122 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:123 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:124 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:125 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:126 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:127 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + diff --git a/instruments/other/(S16) Portal Cast.dmp b/instruments/OPM/Portal Cast.dmp similarity index 100% rename from instruments/other/(S16) Portal Cast.dmp rename to instruments/OPM/Portal Cast.dmp diff --git a/instruments/FM/keys/Reed Organ or Bandoneon.dmp b/instruments/OPM/Reed Organ or Bandoneon.dmp similarity index 100% rename from instruments/FM/keys/Reed Organ or Bandoneon.dmp rename to instruments/OPM/Reed Organ or Bandoneon.dmp diff --git a/instruments/FM/bass/(GEN) Techno Bass 2.dmp b/instruments/OPM/Techno Bass 2.dmp similarity index 100% rename from instruments/FM/bass/(GEN) Techno Bass 2.dmp rename to instruments/OPM/Techno Bass 2.dmp diff --git a/instruments/FM/horn/ass overtone brass.dmp b/instruments/OPM/ass overtone brass.dmp similarity index 100% rename from instruments/FM/horn/ass overtone brass.dmp rename to instruments/OPM/ass overtone brass.dmp diff --git a/instruments/FM/synth/ass-loud lead.dmp b/instruments/OPM/ass-loud lead.dmp similarity index 100% rename from instruments/FM/synth/ass-loud lead.dmp rename to instruments/OPM/ass-loud lead.dmp diff --git a/instruments/FM/accordion/brickblock369 Accordion.dmp b/instruments/OPM/brickblock369 Accordion.dmp similarity index 100% rename from instruments/FM/accordion/brickblock369 Accordion.dmp rename to instruments/OPM/brickblock369 Accordion.dmp diff --git a/instruments/FM/keys/brickblock369 Church Organ.dmp b/instruments/OPM/brickblock369 Church Organ.dmp similarity index 100% rename from instruments/FM/keys/brickblock369 Church Organ.dmp rename to instruments/OPM/brickblock369 Church Organ.dmp diff --git a/instruments/FM/synth/early 80s bs.dmp b/instruments/OPM/early 80s bs.dmp similarity index 100% rename from instruments/FM/synth/early 80s bs.dmp rename to instruments/OPM/early 80s bs.dmp diff --git a/instruments/FM/synth/huh.dmp b/instruments/OPM/huh.dmp similarity index 100% rename from instruments/FM/synth/huh.dmp rename to instruments/OPM/huh.dmp diff --git a/instruments/FM/strings/orchestal bullshit.dmp b/instruments/OPM/orchestal bullshit.dmp similarity index 100% rename from instruments/FM/strings/orchestal bullshit.dmp rename to instruments/OPM/orchestal bullshit.dmp diff --git a/instruments/FM/keys/organ_test/Organ Test - Notes.txt b/instruments/OPM/organ_test/Organ Test - Notes.txt similarity index 95% rename from instruments/FM/keys/organ_test/Organ Test - Notes.txt rename to instruments/OPM/organ_test/Organ Test - Notes.txt index 794ac3987..dd2a52f88 100644 --- a/instruments/FM/keys/organ_test/Organ Test - Notes.txt +++ b/instruments/OPM/organ_test/Organ Test - Notes.txt @@ -1,12 +1,12 @@ ---- EXAMPLE OF LESLIE EFFECT MACRO FOR OVERALL VOLUME LEVEL, IN FURNACE--- -127 126 125 124 123 122 121 120 121 122 123 124 125 126 127 126 125 124 123 122 121 120 121 122 123 124 125 126 127 126 125 124 123 122 121 120 121 122 123 124 125 126 127 125 123 121 119 121 123 125 127 125 123 121 119 121 123 125 | 127 124 121 124 -For the pitch oscillation, use the vibrato command and gradually increase its depth and speed. - ---- 80'S ORGAN: YM2612 AND YM2151 DIFFERENCES --- -80's Organ was originally intended for YM2612, as this particular chip's specification causes a buzz for the high operator levels. -The YM2151 will simply make it play pure sine-waves. - ---- SPECIAL THANKS --- -Organ 3 Alt (Rock Organ Alt) - thanks to freq-mod for providing the parameters to make that sound! -Church Organ - mainly based off of the high score theme from Swords of Fury. +--- EXAMPLE OF LESLIE EFFECT MACRO FOR OVERALL VOLUME LEVEL, IN FURNACE--- +127 126 125 124 123 122 121 120 121 122 123 124 125 126 127 126 125 124 123 122 121 120 121 122 123 124 125 126 127 126 125 124 123 122 121 120 121 122 123 124 125 126 127 125 123 121 119 121 123 125 127 125 123 121 119 121 123 125 | 127 124 121 124 +For the pitch oscillation, use the vibrato command and gradually increase its depth and speed. + +--- 80'S ORGAN: YM2612 AND YM2151 DIFFERENCES --- +80's Organ was originally intended for YM2612, as this particular chip's specification causes a buzz for the high operator levels. +The YM2151 will simply make it play pure sine-waves. + +--- SPECIAL THANKS --- +Organ 3 Alt (Rock Organ Alt) - thanks to freq-mod for providing the parameters to make that sound! +Church Organ - mainly based off of the high score theme from Swords of Fury. All the rest are chosen by me. \ No newline at end of file diff --git a/instruments/FM/keys/organ_test/Organ Test.opm b/instruments/OPM/organ_test/Organ Test.opm similarity index 95% rename from instruments/FM/keys/organ_test/Organ Test.opm rename to instruments/OPM/organ_test/Organ Test.opm index 0ce75672d..af3543620 100644 --- a/instruments/FM/keys/organ_test/Organ Test.opm +++ b/instruments/OPM/organ_test/Organ Test.opm @@ -1,94 +1,94 @@ -//LFO: LFRQ AMD PMD WF NFRQ -//@:[Num] [Name] -//CH: PAN FL CON AMS PMS SLOT NE -//OP: AR D1R D2R RR D1L TL KS MUL DT1 DT2 AMS-EN - -// vgm offset = 000001db, channels used = 123-5--- -@:0 DrawbarOrgan -LFO: 0 0 0 0 0 -CH: 64 0 7 0 0 120 0 -M1: 31 13 0 11 1 19 0 8 3 0 0 -C1: 31 13 0 11 1 17 0 4 3 0 0 -M2: 31 13 0 11 1 12 0 2 3 0 0 -C2: 31 13 0 11 1 5 0 1 3 0 0 - -// vgm offset = 00000a7b, channels used = 123----- -@:1 80's Organ -LFO: 0 0 0 0 0 -CH: 64 6 7 0 0 120 0 -M1: 31 13 0 11 0 18 0 1 3 0 0 -C1: 31 13 0 11 0 6 0 8 3 0 0 -M2: 31 13 0 11 0 0 0 4 3 0 0 -C2: 31 13 0 11 0 0 0 6 3 0 0 - -// vgm offset = 00001f36, channels used = 123----- -@:2 PercussiveOrgan -LFO: 0 0 0 0 0 -CH: 64 0 7 0 0 120 0 -M1: 31 16 0 11 5 16 0 6 3 0 0 -C1: 31 13 0 11 1 13 0 3 3 0 0 -M2: 31 13 0 11 1 9 0 2 3 0 0 -C2: 31 13 0 11 1 5 0 1 3 0 0 - -// vgm offset = 0000222d, channels used = 123----- -@:3 PercussiveOrgn2 -LFO: 0 0 0 0 0 -CH: 64 0 7 0 0 120 0 -M1: 31 18 0 11 15 5 0 6 3 0 0 -C1: 31 13 0 11 1 17 0 4 3 0 0 -M2: 31 13 0 11 1 12 0 2 3 0 0 -C2: 31 13 0 11 1 5 0 1 3 0 0 - -// vgm offset = 000025c3, channels used = 123-5--- -@:4 Rock Organ -LFO: 0 0 0 0 0 -CH: 64 0 2 0 0 120 0 -M1: 23 31 0 14 15 54 0 13 5 0 0 -C1: 31 0 0 4 15 30 0 2 0 0 0 -M2: 31 0 0 1 11 35 0 1 4 0 0 -C2: 31 0 0 11 15 2 0 1 3 0 0 - -// vgm offset = 00002fc9, channels used = 123-5--- -@:5 Rock Organ 2 -LFO: 0 0 0 0 0 -CH: 64 0 6 0 0 120 0 -M1: 31 14 0 4 3 15 1 1 4 0 0 -C1: 20 4 1 11 0 10 0 2 1 0 0 -M2: 20 15 4 11 2 10 1 4 2 0 0 -C2: 31 13 1 11 4 12 0 6 6 0 0 - -// vgm offset = 00003bbb, channels used = 123-5--- -@:6 Church Organ -LFO: 0 0 0 0 0 -CH: 64 7 4 0 0 120 0 -M1: 22 0 0 10 0 55 0 10 2 0 0 -C1: 15 15 0 8 0 17 2 2 0 0 0 -M2: 24 0 0 5 0 15 2 0 0 0 0 -C2: 13 0 0 8 0 6 2 0 6 0 0 - -// vgm offset = 00003fef, channels used = 123-56-- -@:7 ReedOr/Bndoneon -LFO: 0 0 0 0 0 -CH: 64 4 4 0 0 120 0 -M1: 31 0 0 3 0 29 0 4 3 0 0 -C1: 16 10 0 11 1 11 0 2 3 0 0 -M2: 31 0 0 1 0 16 0 1 3 0 0 -C2: 16 10 0 11 1 6 0 1 3 0 0 - -// vgm offset = 000045f8, channels used = 123-567- -@:8 Accordion -LFO: 0 0 0 0 0 -CH: 64 0 4 0 0 120 0 -M1: 31 0 0 3 0 19 0 1 6 0 0 -C1: 14 14 0 9 1 13 0 1 2 0 0 -M2: 31 0 0 1 0 35 0 4 2 0 0 -C2: 14 14 0 9 1 6 0 1 3 0 0 - -// vgm offset = 0000509e, channels used = 1------- -@:9 Harmonica -LFO: 0 0 0 0 0 -CH: 64 7 0 0 0 120 0 -M1: 31 0 0 6 0 50 0 2 3 0 0 -C1: 31 0 0 6 0 27 0 2 3 0 0 -M2: 31 0 0 6 0 22 0 1 3 0 0 +//LFO: LFRQ AMD PMD WF NFRQ +//@:[Num] [Name] +//CH: PAN FL CON AMS PMS SLOT NE +//OP: AR D1R D2R RR D1L TL KS MUL DT1 DT2 AMS-EN + +// vgm offset = 000001db, channels used = 123-5--- +@:0 DrawbarOrgan +LFO: 0 0 0 0 0 +CH: 64 0 7 0 0 120 0 +M1: 31 13 0 11 1 19 0 8 3 0 0 +C1: 31 13 0 11 1 17 0 4 3 0 0 +M2: 31 13 0 11 1 12 0 2 3 0 0 +C2: 31 13 0 11 1 5 0 1 3 0 0 + +// vgm offset = 00000a7b, channels used = 123----- +@:1 80's Organ +LFO: 0 0 0 0 0 +CH: 64 6 7 0 0 120 0 +M1: 31 13 0 11 0 18 0 1 3 0 0 +C1: 31 13 0 11 0 6 0 8 3 0 0 +M2: 31 13 0 11 0 0 0 4 3 0 0 +C2: 31 13 0 11 0 0 0 6 3 0 0 + +// vgm offset = 00001f36, channels used = 123----- +@:2 PercussiveOrgan +LFO: 0 0 0 0 0 +CH: 64 0 7 0 0 120 0 +M1: 31 16 0 11 5 16 0 6 3 0 0 +C1: 31 13 0 11 1 13 0 3 3 0 0 +M2: 31 13 0 11 1 9 0 2 3 0 0 +C2: 31 13 0 11 1 5 0 1 3 0 0 + +// vgm offset = 0000222d, channels used = 123----- +@:3 PercussiveOrgn2 +LFO: 0 0 0 0 0 +CH: 64 0 7 0 0 120 0 +M1: 31 18 0 11 15 5 0 6 3 0 0 +C1: 31 13 0 11 1 17 0 4 3 0 0 +M2: 31 13 0 11 1 12 0 2 3 0 0 +C2: 31 13 0 11 1 5 0 1 3 0 0 + +// vgm offset = 000025c3, channels used = 123-5--- +@:4 Rock Organ +LFO: 0 0 0 0 0 +CH: 64 0 2 0 0 120 0 +M1: 23 31 0 14 15 54 0 13 5 0 0 +C1: 31 0 0 4 15 30 0 2 0 0 0 +M2: 31 0 0 1 11 35 0 1 4 0 0 +C2: 31 0 0 11 15 2 0 1 3 0 0 + +// vgm offset = 00002fc9, channels used = 123-5--- +@:5 Rock Organ 2 +LFO: 0 0 0 0 0 +CH: 64 0 6 0 0 120 0 +M1: 31 14 0 4 3 15 1 1 4 0 0 +C1: 20 4 1 11 0 10 0 2 1 0 0 +M2: 20 15 4 11 2 10 1 4 2 0 0 +C2: 31 13 1 11 4 12 0 6 6 0 0 + +// vgm offset = 00003bbb, channels used = 123-5--- +@:6 Church Organ +LFO: 0 0 0 0 0 +CH: 64 7 4 0 0 120 0 +M1: 22 0 0 10 0 55 0 10 2 0 0 +C1: 15 15 0 8 0 17 2 2 0 0 0 +M2: 24 0 0 5 0 15 2 0 0 0 0 +C2: 13 0 0 8 0 6 2 0 6 0 0 + +// vgm offset = 00003fef, channels used = 123-56-- +@:7 ReedOr/Bndoneon +LFO: 0 0 0 0 0 +CH: 64 4 4 0 0 120 0 +M1: 31 0 0 3 0 29 0 4 3 0 0 +C1: 16 10 0 11 1 11 0 2 3 0 0 +M2: 31 0 0 1 0 16 0 1 3 0 0 +C2: 16 10 0 11 1 6 0 1 3 0 0 + +// vgm offset = 000045f8, channels used = 123-567- +@:8 Accordion +LFO: 0 0 0 0 0 +CH: 64 0 4 0 0 120 0 +M1: 31 0 0 3 0 19 0 1 6 0 0 +C1: 14 14 0 9 1 13 0 1 2 0 0 +M2: 31 0 0 1 0 35 0 4 2 0 0 +C2: 14 14 0 9 1 6 0 1 3 0 0 + +// vgm offset = 0000509e, channels used = 1------- +@:9 Harmonica +LFO: 0 0 0 0 0 +CH: 64 7 0 0 0 120 0 +M1: 31 0 0 6 0 50 0 2 3 0 0 +C1: 31 0 0 6 0 27 0 2 3 0 0 +M2: 31 0 0 6 0 22 0 1 3 0 0 C2: 16 12 0 11 1 2 0 1 3 0 0 \ No newline at end of file diff --git a/instruments/FM/synth/saw + whatever the fuck.dmp b/instruments/OPM/saw + whatever the fuck.dmp similarity index 100% rename from instruments/FM/synth/saw + whatever the fuck.dmp rename to instruments/OPM/saw + whatever the fuck.dmp diff --git a/instruments/FM/guitar/trashy guitar.dmp b/instruments/OPM/trashy guitar.dmp similarity index 100% rename from instruments/FM/guitar/trashy guitar.dmp rename to instruments/OPM/trashy guitar.dmp diff --git a/instruments/FM/percussion/trashy handbells.dmp b/instruments/OPM/trashy handbells.dmp similarity index 100% rename from instruments/FM/percussion/trashy handbells.dmp rename to instruments/OPM/trashy handbells.dmp diff --git a/instruments/FM/accordion/Accordion.dmp b/instruments/OPN/accordion/Accordion.dmp similarity index 100% rename from instruments/FM/accordion/Accordion.dmp rename to instruments/OPN/accordion/Accordion.dmp diff --git a/instruments/FM/accordion/Harmonium.dmp b/instruments/OPN/accordion/Harmonium.dmp similarity index 100% rename from instruments/FM/accordion/Harmonium.dmp rename to instruments/OPN/accordion/Harmonium.dmp diff --git a/instruments/FM/bass/(CH3) Double Synth.dmp b/instruments/OPN/bass/(CH3) Double Synth.dmp similarity index 100% rename from instruments/FM/bass/(CH3) Double Synth.dmp rename to instruments/OPN/bass/(CH3) Double Synth.dmp diff --git a/instruments/FM/bass/4-OP_Vowel_Bass.fui b/instruments/OPN/bass/4-OP_Vowel_Bass.fui similarity index 100% rename from instruments/FM/bass/4-OP_Vowel_Bass.fui rename to instruments/OPN/bass/4-OP_Vowel_Bass.fui diff --git a/instruments/FM/bass/4_OP_Funky_Bass.fui b/instruments/OPN/bass/4_OP_Funky_Bass.fui similarity index 100% rename from instruments/FM/bass/4_OP_Funky_Bass.fui rename to instruments/OPN/bass/4_OP_Funky_Bass.fui diff --git a/instruments/FM/bass/Acoustic Bass 2.dmp b/instruments/OPN/bass/Acoustic Bass 2.dmp similarity index 100% rename from instruments/FM/bass/Acoustic Bass 2.dmp rename to instruments/OPN/bass/Acoustic Bass 2.dmp diff --git a/instruments/FM/bass/Acoustic Bass.dmp b/instruments/OPN/bass/Acoustic Bass.dmp similarity index 100% rename from instruments/FM/bass/Acoustic Bass.dmp rename to instruments/OPN/bass/Acoustic Bass.dmp diff --git a/instruments/FM/bass/Algorithmic Bass.fui b/instruments/OPN/bass/Algorithmic Bass.fui similarity index 100% rename from instruments/FM/bass/Algorithmic Bass.fui rename to instruments/OPN/bass/Algorithmic Bass.fui diff --git a/instruments/FM/bass/(GEN) Bass Guitar 1.dmp b/instruments/OPN/bass/Bass Guitar 1.dmp similarity index 100% rename from instruments/FM/bass/(GEN) Bass Guitar 1.dmp rename to instruments/OPN/bass/Bass Guitar 1.dmp diff --git a/instruments/FM/bass/(GEN) Bass Guitar 2.dmp b/instruments/OPN/bass/Bass Guitar 2.dmp similarity index 100% rename from instruments/FM/bass/(GEN) Bass Guitar 2.dmp rename to instruments/OPN/bass/Bass Guitar 2.dmp diff --git a/instruments/FM/bass/(GEN) Bass Guitar 3.dmp b/instruments/OPN/bass/Bass Guitar 3.dmp similarity index 100% rename from instruments/FM/bass/(GEN) Bass Guitar 3.dmp rename to instruments/OPN/bass/Bass Guitar 3.dmp diff --git a/instruments/FM/bass/Bass Guitar.dmp b/instruments/OPN/bass/Bass Guitar.dmp similarity index 100% rename from instruments/FM/bass/Bass Guitar.dmp rename to instruments/OPN/bass/Bass Guitar.dmp diff --git a/instruments/FM/bass/Bass.fui b/instruments/OPN/bass/Bass.fui similarity index 100% rename from instruments/FM/bass/Bass.fui rename to instruments/OPN/bass/Bass.fui diff --git a/instruments/FM/bass/BassThing.dmp b/instruments/OPN/bass/BassThing.dmp similarity index 100% rename from instruments/FM/bass/BassThing.dmp rename to instruments/OPN/bass/BassThing.dmp diff --git a/instruments/FM/bass/(GEN) Common Genesis Bass.dmp b/instruments/OPN/bass/Common Genesis Bass.dmp similarity index 100% rename from instruments/FM/bass/(GEN) Common Genesis Bass.dmp rename to instruments/OPN/bass/Common Genesis Bass.dmp diff --git a/instruments/FM/bass/Double Bass.dmp b/instruments/OPN/bass/Double Bass.dmp similarity index 100% rename from instruments/FM/bass/Double Bass.dmp rename to instruments/OPN/bass/Double Bass.dmp diff --git a/instruments/FM/bass/(GEN) Electric Bass Guitar.dmp b/instruments/OPN/bass/Electric Bass Guitar.dmp similarity index 100% rename from instruments/FM/bass/(GEN) Electric Bass Guitar.dmp rename to instruments/OPN/bass/Electric Bass Guitar.dmp diff --git a/instruments/FM/bass/Electric Finger Bass.dmp b/instruments/OPN/bass/Electric Finger Bass.dmp similarity index 100% rename from instruments/FM/bass/Electric Finger Bass.dmp rename to instruments/OPN/bass/Electric Finger Bass.dmp diff --git a/instruments/FM/bass/Electric Fretless Bass.dmp b/instruments/OPN/bass/Electric Fretless Bass.dmp similarity index 100% rename from instruments/FM/bass/Electric Fretless Bass.dmp rename to instruments/OPN/bass/Electric Fretless Bass.dmp diff --git a/instruments/FM/bass/Electric Picked Bass.dmp b/instruments/OPN/bass/Electric Picked Bass.dmp similarity index 100% rename from instruments/FM/bass/Electric Picked Bass.dmp rename to instruments/OPN/bass/Electric Picked Bass.dmp diff --git a/instruments/FM/bass/Electric Slap Bass.dmp b/instruments/OPN/bass/Electric Slap Bass.dmp similarity index 100% rename from instruments/FM/bass/Electric Slap Bass.dmp rename to instruments/OPN/bass/Electric Slap Bass.dmp diff --git a/instruments/FM/bass/FM-Bass-2.dmp b/instruments/OPN/bass/FM-Bass-2.dmp similarity index 100% rename from instruments/FM/bass/FM-Bass-2.dmp rename to instruments/OPN/bass/FM-Bass-2.dmp diff --git a/instruments/FM/bass/FM_Bass.dmp b/instruments/OPN/bass/FM_Bass.dmp similarity index 100% rename from instruments/FM/bass/FM_Bass.dmp rename to instruments/OPN/bass/FM_Bass.dmp diff --git a/instruments/FM/bass/FM_CriminalBass.fui b/instruments/OPN/bass/FM_CriminalBass.fui similarity index 100% rename from instruments/FM/bass/FM_CriminalBass.fui rename to instruments/OPN/bass/FM_CriminalBass.fui diff --git a/instruments/FM/bass/Finger Bass.fui b/instruments/OPN/bass/Finger Bass.fui similarity index 100% rename from instruments/FM/bass/Finger Bass.fui rename to instruments/OPN/bass/Finger Bass.fui diff --git a/instruments/FM/bass/OPNx_FingerBass.fui b/instruments/OPN/bass/FingerBass.fui similarity index 100% rename from instruments/FM/bass/OPNx_FingerBass.fui rename to instruments/OPN/bass/FingerBass.fui diff --git a/instruments/FM/bass/GEMSLike Bass.dmp b/instruments/OPN/bass/GEMSLike Bass.dmp similarity index 100% rename from instruments/FM/bass/GEMSLike Bass.dmp rename to instruments/OPN/bass/GEMSLike Bass.dmp diff --git a/instruments/FM/bass/(GEN) Growl Bass.dmp b/instruments/OPN/bass/Growl Bass.dmp similarity index 100% rename from instruments/FM/bass/(GEN) Growl Bass.dmp rename to instruments/OPN/bass/Growl Bass.dmp diff --git a/instruments/FM/bass/(GEN) Heavy Electric Bass.dmp b/instruments/OPN/bass/Heavy Electric Bass.dmp similarity index 100% rename from instruments/FM/bass/(GEN) Heavy Electric Bass.dmp rename to instruments/OPN/bass/Heavy Electric Bass.dmp diff --git a/instruments/FM/bass/House_Bass.fui b/instruments/OPN/bass/House_Bass.fui similarity index 100% rename from instruments/FM/bass/House_Bass.fui rename to instruments/OPN/bass/House_Bass.fui diff --git a/instruments/FM/bass/Levin Bass.dmp b/instruments/OPN/bass/Levin Bass.dmp similarity index 100% rename from instruments/FM/bass/Levin Bass.dmp rename to instruments/OPN/bass/Levin Bass.dmp diff --git a/instruments/FM/bass/(GEN) Low Piano.dmp b/instruments/OPN/bass/Low Piano.dmp similarity index 100% rename from instruments/FM/bass/(GEN) Low Piano.dmp rename to instruments/OPN/bass/Low Piano.dmp diff --git a/instruments/FM/bass/(GEN) Low Sax.dmp b/instruments/OPN/bass/Low Sax.dmp similarity index 100% rename from instruments/FM/bass/(GEN) Low Sax.dmp rename to instruments/OPN/bass/Low Sax.dmp diff --git a/instruments/FM/bass/(GEN) Low Square.dmp b/instruments/OPN/bass/Low Square.dmp similarity index 100% rename from instruments/FM/bass/(GEN) Low Square.dmp rename to instruments/OPN/bass/Low Square.dmp diff --git a/instruments/FM/bass/(GEN) Low Trumpet.dmp b/instruments/OPN/bass/Low Trumpet.dmp similarity index 100% rename from instruments/FM/bass/(GEN) Low Trumpet.dmp rename to instruments/OPN/bass/Low Trumpet.dmp diff --git a/instruments/FM/bass/Passport Bass.dmp b/instruments/OPN/bass/Passport Bass.dmp similarity index 100% rename from instruments/FM/bass/Passport Bass.dmp rename to instruments/OPN/bass/Passport Bass.dmp diff --git a/instruments/FM/bass/Piano Bass.dmp b/instruments/OPN/bass/Piano Bass.dmp similarity index 100% rename from instruments/FM/bass/Piano Bass.dmp rename to instruments/OPN/bass/Piano Bass.dmp diff --git a/instruments/FM/bass/OPNx_PickBass.fui b/instruments/OPN/bass/PickBass.fui similarity index 100% rename from instruments/FM/bass/OPNx_PickBass.fui rename to instruments/OPN/bass/PickBass.fui diff --git a/instruments/FM/bass/PickMD.fui b/instruments/OPN/bass/PickMD.fui similarity index 100% rename from instruments/FM/bass/PickMD.fui rename to instruments/OPN/bass/PickMD.fui diff --git a/instruments/FM/bass/Power Bass.dmp b/instruments/OPN/bass/Power Bass.dmp similarity index 100% rename from instruments/FM/bass/Power Bass.dmp rename to instruments/OPN/bass/Power Bass.dmp diff --git a/instruments/FM/bass/Punch Bass.dmp b/instruments/OPN/bass/Punch Bass.dmp similarity index 100% rename from instruments/FM/bass/Punch Bass.dmp rename to instruments/OPN/bass/Punch Bass.dmp diff --git a/instruments/FM/bass/(GEN) Punch Packer.dmp b/instruments/OPN/bass/Punch Packer.dmp similarity index 100% rename from instruments/FM/bass/(GEN) Punch Packer.dmp rename to instruments/OPN/bass/Punch Packer.dmp diff --git a/instruments/FM/bass/Radical Bass.dmp b/instruments/OPN/bass/Radical Bass.dmp similarity index 100% rename from instruments/FM/bass/Radical Bass.dmp rename to instruments/OPN/bass/Radical Bass.dmp diff --git a/instruments/FM/bass/Real Bass 1.dmp b/instruments/OPN/bass/Real Bass 1.dmp similarity index 100% rename from instruments/FM/bass/Real Bass 1.dmp rename to instruments/OPN/bass/Real Bass 1.dmp diff --git a/instruments/FM/bass/Real Bass 2.dmp b/instruments/OPN/bass/Real Bass 2.dmp similarity index 100% rename from instruments/FM/bass/Real Bass 2.dmp rename to instruments/OPN/bass/Real Bass 2.dmp diff --git a/instruments/FM/bass/Resonant Bass.dmp b/instruments/OPN/bass/Resonant Bass.dmp similarity index 100% rename from instruments/FM/bass/Resonant Bass.dmp rename to instruments/OPN/bass/Resonant Bass.dmp diff --git a/instruments/FM/bass/(GEN) Rounded Saw.dmp b/instruments/OPN/bass/Rounded Saw.dmp similarity index 100% rename from instruments/FM/bass/(GEN) Rounded Saw.dmp rename to instruments/OPN/bass/Rounded Saw.dmp diff --git a/instruments/FM/bass/SC-55 Synth Bass 1.dmp b/instruments/OPN/bass/SC-55 Synth Bass 1.dmp similarity index 100% rename from instruments/FM/bass/SC-55 Synth Bass 1.dmp rename to instruments/OPN/bass/SC-55 Synth Bass 1.dmp diff --git a/instruments/FM/bass/SC-55 SynthBass101.dmp b/instruments/OPN/bass/SC-55 SynthBass101.dmp similarity index 100% rename from instruments/FM/bass/SC-55 SynthBass101.dmp rename to instruments/OPN/bass/SC-55 SynthBass101.dmp diff --git a/instruments/FM/bass/(GEN) Slap Bass 1.dmp b/instruments/OPN/bass/Slap Bass 1.dmp similarity index 100% rename from instruments/FM/bass/(GEN) Slap Bass 1.dmp rename to instruments/OPN/bass/Slap Bass 1.dmp diff --git a/instruments/FM/bass/(GEN) Slap Bass 2.dmp b/instruments/OPN/bass/Slap Bass 2.dmp similarity index 100% rename from instruments/FM/bass/(GEN) Slap Bass 2.dmp rename to instruments/OPN/bass/Slap Bass 2.dmp diff --git a/instruments/FM/bass/(GEN) Slap Bass 3.dmp b/instruments/OPN/bass/Slap Bass 3.dmp similarity index 100% rename from instruments/FM/bass/(GEN) Slap Bass 3.dmp rename to instruments/OPN/bass/Slap Bass 3.dmp diff --git a/instruments/FM/bass/Slap Bass.dmp b/instruments/OPN/bass/Slap Bass.dmp similarity index 100% rename from instruments/FM/bass/Slap Bass.dmp rename to instruments/OPN/bass/Slap Bass.dmp diff --git a/instruments/FM/bass/Slap Bass.fui b/instruments/OPN/bass/Slap Bass.fui similarity index 100% rename from instruments/FM/bass/Slap Bass.fui rename to instruments/OPN/bass/Slap Bass.fui diff --git a/instruments/FM/bass/(GEN) Space Synth.dmp b/instruments/OPN/bass/Space Synth.dmp similarity index 100% rename from instruments/FM/bass/(GEN) Space Synth.dmp rename to instruments/OPN/bass/Space Synth.dmp diff --git a/instruments/FM/bass/Spooky Bass.dmp b/instruments/OPN/bass/Spooky Bass.dmp similarity index 100% rename from instruments/FM/bass/Spooky Bass.dmp rename to instruments/OPN/bass/Spooky Bass.dmp diff --git a/instruments/FM/bass/Squire Bass.dmp b/instruments/OPN/bass/Squire Bass.dmp similarity index 100% rename from instruments/FM/bass/Squire Bass.dmp rename to instruments/OPN/bass/Squire Bass.dmp diff --git a/instruments/FM/bass/Sublime Bass.dmp b/instruments/OPN/bass/Sublime Bass.dmp similarity index 100% rename from instruments/FM/bass/Sublime Bass.dmp rename to instruments/OPN/bass/Sublime Bass.dmp diff --git a/instruments/FM/bass/(GEN) Sunsoft Slap Bass.dmp b/instruments/OPN/bass/Sunsoft Slap Bass.dmp similarity index 100% rename from instruments/FM/bass/(GEN) Sunsoft Slap Bass.dmp rename to instruments/OPN/bass/Sunsoft Slap Bass.dmp diff --git a/instruments/FM/bass/(GEN) Synth.dmp b/instruments/OPN/bass/Synth.dmp similarity index 100% rename from instruments/FM/bass/(GEN) Synth.dmp rename to instruments/OPN/bass/Synth.dmp diff --git a/instruments/FM/bass/(GEN) Techno Bass 1.dmp b/instruments/OPN/bass/Techno Bass 1.dmp similarity index 100% rename from instruments/FM/bass/(GEN) Techno Bass 1.dmp rename to instruments/OPN/bass/Techno Bass 1.dmp diff --git a/instruments/FM/bass/(GEN) Thiel Bass.dmp b/instruments/OPN/bass/Thiel Bass.dmp similarity index 100% rename from instruments/FM/bass/(GEN) Thiel Bass.dmp rename to instruments/OPN/bass/Thiel Bass.dmp diff --git a/instruments/FM/bass/(GEN) Tuba 1.dmp b/instruments/OPN/bass/Tuba 1.dmp similarity index 100% rename from instruments/FM/bass/(GEN) Tuba 1.dmp rename to instruments/OPN/bass/Tuba 1.dmp diff --git a/instruments/FM/bass/(GEN) Tuba 2.dmp b/instruments/OPN/bass/Tuba 2.dmp similarity index 100% rename from instruments/FM/bass/(GEN) Tuba 2.dmp rename to instruments/OPN/bass/Tuba 2.dmp diff --git a/instruments/FM/bass/(GEN) Twang.dmp b/instruments/OPN/bass/Twang.dmp similarity index 100% rename from instruments/FM/bass/(GEN) Twang.dmp rename to instruments/OPN/bass/Twang.dmp diff --git a/instruments/FM/bass/(GEN) VRC7 Bass.dmp b/instruments/OPN/bass/VRC7 Bass.dmp similarity index 100% rename from instruments/FM/bass/(GEN) VRC7 Bass.dmp rename to instruments/OPN/bass/VRC7 Bass.dmp diff --git a/instruments/FM/bass/Yamaha MU Synth Bass 2.dmp b/instruments/OPN/bass/Yamaha MU Synth Bass 2.dmp similarity index 100% rename from instruments/FM/bass/Yamaha MU Synth Bass 2.dmp rename to instruments/OPN/bass/Yamaha MU Synth Bass 2.dmp diff --git a/instruments/FM/bass/algobass.dmp b/instruments/OPN/bass/algobass.dmp similarity index 100% rename from instruments/FM/bass/algobass.dmp rename to instruments/OPN/bass/algobass.dmp diff --git a/instruments/FM/bass/bass1.fui b/instruments/OPN/bass/bass1.fui similarity index 100% rename from instruments/FM/bass/bass1.fui rename to instruments/OPN/bass/bass1.fui diff --git a/instruments/FM/bass/bass2.fui b/instruments/OPN/bass/bass2.fui similarity index 100% rename from instruments/FM/bass/bass2.fui rename to instruments/OPN/bass/bass2.fui diff --git a/instruments/FM/bass/bass3.fui b/instruments/OPN/bass/bass3.fui similarity index 100% rename from instruments/FM/bass/bass3.fui rename to instruments/OPN/bass/bass3.fui diff --git a/instruments/FM/bass/bass4.fui b/instruments/OPN/bass/bass4.fui similarity index 100% rename from instruments/FM/bass/bass4.fui rename to instruments/OPN/bass/bass4.fui diff --git a/instruments/FM/bass/bass5.fui b/instruments/OPN/bass/bass5.fui similarity index 100% rename from instruments/FM/bass/bass5.fui rename to instruments/OPN/bass/bass5.fui diff --git a/instruments/FM/bass/bass6.fui b/instruments/OPN/bass/bass6.fui similarity index 100% rename from instruments/FM/bass/bass6.fui rename to instruments/OPN/bass/bass6.fui diff --git a/instruments/FM/bass/bass_acoustic_00.fui b/instruments/OPN/bass/bass_acoustic_00.fui similarity index 100% rename from instruments/FM/bass/bass_acoustic_00.fui rename to instruments/OPN/bass/bass_acoustic_00.fui diff --git a/instruments/FM/bass/bass_electric_00.fui b/instruments/OPN/bass/bass_electric_00.fui similarity index 100% rename from instruments/FM/bass/bass_electric_00.fui rename to instruments/OPN/bass/bass_electric_00.fui diff --git a/instruments/FM/bass/bass_electric_01.fui b/instruments/OPN/bass/bass_electric_01.fui similarity index 100% rename from instruments/FM/bass/bass_electric_01.fui rename to instruments/OPN/bass/bass_electric_01.fui diff --git a/instruments/FM/bass/bass_electric_02.fui b/instruments/OPN/bass/bass_electric_02.fui similarity index 100% rename from instruments/FM/bass/bass_electric_02.fui rename to instruments/OPN/bass/bass_electric_02.fui diff --git a/instruments/FM/bass/bass_electric_03_muffled.fui b/instruments/OPN/bass/bass_electric_03_muffled.fui similarity index 100% rename from instruments/FM/bass/bass_electric_03_muffled.fui rename to instruments/OPN/bass/bass_electric_03_muffled.fui diff --git a/instruments/FM/bass/bass_electric_04.fui b/instruments/OPN/bass/bass_electric_04.fui similarity index 100% rename from instruments/FM/bass/bass_electric_04.fui rename to instruments/OPN/bass/bass_electric_04.fui diff --git a/instruments/FM/bass/bass_electric_05_amp.fui b/instruments/OPN/bass/bass_electric_05_amp.fui similarity index 100% rename from instruments/FM/bass/bass_electric_05_amp.fui rename to instruments/OPN/bass/bass_electric_05_amp.fui diff --git a/instruments/FM/bass/bass_growl_00_wobbly.fui b/instruments/OPN/bass/bass_growl_00_wobbly.fui similarity index 100% rename from instruments/FM/bass/bass_growl_00_wobbly.fui rename to instruments/OPN/bass/bass_growl_00_wobbly.fui diff --git a/instruments/FM/bass/bass_growl_01_wobbly2.fui b/instruments/OPN/bass/bass_growl_01_wobbly2.fui similarity index 100% rename from instruments/FM/bass/bass_growl_01_wobbly2.fui rename to instruments/OPN/bass/bass_growl_01_wobbly2.fui diff --git a/instruments/FM/bass/bass_growl_02_wobbly3.fui b/instruments/OPN/bass/bass_growl_02_wobbly3.fui similarity index 100% rename from instruments/FM/bass/bass_growl_02_wobbly3.fui rename to instruments/OPN/bass/bass_growl_02_wobbly3.fui diff --git a/instruments/FM/bass/bass_picked_00.fui b/instruments/OPN/bass/bass_picked_00.fui similarity index 100% rename from instruments/FM/bass/bass_picked_00.fui rename to instruments/OPN/bass/bass_picked_00.fui diff --git a/instruments/FM/bass/bass_picked_01_snappy.fui b/instruments/OPN/bass/bass_picked_01_snappy.fui similarity index 100% rename from instruments/FM/bass/bass_picked_01_snappy.fui rename to instruments/OPN/bass/bass_picked_01_snappy.fui diff --git a/instruments/FM/bass/bass_picked_02.fui b/instruments/OPN/bass/bass_picked_02.fui similarity index 100% rename from instruments/FM/bass/bass_picked_02.fui rename to instruments/OPN/bass/bass_picked_02.fui diff --git a/instruments/FM/bass/bass_slap_00.fui b/instruments/OPN/bass/bass_slap_00.fui similarity index 100% rename from instruments/FM/bass/bass_slap_00.fui rename to instruments/OPN/bass/bass_slap_00.fui diff --git a/instruments/FM/bass/bass_slap_01.fui b/instruments/OPN/bass/bass_slap_01.fui similarity index 100% rename from instruments/FM/bass/bass_slap_01.fui rename to instruments/OPN/bass/bass_slap_01.fui diff --git a/instruments/FM/bass/bass_slap_02.fui b/instruments/OPN/bass/bass_slap_02.fui similarity index 100% rename from instruments/FM/bass/bass_slap_02.fui rename to instruments/OPN/bass/bass_slap_02.fui diff --git a/instruments/FM/bass/dxbass1.dmp b/instruments/OPN/bass/dxbass1.dmp similarity index 100% rename from instruments/FM/bass/dxbass1.dmp rename to instruments/OPN/bass/dxbass1.dmp diff --git a/instruments/FM/bass/dxbass2.dmp b/instruments/OPN/bass/dxbass2.dmp similarity index 100% rename from instruments/FM/bass/dxbass2.dmp rename to instruments/OPN/bass/dxbass2.dmp diff --git a/instruments/FM/bass/dxbass3.dmp b/instruments/OPN/bass/dxbass3.dmp similarity index 100% rename from instruments/FM/bass/dxbass3.dmp rename to instruments/OPN/bass/dxbass3.dmp diff --git a/instruments/FM/bass/dxbass4.dmp b/instruments/OPN/bass/dxbass4.dmp similarity index 100% rename from instruments/FM/bass/dxbass4.dmp rename to instruments/OPN/bass/dxbass4.dmp diff --git a/instruments/FM/bass/dxbass5.dmp b/instruments/OPN/bass/dxbass5.dmp similarity index 100% rename from instruments/FM/bass/dxbass5.dmp rename to instruments/OPN/bass/dxbass5.dmp diff --git a/instruments/FM/bass/dxbass5slap.dmp b/instruments/OPN/bass/dxbass5slap.dmp similarity index 100% rename from instruments/FM/bass/dxbass5slap.dmp rename to instruments/OPN/bass/dxbass5slap.dmp diff --git a/instruments/FM/bass/fm_bass1.fui b/instruments/OPN/bass/fm_bass1.fui similarity index 100% rename from instruments/FM/bass/fm_bass1.fui rename to instruments/OPN/bass/fm_bass1.fui diff --git a/instruments/FM/bass/fm_bass2.fui b/instruments/OPN/bass/fm_bass2.fui similarity index 100% rename from instruments/FM/bass/fm_bass2.fui rename to instruments/OPN/bass/fm_bass2.fui diff --git a/instruments/FM/bass/fm_bass3.fui b/instruments/OPN/bass/fm_bass3.fui similarity index 100% rename from instruments/FM/bass/fm_bass3.fui rename to instruments/OPN/bass/fm_bass3.fui diff --git a/instruments/FM/bass/generic alg 0 bass.dmp b/instruments/OPN/bass/generic alg 0 bass.dmp similarity index 100% rename from instruments/FM/bass/generic alg 0 bass.dmp rename to instruments/OPN/bass/generic alg 0 bass.dmp diff --git a/instruments/FM/bass/nicco1690 Slap Bass.dmp b/instruments/OPN/bass/nicco1690 Slap Bass.dmp similarity index 100% rename from instruments/FM/bass/nicco1690 Slap Bass.dmp rename to instruments/OPN/bass/nicco1690 Slap Bass.dmp diff --git a/instruments/FM/bass/opm_nestri.fui b/instruments/OPN/bass/opm_nestri.fui similarity index 100% rename from instruments/FM/bass/opm_nestri.fui rename to instruments/OPN/bass/opm_nestri.fui diff --git a/instruments/FM/bass/sonic_modbass.dmp b/instruments/OPN/bass/sonic_modbass.dmp similarity index 100% rename from instruments/FM/bass/sonic_modbass.dmp rename to instruments/OPN/bass/sonic_modbass.dmp diff --git a/instruments/FM/bass/tarylbass1.fui b/instruments/OPN/bass/tarylbass1.fui similarity index 100% rename from instruments/FM/bass/tarylbass1.fui rename to instruments/OPN/bass/tarylbass1.fui diff --git a/instruments/FM/bass/weird bass.dmp b/instruments/OPN/bass/weird bass.dmp similarity index 100% rename from instruments/FM/bass/weird bass.dmp rename to instruments/OPN/bass/weird bass.dmp diff --git a/instruments/FM/default.fui b/instruments/OPN/default.fui similarity index 100% rename from instruments/FM/default.fui rename to instruments/OPN/default.fui diff --git a/instruments/FM/drums/4-7 Snare.fui b/instruments/OPN/drums/4-7 Snare.fui similarity index 100% rename from instruments/FM/drums/4-7 Snare.fui rename to instruments/OPN/drums/4-7 Snare.fui diff --git a/instruments/FM/drums/909 Hat.dmp b/instruments/OPN/drums/909 Hat.dmp similarity index 100% rename from instruments/FM/drums/909 Hat.dmp rename to instruments/OPN/drums/909 Hat.dmp diff --git a/instruments/FM/drums/Compressed Clap.fui b/instruments/OPN/drums/Compressed Clap.fui similarity index 100% rename from instruments/FM/drums/Compressed Clap.fui rename to instruments/OPN/drums/Compressed Clap.fui diff --git a/instruments/FM/drums/(GEN) Crash.dmp b/instruments/OPN/drums/Crash.dmp similarity index 100% rename from instruments/FM/drums/(GEN) Crash.dmp rename to instruments/OPN/drums/Crash.dmp diff --git a/instruments/FM/drums/Cymbal.dmp b/instruments/OPN/drums/Cymbal.dmp similarity index 100% rename from instruments/FM/drums/Cymbal.dmp rename to instruments/OPN/drums/Cymbal.dmp diff --git a/instruments/FM/drums/(GEN) Double Tom.dmp b/instruments/OPN/drums/Double Tom.dmp similarity index 100% rename from instruments/FM/drums/(GEN) Double Tom.dmp rename to instruments/OPN/drums/Double Tom.dmp diff --git a/instruments/FM/drums/Drum.fui b/instruments/OPN/drums/Drum.fui similarity index 100% rename from instruments/FM/drums/Drum.fui rename to instruments/OPN/drums/Drum.fui diff --git a/instruments/FM/drums/GB Tom.fui b/instruments/OPN/drums/GB Tom.fui similarity index 100% rename from instruments/FM/drums/GB Tom.fui rename to instruments/OPN/drums/GB Tom.fui diff --git a/instruments/FM/drums/Heavy Kick.fui b/instruments/OPN/drums/Heavy Kick.fui similarity index 100% rename from instruments/FM/drums/Heavy Kick.fui rename to instruments/OPN/drums/Heavy Kick.fui diff --git a/instruments/FM/drums/(GEN) Hi-Hat Closed.dmp b/instruments/OPN/drums/Hi-Hat Closed.dmp similarity index 100% rename from instruments/FM/drums/(GEN) Hi-Hat Closed.dmp rename to instruments/OPN/drums/Hi-Hat Closed.dmp diff --git a/instruments/FM/drums/(GEN) Hi-Hat Open.dmp b/instruments/OPN/drums/Hi-Hat Open.dmp similarity index 100% rename from instruments/FM/drums/(GEN) Hi-Hat Open.dmp rename to instruments/OPN/drums/Hi-Hat Open.dmp diff --git a/instruments/FM/drums/(GEN) Kick 1.dmp b/instruments/OPN/drums/Kick 1.dmp similarity index 100% rename from instruments/FM/drums/(GEN) Kick 1.dmp rename to instruments/OPN/drums/Kick 1.dmp diff --git a/instruments/FM/drums/(GEN) Kick 2.dmp b/instruments/OPN/drums/Kick 2.dmp similarity index 100% rename from instruments/FM/drums/(GEN) Kick 2.dmp rename to instruments/OPN/drums/Kick 2.dmp diff --git a/instruments/FM/drums/Kick_B0.dmp b/instruments/OPN/drums/Kick_B0.dmp similarity index 100% rename from instruments/FM/drums/Kick_B0.dmp rename to instruments/OPN/drums/Kick_B0.dmp diff --git a/instruments/FM/drums/Less Chrunchy Snare.dmp b/instruments/OPN/drums/Less Chrunchy Snare.dmp similarity index 100% rename from instruments/FM/drums/Less Chrunchy Snare.dmp rename to instruments/OPN/drums/Less Chrunchy Snare.dmp diff --git a/instruments/FM/drums/(GEN) Light Snare.dmp b/instruments/OPN/drums/Light Snare.dmp similarity index 100% rename from instruments/FM/drums/(GEN) Light Snare.dmp rename to instruments/OPN/drums/Light Snare.dmp diff --git a/instruments/OPL/OPM-lowpitch-fmclap.fui b/instruments/OPN/drums/OPM-lowpitch-fmclap.fui similarity index 100% rename from instruments/OPL/OPM-lowpitch-fmclap.fui rename to instruments/OPN/drums/OPM-lowpitch-fmclap.fui diff --git a/instruments/FM/drums/(GEN) Obvious Kick (C-5 02CC).dmp b/instruments/OPN/drums/Obvious Kick (C-5 02CC).dmp similarity index 100% rename from instruments/FM/drums/(GEN) Obvious Kick (C-5 02CC).dmp rename to instruments/OPN/drums/Obvious Kick (C-5 02CC).dmp diff --git a/instruments/FM/drums/(GEN) Obvious Ride Closed (C-5).dmp b/instruments/OPN/drums/Obvious Ride Closed (C-5).dmp similarity index 100% rename from instruments/FM/drums/(GEN) Obvious Ride Closed (C-5).dmp rename to instruments/OPN/drums/Obvious Ride Closed (C-5).dmp diff --git a/instruments/FM/drums/(GEN) Obvious Ride Open (C-5).dmp b/instruments/OPN/drums/Obvious Ride Open (C-5).dmp similarity index 100% rename from instruments/FM/drums/(GEN) Obvious Ride Open (C-5).dmp rename to instruments/OPN/drums/Obvious Ride Open (C-5).dmp diff --git a/instruments/FM/drums/(GEN) Obvious Snare (D#5 0299).dmp b/instruments/OPN/drums/Obvious Snare (D#5 0299).dmp similarity index 100% rename from instruments/FM/drums/(GEN) Obvious Snare (D#5 0299).dmp rename to instruments/OPN/drums/Obvious Snare (D#5 0299).dmp diff --git a/instruments/FM/drums/(GEN) Obvious Tom (C-5 0266, G#4 0255, E-4 0244).dmp b/instruments/OPN/drums/Obvious Tom (C-5 0266, G#4 0255, E-4 0244).dmp similarity index 100% rename from instruments/FM/drums/(GEN) Obvious Tom (C-5 0266, G#4 0255, E-4 0244).dmp rename to instruments/OPN/drums/Obvious Tom (C-5 0266, G#4 0255, E-4 0244).dmp diff --git a/instruments/FM/drums/Single Clap.fui b/instruments/OPN/drums/Single Clap.fui similarity index 100% rename from instruments/FM/drums/Single Clap.fui rename to instruments/OPN/drums/Single Clap.fui diff --git a/instruments/FM/drums/(GEN) Snare 1.dmp b/instruments/OPN/drums/Snare 1.dmp similarity index 100% rename from instruments/FM/drums/(GEN) Snare 1.dmp rename to instruments/OPN/drums/Snare 1.dmp diff --git a/instruments/FM/drums/(GEN) Snare 2.dmp b/instruments/OPN/drums/Snare 2.dmp similarity index 100% rename from instruments/FM/drums/(GEN) Snare 2.dmp rename to instruments/OPN/drums/Snare 2.dmp diff --git a/instruments/FM/drums/(GEN) Snare 3.dmp b/instruments/OPN/drums/Snare 3.dmp similarity index 100% rename from instruments/FM/drums/(GEN) Snare 3.dmp rename to instruments/OPN/drums/Snare 3.dmp diff --git a/instruments/FM/drums/Snare_B2.dmp b/instruments/OPN/drums/Snare_B2.dmp similarity index 100% rename from instruments/FM/drums/Snare_B2.dmp rename to instruments/OPN/drums/Snare_B2.dmp diff --git a/instruments/FM/drums/Squishy Snare.fui b/instruments/OPN/drums/Squishy Snare.fui similarity index 100% rename from instruments/FM/drums/Squishy Snare.fui rename to instruments/OPN/drums/Squishy Snare.fui diff --git a/instruments/FM/drums/(GEN) Timpani.dmp b/instruments/OPN/drums/Timpani.dmp similarity index 100% rename from instruments/FM/drums/(GEN) Timpani.dmp rename to instruments/OPN/drums/Timpani.dmp diff --git a/instruments/FM/drums/(GEN) Tom.dmp b/instruments/OPN/drums/Tom.dmp similarity index 100% rename from instruments/FM/drums/(GEN) Tom.dmp rename to instruments/OPN/drums/Tom.dmp diff --git a/instruments/FM/drums/Trap Kick.dmp b/instruments/OPN/drums/Trap Kick.dmp similarity index 100% rename from instruments/FM/drums/Trap Kick.dmp rename to instruments/OPN/drums/Trap Kick.dmp diff --git a/instruments/FM/drums/(GEN) Trap Snare Carry (C-4, 0201).dmp b/instruments/OPN/drums/Trap Snare Carry (C-4, 0201).dmp similarity index 100% rename from instruments/FM/drums/(GEN) Trap Snare Carry (C-4, 0201).dmp rename to instruments/OPN/drums/Trap Snare Carry (C-4, 0201).dmp diff --git a/instruments/FM/drums/(GEN) Trap Snare Start (D-4 023F).dmp b/instruments/OPN/drums/Trap Snare Start (D-4 023F).dmp similarity index 100% rename from instruments/FM/drums/(GEN) Trap Snare Start (D-4 023F).dmp rename to instruments/OPN/drums/Trap Snare Start (D-4 023F).dmp diff --git a/instruments/FM/drums/Trap Snare.dmp b/instruments/OPN/drums/Trap Snare.dmp similarity index 100% rename from instruments/FM/drums/Trap Snare.dmp rename to instruments/OPN/drums/Trap Snare.dmp diff --git a/instruments/FM/drums/(GEN) Triangle.dmp b/instruments/OPN/drums/Triangle.dmp similarity index 100% rename from instruments/FM/drums/(GEN) Triangle.dmp rename to instruments/OPN/drums/Triangle.dmp diff --git a/instruments/FM/drums/(GEN) Wood Block.dmp b/instruments/OPN/drums/Wood Block.dmp similarity index 100% rename from instruments/FM/drums/(GEN) Wood Block.dmp rename to instruments/OPN/drums/Wood Block.dmp diff --git a/instruments/FM/drums/[2OPHigh]HatClosed_B2.dmp b/instruments/OPN/drums/[2OPHigh]HatClosed_B2.dmp similarity index 100% rename from instruments/FM/drums/[2OPHigh]HatClosed_B2.dmp rename to instruments/OPN/drums/[2OPHigh]HatClosed_B2.dmp diff --git a/instruments/FM/drums/[2OPHigh]HatOpen_B2.dmp b/instruments/OPN/drums/[2OPHigh]HatOpen_B2.dmp similarity index 100% rename from instruments/FM/drums/[2OPHigh]HatOpen_B2.dmp rename to instruments/OPN/drums/[2OPHigh]HatOpen_B2.dmp diff --git a/instruments/FM/drums/crash_00.fui b/instruments/OPN/drums/crash_00.fui similarity index 100% rename from instruments/FM/drums/crash_00.fui rename to instruments/OPN/drums/crash_00.fui diff --git a/instruments/FM/drums/fmbigkick.fui b/instruments/OPN/drums/fmbigkick.fui similarity index 100% rename from instruments/FM/drums/fmbigkick.fui rename to instruments/OPN/drums/fmbigkick.fui diff --git a/instruments/FM/drums/fmclap.fui b/instruments/OPN/drums/fmclap.fui similarity index 100% rename from instruments/FM/drums/fmclap.fui rename to instruments/OPN/drums/fmclap.fui diff --git a/instruments/FM/drums/fmclap2.fui b/instruments/OPN/drums/fmclap2.fui similarity index 100% rename from instruments/FM/drums/fmclap2.fui rename to instruments/OPN/drums/fmclap2.fui diff --git a/instruments/FM/drums/fmhat.fui b/instruments/OPN/drums/fmhat.fui similarity index 100% rename from instruments/FM/drums/fmhat.fui rename to instruments/OPN/drums/fmhat.fui diff --git a/instruments/FM/drums/fmopenhat.fui b/instruments/OPN/drums/fmopenhat.fui similarity index 100% rename from instruments/FM/drums/fmopenhat.fui rename to instruments/OPN/drums/fmopenhat.fui diff --git a/instruments/FM/drums/hihat_00.fui b/instruments/OPN/drums/hihat_00.fui similarity index 100% rename from instruments/FM/drums/hihat_00.fui rename to instruments/OPN/drums/hihat_00.fui diff --git a/instruments/FM/drums/idk_something_percussion.fui b/instruments/OPN/drums/idk_something_percussion.fui similarity index 100% rename from instruments/FM/drums/idk_something_percussion.fui rename to instruments/OPN/drums/idk_something_percussion.fui diff --git a/instruments/FM/drums/kick_00_classic.fui b/instruments/OPN/drums/kick_00_classic.fui similarity index 100% rename from instruments/FM/drums/kick_00_classic.fui rename to instruments/OPN/drums/kick_00_classic.fui diff --git a/instruments/FM/drums/kick_01_power.fui b/instruments/OPN/drums/kick_01_power.fui similarity index 100% rename from instruments/FM/drums/kick_01_power.fui rename to instruments/OPN/drums/kick_01_power.fui diff --git a/instruments/FM/drums/kick_02_power2.fui b/instruments/OPN/drums/kick_02_power2.fui similarity index 100% rename from instruments/FM/drums/kick_02_power2.fui rename to instruments/OPN/drums/kick_02_power2.fui diff --git a/instruments/FM/drums/kick_03_muffled.fui b/instruments/OPN/drums/kick_03_muffled.fui similarity index 100% rename from instruments/FM/drums/kick_03_muffled.fui rename to instruments/OPN/drums/kick_03_muffled.fui diff --git a/instruments/FM/drums/kick_04_bassdrum.fui b/instruments/OPN/drums/kick_04_bassdrum.fui similarity index 100% rename from instruments/FM/drums/kick_04_bassdrum.fui rename to instruments/OPN/drums/kick_04_bassdrum.fui diff --git a/instruments/FM/drums/kick_05_noisy.fui b/instruments/OPN/drums/kick_05_noisy.fui similarity index 100% rename from instruments/FM/drums/kick_05_noisy.fui rename to instruments/OPN/drums/kick_05_noisy.fui diff --git a/instruments/FM/drums/kick_06_fat.fui b/instruments/OPN/drums/kick_06_fat.fui similarity index 100% rename from instruments/FM/drums/kick_06_fat.fui rename to instruments/OPN/drums/kick_06_fat.fui diff --git a/instruments/FM/drums/kick_07_fat2.fui b/instruments/OPN/drums/kick_07_fat2.fui similarity index 100% rename from instruments/FM/drums/kick_07_fat2.fui rename to instruments/OPN/drums/kick_07_fat2.fui diff --git a/instruments/FM/drums/powersnare.fui b/instruments/OPN/drums/powersnare.fui similarity index 100% rename from instruments/FM/drums/powersnare.fui rename to instruments/OPN/drums/powersnare.fui diff --git a/instruments/FM/drums/snare_00_simple.fui b/instruments/OPN/drums/snare_00_simple.fui similarity index 100% rename from instruments/FM/drums/snare_00_simple.fui rename to instruments/OPN/drums/snare_00_simple.fui diff --git a/instruments/FM/drums/snare_01_curvy.fui b/instruments/OPN/drums/snare_01_curvy.fui similarity index 100% rename from instruments/FM/drums/snare_01_curvy.fui rename to instruments/OPN/drums/snare_01_curvy.fui diff --git a/instruments/FM/drums/snare_02_weak.fui b/instruments/OPN/drums/snare_02_weak.fui similarity index 100% rename from instruments/FM/drums/snare_02_weak.fui rename to instruments/OPN/drums/snare_02_weak.fui diff --git a/instruments/FM/drums/snare_03_weak2.fui b/instruments/OPN/drums/snare_03_weak2.fui similarity index 100% rename from instruments/FM/drums/snare_03_weak2.fui rename to instruments/OPN/drums/snare_03_weak2.fui diff --git a/instruments/FM/drums/snare_04_muffled.fui b/instruments/OPN/drums/snare_04_muffled.fui similarity index 100% rename from instruments/FM/drums/snare_04_muffled.fui rename to instruments/OPN/drums/snare_04_muffled.fui diff --git a/instruments/FM/drums/snare_05_intense.fui b/instruments/OPN/drums/snare_05_intense.fui similarity index 100% rename from instruments/FM/drums/snare_05_intense.fui rename to instruments/OPN/drums/snare_05_intense.fui diff --git a/instruments/FM/drums/snareclap_G-2.fui b/instruments/OPN/drums/snareclap_G-2.fui similarity index 100% rename from instruments/FM/drums/snareclap_G-2.fui rename to instruments/OPN/drums/snareclap_G-2.fui diff --git a/instruments/FM/drums/thinclosedhihat.dmp b/instruments/OPN/drums/thinclosedhihat.dmp similarity index 100% rename from instruments/FM/drums/thinclosedhihat.dmp rename to instruments/OPN/drums/thinclosedhihat.dmp diff --git a/instruments/FM/effect/Acoustic String Slap SFX.dmp b/instruments/OPN/effect/Acoustic String Slap SFX.dmp similarity index 100% rename from instruments/FM/effect/Acoustic String Slap SFX.dmp rename to instruments/OPN/effect/Acoustic String Slap SFX.dmp diff --git a/instruments/FM/effect/(GEN) Buzzer.dmp b/instruments/OPN/effect/Buzzer.dmp similarity index 100% rename from instruments/FM/effect/(GEN) Buzzer.dmp rename to instruments/OPN/effect/Buzzer.dmp diff --git a/instruments/FM/effect/(GEN) C64 Wave Combo.dmp b/instruments/OPN/effect/C64 Wave Combo.dmp similarity index 100% rename from instruments/FM/effect/(GEN) C64 Wave Combo.dmp rename to instruments/OPN/effect/C64 Wave Combo.dmp diff --git a/instruments/FM/effect/(GEN) Clap.dmp b/instruments/OPN/effect/Clap.dmp similarity index 100% rename from instruments/FM/effect/(GEN) Clap.dmp rename to instruments/OPN/effect/Clap.dmp diff --git a/instruments/FM/effect/(GEN) Clink.dmp b/instruments/OPN/effect/Clink.dmp similarity index 100% rename from instruments/FM/effect/(GEN) Clink.dmp rename to instruments/OPN/effect/Clink.dmp diff --git a/instruments/FM/effect/(GEN) Crank Turn.dmp b/instruments/OPN/effect/Crank Turn.dmp similarity index 100% rename from instruments/FM/effect/(GEN) Crank Turn.dmp rename to instruments/OPN/effect/Crank Turn.dmp diff --git a/instruments/FM/effect/(GEN) Decay Laser.dmp b/instruments/OPN/effect/Decay Laser.dmp similarity index 100% rename from instruments/FM/effect/(GEN) Decay Laser.dmp rename to instruments/OPN/effect/Decay Laser.dmp diff --git a/instruments/FM/effect/Glide.dmp b/instruments/OPN/effect/Glide.dmp similarity index 100% rename from instruments/FM/effect/Glide.dmp rename to instruments/OPN/effect/Glide.dmp diff --git a/instruments/FM/effect/Heart.dmp b/instruments/OPN/effect/Heart.dmp similarity index 100% rename from instruments/FM/effect/Heart.dmp rename to instruments/OPN/effect/Heart.dmp diff --git a/instruments/FM/effect/Interference.dmp b/instruments/OPN/effect/Interference.dmp similarity index 100% rename from instruments/FM/effect/Interference.dmp rename to instruments/OPN/effect/Interference.dmp diff --git a/instruments/FM/effect/(GEN) Laser Gun.dmp b/instruments/OPN/effect/Laser Gun.dmp similarity index 100% rename from instruments/FM/effect/(GEN) Laser Gun.dmp rename to instruments/OPN/effect/Laser Gun.dmp diff --git a/instruments/FM/effect/(GEN) Laser.dmp b/instruments/OPN/effect/Laser.dmp similarity index 100% rename from instruments/FM/effect/(GEN) Laser.dmp rename to instruments/OPN/effect/Laser.dmp diff --git a/instruments/FM/effect/(GEN) Lightning Bolt.dmp b/instruments/OPN/effect/Lightning Bolt.dmp similarity index 100% rename from instruments/FM/effect/(GEN) Lightning Bolt.dmp rename to instruments/OPN/effect/Lightning Bolt.dmp diff --git a/instruments/FM/effect/Ocean.dmp b/instruments/OPN/effect/Ocean.dmp similarity index 100% rename from instruments/FM/effect/Ocean.dmp rename to instruments/OPN/effect/Ocean.dmp diff --git a/instruments/FM/effect/Skid.dmp b/instruments/OPN/effect/Skid.dmp similarity index 100% rename from instruments/FM/effect/Skid.dmp rename to instruments/OPN/effect/Skid.dmp diff --git a/instruments/FM/effect/Sore Throat.dmp b/instruments/OPN/effect/Sore Throat.dmp similarity index 100% rename from instruments/FM/effect/Sore Throat.dmp rename to instruments/OPN/effect/Sore Throat.dmp diff --git a/instruments/FM/effect/(GEN) TV Static.dmp b/instruments/OPN/effect/TV Static.dmp similarity index 100% rename from instruments/FM/effect/(GEN) TV Static.dmp rename to instruments/OPN/effect/TV Static.dmp diff --git a/instruments/FM/effect/(GEN) Techno TL Pitch Slider.dmp b/instruments/OPN/effect/Techno TL Pitch Slider.dmp similarity index 100% rename from instruments/FM/effect/(GEN) Techno TL Pitch Slider.dmp rename to instruments/OPN/effect/Techno TL Pitch Slider.dmp diff --git a/instruments/FM/effect/(GEN) Thunder Strike.dmp b/instruments/OPN/effect/Thunder Strike.dmp similarity index 100% rename from instruments/FM/effect/(GEN) Thunder Strike.dmp rename to instruments/OPN/effect/Thunder Strike.dmp diff --git a/instruments/FM/effect/(GEN) U.F.O.dmp b/instruments/OPN/effect/U.F.O.dmp similarity index 100% rename from instruments/FM/effect/(GEN) U.F.O.dmp rename to instruments/OPN/effect/U.F.O.dmp diff --git a/instruments/FM/effect/GEN_Wind.fui b/instruments/OPN/effect/Wind.fui similarity index 100% rename from instruments/FM/effect/GEN_Wind.fui rename to instruments/OPN/effect/Wind.fui diff --git a/instruments/FM/effect/[2OPLow]Analog Horror 1.dmp b/instruments/OPN/effect/[2OPLow]Analog Horror 1.dmp similarity index 100% rename from instruments/FM/effect/[2OPLow]Analog Horror 1.dmp rename to instruments/OPN/effect/[2OPLow]Analog Horror 1.dmp diff --git a/instruments/FM/effect/[2OPLow]Analog Horror 2.dmp b/instruments/OPN/effect/[2OPLow]Analog Horror 2.dmp similarity index 100% rename from instruments/FM/effect/[2OPLow]Analog Horror 2.dmp rename to instruments/OPN/effect/[2OPLow]Analog Horror 2.dmp diff --git a/instruments/FM/effect/fm_propeller.fui b/instruments/OPN/effect/fm_propeller.fui similarity index 100% rename from instruments/FM/effect/fm_propeller.fui rename to instruments/OPN/effect/fm_propeller.fui diff --git a/instruments/FM/effect/GEN_weird.fui b/instruments/OPN/effect/weird.fui similarity index 100% rename from instruments/FM/effect/GEN_weird.fui rename to instruments/OPN/effect/weird.fui diff --git a/instruments/FM/effect/white nosie.dmp b/instruments/OPN/effect/white nosie.dmp similarity index 100% rename from instruments/FM/effect/white nosie.dmp rename to instruments/OPN/effect/white nosie.dmp diff --git a/instruments/FM/guitar/(CH3) Double Guitar.dmp b/instruments/OPN/guitar/(CH3) Double Guitar.dmp similarity index 100% rename from instruments/FM/guitar/(CH3) Double Guitar.dmp rename to instruments/OPN/guitar/(CH3) Double Guitar.dmp diff --git a/instruments/FM/guitar/Acoustic Guitar.dmp b/instruments/OPN/guitar/Acoustic Guitar.dmp similarity index 100% rename from instruments/FM/guitar/Acoustic Guitar.dmp rename to instruments/OPN/guitar/Acoustic Guitar.dmp diff --git a/instruments/FM/guitar/Acoustic Nylon Guitar.dmp b/instruments/OPN/guitar/Acoustic Nylon Guitar.dmp similarity index 100% rename from instruments/FM/guitar/Acoustic Nylon Guitar.dmp rename to instruments/OPN/guitar/Acoustic Nylon Guitar.dmp diff --git a/instruments/FM/guitar/Acoustic Steel Guitar.dmp b/instruments/OPN/guitar/Acoustic Steel Guitar.dmp similarity index 100% rename from instruments/FM/guitar/Acoustic Steel Guitar.dmp rename to instruments/OPN/guitar/Acoustic Steel Guitar.dmp diff --git a/instruments/FM/guitar/Banjo (Muted).opni b/instruments/OPN/guitar/Banjo (Muted).opni similarity index 100% rename from instruments/FM/guitar/Banjo (Muted).opni rename to instruments/OPN/guitar/Banjo (Muted).opni diff --git a/instruments/FM/guitar/(GEN) Banjo.dmp b/instruments/OPN/guitar/Banjo.dmp similarity index 100% rename from instruments/FM/guitar/(GEN) Banjo.dmp rename to instruments/OPN/guitar/Banjo.dmp diff --git a/instruments/FM/guitar/Banjo.opni b/instruments/OPN/guitar/Banjo.opni similarity index 100% rename from instruments/FM/guitar/Banjo.opni rename to instruments/OPN/guitar/Banjo.opni diff --git a/instruments/FM/guitar/Distorted Guitar 1.dmp b/instruments/OPN/guitar/Distorted Guitar 1.dmp similarity index 100% rename from instruments/FM/guitar/Distorted Guitar 1.dmp rename to instruments/OPN/guitar/Distorted Guitar 1.dmp diff --git a/instruments/FM/guitar/Distorted Guitar 2.dmp b/instruments/OPN/guitar/Distorted Guitar 2.dmp similarity index 100% rename from instruments/FM/guitar/Distorted Guitar 2.dmp rename to instruments/OPN/guitar/Distorted Guitar 2.dmp diff --git a/instruments/FM/guitar/Electric Clean Guitar.dmp b/instruments/OPN/guitar/Electric Clean Guitar.dmp similarity index 100% rename from instruments/FM/guitar/Electric Clean Guitar.dmp rename to instruments/OPN/guitar/Electric Clean Guitar.dmp diff --git a/instruments/FM/guitar/Electric Distorted Guitar (High).dmp b/instruments/OPN/guitar/Electric Distorted Guitar (High).dmp similarity index 100% rename from instruments/FM/guitar/Electric Distorted Guitar (High).dmp rename to instruments/OPN/guitar/Electric Distorted Guitar (High).dmp diff --git a/instruments/FM/guitar/Electric Distorted Guitar (Low).dmp b/instruments/OPN/guitar/Electric Distorted Guitar (Low).dmp similarity index 100% rename from instruments/FM/guitar/Electric Distorted Guitar (Low).dmp rename to instruments/OPN/guitar/Electric Distorted Guitar (Low).dmp diff --git a/instruments/FM/guitar/Electric Funk Guitar.dmp b/instruments/OPN/guitar/Electric Funk Guitar.dmp similarity index 100% rename from instruments/FM/guitar/Electric Funk Guitar.dmp rename to instruments/OPN/guitar/Electric Funk Guitar.dmp diff --git a/instruments/FM/guitar/(GEN) Electric Guitar 1.dmp b/instruments/OPN/guitar/Electric Guitar 1.dmp similarity index 100% rename from instruments/FM/guitar/(GEN) Electric Guitar 1.dmp rename to instruments/OPN/guitar/Electric Guitar 1.dmp diff --git a/instruments/FM/guitar/(GEN) Electric Guitar 2.dmp b/instruments/OPN/guitar/Electric Guitar 2.dmp similarity index 100% rename from instruments/FM/guitar/(GEN) Electric Guitar 2.dmp rename to instruments/OPN/guitar/Electric Guitar 2.dmp diff --git a/instruments/FM/guitar/(GEN) Electric Guitar 3.dmp b/instruments/OPN/guitar/Electric Guitar 3.dmp similarity index 100% rename from instruments/FM/guitar/(GEN) Electric Guitar 3.dmp rename to instruments/OPN/guitar/Electric Guitar 3.dmp diff --git a/instruments/FM/guitar/(GEN) Electric Guitar EX.dmp b/instruments/OPN/guitar/Electric Guitar EX.dmp similarity index 100% rename from instruments/FM/guitar/(GEN) Electric Guitar EX.dmp rename to instruments/OPN/guitar/Electric Guitar EX.dmp diff --git a/instruments/FM/guitar/Electric Guitar Harmonics.dmp b/instruments/OPN/guitar/Electric Guitar Harmonics.dmp similarity index 100% rename from instruments/FM/guitar/Electric Guitar Harmonics.dmp rename to instruments/OPN/guitar/Electric Guitar Harmonics.dmp diff --git a/instruments/FM/guitar/Electric Jazz Guitar.dmp b/instruments/OPN/guitar/Electric Jazz Guitar.dmp similarity index 100% rename from instruments/FM/guitar/Electric Jazz Guitar.dmp rename to instruments/OPN/guitar/Electric Jazz Guitar.dmp diff --git a/instruments/FM/guitar/Electric Lap Guitar.dmp b/instruments/OPN/guitar/Electric Lap Guitar.dmp similarity index 100% rename from instruments/FM/guitar/Electric Lap Guitar.dmp rename to instruments/OPN/guitar/Electric Lap Guitar.dmp diff --git a/instruments/FM/guitar/Electric Muted Guitar.dmp b/instruments/OPN/guitar/Electric Muted Guitar.dmp similarity index 100% rename from instruments/FM/guitar/Electric Muted Guitar.dmp rename to instruments/OPN/guitar/Electric Muted Guitar.dmp diff --git a/instruments/FM/guitar/Electric Overdriven Guitar (High).dmp b/instruments/OPN/guitar/Electric Overdriven Guitar (High).dmp similarity index 100% rename from instruments/FM/guitar/Electric Overdriven Guitar (High).dmp rename to instruments/OPN/guitar/Electric Overdriven Guitar (High).dmp diff --git a/instruments/FM/guitar/Electric Overdriven Guitar (Low).dmp b/instruments/OPN/guitar/Electric Overdriven Guitar (Low).dmp similarity index 100% rename from instruments/FM/guitar/Electric Overdriven Guitar (Low).dmp rename to instruments/OPN/guitar/Electric Overdriven Guitar (Low).dmp diff --git a/instruments/FM/guitar/OPNx_ElectricGuitar.fui b/instruments/OPN/guitar/ElectricGuitar.fui similarity index 100% rename from instruments/FM/guitar/OPNx_ElectricGuitar.fui rename to instruments/OPN/guitar/ElectricGuitar.fui diff --git a/instruments/FM/guitar/Funk Guitar.fui b/instruments/OPN/guitar/Funk Guitar.fui similarity index 100% rename from instruments/FM/guitar/Funk Guitar.fui rename to instruments/OPN/guitar/Funk Guitar.fui diff --git a/instruments/FM/guitar/Gardenshroom.dmp b/instruments/OPN/guitar/Gardenshroom.dmp similarity index 100% rename from instruments/FM/guitar/Gardenshroom.dmp rename to instruments/OPN/guitar/Gardenshroom.dmp diff --git a/instruments/FM/guitar/(GEN) Grunge.dmp b/instruments/OPN/guitar/Grunge.dmp similarity index 100% rename from instruments/FM/guitar/(GEN) Grunge.dmp rename to instruments/OPN/guitar/Grunge.dmp diff --git a/instruments/FM/guitar/(GEN) Guitar.dmp b/instruments/OPN/guitar/Guitar.dmp similarity index 100% rename from instruments/FM/guitar/(GEN) Guitar.dmp rename to instruments/OPN/guitar/Guitar.dmp diff --git a/instruments/FM/guitar/Hard Guitar.fui b/instruments/OPN/guitar/Hard Guitar.fui similarity index 100% rename from instruments/FM/guitar/Hard Guitar.fui rename to instruments/OPN/guitar/Hard Guitar.fui diff --git a/instruments/FM/guitar/Koto.opni b/instruments/OPN/guitar/Koto.opni similarity index 100% rename from instruments/FM/guitar/Koto.opni rename to instruments/OPN/guitar/Koto.opni diff --git a/instruments/FM/guitar/Oud.opni b/instruments/OPN/guitar/Oud.opni similarity index 100% rename from instruments/FM/guitar/Oud.opni rename to instruments/OPN/guitar/Oud.opni diff --git a/instruments/FM/guitar/(GEN) Rough Sitar.dmp b/instruments/OPN/guitar/Rough Sitar.dmp similarity index 100% rename from instruments/FM/guitar/(GEN) Rough Sitar.dmp rename to instruments/OPN/guitar/Rough Sitar.dmp diff --git a/instruments/FM/guitar/SSGuitar_A2.dmp b/instruments/OPN/guitar/SSGuitar_A2.dmp similarity index 100% rename from instruments/FM/guitar/SSGuitar_A2.dmp rename to instruments/OPN/guitar/SSGuitar_A2.dmp diff --git a/instruments/FM/guitar/SSGuitar_B2.dmp b/instruments/OPN/guitar/SSGuitar_B2.dmp similarity index 100% rename from instruments/FM/guitar/SSGuitar_B2.dmp rename to instruments/OPN/guitar/SSGuitar_B2.dmp diff --git a/instruments/FM/guitar/SSGuitar_F#2.dmp b/instruments/OPN/guitar/SSGuitar_F#2.dmp similarity index 100% rename from instruments/FM/guitar/SSGuitar_F#2.dmp rename to instruments/OPN/guitar/SSGuitar_F#2.dmp diff --git a/instruments/FM/guitar/SSGuitar_G2.dmp b/instruments/OPN/guitar/SSGuitar_G2.dmp similarity index 100% rename from instruments/FM/guitar/SSGuitar_G2.dmp rename to instruments/OPN/guitar/SSGuitar_G2.dmp diff --git a/instruments/FM/guitar/Shamisen (Regular Pluck).opni b/instruments/OPN/guitar/Shamisen (Regular Pluck).opni similarity index 100% rename from instruments/FM/guitar/Shamisen (Regular Pluck).opni rename to instruments/OPN/guitar/Shamisen (Regular Pluck).opni diff --git a/instruments/FM/guitar/Shamisen (Tsugaru Slap).opni b/instruments/OPN/guitar/Shamisen (Tsugaru Slap).opni similarity index 100% rename from instruments/FM/guitar/Shamisen (Tsugaru Slap).opni rename to instruments/OPN/guitar/Shamisen (Tsugaru Slap).opni diff --git a/instruments/FM/guitar/(GEN) Shamisen.dmp b/instruments/OPN/guitar/Shamisen.dmp similarity index 100% rename from instruments/FM/guitar/(GEN) Shamisen.dmp rename to instruments/OPN/guitar/Shamisen.dmp diff --git a/instruments/FM/guitar/(GEN) Sitar.dmp b/instruments/OPN/guitar/Sitar.dmp similarity index 100% rename from instruments/FM/guitar/(GEN) Sitar.dmp rename to instruments/OPN/guitar/Sitar.dmp diff --git a/instruments/FM/guitar/Sitar.opni b/instruments/OPN/guitar/Sitar.opni similarity index 100% rename from instruments/FM/guitar/Sitar.opni rename to instruments/OPN/guitar/Sitar.opni diff --git a/instruments/FM/guitar/(GEN) Space Sitar.dmp b/instruments/OPN/guitar/Space Sitar.dmp similarity index 100% rename from instruments/FM/guitar/(GEN) Space Sitar.dmp rename to instruments/OPN/guitar/Space Sitar.dmp diff --git a/instruments/FM/guitar/Spanish Guitar.dmp b/instruments/OPN/guitar/Spanish Guitar.dmp similarity index 100% rename from instruments/FM/guitar/Spanish Guitar.dmp rename to instruments/OPN/guitar/Spanish Guitar.dmp diff --git a/instruments/FM/guitar/Tamboura (Bass Sitar).opni b/instruments/OPN/guitar/Tamboura (Bass Sitar).opni similarity index 100% rename from instruments/FM/guitar/Tamboura (Bass Sitar).opni rename to instruments/OPN/guitar/Tamboura (Bass Sitar).opni diff --git a/instruments/FM/guitar/Ukulele.dmp b/instruments/OPN/guitar/Ukulele.dmp similarity index 100% rename from instruments/FM/guitar/Ukulele.dmp rename to instruments/OPN/guitar/Ukulele.dmp diff --git a/instruments/FM/guitar/YM2151_DistGuitar.fui b/instruments/OPN/guitar/YM2151_DistGuitar.fui similarity index 100% rename from instruments/FM/guitar/YM2151_DistGuitar.fui rename to instruments/OPN/guitar/YM2151_DistGuitar.fui diff --git a/instruments/FM/guitar/distguitar_00.fui b/instruments/OPN/guitar/distguitar_00.fui similarity index 100% rename from instruments/FM/guitar/distguitar_00.fui rename to instruments/OPN/guitar/distguitar_00.fui diff --git a/instruments/FM/guitar/high guitar.dmp b/instruments/OPN/guitar/high guitar.dmp similarity index 100% rename from instruments/FM/guitar/high guitar.dmp rename to instruments/OPN/guitar/high guitar.dmp diff --git a/instruments/FM/guitar/powerchord.fui b/instruments/OPN/guitar/powerchord.fui similarity index 100% rename from instruments/FM/guitar/powerchord.fui rename to instruments/OPN/guitar/powerchord.fui diff --git a/instruments/FM/guitar/sine distorted guitar.dmp b/instruments/OPN/guitar/sine distorted guitar.dmp similarity index 100% rename from instruments/FM/guitar/sine distorted guitar.dmp rename to instruments/OPN/guitar/sine distorted guitar.dmp diff --git a/instruments/FM/horn/(CH3) Trumpet + Echo.dmp b/instruments/OPN/horn/(CH3) Trumpet + Echo.dmp similarity index 100% rename from instruments/FM/horn/(CH3) Trumpet + Echo.dmp rename to instruments/OPN/horn/(CH3) Trumpet + Echo.dmp diff --git a/instruments/FM/horn/(GEN) Dubious Trumpet.dmp b/instruments/OPN/horn/Dubious Trumpet.dmp similarity index 100% rename from instruments/FM/horn/(GEN) Dubious Trumpet.dmp rename to instruments/OPN/horn/Dubious Trumpet.dmp diff --git a/instruments/FM/horn/FM Brass.dmp b/instruments/OPN/horn/FM Brass.dmp similarity index 100% rename from instruments/FM/horn/FM Brass.dmp rename to instruments/OPN/horn/FM Brass.dmp diff --git a/instruments/FM/horn/(GEN) Ringing Trumpet.dmp b/instruments/OPN/horn/Ringing Trumpet.dmp similarity index 100% rename from instruments/FM/horn/(GEN) Ringing Trumpet.dmp rename to instruments/OPN/horn/Ringing Trumpet.dmp diff --git a/instruments/FM/horn/Saw Trumpet.dmp b/instruments/OPN/horn/Saw Trumpet.dmp similarity index 100% rename from instruments/FM/horn/Saw Trumpet.dmp rename to instruments/OPN/horn/Saw Trumpet.dmp diff --git a/instruments/FM/horn/OPNx_SynthBrass.fui b/instruments/OPN/horn/SynthBrass.fui similarity index 100% rename from instruments/FM/horn/OPNx_SynthBrass.fui rename to instruments/OPN/horn/SynthBrass.fui diff --git a/instruments/FM/horn/(GEN) Trumpet 1.dmp b/instruments/OPN/horn/Trumpet 1.dmp similarity index 100% rename from instruments/FM/horn/(GEN) Trumpet 1.dmp rename to instruments/OPN/horn/Trumpet 1.dmp diff --git a/instruments/FM/horn/(GEN) Trumpet 2.dmp b/instruments/OPN/horn/Trumpet 2.dmp similarity index 100% rename from instruments/FM/horn/(GEN) Trumpet 2.dmp rename to instruments/OPN/horn/Trumpet 2.dmp diff --git a/instruments/FM/horn/(GEN) Trumpet 3.dmp b/instruments/OPN/horn/Trumpet 3.dmp similarity index 100% rename from instruments/FM/horn/(GEN) Trumpet 3.dmp rename to instruments/OPN/horn/Trumpet 3.dmp diff --git a/instruments/FM/horn/(GEN) Trumpet EX.dmp b/instruments/OPN/horn/Trumpet EX.dmp similarity index 100% rename from instruments/FM/horn/(GEN) Trumpet EX.dmp rename to instruments/OPN/horn/Trumpet EX.dmp diff --git a/instruments/FM/horn/Trumpet.dmp b/instruments/OPN/horn/Trumpet.dmp similarity index 100% rename from instruments/FM/horn/Trumpet.dmp rename to instruments/OPN/horn/Trumpet.dmp diff --git a/instruments/FM/horn/GEN_Tuba.fui b/instruments/OPN/horn/Tuba.fui similarity index 100% rename from instruments/FM/horn/GEN_Tuba.fui rename to instruments/OPN/horn/Tuba.fui diff --git a/instruments/FM/horn/(GEN) VRC7 Trumpet.dmp b/instruments/OPN/horn/VRC7 Trumpet.dmp similarity index 100% rename from instruments/FM/horn/(GEN) VRC7 Trumpet.dmp rename to instruments/OPN/horn/VRC7 Trumpet.dmp diff --git a/instruments/FM/horn/brass_00_wobbly.fui b/instruments/OPN/horn/brass_00_wobbly.fui similarity index 100% rename from instruments/FM/horn/brass_00_wobbly.fui rename to instruments/OPN/horn/brass_00_wobbly.fui diff --git a/instruments/FM/horn/brass_01_bassish.fui b/instruments/OPN/horn/brass_01_bassish.fui similarity index 100% rename from instruments/FM/horn/brass_01_bassish.fui rename to instruments/OPN/horn/brass_01_bassish.fui diff --git a/instruments/FM/horn/brass_02_boring.fui b/instruments/OPN/horn/brass_02_boring.fui similarity index 100% rename from instruments/FM/horn/brass_02_boring.fui rename to instruments/OPN/horn/brass_02_boring.fui diff --git a/instruments/FM/horn/brass_03_boring2.fui b/instruments/OPN/horn/brass_03_boring2.fui similarity index 100% rename from instruments/FM/horn/brass_03_boring2.fui rename to instruments/OPN/horn/brass_03_boring2.fui diff --git a/instruments/FM/keys/(CH3) Double Piano.dmp b/instruments/OPN/keys/(CH3) Double Piano.dmp similarity index 100% rename from instruments/FM/keys/(CH3) Double Piano.dmp rename to instruments/OPN/keys/(CH3) Double Piano.dmp diff --git a/instruments/FM/keys/(CH3) Double Reed Organ.dmp b/instruments/OPN/keys/(CH3) Double Reed Organ.dmp similarity index 100% rename from instruments/FM/keys/(CH3) Double Reed Organ.dmp rename to instruments/OPN/keys/(CH3) Double Reed Organ.dmp diff --git a/instruments/FM/keys/Bite Organ.dmp b/instruments/OPN/keys/Bite Organ.dmp similarity index 100% rename from instruments/FM/keys/Bite Organ.dmp rename to instruments/OPN/keys/Bite Organ.dmp diff --git a/instruments/FM/keys/Celesta (High).dmp b/instruments/OPN/keys/Celesta (High).dmp similarity index 100% rename from instruments/FM/keys/Celesta (High).dmp rename to instruments/OPN/keys/Celesta (High).dmp diff --git a/instruments/FM/keys/Celesta (Low).dmp b/instruments/OPN/keys/Celesta (Low).dmp similarity index 100% rename from instruments/FM/keys/Celesta (Low).dmp rename to instruments/OPN/keys/Celesta (Low).dmp diff --git a/instruments/FM/keys/(GEN) Church Organ.dmp b/instruments/OPN/keys/Church Organ (2).dmp similarity index 100% rename from instruments/FM/keys/(GEN) Church Organ.dmp rename to instruments/OPN/keys/Church Organ (2).dmp diff --git a/instruments/FM/keys/Church Organ.dmp b/instruments/OPN/keys/Church Organ.dmp similarity index 100% rename from instruments/FM/keys/Church Organ.dmp rename to instruments/OPN/keys/Church Organ.dmp diff --git a/instruments/FM/keys/Circus Organ.fui b/instruments/OPN/keys/Circus Organ.fui similarity index 100% rename from instruments/FM/keys/Circus Organ.fui rename to instruments/OPN/keys/Circus Organ.fui diff --git a/instruments/FM/keys/Clavinet.dmp b/instruments/OPN/keys/Clavinet.dmp similarity index 100% rename from instruments/FM/keys/Clavinet.dmp rename to instruments/OPN/keys/Clavinet.dmp diff --git a/instruments/FM/keys/Creep Organ.dmp b/instruments/OPN/keys/Creep Organ.dmp similarity index 100% rename from instruments/FM/keys/Creep Organ.dmp rename to instruments/OPN/keys/Creep Organ.dmp diff --git a/instruments/FM/keys/E. Piano 1 (Rhodes).dmp b/instruments/OPN/keys/E. Piano 1 (Rhodes).dmp similarity index 100% rename from instruments/FM/keys/E. Piano 1 (Rhodes).dmp rename to instruments/OPN/keys/E. Piano 1 (Rhodes).dmp diff --git a/instruments/FM/keys/E. Piano 2 (DX).dmp b/instruments/OPN/keys/E. Piano 2 (DX).dmp similarity index 100% rename from instruments/FM/keys/E. Piano 2 (DX).dmp rename to instruments/OPN/keys/E. Piano 2 (DX).dmp diff --git a/instruments/FM/keys/ElisOrgan.fui b/instruments/OPN/keys/ElisOrgan.fui similarity index 100% rename from instruments/FM/keys/ElisOrgan.fui rename to instruments/OPN/keys/ElisOrgan.fui diff --git a/instruments/FM/keys/Harpsichord.dmp b/instruments/OPN/keys/Harpsichord.dmp similarity index 100% rename from instruments/FM/keys/Harpsichord.dmp rename to instruments/OPN/keys/Harpsichord.dmp diff --git a/instruments/FM/keys/Less Soft E Piano.dmp b/instruments/OPN/keys/Less Soft E Piano.dmp similarity index 100% rename from instruments/FM/keys/Less Soft E Piano.dmp rename to instruments/OPN/keys/Less Soft E Piano.dmp diff --git a/instruments/FM/keys/Low Piano.dmp b/instruments/OPN/keys/Low Piano.dmp similarity index 100% rename from instruments/FM/keys/Low Piano.dmp rename to instruments/OPN/keys/Low Piano.dmp diff --git a/instruments/FM/keys/Organ 1 (Drawbar).dmp b/instruments/OPN/keys/Organ 1 (Drawbar).dmp similarity index 100% rename from instruments/FM/keys/Organ 1 (Drawbar).dmp rename to instruments/OPN/keys/Organ 1 (Drawbar).dmp diff --git a/instruments/FM/keys/Organ.dmp b/instruments/OPN/keys/Organ.dmp similarity index 100% rename from instruments/FM/keys/Organ.dmp rename to instruments/OPN/keys/Organ.dmp diff --git a/instruments/FM/keys/Piano 1 (Acoustic).dmp b/instruments/OPN/keys/Piano 1 (Acoustic).dmp similarity index 100% rename from instruments/FM/keys/Piano 1 (Acoustic).dmp rename to instruments/OPN/keys/Piano 1 (Acoustic).dmp diff --git a/instruments/FM/keys/(GEN) Piano 1.dmp b/instruments/OPN/keys/Piano 1.dmp similarity index 100% rename from instruments/FM/keys/(GEN) Piano 1.dmp rename to instruments/OPN/keys/Piano 1.dmp diff --git a/instruments/FM/keys/Piano 2 (Bright Acoustic).dmp b/instruments/OPN/keys/Piano 2 (Bright Acoustic).dmp similarity index 100% rename from instruments/FM/keys/Piano 2 (Bright Acoustic).dmp rename to instruments/OPN/keys/Piano 2 (Bright Acoustic).dmp diff --git a/instruments/FM/keys/OPNx_Piano.fui b/instruments/OPN/keys/Piano.fui similarity index 100% rename from instruments/FM/keys/OPNx_Piano.fui rename to instruments/OPN/keys/Piano.fui diff --git a/instruments/FM/keys/PianoMD.fui b/instruments/OPN/keys/PianoMD.fui similarity index 100% rename from instruments/FM/keys/PianoMD.fui rename to instruments/OPN/keys/PianoMD.fui diff --git a/instruments/FM/keys/(GEN) Reed Organ.dmp b/instruments/OPN/keys/Reed Organ.dmp similarity index 100% rename from instruments/FM/keys/(GEN) Reed Organ.dmp rename to instruments/OPN/keys/Reed Organ.dmp diff --git a/instruments/FM/keys/Rock Organ.dmp b/instruments/OPN/keys/Rock Organ.dmp similarity index 100% rename from instruments/FM/keys/Rock Organ.dmp rename to instruments/OPN/keys/Rock Organ.dmp diff --git a/instruments/FM/keys/(GEN) Short Piano.dmp b/instruments/OPN/keys/Short Piano.dmp similarity index 100% rename from instruments/FM/keys/(GEN) Short Piano.dmp rename to instruments/OPN/keys/Short Piano.dmp diff --git a/instruments/FM/keys/Soft E Piano.dmp b/instruments/OPN/keys/Soft E Piano.dmp similarity index 100% rename from instruments/FM/keys/Soft E Piano.dmp rename to instruments/OPN/keys/Soft E Piano.dmp diff --git a/instruments/FM/keys/(GEN) Space Piano.dmp b/instruments/OPN/keys/Space Piano.dmp similarity index 100% rename from instruments/FM/keys/(GEN) Space Piano.dmp rename to instruments/OPN/keys/Space Piano.dmp diff --git a/instruments/FM/keys/Sparksichord.dmp b/instruments/OPN/keys/Sparksichord.dmp similarity index 100% rename from instruments/FM/keys/Sparksichord.dmp rename to instruments/OPN/keys/Sparksichord.dmp diff --git a/instruments/FM/keys/(GEN) Spoopy Organ.dmp b/instruments/OPN/keys/Spoopy Organ.dmp similarity index 100% rename from instruments/FM/keys/(GEN) Spoopy Organ.dmp rename to instruments/OPN/keys/Spoopy Organ.dmp diff --git a/instruments/FM/keys/(GEN) VRC7 Reed Organ.dmp b/instruments/OPN/keys/VRC7 Reed Organ.dmp similarity index 100% rename from instruments/FM/keys/(GEN) VRC7 Reed Organ.dmp rename to instruments/OPN/keys/VRC7 Reed Organ.dmp diff --git a/instruments/FM/keys/YM2151_E-PIANO.fui b/instruments/OPN/keys/YM2151_E-PIANO.fui similarity index 100% rename from instruments/FM/keys/YM2151_E-PIANO.fui rename to instruments/OPN/keys/YM2151_E-PIANO.fui diff --git a/instruments/FM/keys/brickblock369 Harpsichord.dmp b/instruments/OPN/keys/brickblock369 Harpsichord.dmp similarity index 100% rename from instruments/FM/keys/brickblock369 Harpsichord.dmp rename to instruments/OPN/keys/brickblock369 Harpsichord.dmp diff --git a/instruments/FM/keys/fmpiano.fui b/instruments/OPN/keys/fmpiano.fui similarity index 100% rename from instruments/FM/keys/fmpiano.fui rename to instruments/OPN/keys/fmpiano.fui diff --git a/instruments/FM/keys/harpsisine.dmp b/instruments/OPN/keys/harpsisine.dmp similarity index 100% rename from instruments/FM/keys/harpsisine.dmp rename to instruments/OPN/keys/harpsisine.dmp diff --git a/instruments/FM/keys/nicco1690 Church Organ.dmp b/instruments/OPN/keys/nicco1690 Church Organ.dmp similarity index 100% rename from instruments/FM/keys/nicco1690 Church Organ.dmp rename to instruments/OPN/keys/nicco1690 Church Organ.dmp diff --git a/instruments/FM/percussion/(CH3) Double Metalliphone.dmp b/instruments/OPN/percussion/(CH3) Double Metalliphone.dmp similarity index 100% rename from instruments/FM/percussion/(CH3) Double Metalliphone.dmp rename to instruments/OPN/percussion/(CH3) Double Metalliphone.dmp diff --git a/instruments/FM/percussion/(CH3) Double Steel Drum.dmp b/instruments/OPN/percussion/(CH3) Double Steel Drum.dmp similarity index 100% rename from instruments/FM/percussion/(CH3) Double Steel Drum.dmp rename to instruments/OPN/percussion/(CH3) Double Steel Drum.dmp diff --git a/instruments/FM/percussion/(CH3) Double Xylophone.dmp b/instruments/OPN/percussion/(CH3) Double Xylophone.dmp similarity index 100% rename from instruments/FM/percussion/(CH3) Double Xylophone.dmp rename to instruments/OPN/percussion/(CH3) Double Xylophone.dmp diff --git a/instruments/FM/percussion/Agogo or Cowbell.dmp b/instruments/OPN/percussion/Agogo or Cowbell.dmp similarity index 100% rename from instruments/FM/percussion/Agogo or Cowbell.dmp rename to instruments/OPN/percussion/Agogo or Cowbell.dmp diff --git a/instruments/FM/percussion/BellMD.fui b/instruments/OPN/percussion/BellMD.fui similarity index 100% rename from instruments/FM/percussion/BellMD.fui rename to instruments/OPN/percussion/BellMD.fui diff --git a/instruments/FM/percussion/Bell_Oct4-7.dmp b/instruments/OPN/percussion/Bell_Oct4-7.dmp similarity index 100% rename from instruments/FM/percussion/Bell_Oct4-7.dmp rename to instruments/OPN/percussion/Bell_Oct4-7.dmp diff --git a/instruments/FM/percussion/(GEN) Bongo.dmp b/instruments/OPN/percussion/Bongo.dmp similarity index 100% rename from instruments/FM/percussion/(GEN) Bongo.dmp rename to instruments/OPN/percussion/Bongo.dmp diff --git a/instruments/FM/percussion/(GEN) Chime.dmp b/instruments/OPN/percussion/Chime.dmp similarity index 100% rename from instruments/FM/percussion/(GEN) Chime.dmp rename to instruments/OPN/percussion/Chime.dmp diff --git a/instruments/FM/percussion/ChurchBell.fui b/instruments/OPN/percussion/ChurchBell.fui similarity index 100% rename from instruments/FM/percussion/ChurchBell.fui rename to instruments/OPN/percussion/ChurchBell.fui diff --git a/instruments/FM/percussion/(GEN) Cowbell.dmp b/instruments/OPN/percussion/Cowbell.dmp similarity index 100% rename from instruments/FM/percussion/(GEN) Cowbell.dmp rename to instruments/OPN/percussion/Cowbell.dmp diff --git a/instruments/FM/percussion/Cowbell_F#5.dmp b/instruments/OPN/percussion/Cowbell_F#5.dmp similarity index 100% rename from instruments/FM/percussion/Cowbell_F#5.dmp rename to instruments/OPN/percussion/Cowbell_F#5.dmp diff --git a/instruments/FM/percussion/Dangerously Cheap Timpani.fui b/instruments/OPN/percussion/Dangerously Cheap Timpani.fui similarity index 100% rename from instruments/FM/percussion/Dangerously Cheap Timpani.fui rename to instruments/OPN/percussion/Dangerously Cheap Timpani.fui diff --git a/instruments/FM/percussion/Dulcimer.dmp b/instruments/OPN/percussion/Dulcimer.dmp similarity index 100% rename from instruments/FM/percussion/Dulcimer.dmp rename to instruments/OPN/percussion/Dulcimer.dmp diff --git a/instruments/FM/percussion/Glockenspiel.dmp b/instruments/OPN/percussion/Glockenspiel.dmp similarity index 100% rename from instruments/FM/percussion/Glockenspiel.dmp rename to instruments/OPN/percussion/Glockenspiel.dmp diff --git a/instruments/FM/percussion/Kalimba.dmp b/instruments/OPN/percussion/Kalimba.dmp similarity index 100% rename from instruments/FM/percussion/Kalimba.dmp rename to instruments/OPN/percussion/Kalimba.dmp diff --git a/instruments/FM/percussion/Kalimba.fui b/instruments/OPN/percussion/Kalimba.fui similarity index 100% rename from instruments/FM/percussion/Kalimba.fui rename to instruments/OPN/percussion/Kalimba.fui diff --git a/instruments/FM/percussion/(GEN) Marimba.dmp b/instruments/OPN/percussion/Marimba (2).dmp similarity index 100% rename from instruments/FM/percussion/(GEN) Marimba.dmp rename to instruments/OPN/percussion/Marimba (2).dmp diff --git a/instruments/FM/percussion/Marimba.dmp b/instruments/OPN/percussion/Marimba.dmp similarity index 100% rename from instruments/FM/percussion/Marimba.dmp rename to instruments/OPN/percussion/Marimba.dmp diff --git a/instruments/FM/percussion/Marimba.fui b/instruments/OPN/percussion/Marimba.fui similarity index 100% rename from instruments/FM/percussion/Marimba.fui rename to instruments/OPN/percussion/Marimba.fui diff --git a/instruments/FM/percussion/(GEN) Metalliphone.dmp b/instruments/OPN/percussion/Metalliphone.dmp similarity index 100% rename from instruments/FM/percussion/(GEN) Metalliphone.dmp rename to instruments/OPN/percussion/Metalliphone.dmp diff --git a/instruments/FM/percussion/Music Box.dmp b/instruments/OPN/percussion/Music Box.dmp similarity index 100% rename from instruments/FM/percussion/Music Box.dmp rename to instruments/OPN/percussion/Music Box.dmp diff --git a/instruments/FM/percussion/MusicBox.fui b/instruments/OPN/percussion/MusicBox.fui similarity index 100% rename from instruments/FM/percussion/MusicBox.fui rename to instruments/OPN/percussion/MusicBox.fui diff --git a/instruments/FM/percussion/OPN_-_Music_Box.fui b/instruments/OPN/percussion/Music_Box.fui similarity index 100% rename from instruments/FM/percussion/OPN_-_Music_Box.fui rename to instruments/OPN/percussion/Music_Box.fui diff --git a/instruments/OPN/percussion/OPM-lowpitch-fmclap.fui b/instruments/OPN/percussion/OPM-lowpitch-fmclap.fui new file mode 100644 index 0000000000000000000000000000000000000000..427c337b0b0938dc4bc07d9398e9e708ceb0dbff GIT binary patch literal 1463 zcmdOOD=o@POioqE%quP_($n>1U|>)HVi@rB3l0IXJsB7o(sGk?5(^j@*clj@Kw|PB zLXa6mVg>RH91Q%@K&4=Xm`dbN0Nmd1(f|Me literal 0 HcmV?d00001 diff --git a/instruments/FM/percussion/Peck.dmp b/instruments/OPN/percussion/Peck.dmp similarity index 100% rename from instruments/FM/percussion/Peck.dmp rename to instruments/OPN/percussion/Peck.dmp diff --git a/instruments/FM/percussion/Realistic Bell.dmp b/instruments/OPN/percussion/Realistic Bell.dmp similarity index 100% rename from instruments/FM/percussion/Realistic Bell.dmp rename to instruments/OPN/percussion/Realistic Bell.dmp diff --git a/instruments/FM/percussion/(GEN) Short Bongo.dmp b/instruments/OPN/percussion/Short Bongo.dmp similarity index 100% rename from instruments/FM/percussion/(GEN) Short Bongo.dmp rename to instruments/OPN/percussion/Short Bongo.dmp diff --git a/instruments/FM/percussion/(GEN) Space Chime.dmp b/instruments/OPN/percussion/Space Chime.dmp similarity index 100% rename from instruments/FM/percussion/(GEN) Space Chime.dmp rename to instruments/OPN/percussion/Space Chime.dmp diff --git a/instruments/FM/percussion/(GEN) Space Marimba.dmp b/instruments/OPN/percussion/Space Marimba.dmp similarity index 100% rename from instruments/FM/percussion/(GEN) Space Marimba.dmp rename to instruments/OPN/percussion/Space Marimba.dmp diff --git a/instruments/FM/percussion/(GEN) Steel Drum.dmp b/instruments/OPN/percussion/Steel Drum (2).dmp similarity index 100% rename from instruments/FM/percussion/(GEN) Steel Drum.dmp rename to instruments/OPN/percussion/Steel Drum (2).dmp diff --git a/instruments/FM/percussion/Steel Drum.dmp b/instruments/OPN/percussion/Steel Drum.dmp similarity index 100% rename from instruments/FM/percussion/Steel Drum.dmp rename to instruments/OPN/percussion/Steel Drum.dmp diff --git a/instruments/FM/percussion/Timpani.dmp b/instruments/OPN/percussion/Timpani.dmp similarity index 100% rename from instruments/FM/percussion/Timpani.dmp rename to instruments/OPN/percussion/Timpani.dmp diff --git a/instruments/FM/percussion/Tubular Bells.dmp b/instruments/OPN/percussion/Tubular Bells.dmp similarity index 100% rename from instruments/FM/percussion/Tubular Bells.dmp rename to instruments/OPN/percussion/Tubular Bells.dmp diff --git a/instruments/FM/percussion/(GEN) VRC7 Chime.dmp b/instruments/OPN/percussion/VRC7 Chime.dmp similarity index 100% rename from instruments/FM/percussion/(GEN) VRC7 Chime.dmp rename to instruments/OPN/percussion/VRC7 Chime.dmp diff --git a/instruments/FM/percussion/(GEN) VRC7 Marimba.dmp b/instruments/OPN/percussion/VRC7 Marimba.dmp similarity index 100% rename from instruments/FM/percussion/(GEN) VRC7 Marimba.dmp rename to instruments/OPN/percussion/VRC7 Marimba.dmp diff --git a/instruments/FM/percussion/(GEN) VRC7 Metalliphone.dmp b/instruments/OPN/percussion/VRC7 Metalliphone.dmp similarity index 100% rename from instruments/FM/percussion/(GEN) VRC7 Metalliphone.dmp rename to instruments/OPN/percussion/VRC7 Metalliphone.dmp diff --git a/instruments/FM/percussion/(GEN) VRC7 Soft Hestian.dmp b/instruments/OPN/percussion/VRC7 Soft Hestian.dmp similarity index 100% rename from instruments/FM/percussion/(GEN) VRC7 Soft Hestian.dmp rename to instruments/OPN/percussion/VRC7 Soft Hestian.dmp diff --git a/instruments/FM/percussion/VRC7 Vibraphone.dmp b/instruments/OPN/percussion/VRC7 Vibraphone.dmp similarity index 100% rename from instruments/FM/percussion/VRC7 Vibraphone.dmp rename to instruments/OPN/percussion/VRC7 Vibraphone.dmp diff --git a/instruments/FM/percussion/(GEN) VRC7 Xylophone.dmp b/instruments/OPN/percussion/VRC7 Xylophone.dmp similarity index 100% rename from instruments/FM/percussion/(GEN) VRC7 Xylophone.dmp rename to instruments/OPN/percussion/VRC7 Xylophone.dmp diff --git a/instruments/FM/percussion/Vibraphone.dmp b/instruments/OPN/percussion/Vibraphone.dmp similarity index 100% rename from instruments/FM/percussion/Vibraphone.dmp rename to instruments/OPN/percussion/Vibraphone.dmp diff --git a/instruments/FM/percussion/(GEN) Xylophone 1.dmp b/instruments/OPN/percussion/Xylophone 1.dmp similarity index 100% rename from instruments/FM/percussion/(GEN) Xylophone 1.dmp rename to instruments/OPN/percussion/Xylophone 1.dmp diff --git a/instruments/FM/percussion/(GEN) Xylophone 2.dmp b/instruments/OPN/percussion/Xylophone 2.dmp similarity index 100% rename from instruments/FM/percussion/(GEN) Xylophone 2.dmp rename to instruments/OPN/percussion/Xylophone 2.dmp diff --git a/instruments/FM/percussion/Xylophone.dmp b/instruments/OPN/percussion/Xylophone.dmp similarity index 100% rename from instruments/FM/percussion/Xylophone.dmp rename to instruments/OPN/percussion/Xylophone.dmp diff --git a/instruments/FM/percussion/agogo.fui b/instruments/OPN/percussion/agogo.fui similarity index 100% rename from instruments/FM/percussion/agogo.fui rename to instruments/OPN/percussion/agogo.fui diff --git a/instruments/FM/percussion/alg 7 bongoes.dmp b/instruments/OPN/percussion/alg 7 bongoes.dmp similarity index 100% rename from instruments/FM/percussion/alg 7 bongoes.dmp rename to instruments/OPN/percussion/alg 7 bongoes.dmp diff --git a/instruments/FM/percussion/bell_00_glockenspiel.fui b/instruments/OPN/percussion/bell_00_glockenspiel.fui similarity index 100% rename from instruments/FM/percussion/bell_00_glockenspiel.fui rename to instruments/OPN/percussion/bell_00_glockenspiel.fui diff --git a/instruments/FM/percussion/bell_01_glockenspiel_echoing.fui b/instruments/OPN/percussion/bell_01_glockenspiel_echoing.fui similarity index 100% rename from instruments/FM/percussion/bell_01_glockenspiel_echoing.fui rename to instruments/OPN/percussion/bell_01_glockenspiel_echoing.fui diff --git a/instruments/FM/percussion/bell_02_glockenspiel_wobbly.fui b/instruments/OPN/percussion/bell_02_glockenspiel_wobbly.fui similarity index 100% rename from instruments/FM/percussion/bell_02_glockenspiel_wobbly.fui rename to instruments/OPN/percussion/bell_02_glockenspiel_wobbly.fui diff --git a/instruments/FM/percussion/brickblock369 Glockenspiel.dmp b/instruments/OPN/percussion/brickblock369 Glockenspiel.dmp similarity index 100% rename from instruments/FM/percussion/brickblock369 Glockenspiel.dmp rename to instruments/OPN/percussion/brickblock369 Glockenspiel.dmp diff --git a/instruments/FM/percussion/brickblock369 Steel Drum.dmp b/instruments/OPN/percussion/brickblock369 Steel Drum.dmp similarity index 100% rename from instruments/FM/percussion/brickblock369 Steel Drum.dmp rename to instruments/OPN/percussion/brickblock369 Steel Drum.dmp diff --git a/instruments/FM/percussion/brickblock369 Timpani.dmp b/instruments/OPN/percussion/brickblock369 Timpani.dmp similarity index 100% rename from instruments/FM/percussion/brickblock369 Timpani.dmp rename to instruments/OPN/percussion/brickblock369 Timpani.dmp diff --git a/instruments/FM/percussion/fm_cowbell.fui b/instruments/OPN/percussion/fm_cowbell.fui similarity index 100% rename from instruments/FM/percussion/fm_cowbell.fui rename to instruments/OPN/percussion/fm_cowbell.fui diff --git a/instruments/FM/percussion/octave_8_bell.fui b/instruments/OPN/percussion/octave_8_bell.fui similarity index 100% rename from instruments/FM/percussion/octave_8_bell.fui rename to instruments/OPN/percussion/octave_8_bell.fui diff --git a/instruments/FM/strings/(CH3) Double Viola.dmp b/instruments/OPN/strings/(CH3) Double Viola.dmp similarity index 100% rename from instruments/FM/strings/(CH3) Double Viola.dmp rename to instruments/OPN/strings/(CH3) Double Viola.dmp diff --git a/instruments/FM/strings/OPNx_5thsPad.fui b/instruments/OPN/strings/5thsPad.fui similarity index 100% rename from instruments/FM/strings/OPNx_5thsPad.fui rename to instruments/OPN/strings/5thsPad.fui diff --git a/instruments/FM/strings/(GEN) Choir.dmp b/instruments/OPN/strings/Choir.dmp similarity index 100% rename from instruments/FM/strings/(GEN) Choir.dmp rename to instruments/OPN/strings/Choir.dmp diff --git a/instruments/FM/strings/Earthbound Strings.dmp b/instruments/OPN/strings/Earthbound Strings.dmp similarity index 100% rename from instruments/FM/strings/Earthbound Strings.dmp rename to instruments/OPN/strings/Earthbound Strings.dmp diff --git a/instruments/FM/strings/Enchant.dmp b/instruments/OPN/strings/Enchant.dmp similarity index 100% rename from instruments/FM/strings/Enchant.dmp rename to instruments/OPN/strings/Enchant.dmp diff --git a/instruments/FM/strings/Ethereal Something.dmp b/instruments/OPN/strings/Ethereal Something.dmp similarity index 100% rename from instruments/FM/strings/Ethereal Something.dmp rename to instruments/OPN/strings/Ethereal Something.dmp diff --git a/instruments/FM/strings/(GEN) Fiddle.dmp b/instruments/OPN/strings/Fiddle.dmp similarity index 100% rename from instruments/FM/strings/(GEN) Fiddle.dmp rename to instruments/OPN/strings/Fiddle.dmp diff --git a/instruments/FM/strings/Fifths Pad.dmp b/instruments/OPN/strings/Fifths Pad.dmp similarity index 100% rename from instruments/FM/strings/Fifths Pad.dmp rename to instruments/OPN/strings/Fifths Pad.dmp diff --git a/instruments/FM/strings/Fifths Type Beat.dmp b/instruments/OPN/strings/Fifths Type Beat.dmp similarity index 100% rename from instruments/FM/strings/Fifths Type Beat.dmp rename to instruments/OPN/strings/Fifths Type Beat.dmp diff --git a/instruments/FM/strings/Pad.dmp b/instruments/OPN/strings/Pad.dmp similarity index 100% rename from instruments/FM/strings/Pad.dmp rename to instruments/OPN/strings/Pad.dmp diff --git a/instruments/FM/strings/(GEN) Rapid Fiddle.dmp b/instruments/OPN/strings/Rapid Fiddle.dmp similarity index 100% rename from instruments/FM/strings/(GEN) Rapid Fiddle.dmp rename to instruments/OPN/strings/Rapid Fiddle.dmp diff --git a/instruments/FM/strings/SSGPad.dmp b/instruments/OPN/strings/SSGPad.dmp similarity index 100% rename from instruments/FM/strings/SSGPad.dmp rename to instruments/OPN/strings/SSGPad.dmp diff --git a/instruments/FM/strings/Sawsine pad.dmp b/instruments/OPN/strings/Sawsine pad.dmp similarity index 100% rename from instruments/FM/strings/Sawsine pad.dmp rename to instruments/OPN/strings/Sawsine pad.dmp diff --git a/instruments/FM/strings/Slow Strings.fui b/instruments/OPN/strings/Slow Strings.fui similarity index 100% rename from instruments/FM/strings/Slow Strings.fui rename to instruments/OPN/strings/Slow Strings.fui diff --git a/instruments/FM/strings/(GEN) Space Violin.dmp b/instruments/OPN/strings/Space Violin.dmp similarity index 100% rename from instruments/FM/strings/(GEN) Space Violin.dmp rename to instruments/OPN/strings/Space Violin.dmp diff --git a/instruments/FM/strings/OPNx_String.fui b/instruments/OPN/strings/String.fui similarity index 100% rename from instruments/FM/strings/OPNx_String.fui rename to instruments/OPN/strings/String.fui diff --git a/instruments/FM/strings/(GEN) VRC7 Strings.dmp b/instruments/OPN/strings/VRC7 Strings.dmp similarity index 100% rename from instruments/FM/strings/(GEN) VRC7 Strings.dmp rename to instruments/OPN/strings/VRC7 Strings.dmp diff --git a/instruments/FM/strings/(GEN) VRC7 Viola.dmp b/instruments/OPN/strings/VRC7 Viola.dmp similarity index 100% rename from instruments/FM/strings/(GEN) VRC7 Viola.dmp rename to instruments/OPN/strings/VRC7 Viola.dmp diff --git a/instruments/FM/strings/(GEN) Violin 1.dmp b/instruments/OPN/strings/Violin 1.dmp similarity index 100% rename from instruments/FM/strings/(GEN) Violin 1.dmp rename to instruments/OPN/strings/Violin 1.dmp diff --git a/instruments/FM/strings/(GEN) Violin 2.dmp b/instruments/OPN/strings/Violin 2.dmp similarity index 100% rename from instruments/FM/strings/(GEN) Violin 2.dmp rename to instruments/OPN/strings/Violin 2.dmp diff --git a/instruments/FM/strings/Violin.fui b/instruments/OPN/strings/Violin.fui similarity index 100% rename from instruments/FM/strings/Violin.fui rename to instruments/OPN/strings/Violin.fui diff --git a/instruments/FM/strings/ViolinMD.fui b/instruments/OPN/strings/ViolinMD.fui similarity index 100% rename from instruments/FM/strings/ViolinMD.fui rename to instruments/OPN/strings/ViolinMD.fui diff --git a/instruments/FM/strings/strings_00.fui b/instruments/OPN/strings/strings_00.fui similarity index 100% rename from instruments/FM/strings/strings_00.fui rename to instruments/OPN/strings/strings_00.fui diff --git a/instruments/FM/synth/(CH3) Double Ambience.dmp b/instruments/OPN/synth/(CH3) Double Ambience.dmp similarity index 100% rename from instruments/FM/synth/(CH3) Double Ambience.dmp rename to instruments/OPN/synth/(CH3) Double Ambience.dmp diff --git a/instruments/FM/synth/(CH3) Double Choir.dmp b/instruments/OPN/synth/(CH3) Double Choir.dmp similarity index 100% rename from instruments/FM/synth/(CH3) Double Choir.dmp rename to instruments/OPN/synth/(CH3) Double Choir.dmp diff --git a/instruments/FM/synth/(CH3) Double Rounded Square.dmp b/instruments/OPN/synth/(CH3) Double Rounded Square.dmp similarity index 100% rename from instruments/FM/synth/(CH3) Double Rounded Square.dmp rename to instruments/OPN/synth/(CH3) Double Rounded Square.dmp diff --git a/instruments/FM/synth/(CH3) Saw & Organ.dmp b/instruments/OPN/synth/(CH3) Saw & Organ.dmp similarity index 100% rename from instruments/FM/synth/(CH3) Saw & Organ.dmp rename to instruments/OPN/synth/(CH3) Saw & Organ.dmp diff --git a/instruments/FM/synth/(CH3) Sine Chord.dmp b/instruments/OPN/synth/(CH3) Sine Chord.dmp similarity index 100% rename from instruments/FM/synth/(CH3) Sine Chord.dmp rename to instruments/OPN/synth/(CH3) Sine Chord.dmp diff --git a/instruments/FM/synth/(CH3) Synth with Light Snare.dmp b/instruments/OPN/synth/(CH3) Synth with Light Snare.dmp similarity index 100% rename from instruments/FM/synth/(CH3) Synth with Light Snare.dmp rename to instruments/OPN/synth/(CH3) Synth with Light Snare.dmp diff --git a/instruments/FM/synth/(GEN) 1 16 Pulse.dmp b/instruments/OPN/synth/1 16 Pulse.dmp similarity index 100% rename from instruments/FM/synth/(GEN) 1 16 Pulse.dmp rename to instruments/OPN/synth/1 16 Pulse.dmp diff --git a/instruments/FM/synth/(GEN) 1 4 Pulse.dmp b/instruments/OPN/synth/1 4 Pulse.dmp similarity index 100% rename from instruments/FM/synth/(GEN) 1 4 Pulse.dmp rename to instruments/OPN/synth/1 4 Pulse.dmp diff --git a/instruments/FM/synth/(GEN) 1 8 Pulse.dmp b/instruments/OPN/synth/1 8 Pulse.dmp similarity index 100% rename from instruments/FM/synth/(GEN) 1 8 Pulse.dmp rename to instruments/OPN/synth/1 8 Pulse.dmp diff --git a/instruments/FM/synth/(GEN) 3 16 Pulse.dmp b/instruments/OPN/synth/3 16 Pulse.dmp similarity index 100% rename from instruments/FM/synth/(GEN) 3 16 Pulse.dmp rename to instruments/OPN/synth/3 16 Pulse.dmp diff --git a/instruments/FM/synth/(GEN) 3 8 Pulse.dmp b/instruments/OPN/synth/3 8 Pulse.dmp similarity index 100% rename from instruments/FM/synth/(GEN) 3 8 Pulse.dmp rename to instruments/OPN/synth/3 8 Pulse.dmp diff --git a/instruments/FM/synth/(GEN) 5 16 Pulse.dmp b/instruments/OPN/synth/5 16 Pulse.dmp similarity index 100% rename from instruments/FM/synth/(GEN) 5 16 Pulse.dmp rename to instruments/OPN/synth/5 16 Pulse.dmp diff --git a/instruments/FM/synth/(GEN) 7 16 Pulse.dmp b/instruments/OPN/synth/7 16 Pulse.dmp similarity index 100% rename from instruments/FM/synth/(GEN) 7 16 Pulse.dmp rename to instruments/OPN/synth/7 16 Pulse.dmp diff --git a/instruments/FM/synth/Abduction.dmp b/instruments/OPN/synth/Abduction.dmp similarity index 100% rename from instruments/FM/synth/Abduction.dmp rename to instruments/OPN/synth/Abduction.dmp diff --git a/instruments/FM/synth/Altered Square.dmp b/instruments/OPN/synth/Altered Square.dmp similarity index 100% rename from instruments/FM/synth/Altered Square.dmp rename to instruments/OPN/synth/Altered Square.dmp diff --git a/instruments/FM/synth/(GEN) Ambience.dmp b/instruments/OPN/synth/Ambience.dmp similarity index 100% rename from instruments/FM/synth/(GEN) Ambience.dmp rename to instruments/OPN/synth/Ambience.dmp diff --git a/instruments/FM/synth/Buttermilk.dmp b/instruments/OPN/synth/Buttermilk.dmp similarity index 100% rename from instruments/FM/synth/Buttermilk.dmp rename to instruments/OPN/synth/Buttermilk.dmp diff --git a/instruments/FM/synth/(GEN) Church Hestian.dmp b/instruments/OPN/synth/Church Hestian.dmp similarity index 100% rename from instruments/FM/synth/(GEN) Church Hestian.dmp rename to instruments/OPN/synth/Church Hestian.dmp diff --git a/instruments/FM/synth/Circuitbird Donk.dmp b/instruments/OPN/synth/Circuitbird Donk.dmp similarity index 100% rename from instruments/FM/synth/Circuitbird Donk.dmp rename to instruments/OPN/synth/Circuitbird Donk.dmp diff --git a/instruments/FM/synth/Cricket Chorus.fui b/instruments/OPN/synth/Cricket Chorus.fui similarity index 100% rename from instruments/FM/synth/Cricket Chorus.fui rename to instruments/OPN/synth/Cricket Chorus.fui diff --git a/instruments/FM/synth/(GEN) Cutoff.dmp b/instruments/OPN/synth/Cutoff.dmp similarity index 100% rename from instruments/FM/synth/(GEN) Cutoff.dmp rename to instruments/OPN/synth/Cutoff.dmp diff --git a/instruments/FM/synth/Desert Synth.dmp b/instruments/OPN/synth/Desert Synth.dmp similarity index 100% rename from instruments/FM/synth/Desert Synth.dmp rename to instruments/OPN/synth/Desert Synth.dmp diff --git a/instruments/FM/synth/(GEN) Distorted Hestian.dmp b/instruments/OPN/synth/Distorted Hestian.dmp similarity index 100% rename from instruments/FM/synth/(GEN) Distorted Hestian.dmp rename to instruments/OPN/synth/Distorted Hestian.dmp diff --git a/instruments/FM/synth/Ecco.dmp b/instruments/OPN/synth/Ecco.dmp similarity index 100% rename from instruments/FM/synth/Ecco.dmp rename to instruments/OPN/synth/Ecco.dmp diff --git a/instruments/FM/synth/FM_noname1.fui b/instruments/OPN/synth/FM_noname1.fui similarity index 100% rename from instruments/FM/synth/FM_noname1.fui rename to instruments/OPN/synth/FM_noname1.fui diff --git a/instruments/FM/synth/Guess.dmp b/instruments/OPN/synth/Guess.dmp similarity index 100% rename from instruments/FM/synth/Guess.dmp rename to instruments/OPN/synth/Guess.dmp diff --git a/instruments/FM/synth/(GEN) Hestian.dmp b/instruments/OPN/synth/Hestian.dmp similarity index 100% rename from instruments/FM/synth/(GEN) Hestian.dmp rename to instruments/OPN/synth/Hestian.dmp diff --git a/instruments/FM/synth/(GEN) High Hestian.dmp b/instruments/OPN/synth/High Hestian.dmp similarity index 100% rename from instruments/FM/synth/(GEN) High Hestian.dmp rename to instruments/OPN/synth/High Hestian.dmp diff --git a/instruments/FM/synth/(GEN) Hyperspeed Decay Sine.dmp b/instruments/OPN/synth/Hyperspeed Decay Sine.dmp similarity index 100% rename from instruments/FM/synth/(GEN) Hyperspeed Decay Sine.dmp rename to instruments/OPN/synth/Hyperspeed Decay Sine.dmp diff --git a/instruments/FM/synth/(GEN) K.K. Slider Aah.dmp b/instruments/OPN/synth/K.K. Slider Aah.dmp similarity index 100% rename from instruments/FM/synth/(GEN) K.K. Slider Aah.dmp rename to instruments/OPN/synth/K.K. Slider Aah.dmp diff --git a/instruments/FM/synth/(GEN) K.K. Slider Weh.dmp b/instruments/OPN/synth/K.K. Slider Weh.dmp similarity index 100% rename from instruments/FM/synth/(GEN) K.K. Slider Weh.dmp rename to instruments/OPN/synth/K.K. Slider Weh.dmp diff --git a/instruments/FM/synth/Kirby SNES Synth Pad.fui b/instruments/OPN/synth/Kirby SNES Synth Pad.fui similarity index 100% rename from instruments/FM/synth/Kirby SNES Synth Pad.fui rename to instruments/OPN/synth/Kirby SNES Synth Pad.fui diff --git a/instruments/FM/synth/Klax.dmp b/instruments/OPN/synth/Klax.dmp similarity index 100% rename from instruments/FM/synth/Klax.dmp rename to instruments/OPN/synth/Klax.dmp diff --git a/instruments/FM/synth/Kyd.dmp b/instruments/OPN/synth/Kyd.dmp similarity index 100% rename from instruments/FM/synth/Kyd.dmp rename to instruments/OPN/synth/Kyd.dmp diff --git a/instruments/FM/synth/Love.dmp b/instruments/OPN/synth/Love.dmp similarity index 100% rename from instruments/FM/synth/Love.dmp rename to instruments/OPN/synth/Love.dmp diff --git a/instruments/FM/synth/(GEN) Low Hestian.dmp b/instruments/OPN/synth/Low Hestian.dmp similarity index 100% rename from instruments/FM/synth/(GEN) Low Hestian.dmp rename to instruments/OPN/synth/Low Hestian.dmp diff --git a/instruments/FM/synth/Metallic FM Lead.fui b/instruments/OPN/synth/Metallic FM Lead.fui similarity index 100% rename from instruments/FM/synth/Metallic FM Lead.fui rename to instruments/OPN/synth/Metallic FM Lead.fui diff --git a/instruments/FM/synth/(GEN) NES Triangle.dmp b/instruments/OPN/synth/NES Triangle.dmp similarity index 100% rename from instruments/FM/synth/(GEN) NES Triangle.dmp rename to instruments/OPN/synth/NES Triangle.dmp diff --git a/instruments/FM/synth/(GEN) Near Perfect Saw Wave.dmp b/instruments/OPN/synth/Near Perfect Saw Wave.dmp similarity index 100% rename from instruments/FM/synth/(GEN) Near Perfect Saw Wave.dmp rename to instruments/OPN/synth/Near Perfect Saw Wave.dmp diff --git a/instruments/FM/synth/(GEN) Near Perfect Square Wave.dmp b/instruments/OPN/synth/Near Perfect Square Wave.dmp similarity index 100% rename from instruments/FM/synth/(GEN) Near Perfect Square Wave.dmp rename to instruments/OPN/synth/Near Perfect Square Wave.dmp diff --git a/instruments/FM/synth/Octave_Square.fui b/instruments/OPN/synth/Octave_Square.fui similarity index 100% rename from instruments/FM/synth/Octave_Square.fui rename to instruments/OPN/synth/Octave_Square.fui diff --git a/instruments/FM/synth/Octave_Square2.fui b/instruments/OPN/synth/Octave_Square2.fui similarity index 100% rename from instruments/FM/synth/Octave_Square2.fui rename to instruments/OPN/synth/Octave_Square2.fui diff --git a/instruments/FM/synth/(GEN) Perfect Saw Wave.dmp b/instruments/OPN/synth/Perfect Saw Wave.dmp similarity index 100% rename from instruments/FM/synth/(GEN) Perfect Saw Wave.dmp rename to instruments/OPN/synth/Perfect Saw Wave.dmp diff --git a/instruments/FM/synth/(GEN) Perfect Square Wave.dmp b/instruments/OPN/synth/Perfect Square Wave.dmp similarity index 100% rename from instruments/FM/synth/(GEN) Perfect Square Wave.dmp rename to instruments/OPN/synth/Perfect Square Wave.dmp diff --git a/instruments/FM/synth/(GEN) Perfect Triangle Wave.dmp b/instruments/OPN/synth/Perfect Triangle Wave.dmp similarity index 100% rename from instruments/FM/synth/(GEN) Perfect Triangle Wave.dmp rename to instruments/OPN/synth/Perfect Triangle Wave.dmp diff --git a/instruments/FM/synth/(GEN) Rattling Hestian.dmp b/instruments/OPN/synth/Rattling Hestian.dmp similarity index 100% rename from instruments/FM/synth/(GEN) Rattling Hestian.dmp rename to instruments/OPN/synth/Rattling Hestian.dmp diff --git a/instruments/FM/synth/Reverby_Live_Chords.fui b/instruments/OPN/synth/Reverby_Live_Chords.fui similarity index 100% rename from instruments/FM/synth/Reverby_Live_Chords.fui rename to instruments/OPN/synth/Reverby_Live_Chords.fui diff --git a/instruments/FM/synth/(GEN) Rough Hestian.dmp b/instruments/OPN/synth/Rough Hestian.dmp similarity index 100% rename from instruments/FM/synth/(GEN) Rough Hestian.dmp rename to instruments/OPN/synth/Rough Hestian.dmp diff --git a/instruments/FM/synth/(GEN) Rough Square.dmp b/instruments/OPN/synth/Rough Square.dmp similarity index 100% rename from instruments/FM/synth/(GEN) Rough Square.dmp rename to instruments/OPN/synth/Rough Square.dmp diff --git a/instruments/FM/synth/(GEN) Rounded Square.dmp b/instruments/OPN/synth/Rounded Square.dmp similarity index 100% rename from instruments/FM/synth/(GEN) Rounded Square.dmp rename to instruments/OPN/synth/Rounded Square.dmp diff --git a/instruments/FM/synth/RustEcho.dmp b/instruments/OPN/synth/RustEcho.dmp similarity index 100% rename from instruments/FM/synth/RustEcho.dmp rename to instruments/OPN/synth/RustEcho.dmp diff --git a/instruments/FM/synth/(GEN) Saw Malleable.dmp b/instruments/OPN/synth/Saw Malleable.dmp similarity index 100% rename from instruments/FM/synth/(GEN) Saw Malleable.dmp rename to instruments/OPN/synth/Saw Malleable.dmp diff --git a/instruments/FM/synth/Saw.dmp b/instruments/OPN/synth/Saw.dmp similarity index 100% rename from instruments/FM/synth/Saw.dmp rename to instruments/OPN/synth/Saw.dmp diff --git a/instruments/FM/synth/(GEN) Sharp Saw.dmp b/instruments/OPN/synth/Sharp Saw.dmp similarity index 100% rename from instruments/FM/synth/(GEN) Sharp Saw.dmp rename to instruments/OPN/synth/Sharp Saw.dmp diff --git a/instruments/FM/synth/Signal.dmp b/instruments/OPN/synth/Signal.dmp similarity index 100% rename from instruments/FM/synth/Signal.dmp rename to instruments/OPN/synth/Signal.dmp diff --git a/instruments/FM/synth/(GEN) Sine Growl.dmp b/instruments/OPN/synth/Sine Growl.dmp similarity index 100% rename from instruments/FM/synth/(GEN) Sine Growl.dmp rename to instruments/OPN/synth/Sine Growl.dmp diff --git a/instruments/FM/synth/Space Cowboy.dmp b/instruments/OPN/synth/Space Cowboy.dmp similarity index 100% rename from instruments/FM/synth/Space Cowboy.dmp rename to instruments/OPN/synth/Space Cowboy.dmp diff --git a/instruments/FM/synth/(GEN) Space Hestian.dmp b/instruments/OPN/synth/Space Hestian.dmp similarity index 100% rename from instruments/FM/synth/(GEN) Space Hestian.dmp rename to instruments/OPN/synth/Space Hestian.dmp diff --git a/instruments/FM/synth/(GEN) Space Organ.dmp b/instruments/OPN/synth/Space Organ.dmp similarity index 100% rename from instruments/FM/synth/(GEN) Space Organ.dmp rename to instruments/OPN/synth/Space Organ.dmp diff --git a/instruments/FM/synth/(GEN) Space Saw.dmp b/instruments/OPN/synth/Space Saw.dmp similarity index 100% rename from instruments/FM/synth/(GEN) Space Saw.dmp rename to instruments/OPN/synth/Space Saw.dmp diff --git a/instruments/FM/synth/Space Shredder.dmp b/instruments/OPN/synth/Space Shredder.dmp similarity index 100% rename from instruments/FM/synth/Space Shredder.dmp rename to instruments/OPN/synth/Space Shredder.dmp diff --git a/instruments/FM/synth/(GEN) Sparkle.dmp b/instruments/OPN/synth/Sparkle.dmp similarity index 100% rename from instruments/FM/synth/(GEN) Sparkle.dmp rename to instruments/OPN/synth/Sparkle.dmp diff --git a/instruments/FM/synth/(GEN) Spoopy.dmp b/instruments/OPN/synth/Spoopy.dmp similarity index 100% rename from instruments/FM/synth/(GEN) Spoopy.dmp rename to instruments/OPN/synth/Spoopy.dmp diff --git a/instruments/FM/synth/(GEN) Square Wave.dmp b/instruments/OPN/synth/Square Wave.dmp similarity index 100% rename from instruments/FM/synth/(GEN) Square Wave.dmp rename to instruments/OPN/synth/Square Wave.dmp diff --git a/instruments/FM/synth/Square.dmp b/instruments/OPN/synth/Square.dmp similarity index 100% rename from instruments/FM/synth/Square.dmp rename to instruments/OPN/synth/Square.dmp diff --git a/instruments/FM/synth/Square.fui b/instruments/OPN/synth/Square.fui similarity index 100% rename from instruments/FM/synth/Square.fui rename to instruments/OPN/synth/Square.fui diff --git a/instruments/FM/synth/Squid.dmp b/instruments/OPN/synth/Squid.dmp similarity index 100% rename from instruments/FM/synth/Squid.dmp rename to instruments/OPN/synth/Squid.dmp diff --git a/instruments/FM/synth/(GEN) Synth with Closed Hi-Hat.dmp b/instruments/OPN/synth/Synth with Closed Hi-Hat.dmp similarity index 100% rename from instruments/FM/synth/(GEN) Synth with Closed Hi-Hat.dmp rename to instruments/OPN/synth/Synth with Closed Hi-Hat.dmp diff --git a/instruments/FM/synth/(GEN) Synth with Open Hi-Hat.dmp b/instruments/OPN/synth/Synth with Open Hi-Hat.dmp similarity index 100% rename from instruments/FM/synth/(GEN) Synth with Open Hi-Hat.dmp rename to instruments/OPN/synth/Synth with Open Hi-Hat.dmp diff --git a/instruments/FM/synth/Thin.dmp b/instruments/OPN/synth/Thin.dmp similarity index 100% rename from instruments/FM/synth/Thin.dmp rename to instruments/OPN/synth/Thin.dmp diff --git a/instruments/FM/synth/Tri.dmp b/instruments/OPN/synth/Tri.dmp similarity index 100% rename from instruments/FM/synth/Tri.dmp rename to instruments/OPN/synth/Tri.dmp diff --git a/instruments/FM/synth/(GEN) Twang EX.dmp b/instruments/OPN/synth/Twang EX.dmp similarity index 100% rename from instruments/FM/synth/(GEN) Twang EX.dmp rename to instruments/OPN/synth/Twang EX.dmp diff --git a/instruments/FM/synth/(GEN) Twang Whistle.dmp b/instruments/OPN/synth/Twang Whistle.dmp similarity index 100% rename from instruments/FM/synth/(GEN) Twang Whistle.dmp rename to instruments/OPN/synth/Twang Whistle.dmp diff --git a/instruments/FM/synth/Twoah.dmp b/instruments/OPN/synth/Twoah.dmp similarity index 100% rename from instruments/FM/synth/Twoah.dmp rename to instruments/OPN/synth/Twoah.dmp diff --git a/instruments/FM/synth/(GEN) VRC7 Choir.dmp b/instruments/OPN/synth/VRC7 Choir.dmp similarity index 100% rename from instruments/FM/synth/(GEN) VRC7 Choir.dmp rename to instruments/OPN/synth/VRC7 Choir.dmp diff --git a/instruments/FM/synth/(GEN) VRC7 Hestian.dmp b/instruments/OPN/synth/VRC7 Hestian.dmp similarity index 100% rename from instruments/FM/synth/(GEN) VRC7 Hestian.dmp rename to instruments/OPN/synth/VRC7 Hestian.dmp diff --git a/instruments/FM/synth/(GEN) Wahwah.dmp b/instruments/OPN/synth/Wahwah.dmp similarity index 100% rename from instruments/FM/synth/(GEN) Wahwah.dmp rename to instruments/OPN/synth/Wahwah.dmp diff --git a/instruments/FM/synth/[1OPHigh]Saw.dmp b/instruments/OPN/synth/[1OPHigh]Saw.dmp similarity index 100% rename from instruments/FM/synth/[1OPHigh]Saw.dmp rename to instruments/OPN/synth/[1OPHigh]Saw.dmp diff --git a/instruments/FM/synth/[2OPHigh]Filtered Square.dmp b/instruments/OPN/synth/[2OPHigh]Filtered Square.dmp similarity index 100% rename from instruments/FM/synth/[2OPHigh]Filtered Square.dmp rename to instruments/OPN/synth/[2OPHigh]Filtered Square.dmp diff --git a/instruments/FM/synth/cool leaed.dmp b/instruments/OPN/synth/cool leaed.dmp similarity index 100% rename from instruments/FM/synth/cool leaed.dmp rename to instruments/OPN/synth/cool leaed.dmp diff --git a/instruments/FM/synth/fm_grinder.fui b/instruments/OPN/synth/fm_grinder.fui similarity index 100% rename from instruments/FM/synth/fm_grinder.fui rename to instruments/OPN/synth/fm_grinder.fui diff --git a/instruments/FM/synth/fm_horror.fui b/instruments/OPN/synth/fm_horror.fui similarity index 100% rename from instruments/FM/synth/fm_horror.fui rename to instruments/OPN/synth/fm_horror.fui diff --git a/instruments/FM/synth/fm_noname2.fui b/instruments/OPN/synth/fm_noname2.fui similarity index 100% rename from instruments/FM/synth/fm_noname2.fui rename to instruments/OPN/synth/fm_noname2.fui diff --git a/instruments/FM/synth/fm_noname3.fui b/instruments/OPN/synth/fm_noname3.fui similarity index 100% rename from instruments/FM/synth/fm_noname3.fui rename to instruments/OPN/synth/fm_noname3.fui diff --git a/instruments/FM/synth/fm_noname4.fui b/instruments/OPN/synth/fm_noname4.fui similarity index 100% rename from instruments/FM/synth/fm_noname4.fui rename to instruments/OPN/synth/fm_noname4.fui diff --git a/instruments/FM/synth/fm_noname5.fui b/instruments/OPN/synth/fm_noname5.fui similarity index 100% rename from instruments/FM/synth/fm_noname5.fui rename to instruments/OPN/synth/fm_noname5.fui diff --git a/instruments/FM/synth/fm_noname6.fui b/instruments/OPN/synth/fm_noname6.fui similarity index 100% rename from instruments/FM/synth/fm_noname6.fui rename to instruments/OPN/synth/fm_noname6.fui diff --git a/instruments/FM/synth/fm_noname7.fui b/instruments/OPN/synth/fm_noname7.fui similarity index 100% rename from instruments/FM/synth/fm_noname7.fui rename to instruments/OPN/synth/fm_noname7.fui diff --git a/instruments/FM/synth/growl.fui b/instruments/OPN/synth/growl.fui similarity index 100% rename from instruments/FM/synth/growl.fui rename to instruments/OPN/synth/growl.fui diff --git a/instruments/FM/synth/mystic cave lead.dmp b/instruments/OPN/synth/mystic cave lead.dmp similarity index 100% rename from instruments/FM/synth/mystic cave lead.dmp rename to instruments/OPN/synth/mystic cave lead.dmp diff --git a/instruments/FM/synth/sawtooth.dmp b/instruments/OPN/synth/sawtooth.dmp similarity index 100% rename from instruments/FM/synth/sawtooth.dmp rename to instruments/OPN/synth/sawtooth.dmp diff --git a/instruments/FM/synth/snes-ish square.dmp b/instruments/OPN/synth/snes-ish square.dmp similarity index 100% rename from instruments/FM/synth/snes-ish square.dmp rename to instruments/OPN/synth/snes-ish square.dmp diff --git a/instruments/FM/synth/sonic spinball toxic caves thingy.dmp b/instruments/OPN/synth/sonic spinball toxic caves thingy.dmp similarity index 100% rename from instruments/FM/synth/sonic spinball toxic caves thingy.dmp rename to instruments/OPN/synth/sonic spinball toxic caves thingy.dmp diff --git a/instruments/FM/synth/whut.dmp b/instruments/OPN/synth/whut.dmp similarity index 100% rename from instruments/FM/synth/whut.dmp rename to instruments/OPN/synth/whut.dmp diff --git a/instruments/FM/synth/yrwywryw.dmp b/instruments/OPN/synth/yrwywryw.dmp similarity index 100% rename from instruments/FM/synth/yrwywryw.dmp rename to instruments/OPN/synth/yrwywryw.dmp diff --git a/instruments/FM/tfilib/banjo.tfi b/instruments/OPN/tfilib/banjo.tfi similarity index 100% rename from instruments/FM/tfilib/banjo.tfi rename to instruments/OPN/tfilib/banjo.tfi diff --git a/instruments/FM/tfilib/bass.tfi b/instruments/OPN/tfilib/bass.tfi similarity index 100% rename from instruments/FM/tfilib/bass.tfi rename to instruments/OPN/tfilib/bass.tfi diff --git a/instruments/FM/tfilib/bell.tfi b/instruments/OPN/tfilib/bell.tfi similarity index 100% rename from instruments/FM/tfilib/bell.tfi rename to instruments/OPN/tfilib/bell.tfi diff --git a/instruments/FM/tfilib/cymbal.tfi b/instruments/OPN/tfilib/cymbal.tfi similarity index 100% rename from instruments/FM/tfilib/cymbal.tfi rename to instruments/OPN/tfilib/cymbal.tfi diff --git a/instruments/FM/tfilib/distbass.tfi b/instruments/OPN/tfilib/distbass.tfi similarity index 100% rename from instruments/FM/tfilib/distbass.tfi rename to instruments/OPN/tfilib/distbass.tfi diff --git a/instruments/FM/tfilib/distguit.tfi b/instruments/OPN/tfilib/distguit.tfi similarity index 100% rename from instruments/FM/tfilib/distguit.tfi rename to instruments/OPN/tfilib/distguit.tfi diff --git a/instruments/FM/tfilib/distslap.tfi b/instruments/OPN/tfilib/distslap.tfi similarity index 100% rename from instruments/FM/tfilib/distslap.tfi rename to instruments/OPN/tfilib/distslap.tfi diff --git a/instruments/FM/tfilib/elecbass.tfi b/instruments/OPN/tfilib/elecbass.tfi similarity index 100% rename from instruments/FM/tfilib/elecbass.tfi rename to instruments/OPN/tfilib/elecbass.tfi diff --git a/instruments/FM/tfilib/fifths.tfi b/instruments/OPN/tfilib/fifths.tfi similarity index 100% rename from instruments/FM/tfilib/fifths.tfi rename to instruments/OPN/tfilib/fifths.tfi diff --git a/instruments/FM/tfilib/flute.tfi b/instruments/OPN/tfilib/flute.tfi similarity index 100% rename from instruments/FM/tfilib/flute.tfi rename to instruments/OPN/tfilib/flute.tfi diff --git a/instruments/FM/tfilib/guitar.tfi b/instruments/OPN/tfilib/guitar.tfi similarity index 100% rename from instruments/FM/tfilib/guitar.tfi rename to instruments/OPN/tfilib/guitar.tfi diff --git a/instruments/FM/tfilib/harp.tfi b/instruments/OPN/tfilib/harp.tfi similarity index 100% rename from instruments/FM/tfilib/harp.tfi rename to instruments/OPN/tfilib/harp.tfi diff --git a/instruments/FM/tfilib/harpsich.tfi b/instruments/OPN/tfilib/harpsich.tfi similarity index 100% rename from instruments/FM/tfilib/harpsich.tfi rename to instruments/OPN/tfilib/harpsich.tfi diff --git a/instruments/FM/tfilib/hithat.tfi b/instruments/OPN/tfilib/hithat.tfi similarity index 100% rename from instruments/FM/tfilib/hithat.tfi rename to instruments/OPN/tfilib/hithat.tfi diff --git a/instruments/FM/tfilib/kick.tfi b/instruments/OPN/tfilib/kick.tfi similarity index 100% rename from instruments/FM/tfilib/kick.tfi rename to instruments/OPN/tfilib/kick.tfi diff --git a/instruments/FM/tfilib/list.txt b/instruments/OPN/tfilib/list.txt similarity index 100% rename from instruments/FM/tfilib/list.txt rename to instruments/OPN/tfilib/list.txt diff --git a/instruments/FM/tfilib/lyre.tfi b/instruments/OPN/tfilib/lyre.tfi similarity index 100% rename from instruments/FM/tfilib/lyre.tfi rename to instruments/OPN/tfilib/lyre.tfi diff --git a/instruments/FM/tfilib/marimba.tfi b/instruments/OPN/tfilib/marimba.tfi similarity index 100% rename from instruments/FM/tfilib/marimba.tfi rename to instruments/OPN/tfilib/marimba.tfi diff --git a/instruments/FM/tfilib/neslike.tfi b/instruments/OPN/tfilib/neslike.tfi similarity index 100% rename from instruments/FM/tfilib/neslike.tfi rename to instruments/OPN/tfilib/neslike.tfi diff --git a/instruments/FM/tfilib/ocarina.tfi b/instruments/OPN/tfilib/ocarina.tfi similarity index 100% rename from instruments/FM/tfilib/ocarina.tfi rename to instruments/OPN/tfilib/ocarina.tfi diff --git a/instruments/FM/tfilib/organ.tfi b/instruments/OPN/tfilib/organ.tfi similarity index 100% rename from instruments/FM/tfilib/organ.tfi rename to instruments/OPN/tfilib/organ.tfi diff --git a/instruments/FM/tfilib/piano.tfi b/instruments/OPN/tfilib/piano.tfi similarity index 100% rename from instruments/FM/tfilib/piano.tfi rename to instruments/OPN/tfilib/piano.tfi diff --git a/instruments/FM/tfilib/sawtooth.tfi b/instruments/OPN/tfilib/sawtooth.tfi similarity index 100% rename from instruments/FM/tfilib/sawtooth.tfi rename to instruments/OPN/tfilib/sawtooth.tfi diff --git a/instruments/FM/tfilib/sax.tfi b/instruments/OPN/tfilib/sax.tfi similarity index 100% rename from instruments/FM/tfilib/sax.tfi rename to instruments/OPN/tfilib/sax.tfi diff --git a/instruments/FM/tfilib/sine.tfi b/instruments/OPN/tfilib/sine.tfi similarity index 100% rename from instruments/FM/tfilib/sine.tfi rename to instruments/OPN/tfilib/sine.tfi diff --git a/instruments/FM/tfilib/slapbass.tfi b/instruments/OPN/tfilib/slapbass.tfi similarity index 100% rename from instruments/FM/tfilib/slapbass.tfi rename to instruments/OPN/tfilib/slapbass.tfi diff --git a/instruments/FM/tfilib/snare.tfi b/instruments/OPN/tfilib/snare.tfi similarity index 100% rename from instruments/FM/tfilib/snare.tfi rename to instruments/OPN/tfilib/snare.tfi diff --git a/instruments/FM/tfilib/sofpiano.tfi b/instruments/OPN/tfilib/sofpiano.tfi similarity index 100% rename from instruments/FM/tfilib/sofpiano.tfi rename to instruments/OPN/tfilib/sofpiano.tfi diff --git a/instruments/FM/tfilib/softsaw.tfi b/instruments/OPN/tfilib/softsaw.tfi similarity index 100% rename from instruments/FM/tfilib/softsaw.tfi rename to instruments/OPN/tfilib/softsaw.tfi diff --git a/instruments/FM/tfilib/softsqr.tfi b/instruments/OPN/tfilib/softsqr.tfi similarity index 100% rename from instruments/FM/tfilib/softsqr.tfi rename to instruments/OPN/tfilib/softsqr.tfi diff --git a/instruments/FM/tfilib/square.tfi b/instruments/OPN/tfilib/square.tfi similarity index 100% rename from instruments/FM/tfilib/square.tfi rename to instruments/OPN/tfilib/square.tfi diff --git a/instruments/FM/tfilib/steldrum.tfi b/instruments/OPN/tfilib/steldrum.tfi similarity index 100% rename from instruments/FM/tfilib/steldrum.tfi rename to instruments/OPN/tfilib/steldrum.tfi diff --git a/instruments/FM/tfilib/synbell.tfi b/instruments/OPN/tfilib/synbell.tfi similarity index 100% rename from instruments/FM/tfilib/synbell.tfi rename to instruments/OPN/tfilib/synbell.tfi diff --git a/instruments/FM/tfilib/tackpian.tfi b/instruments/OPN/tfilib/tackpian.tfi similarity index 100% rename from instruments/FM/tfilib/tackpian.tfi rename to instruments/OPN/tfilib/tackpian.tfi diff --git a/instruments/FM/tfilib/timpani1.tfi b/instruments/OPN/tfilib/timpani1.tfi similarity index 100% rename from instruments/FM/tfilib/timpani1.tfi rename to instruments/OPN/tfilib/timpani1.tfi diff --git a/instruments/FM/tfilib/timpani2.tfi b/instruments/OPN/tfilib/timpani2.tfi similarity index 100% rename from instruments/FM/tfilib/timpani2.tfi rename to instruments/OPN/tfilib/timpani2.tfi diff --git a/instruments/FM/tfilib/toypiano.tfi b/instruments/OPN/tfilib/toypiano.tfi similarity index 100% rename from instruments/FM/tfilib/toypiano.tfi rename to instruments/OPN/tfilib/toypiano.tfi diff --git a/instruments/FM/tfilib/triangle.tfi b/instruments/OPN/tfilib/triangle.tfi similarity index 100% rename from instruments/FM/tfilib/triangle.tfi rename to instruments/OPN/tfilib/triangle.tfi diff --git a/instruments/FM/tfilib/trumpet.tfi b/instruments/OPN/tfilib/trumpet.tfi similarity index 100% rename from instruments/FM/tfilib/trumpet.tfi rename to instruments/OPN/tfilib/trumpet.tfi diff --git a/instruments/FM/tfilib/wooddrum.tfi b/instruments/OPN/tfilib/wooddrum.tfi similarity index 100% rename from instruments/FM/tfilib/wooddrum.tfi rename to instruments/OPN/tfilib/wooddrum.tfi diff --git a/instruments/FM/wind/(CH3) Double Clarinet.dmp b/instruments/OPN/wind/(CH3) Double Clarinet.dmp similarity index 100% rename from instruments/FM/wind/(CH3) Double Clarinet.dmp rename to instruments/OPN/wind/(CH3) Double Clarinet.dmp diff --git a/instruments/FM/wind/(CH3) Double Flute.dmp b/instruments/OPN/wind/(CH3) Double Flute.dmp similarity index 100% rename from instruments/FM/wind/(CH3) Double Flute.dmp rename to instruments/OPN/wind/(CH3) Double Flute.dmp diff --git a/instruments/FM/wind/(CH3) Double Woodwind.dmp b/instruments/OPN/wind/(CH3) Double Woodwind.dmp similarity index 100% rename from instruments/FM/wind/(CH3) Double Woodwind.dmp rename to instruments/OPN/wind/(CH3) Double Woodwind.dmp diff --git a/instruments/FM/wind/(CH3) Quadruple Ocarina.dmp b/instruments/OPN/wind/(CH3) Quadruple Ocarina.dmp similarity index 100% rename from instruments/FM/wind/(CH3) Quadruple Ocarina.dmp rename to instruments/OPN/wind/(CH3) Quadruple Ocarina.dmp diff --git a/instruments/FM/wind/B'arinet.dmp b/instruments/OPN/wind/B'arinet.dmp similarity index 100% rename from instruments/FM/wind/B'arinet.dmp rename to instruments/OPN/wind/B'arinet.dmp diff --git a/instruments/FM/wind/OPNx_BottleBlow.fui b/instruments/OPN/wind/BottleBlow.fui similarity index 100% rename from instruments/FM/wind/OPNx_BottleBlow.fui rename to instruments/OPN/wind/BottleBlow.fui diff --git a/instruments/FM/wind/(GEN) Clarinet.dmp b/instruments/OPN/wind/Clarinet (2).dmp similarity index 100% rename from instruments/FM/wind/(GEN) Clarinet.dmp rename to instruments/OPN/wind/Clarinet (2).dmp diff --git a/instruments/FM/wind/Clarinet.dmp b/instruments/OPN/wind/Clarinet.dmp similarity index 100% rename from instruments/FM/wind/Clarinet.dmp rename to instruments/OPN/wind/Clarinet.dmp diff --git a/instruments/FM/wind/(GEN) Didgeridoo.dmp b/instruments/OPN/wind/Didgeridoo.dmp similarity index 100% rename from instruments/FM/wind/(GEN) Didgeridoo.dmp rename to instruments/OPN/wind/Didgeridoo.dmp diff --git a/instruments/FM/wind/English Horn.dmp b/instruments/OPN/wind/English Horn.dmp similarity index 100% rename from instruments/FM/wind/English Horn.dmp rename to instruments/OPN/wind/English Horn.dmp diff --git a/instruments/FM/wind/FM_4OP_-_Tenor_Sax.fui b/instruments/OPN/wind/FM_4OP_-_Tenor_Sax.fui similarity index 100% rename from instruments/FM/wind/FM_4OP_-_Tenor_Sax.fui rename to instruments/OPN/wind/FM_4OP_-_Tenor_Sax.fui diff --git a/instruments/FM/wind/(GEN) Flute.dmp b/instruments/OPN/wind/Flute (2).dmp similarity index 100% rename from instruments/FM/wind/(GEN) Flute.dmp rename to instruments/OPN/wind/Flute (2).dmp diff --git a/instruments/FM/wind/Flute.dmp b/instruments/OPN/wind/Flute.dmp similarity index 100% rename from instruments/FM/wind/Flute.dmp rename to instruments/OPN/wind/Flute.dmp diff --git a/instruments/FM/wind/(GEN) Forest Flute.dmp b/instruments/OPN/wind/Forest Flute.dmp similarity index 100% rename from instruments/FM/wind/(GEN) Forest Flute.dmp rename to instruments/OPN/wind/Forest Flute.dmp diff --git a/instruments/FM/wind/(GEN) Harmonica.dmp b/instruments/OPN/wind/Harmonica.dmp similarity index 100% rename from instruments/FM/wind/(GEN) Harmonica.dmp rename to instruments/OPN/wind/Harmonica.dmp diff --git a/instruments/FM/wind/(GEN) Ocarina.dmp b/instruments/OPN/wind/Ocarina.dmp similarity index 100% rename from instruments/FM/wind/(GEN) Ocarina.dmp rename to instruments/OPN/wind/Ocarina.dmp diff --git a/instruments/FM/wind/Pan Flute.dmp b/instruments/OPN/wind/Pan Flute.dmp similarity index 100% rename from instruments/FM/wind/Pan Flute.dmp rename to instruments/OPN/wind/Pan Flute.dmp diff --git a/instruments/FM/wind/(GEN) Saxophone EX.dmp b/instruments/OPN/wind/Saxophone EX.dmp similarity index 100% rename from instruments/FM/wind/(GEN) Saxophone EX.dmp rename to instruments/OPN/wind/Saxophone EX.dmp diff --git a/instruments/FM/wind/(GEN) Saxophone.dmp b/instruments/OPN/wind/Saxophone.dmp similarity index 100% rename from instruments/FM/wind/(GEN) Saxophone.dmp rename to instruments/OPN/wind/Saxophone.dmp diff --git a/instruments/FM/wind/bassoon.fui b/instruments/OPN/wind/bassoon.fui similarity index 100% rename from instruments/FM/wind/bassoon.fui rename to instruments/OPN/wind/bassoon.fui diff --git a/instruments/FM/wind/bassoon_clarinet.fui b/instruments/OPN/wind/bassoon_clarinet.fui similarity index 100% rename from instruments/FM/wind/bassoon_clarinet.fui rename to instruments/OPN/wind/bassoon_clarinet.fui diff --git a/instruments/FM/wind/fm_pipeflute.fui b/instruments/OPN/wind/fm_pipeflute.fui similarity index 100% rename from instruments/FM/wind/fm_pipeflute.fui rename to instruments/OPN/wind/fm_pipeflute.fui diff --git a/instruments/FM/wind/woodwind_00.fui b/instruments/OPN/wind/woodwind_00.fui similarity index 100% rename from instruments/FM/wind/woodwind_00.fui rename to instruments/OPN/wind/woodwind_00.fui diff --git a/instruments/FM/bass/OPZ-Fake_Famicom_Tri.fui b/instruments/OPZ/Fake_Famicom_Tri.fui similarity index 100% rename from instruments/FM/bass/OPZ-Fake_Famicom_Tri.fui rename to instruments/OPZ/Fake_Famicom_Tri.fui diff --git a/instruments/FM/bass/Heavy_synth_bass.fui b/instruments/OPZ/Heavy_synth_bass.fui similarity index 100% rename from instruments/FM/bass/Heavy_synth_bass.fui rename to instruments/OPZ/Heavy_synth_bass.fui diff --git a/instruments/README.md b/instruments/README.md index 6a558cf43..e4fa16f9d 100644 --- a/instruments/README.md +++ b/instruments/README.md @@ -1,12 +1,7 @@ # instruments a directory of ready-to-use instruments. -these are organized in the following categories: - -- **FM**: FM instruments for OPN/OPM. -- **OPL**: FM instruments for OPL. -- **OPLL**: FM instruments for OPLL. -- **other**: instruments for any other system. +these are organized in the respective chip folders. # contributors @@ -48,5 +43,6 @@ you may submit your own instruments by creating a pull request or contacting me! - I (strongly) prefer original instruments. - your instruments have to be free of restrictions (these may be used in any project). - be careful if your instrument contains samples. +- please be careful to put new instruments in the right folders. thanks for your contribution! diff --git a/instruments/other/SMS_0-2-5_arp_lead.fui b/instruments/SN7/0-2-5_arp_lead.fui similarity index 100% rename from instruments/other/SMS_0-2-5_arp_lead.fui rename to instruments/SN7/0-2-5_arp_lead.fui diff --git a/instruments/other/SMS_0-3-5_arp_lead.fui b/instruments/SN7/0-3-5_arp_lead.fui similarity index 100% rename from instruments/other/SMS_0-3-5_arp_lead.fui rename to instruments/SN7/0-3-5_arp_lead.fui diff --git a/instruments/other/(SMS) 2-Arp Chord High.dmp b/instruments/SN7/2-Arp Chord High.dmp similarity index 100% rename from instruments/other/(SMS) 2-Arp Chord High.dmp rename to instruments/SN7/2-Arp Chord High.dmp diff --git a/instruments/other/(SMS) 2-Arp High.dmp b/instruments/SN7/2-Arp High.dmp similarity index 100% rename from instruments/other/(SMS) 2-Arp High.dmp rename to instruments/SN7/2-Arp High.dmp diff --git a/instruments/other/(SMS) 2-Arp Major Low.dmp b/instruments/SN7/2-Arp Major Low.dmp similarity index 100% rename from instruments/other/(SMS) 2-Arp Major Low.dmp rename to instruments/SN7/2-Arp Major Low.dmp diff --git a/instruments/other/(SMS) 2-Arp Minor Low.dmp b/instruments/SN7/2-Arp Minor Low.dmp similarity index 100% rename from instruments/other/(SMS) 2-Arp Minor Low.dmp rename to instruments/SN7/2-Arp Minor Low.dmp diff --git a/instruments/other/(SMS) 3-Arp High.dmp b/instruments/SN7/3-Arp High.dmp similarity index 100% rename from instruments/other/(SMS) 3-Arp High.dmp rename to instruments/SN7/3-Arp High.dmp diff --git a/instruments/other/(SMS) 3-Arp Major.dmp b/instruments/SN7/3-Arp Major.dmp similarity index 100% rename from instruments/other/(SMS) 3-Arp Major.dmp rename to instruments/SN7/3-Arp Major.dmp diff --git a/instruments/other/(SMS) 3-Arp Minor.dmp b/instruments/SN7/3-Arp Minor.dmp similarity index 100% rename from instruments/other/(SMS) 3-Arp Minor.dmp rename to instruments/SN7/3-Arp Minor.dmp diff --git a/instruments/other/(SMS) 5-Arp Major.dmp b/instruments/SN7/5-Arp Major.dmp similarity index 100% rename from instruments/other/(SMS) 5-Arp Major.dmp rename to instruments/SN7/5-Arp Major.dmp diff --git a/instruments/other/(SMS) 5-Arp Minor.dmp b/instruments/SN7/5-Arp Minor.dmp similarity index 100% rename from instruments/other/(SMS) 5-Arp Minor.dmp rename to instruments/SN7/5-Arp Minor.dmp diff --git a/instruments/other/(SMS) Arp Snare.dmp b/instruments/SN7/Arp Snare.dmp similarity index 100% rename from instruments/other/(SMS) Arp Snare.dmp rename to instruments/SN7/Arp Snare.dmp diff --git a/instruments/other/(SMS) Attack.dmp b/instruments/SN7/Attack.dmp similarity index 100% rename from instruments/other/(SMS) Attack.dmp rename to instruments/SN7/Attack.dmp diff --git a/instruments/other/(SMS) Buzz Noise.dmp b/instruments/SN7/Buzz Noise.dmp similarity index 100% rename from instruments/other/(SMS) Buzz Noise.dmp rename to instruments/SN7/Buzz Noise.dmp diff --git a/instruments/other/(SMS) Crash.dmp b/instruments/SN7/Crash.dmp similarity index 100% rename from instruments/other/(SMS) Crash.dmp rename to instruments/SN7/Crash.dmp diff --git a/instruments/other/(SMS) Cyclic Noise.dmp b/instruments/SN7/Cyclic Noise.dmp similarity index 100% rename from instruments/other/(SMS) Cyclic Noise.dmp rename to instruments/SN7/Cyclic Noise.dmp diff --git a/instruments/other/(SMS) Decay Noise.dmp b/instruments/SN7/Decay Noise.dmp similarity index 100% rename from instruments/other/(SMS) Decay Noise.dmp rename to instruments/SN7/Decay Noise.dmp diff --git a/instruments/other/(SMS) Decay.dmp b/instruments/SN7/Decay.dmp similarity index 100% rename from instruments/other/(SMS) Decay.dmp rename to instruments/SN7/Decay.dmp diff --git a/instruments/other/(SMS) Down Slider.dmp b/instruments/SN7/Down Slider.dmp similarity index 100% rename from instruments/other/(SMS) Down Slider.dmp rename to instruments/SN7/Down Slider.dmp diff --git a/instruments/other/Echo.fui b/instruments/SN7/Echo.fui similarity index 100% rename from instruments/other/Echo.fui rename to instruments/SN7/Echo.fui diff --git a/instruments/other/Flute.fui b/instruments/SN7/Flute.fui similarity index 100% rename from instruments/other/Flute.fui rename to instruments/SN7/Flute.fui diff --git a/instruments/other/Follin Guitar 2.fui b/instruments/SN7/Follin Guitar 2.fui similarity index 100% rename from instruments/other/Follin Guitar 2.fui rename to instruments/SN7/Follin Guitar 2.fui diff --git a/instruments/other/Follin Guitar.fui b/instruments/SN7/Follin Guitar.fui similarity index 100% rename from instruments/other/Follin Guitar.fui rename to instruments/SN7/Follin Guitar.fui diff --git a/instruments/other/Guitar.fui b/instruments/SN7/Guitar.fui similarity index 100% rename from instruments/other/Guitar.fui rename to instruments/SN7/Guitar.fui diff --git a/instruments/other/(SMS) Hi-Hat & Note.dmp b/instruments/SN7/Hi-Hat & Note.dmp similarity index 100% rename from instruments/other/(SMS) Hi-Hat & Note.dmp rename to instruments/SN7/Hi-Hat & Note.dmp diff --git a/instruments/other/(SMS) Hi-Hat Closed.dmp b/instruments/SN7/Hi-Hat Closed.dmp similarity index 100% rename from instruments/other/(SMS) Hi-Hat Closed.dmp rename to instruments/SN7/Hi-Hat Closed.dmp diff --git a/instruments/other/(SMS) Hi-Hat Open.dmp b/instruments/SN7/Hi-Hat Open.dmp similarity index 100% rename from instruments/other/(SMS) Hi-Hat Open.dmp rename to instruments/SN7/Hi-Hat Open.dmp diff --git a/instruments/other/(SMS) Kick Noise.dmp b/instruments/SN7/Kick Noise.dmp similarity index 100% rename from instruments/other/(SMS) Kick Noise.dmp rename to instruments/SN7/Kick Noise.dmp diff --git a/instruments/other/(SMS) Multi Slider.dmp b/instruments/SN7/Multi Slider.dmp similarity index 100% rename from instruments/other/(SMS) Multi Slider.dmp rename to instruments/SN7/Multi Slider.dmp diff --git a/instruments/other/(SMS) Obvious Crash.dmp b/instruments/SN7/Obvious Crash.dmp similarity index 100% rename from instruments/other/(SMS) Obvious Crash.dmp rename to instruments/SN7/Obvious Crash.dmp diff --git a/instruments/other/Octave Arp.fui b/instruments/SN7/Octave Arp.fui similarity index 100% rename from instruments/other/Octave Arp.fui rename to instruments/SN7/Octave Arp.fui diff --git a/instruments/other/(SMS) Record Scratch Down.dmp b/instruments/SN7/Record Scratch Down.dmp similarity index 100% rename from instruments/other/(SMS) Record Scratch Down.dmp rename to instruments/SN7/Record Scratch Down.dmp diff --git a/instruments/other/(SMS) Record Scratch Up.dmp b/instruments/SN7/Record Scratch Up.dmp similarity index 100% rename from instruments/other/(SMS) Record Scratch Up.dmp rename to instruments/SN7/Record Scratch Up.dmp diff --git a/instruments/other/(SMS) Retrig.dmp b/instruments/SN7/Retrig.dmp similarity index 100% rename from instruments/other/(SMS) Retrig.dmp rename to instruments/SN7/Retrig.dmp diff --git a/instruments/other/(SMS) Ride.dmp b/instruments/SN7/Ride.dmp similarity index 100% rename from instruments/other/(SMS) Ride.dmp rename to instruments/SN7/Ride.dmp diff --git a/instruments/other/SMSPerc/SMSPerc About.txt b/instruments/SN7/SMSPerc/SMSPerc About.txt similarity index 96% rename from instruments/other/SMSPerc/SMSPerc About.txt rename to instruments/SN7/SMSPerc/SMSPerc About.txt index 5964270c3..241106e02 100644 --- a/instruments/other/SMSPerc/SMSPerc About.txt +++ b/instruments/SN7/SMSPerc/SMSPerc About.txt @@ -1,26 +1,26 @@ -The SN7 noise channel can "steal" the pitch of the third square -channel for increased range, and this percussion set takes -advantage of that. The kick and snare drums use CH3 pitch for -two frames- CH3 is muted for the first frame and outputs a -square wave on the second. The hi-hats use CH3 pitch for only -one frame, during which CH3 is silent. - -In order for this to work, an instrument must be placed on both -CH3 and CH4, whenever a kick or snare is triggered. (Because -the hi-hats only need one frame of CH3 silence to sound -correct, and CH4 pitch macros take precedence over CH3 macros -in Furnace, you don't need to place an instrument in CH3 when -a hi-hat is playing by itself.) This is the "KickSnare CH3" -instrument in the folder. The "CH4" instruments are for CH4, -obviously. - -The "ExampleInst" instruments show a setup where a regular -melodic instrument is combined with the CH3 percussion -instruments, so that CH3 can play something useful with minimal -interruption from CH4. Of course, now you have to keep track of -three instruments for one timbre, and you can't have a note -sustain through a percussion sound, but I think it's worth it. - - -Note also that the CH4 instruments need to be played on either +The SN7 noise channel can "steal" the pitch of the third square +channel for increased range, and this percussion set takes +advantage of that. The kick and snare drums use CH3 pitch for +two frames- CH3 is muted for the first frame and outputs a +square wave on the second. The hi-hats use CH3 pitch for only +one frame, during which CH3 is silent. + +In order for this to work, an instrument must be placed on both +CH3 and CH4, whenever a kick or snare is triggered. (Because +the hi-hats only need one frame of CH3 silence to sound +correct, and CH4 pitch macros take precedence over CH3 macros +in Furnace, you don't need to place an instrument in CH3 when +a hi-hat is playing by itself.) This is the "KickSnare CH3" +instrument in the folder. The "CH4" instruments are for CH4, +obviously. + +The "ExampleInst" instruments show a setup where a regular +melodic instrument is combined with the CH3 percussion +instruments, so that CH3 can play something useful with minimal +interruption from CH4. Of course, now you have to keep track of +three instruments for one timbre, and you can't have a note +sustain through a percussion sound, but I think it's worth it. + + +Note also that the CH4 instruments need to be played on either C or D to sound correct. \ No newline at end of file diff --git a/instruments/other/SMSPerc/SMSPerc ExampleInst [Hat] CH3.fui b/instruments/SN7/SMSPerc/SMSPerc ExampleInst [Hat] CH3.fui similarity index 100% rename from instruments/other/SMSPerc/SMSPerc ExampleInst [Hat] CH3.fui rename to instruments/SN7/SMSPerc/SMSPerc ExampleInst [Hat] CH3.fui diff --git a/instruments/other/SMSPerc/SMSPerc ExampleInst [KickSnare] CH3.fui b/instruments/SN7/SMSPerc/SMSPerc ExampleInst [KickSnare] CH3.fui similarity index 100% rename from instruments/other/SMSPerc/SMSPerc ExampleInst [KickSnare] CH3.fui rename to instruments/SN7/SMSPerc/SMSPerc ExampleInst [KickSnare] CH3.fui diff --git a/instruments/other/SMSPerc/SMSPerc ExampleInst [Nothing] CH3.fui b/instruments/SN7/SMSPerc/SMSPerc ExampleInst [Nothing] CH3.fui similarity index 100% rename from instruments/other/SMSPerc/SMSPerc ExampleInst [Nothing] CH3.fui rename to instruments/SN7/SMSPerc/SMSPerc ExampleInst [Nothing] CH3.fui diff --git a/instruments/other/SMSPerc/SMSPerc Hat_Closed CH4 [D].fui b/instruments/SN7/SMSPerc/SMSPerc Hat_Closed CH4 [D].fui similarity index 100% rename from instruments/other/SMSPerc/SMSPerc Hat_Closed CH4 [D].fui rename to instruments/SN7/SMSPerc/SMSPerc Hat_Closed CH4 [D].fui diff --git a/instruments/other/SMSPerc/SMSPerc Hat_Open CH4 [D].fui b/instruments/SN7/SMSPerc/SMSPerc Hat_Open CH4 [D].fui similarity index 100% rename from instruments/other/SMSPerc/SMSPerc Hat_Open CH4 [D].fui rename to instruments/SN7/SMSPerc/SMSPerc Hat_Open CH4 [D].fui diff --git a/instruments/other/SMSPerc/SMSPerc Kick CH4 [C].fui b/instruments/SN7/SMSPerc/SMSPerc Kick CH4 [C].fui similarity index 100% rename from instruments/other/SMSPerc/SMSPerc Kick CH4 [C].fui rename to instruments/SN7/SMSPerc/SMSPerc Kick CH4 [C].fui diff --git a/instruments/other/SMSPerc/SMSPerc KickSnare CH3.fui b/instruments/SN7/SMSPerc/SMSPerc KickSnare CH3.fui similarity index 100% rename from instruments/other/SMSPerc/SMSPerc KickSnare CH3.fui rename to instruments/SN7/SMSPerc/SMSPerc KickSnare CH3.fui diff --git a/instruments/other/SMSPerc/SMSPerc Snare CH4 [D].fui b/instruments/SN7/SMSPerc/SMSPerc Snare CH4 [D].fui similarity index 100% rename from instruments/other/SMSPerc/SMSPerc Snare CH4 [D].fui rename to instruments/SN7/SMSPerc/SMSPerc Snare CH4 [D].fui diff --git a/instruments/other/(SMS) Snare.dmp b/instruments/SN7/Snare.dmp similarity index 100% rename from instruments/other/(SMS) Snare.dmp rename to instruments/SN7/Snare.dmp diff --git a/instruments/other/(SMS) Splash.dmp b/instruments/SN7/Splash.dmp similarity index 100% rename from instruments/other/(SMS) Splash.dmp rename to instruments/SN7/Splash.dmp diff --git a/instruments/other/(SMS) Thump & Note.dmp b/instruments/SN7/Thump & Note.dmp similarity index 100% rename from instruments/other/(SMS) Thump & Note.dmp rename to instruments/SN7/Thump & Note.dmp diff --git a/instruments/other/(SMS) Tim Follin 6-Arp Fast Major.dmp b/instruments/SN7/Tim Follin 6-Arp Fast Major.dmp similarity index 100% rename from instruments/other/(SMS) Tim Follin 6-Arp Fast Major.dmp rename to instruments/SN7/Tim Follin 6-Arp Fast Major.dmp diff --git a/instruments/other/(SMS) Tim Follin 6-Arp Fast Minor.dmp b/instruments/SN7/Tim Follin 6-Arp Fast Minor.dmp similarity index 100% rename from instruments/other/(SMS) Tim Follin 6-Arp Fast Minor.dmp rename to instruments/SN7/Tim Follin 6-Arp Fast Minor.dmp diff --git a/instruments/other/(SMS) Tim Follin 6-Arp Slow Major.dmp b/instruments/SN7/Tim Follin 6-Arp Slow Major.dmp similarity index 100% rename from instruments/other/(SMS) Tim Follin 6-Arp Slow Major.dmp rename to instruments/SN7/Tim Follin 6-Arp Slow Major.dmp diff --git a/instruments/other/(SMS) Tim Follin 6-Arp Slow Minor.dmp b/instruments/SN7/Tim Follin 6-Arp Slow Minor.dmp similarity index 100% rename from instruments/other/(SMS) Tim Follin 6-Arp Slow Minor.dmp rename to instruments/SN7/Tim Follin 6-Arp Slow Minor.dmp diff --git a/instruments/other/(SMS) Tim Follin Lead.dmp b/instruments/SN7/Tim Follin Lead.dmp similarity index 100% rename from instruments/other/(SMS) Tim Follin Lead.dmp rename to instruments/SN7/Tim Follin Lead.dmp diff --git a/instruments/other/(SMS) Tom A.dmp b/instruments/SN7/Tom A.dmp similarity index 100% rename from instruments/other/(SMS) Tom A.dmp rename to instruments/SN7/Tom A.dmp diff --git a/instruments/other/(SMS) Tom B.dmp b/instruments/SN7/Tom B.dmp similarity index 100% rename from instruments/other/(SMS) Tom B.dmp rename to instruments/SN7/Tom B.dmp diff --git a/instruments/other/(SMS) Up Slider.dmp b/instruments/SN7/Up Slider.dmp similarity index 100% rename from instruments/other/(SMS) Up Slider.dmp rename to instruments/SN7/Up Slider.dmp diff --git a/instruments/other/(SMS) Variable.dmp b/instruments/SN7/Variable.dmp similarity index 100% rename from instruments/other/(SMS) Variable.dmp rename to instruments/SN7/Variable.dmp diff --git a/instruments/other/(SMS) Whistle.dmp b/instruments/SN7/Whistle.dmp similarity index 100% rename from instruments/other/(SMS) Whistle.dmp rename to instruments/SN7/Whistle.dmp diff --git a/instruments/other/compatibility.fui b/instruments/SN7/compatibility.fui similarity index 100% rename from instruments/other/compatibility.fui rename to instruments/SN7/compatibility.fui diff --git a/instruments/other/TIA Bass Drum.fui b/instruments/TIA/Bass Drum.fui similarity index 100% rename from instruments/other/TIA Bass Drum.fui rename to instruments/TIA/Bass Drum.fui diff --git a/instruments/other/TIA Clap.fui b/instruments/TIA/Clap.fui similarity index 100% rename from instruments/other/TIA Clap.fui rename to instruments/TIA/Clap.fui diff --git a/instruments/other/TIA Hi-Hat Long.fui b/instruments/TIA/Hi-Hat Long.fui similarity index 100% rename from instruments/other/TIA Hi-Hat Long.fui rename to instruments/TIA/Hi-Hat Long.fui diff --git a/instruments/other/TIA Hi-Hat.fui b/instruments/TIA/Hi-Hat.fui similarity index 100% rename from instruments/other/TIA Hi-Hat.fui rename to instruments/TIA/Hi-Hat.fui diff --git a/instruments/other/TIA Snare Drum.fui b/instruments/TIA/Snare Drum.fui similarity index 100% rename from instruments/other/TIA Snare Drum.fui rename to instruments/TIA/Snare Drum.fui diff --git a/instruments/other/Supersaw.fui b/instruments/TODO/(WSG) Supersaw.fui similarity index 100% rename from instruments/other/Supersaw.fui rename to instruments/TODO/(WSG) Supersaw.fui diff --git a/instruments/other/FDS-oneofthosejapaneseguitarsidkhowtheyarecalledyeah.fui b/instruments/TODO/FDS-oneofthosejapaneseguitarsidkhowtheyarecalledyeah.fui similarity index 100% rename from instruments/other/FDS-oneofthosejapaneseguitarsidkhowtheyarecalledyeah.fui rename to instruments/TODO/FDS-oneofthosejapaneseguitarsidkhowtheyarecalledyeah.fui diff --git a/instruments/other/FDS-overfuckingholyshitdriven-guitar.fui b/instruments/TODO/FDS-overfuckingholyshitdriven-guitar.fui similarity index 100% rename from instruments/other/FDS-overfuckingholyshitdriven-guitar.fui rename to instruments/TODO/FDS-overfuckingholyshitdriven-guitar.fui diff --git a/instruments/other/FDS-slapassbass.fui b/instruments/TODO/FDS-slapassbass.fui similarity index 100% rename from instruments/other/FDS-slapassbass.fui rename to instruments/TODO/FDS-slapassbass.fui diff --git a/instruments/other/VERA_0-2-5_arp_lead.fui b/instruments/VERA/0-2-5_arp_lead.fui similarity index 100% rename from instruments/other/VERA_0-2-5_arp_lead.fui rename to instruments/VERA/0-2-5_arp_lead.fui diff --git a/instruments/other/VERA_0-3-5_arp_lead.fui b/instruments/VERA/0-3-5_arp_lead.fui similarity index 100% rename from instruments/other/VERA_0-3-5_arp_lead.fui rename to instruments/VERA/0-3-5_arp_lead.fui diff --git a/instruments/other/VERA_Noise_Kick.fui b/instruments/VERA/Noise_Kick.fui similarity index 100% rename from instruments/other/VERA_Noise_Kick.fui rename to instruments/VERA/Noise_Kick.fui diff --git a/instruments/other/VERA_Noise_Snare.fui b/instruments/VERA/Noise_Snare.fui similarity index 100% rename from instruments/other/VERA_Noise_Snare.fui rename to instruments/VERA/Noise_Snare.fui diff --git a/instruments/other/VIC20_kick.fui b/instruments/VIC/kick.fui similarity index 100% rename from instruments/other/VIC20_kick.fui rename to instruments/VIC/kick.fui diff --git a/instruments/other/2A03 Noise Hi-Hat Closed.fui b/instruments/other/2A03 Noise Hi-Hat Closed.fui deleted file mode 100644 index a24dff830d17e67e06962ae403631f671aca32af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1937 zcmeHHU24KW5dOv_Mys&k1+vdViboI%MPEeF3rNjFK(rWr_G;eD&L&y1E=wXUC|C!+ z%>UmKCjLC`x2vy2rrYeWe~-TbNQS2AY_Uv3K-p)zG)v?pjVG&v{MhWWWDWR0O9e-r zz!O6t(3uvGe4^f{#{WjX7+6V$8g;2F@=k`a5(Qdg5bK>1%nXVQIUmt84VHXio!5fm zE~s$9XfxDAs;#0PFz%NqEY;VpLprGnxmmJnHR(m+-!*KiZTtU2FMH=_*PDLKzwX~u zU;AHuuJ4h47rxlRJUA0BOptY_tw_1oLskQtQtcrUd{`A~$;%flLkK4kh9C#Iia5fY I13fD42lAWZrT_o{ diff --git a/instruments/other/2A03 Noise Hi-Hat Open.fui b/instruments/other/2A03 Noise Hi-Hat Open.fui deleted file mode 100644 index 26889b0ad7e2b9d8bb07187c9a9ccac4b9cedf44..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2019 zcmeHI%}T>S5dNk~Ow+0hJ$lKWg@}*PlhjKU+7~D#hg@Q5>)8kM;+xf(Bumz1NkqYd z?ZDUh+4(0-vxnDhxmxGCD0lnqUA6(B8HOI`i{*O^h<*N2>~cLTve{~{pEh|3gup;t z(_s{-TOcxV4o^d(@qNeph(a}Sf-E&nC{a}<%h-wvgDHshVFP9srIw5vRs!4L$OqPW zEC}~O+*N~X=7OsRm(0hE5hGzpJG?wxFl03X$u0F=$aDrWiV)|Ta?T31rTuk#BNNoR zd|PsJ_33rupB3!O?Y^HvEqCVsuJ?VIzn#A?zj;5``Fi8bUid#CdX7E_2PWvQb6JP{ l)gs#lZK?ARDL&SMP710)8yCWxier$6d`UcR-iD6l_X*Jl;^Y7T diff --git a/instruments/other/2A03 Noise Kick.fui b/instruments/other/2A03 Noise Kick.fui deleted file mode 100644 index 7cf815e1a9eb2931b503248ae3ed8b909770a790..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1928 zcmeHHOA5j;5Pj1RwTcA1K)V(y9>J9$f(Uv5MY<@0O4YSj^JY4!24e`VC@81{ubI!A znM^2?^!NE{zDVP2wcX{NWCI{(C>e|<(^&vW|7e|U(|DLImVgI1k`vW@SF{0NB^YPq z5jDCc@j7{;Wh7~46jCUPPMY(k3OGFw+qEnB&?M6I;)<^BF!U4KJQn0>gQN>a$dEkQ zRtnp_2BXO+9NNdMLn=w*JgS9idzhNr4SAx2tXFG6|vB)7y1cE$s*`1l4S;EY&pSyN>-&Cu1{nTB~9syLu%FTRn_nHH`KYv)Qn`+T6y9P*skvf&* zEHM{AW+S|{Ohu+wk@Jb9=FAIn%(9Te^fx)1d(~i6Luik8aB-w`bez*j+zn6P(2k+* zhMbZUa!jUVLJFcK@Tq!^xayNAe5xQ?i=y2r+J>US_?kIu=C1n<=i}EXHpub$tm@|) zvbTA^cHvNN|NJl9<@fyC?ViNoN)m7j7IY}TcN9b70ssI2 diff --git a/instruments/other/2A03 Triangle Kick+Bass.fui b/instruments/other/2A03 Triangle Kick+Bass.fui deleted file mode 100644 index 9beaea86258dc329a57a0fbfeba950520da00370..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1926 zcmdOOD=o@POioqE%quP_($g(qU|>)HVi@rB3l526XJ7z{hZJQd=B4MPDtKomXDetc zI3*SrGcd3)Fff5s%X6?Y^J_6Mu)?&W(ef;ejNArzYxh5ia;z2#2_(rfUcJj zg$uBlW({CHz{v0) z2pANY5#l&l^a@Dq*5fUR`1u(aKo~Dz2745$gpr}1pPik75evX(2o_~n9W+qt0KZt{ AWB>pF diff --git a/instruments/other/2A03 Triangle Kick.fui b/instruments/other/2A03 Triangle Kick.fui deleted file mode 100644 index f226301058a8ca894539476d70fc0ae1f89aef2b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1951 zcmdOOD=o@POioqE%quP_($g(qU|>)HVi@rB3l1q~XJ7z{hZJQd=B4MPDtKomXEQLc zFfcHIl*x0jGV^OOFtEb(pwaRyjEvj{c;vYlS@?y}G$C>2IT<bF!@n?P|GM-xB$y<)&SN6 zj12#QfI)#7A&!GZuYkmEJ>G(dA6VFeFkZk6_9#>dBSSquJ39j-7J$tVEXuGtXrR;q E0Al9ing9R* diff --git a/instruments/other/2A03 Triangle Snare+Bass.fui b/instruments/other/2A03 Triangle Snare+Bass.fui deleted file mode 100644 index e91831c8a49de1ffd4332efc1a9feee9edc53a99..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1931 zcmdOOD=o@POioqE%quP_($g(qU|>)HVi@rB3l2$UXJ7z{hZJQd=B4MPDg@^x7Nsg^ zD>x+<7c(%hFfcHIl*@ClGV^OOFtEb(qS5j!jEvj{c;vYlS@?y}G$C>2IT<Et@=o1G$Al3n5psyX&ffyu?4$#eE z1i6t+fNmBcKExXGEF@$$y8KA63*FDdolhv4QtE#~=ELMi?LjS%VBrERt62kB4=^(P z2Lc8KW`sBn7QF%zyY+YrB7S}b1`x&zn86-}Dq&=(=VxbUV8jBj8G=O_RtF7~Isl16 B)HVi@rB3l1q@XJ7z{hZJQd=B4MPDg@^x7Ns&U zurM$%fz-)!url*&F)*;gG@;S*ER2lY26*JT7+Ls*&@>@&W5Xad{8%tZ9Oy#_Js{QrVqj=EXaF%t92uaS z$p~^cnE>4^LVSodCZdhdZB8GNsi2gv^J@kJ^J;Ho?LLSa7ojupVG! z_zwgO3d{&`94vYTBzEiZ7DW8OLKcMa0%ovBp-LDT>iOB(85pquY=&S_hSfm>r49hQ C(Bjzu diff --git a/instruments/other/NES_0-2-5_arp_lead.fui b/instruments/other/NES_0-2-5_arp_lead.fui deleted file mode 100644 index 493a167d1fe94bdba6b14b199d86f70099699be2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1807 zcmeHIO>4t243(Rt%||yw&n@wJ;86y>?=;wD6t+JQ+8hcajI{fI`)8Y8WtJ-@)l{!-uRm8#k|^;%b3qL^reSeYh~ zydg^9cu>Yd6w5$77qOgq9yD8JCNkM&@}7}2x+lS*)R31Wlt(r#*ol}p?!(+{e)a%i z+yojRx1b|R2gl5bp}kJVzGcp~Wx+N$HN4{0@|tZ+$u@wz$l>dRdtD*=DuhxPuGWzM zt@gWoL)vcq9CEoe|93z9H4^=`{vmxEzvMaXfb9$a5R!HBA-Weq3S%#fQ<4t243(Rt%||yw&n@wJ;87U8?=;wD6t+JQ+8hcajI{fI`)8Y8WtJ-@)l{!-uRm8#k|^;%b3qL^reSeYh~ zydg^9cu>Yd6w5$77qOgq9yD8JCNkM&@}7}2x+lS*)R31Wlt(r#*ol}p?!(+{e)a%i z+yojRx1b|R2gl5bp}kJVzGcp~Wx+N$HN4{0@|tZ+$u@v|$l>dRdtD*=DuhxPuGWzM zt@gWoL)vcq9CEoe|93z9H4^=`{vmxEzvMaXfb9$a5R!HBA-Weq3S%gYQ< Date: Sat, 7 Oct 2023 03:13:25 -0500 Subject: [PATCH 18/72] do not enable SDL_OPENGLES if on recent Mesa apparently my build failed --- CMakeLists.txt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6fd435f28..2aeae78c7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -325,6 +325,11 @@ if (USE_SDL2) set(SDL_RENDER_D3D OFF CACHE BOOL "Enable the Direct3D render driver" FORCE) endif() + CHECK_INCLUDE_FILE(GLES/gl.h GLES_GL_FOUND) + if (NOT GLES_GL_FOUND AND NOT USE_GLES) + set(SDL_OPENGLES OFF CACHE BOOL "Enable OpenGL ES" FORCE) + endif() + add_subdirectory(extern/SDL EXCLUDE_FROM_ALL) list(APPEND DEPENDENCIES_DEFINES HAVE_SDL2) list(APPEND DEPENDENCIES_INCLUDE_DIRS extern/SDL/include) From 4b008f4b41c884461fe514f2c3020b42a7a3f985 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 7 Oct 2023 20:35:25 -0500 Subject: [PATCH 19/72] GUI: channel pair hints, part 1 very ugly --- src/engine/engine.cpp | 7 +++ src/engine/engine.h | 5 +++ src/gui/pattern.cpp | 101 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 113 insertions(+) diff --git a/src/engine/engine.cpp b/src/engine/engine.cpp index 435cb54dd..353ba71ed 100644 --- a/src/engine/engine.cpp +++ b/src/engine/engine.cpp @@ -1418,6 +1418,11 @@ void* DivEngine::getDispatchChanState(int ch) { return disCont[dispatchOfChan[ch]].dispatch->getChanState(dispatchChanOfChan[ch]); } +DivChannelPair DivEngine::getChanPaired(int ch) { + if (ch<0 || ch>=chans) return DivChannelPair(); + return disCont[dispatchOfChan[ch]].dispatch->getPaired(dispatchChanOfChan[ch]); +} + unsigned char* DivEngine::getRegisterPool(int sys, int& size, int& depth) { if (sys<0 || sys>=song.systemLen) return NULL; if (disCont[sys].dispatch==NULL) return NULL; @@ -1912,11 +1917,13 @@ void DivEngine::recalcChans() { memset(isInsTypePossible,0,DIV_INS_MAX*sizeof(bool)); for (int i=0; igetTotalChannelCount(); int displayChans=0; + float chanHeadBottom=0.0f; const DivPattern* patCache[DIV_MAX_CHANS]; for (int i=0; icurSubSong->chanShow[i]) displayChans++; @@ -998,6 +999,7 @@ void FurnaceGUI::drawPattern() { } } } + chanHeadBottom=ImGui::GetCursorScreenPos().y; } ImGui::TableNextColumn(); lastPatternWidth=ImGui::GetCursorPosX()-lpwStart+ImGui::GetStyle().ScrollbarSize; @@ -1135,6 +1137,105 @@ void FurnaceGUI::drawPattern() { ImGui::EndTable(); } + if (patChannelPairs && e->isRunning()) { // pair hints + ImDrawList* dl=ImGui::GetWindowDrawList(); + float pos=0.0f; + float posCenter=0.0f; + float posMin=FLT_MAX; + float posMax=-FLT_MAX; + float posY=chanHeadBottom; + ImVec2 textSize; + + for (int i=0; icurSubSong->chanShow[i]) { + continue; + } + + DivChannelPair pairs=e->getChanPaired(i); + for (int j=0; j<8; j++) { + if (pairs.pairs[j]==-1) continue; + int pairCh=e->dispatchFirstChan[i]+pairs.pairs[j]; + if (!e->curSubSong->chanShow[pairCh]) { + continue; + } + isPaired=true; + break; + } + + if (!isPaired) continue; + + pos=(patChanX[i+1]+patChanX[i])*0.5; + posCenter=pos; + posMin=pos; + posMax=pos; + numPairs++; + + if (pairs.label==NULL) { + textSize=ImGui::CalcTextSize("???"); + } else { + textSize=ImGui::CalcTextSize(pairs.label); + } + dl->AddLine( + ImVec2(pos,posY), + ImVec2(pos,posY+textSize.y), + 0xffffffff, + dpiScale + ); + + for (int j=0; j<8; j++) { + if (pairs.pairs[j]==-1) continue; + int pairCh=e->dispatchFirstChan[i]+pairs.pairs[j]; + if (!e->curSubSong->chanShow[pairCh]) { + continue; + } + + pos=(patChanX[pairCh+1]+patChanX[pairCh])*0.5; + posCenter+=pos; + numPairs++; + if (posposMax) posMax=pos; + dl->AddLine( + ImVec2(pos,posY), + ImVec2(pos,posY+textSize.y), + 0xffffffff, + dpiScale + ); + } + + posCenter/=numPairs; + + if (pairs.label==NULL) { + dl->AddLine( + ImVec2(posMin,posY+textSize.y), + ImVec2(posMax,posY+textSize.y), + 0xffffffff, + dpiScale + ); + } else { + dl->AddLine( + ImVec2(posMin,posY+textSize.y), + ImVec2(posCenter-textSize.x*0.5,posY+textSize.y), + 0xffffffff, + dpiScale + ); + dl->AddLine( + ImVec2(posCenter+textSize.x*0.5,posY+textSize.y), + ImVec2(posMax,posY+textSize.y), + 0xffffffff, + dpiScale + ); + + dl->AddText( + ImVec2(posCenter-textSize.x*0.5,posY+textSize.y*0.5), + 0xffffffff, + pairs.label + ); + } + } + } + if (fancyPattern) { // visualizer e->getCommandStream(cmdStream); ImDrawList* dl=ImGui::GetWindowDrawList(); From 7fc734744d569165433c11b38d8c4ff4c17a313b Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 8 Oct 2023 04:07:26 -0500 Subject: [PATCH 20/72] GUI: channel pair hints, part 2 POKEY --- src/engine/platform/pokey.cpp | 18 ++++++++++++++++++ src/engine/platform/pokey.h | 1 + src/gui/pattern.cpp | 2 +- 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/engine/platform/pokey.cpp b/src/engine/platform/pokey.cpp index 08b6da9f0..da2ec7030 100644 --- a/src/engine/platform/pokey.cpp +++ b/src/engine/platform/pokey.cpp @@ -406,6 +406,24 @@ DivMacroInt* DivPlatformPOKEY::getChanMacroInt(int ch) { return &chan[ch].std; } +DivChannelPair DivPlatformPOKEY::getPaired(int ch) { + switch (ch) { + case 0: + if (audctl&4) return DivChannelPair("filter",2); + break; + case 1: + if (audctl&16) return DivChannelPair("16-bit",0); + break; + case 2: + if (audctl&8) return DivChannelPair("16-bit",3); + break; + case 3: + if (audctl&2) return DivChannelPair("filter",1); + break; + } + return DivChannelPair(); +} + DivDispatchOscBuffer* DivPlatformPOKEY::getOscBuffer(int ch) { return oscBuf[ch]; } diff --git a/src/engine/platform/pokey.h b/src/engine/platform/pokey.h index 7e64c3c78..35bc595f3 100644 --- a/src/engine/platform/pokey.h +++ b/src/engine/platform/pokey.h @@ -65,6 +65,7 @@ class DivPlatformPOKEY: public DivDispatch { int dispatch(DivCommand c); void* getChanState(int chan); DivMacroInt* getChanMacroInt(int ch); + DivChannelPair getPaired(int chan); DivDispatchOscBuffer* getOscBuffer(int chan); unsigned char* getRegisterPool(); int getRegisterPoolSize(); diff --git a/src/gui/pattern.cpp b/src/gui/pattern.cpp index 83ba12ae1..99a46a8cb 100644 --- a/src/gui/pattern.cpp +++ b/src/gui/pattern.cpp @@ -999,7 +999,7 @@ void FurnaceGUI::drawPattern() { } } } - chanHeadBottom=ImGui::GetCursorScreenPos().y; + chanHeadBottom=ImGui::GetCursorScreenPos().y-ImGui::GetStyle().ItemSpacing.y; } ImGui::TableNextColumn(); lastPatternWidth=ImGui::GetCursorPosX()-lpwStart+ImGui::GetStyle().ScrollbarSize; From 8422e5dc1b64850587e24fe9bd133a41cbd2df3f Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 8 Oct 2023 15:34:14 -0500 Subject: [PATCH 21/72] GUI: channel pair hints, part 3 to-do: - flooring --- src/gui/gui.h | 2 ++ src/gui/guiConst.cpp | 2 ++ src/gui/pattern.cpp | 54 +++++++++++++++++++++++++++----------------- 3 files changed, 37 insertions(+), 21 deletions(-) diff --git a/src/gui/gui.h b/src/gui/gui.h index 1191dfe01..ccb81d400 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -310,6 +310,8 @@ enum FurnaceGUIColors { GUI_COLOR_PATTERN_STATUS_REL_ON, GUI_COLOR_PATTERN_STATUS_ON, + GUI_COLOR_PATTERN_PAIR, + GUI_COLOR_SAMPLE_BG, GUI_COLOR_SAMPLE_FG, GUI_COLOR_SAMPLE_LOOP, diff --git a/src/gui/guiConst.cpp b/src/gui/guiConst.cpp index 87a7f3c4a..e2874c31c 100644 --- a/src/gui/guiConst.cpp +++ b/src/gui/guiConst.cpp @@ -993,6 +993,8 @@ const FurnaceGUIColorDef guiColors[GUI_COLOR_MAX]={ D(GUI_COLOR_PATTERN_STATUS_REL_ON,"",ImVec4(1.0f,0.8f,0.1f,1.0f)), D(GUI_COLOR_PATTERN_STATUS_ON,"",ImVec4(0.3f,1.0f,0.1f,1.0f)), + D(GUI_COLOR_PATTERN_PAIR,"",ImVec4(0.6f,0.8f,1.0f,1.0f)), + D(GUI_COLOR_SAMPLE_BG,"",ImVec4(0.04f,0.13f,0.2f,1.0f)), D(GUI_COLOR_SAMPLE_FG,"",ImVec4(0.7f,0.7f,0.7f,1.0f)), D(GUI_COLOR_SAMPLE_LOOP,"",ImVec4(0.1f,0.22f,0.35f,1.0f)), diff --git a/src/gui/pattern.cpp b/src/gui/pattern.cpp index 99a46a8cb..17e4c3968 100644 --- a/src/gui/pattern.cpp +++ b/src/gui/pattern.cpp @@ -448,6 +448,7 @@ void FurnaceGUI::drawPattern() { nextScroll=-1.0f; nextAddScroll=0.0f; } + ImDrawList* tdl=NULL; if (ImGui::BeginTable("PatternView",displayChans+2,ImGuiTableFlags_BordersInnerV|ImGuiTableFlags_ScrollX|ImGuiTableFlags_ScrollY|ImGuiTableFlags_NoPadInnerX|ImGuiTableFlags_NoBordersInFrozenArea|((settings.cursorFollowsWheel || wheelCalmDown)?ImGuiTableFlags_NoScrollWithMouse:0))) { ImGui::TableSetupColumn("pos",ImGuiTableColumnFlags_WidthFixed); char chanID[2048]; @@ -1134,11 +1135,13 @@ void FurnaceGUI::drawPattern() { } } } + // HACK: rendering here would cause the pairs to be drawn behind the pattern for some reason... + tdl=ImGui::GetWindowDrawList(); ImGui::EndTable(); } - if (patChannelPairs && e->isRunning()) { // pair hints - ImDrawList* dl=ImGui::GetWindowDrawList(); + ImGui::PushFont(mainFont); + if (patChannelPairs && e->isRunning() && tdl!=NULL) { // pair hints float pos=0.0f; float posCenter=0.0f; float posMin=FLT_MAX; @@ -1177,11 +1180,11 @@ void FurnaceGUI::drawPattern() { } else { textSize=ImGui::CalcTextSize(pairs.label); } - dl->AddLine( + tdl->AddLine( ImVec2(pos,posY), ImVec2(pos,posY+textSize.y), - 0xffffffff, - dpiScale + ImGui::GetColorU32(uiColors[GUI_COLOR_PATTERN_PAIR]), + 2.0f*dpiScale ); for (int j=0; j<8; j++) { @@ -1196,45 +1199,54 @@ void FurnaceGUI::drawPattern() { numPairs++; if (posposMax) posMax=pos; - dl->AddLine( + tdl->AddLine( ImVec2(pos,posY), ImVec2(pos,posY+textSize.y), - 0xffffffff, - dpiScale + ImGui::GetColorU32(uiColors[GUI_COLOR_PATTERN_PAIR]), + 2.0f*dpiScale ); } posCenter/=numPairs; if (pairs.label==NULL) { - dl->AddLine( + tdl->AddLine( ImVec2(posMin,posY+textSize.y), ImVec2(posMax,posY+textSize.y), - 0xffffffff, - dpiScale + ImGui::GetColorU32(uiColors[GUI_COLOR_PATTERN_PAIR]), + 2.0f*dpiScale ); } else { - dl->AddLine( + tdl->AddLine( ImVec2(posMin,posY+textSize.y), - ImVec2(posCenter-textSize.x*0.5,posY+textSize.y), - 0xffffffff, - dpiScale + ImVec2(posCenter-textSize.x*0.5-6.0f*dpiScale,posY+textSize.y), + ImGui::GetColorU32(uiColors[GUI_COLOR_PATTERN_PAIR]), + 2.0f*dpiScale ); - dl->AddLine( - ImVec2(posCenter+textSize.x*0.5,posY+textSize.y), + tdl->AddLine( + ImVec2(posCenter+textSize.x*0.5+6.0f*dpiScale,posY+textSize.y), ImVec2(posMax,posY+textSize.y), - 0xffffffff, - dpiScale + ImGui::GetColorU32(uiColors[GUI_COLOR_PATTERN_PAIR]), + 2.0f*dpiScale ); - dl->AddText( + ImGui::RenderFrame( + ImVec2(posCenter-textSize.x*0.5-6.0f*dpiScale,posY+textSize.y*0.5-3.0f*dpiScale), + ImVec2(posCenter+textSize.x*0.5+6.0f*dpiScale,posY+textSize.y*1.5+3.0f*dpiScale), + ImGui::GetColorU32(ImGuiCol_FrameBg), + true, + ImGui::GetStyle().FrameRounding + ); + + tdl->AddText( ImVec2(posCenter-textSize.x*0.5,posY+textSize.y*0.5), - 0xffffffff, + ImGui::GetColorU32(ImGuiCol_Text), pairs.label ); } } } + ImGui::PopFont(); if (fancyPattern) { // visualizer e->getCommandStream(cmdStream); From 6f9e3e005812cc8e91d1bc8dc1db155150699b47 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 8 Oct 2023 20:19:56 -0500 Subject: [PATCH 22/72] GUI: channel pair hints, part 4 now with flooring --- extern/imgui_patched/imgui.cpp | 20 +++++++ extern/imgui_patched/imgui_internal.h | 1 + src/gui/pattern.cpp | 84 +++++++++++++++++++++------ 3 files changed, 88 insertions(+), 17 deletions(-) diff --git a/extern/imgui_patched/imgui.cpp b/extern/imgui_patched/imgui.cpp index 71aee9354..7fb9469d1 100644 --- a/extern/imgui_patched/imgui.cpp +++ b/extern/imgui_patched/imgui.cpp @@ -3513,6 +3513,26 @@ void ImGui::RenderFrame(ImVec2 p_min, ImVec2 p_max, ImU32 fill_col, bool border, } } +// MODIFIED: Render a rectangle shaped with optional rounding and borders on DrawList +void ImGui::RenderFrameDrawList(ImDrawList* dl, ImVec2 p_min, ImVec2 p_max, ImU32 fill_col, bool border, float rounding) +{ + ImGuiContext& g = *GImGui; + if (g.Style.FrameShading>0.0f) { + ImVec4 fill_colPre=ImGui::ColorConvertU32ToFloat4(fill_col); + fill_colPre.w*=1.0f-g.Style.FrameShading; + ImU32 fill_col1=ImGui::ColorConvertFloat4ToU32(fill_colPre); + dl->AddRectFilledMultiColor(p_min, p_max, fill_col, fill_col, fill_col1, fill_col1, rounding); + } else { + dl->AddRectFilled(p_min, p_max, fill_col, rounding); + } + const float border_size = g.Style.FrameBorderSize; + if (border && border_size > 0.0f) + { + dl->AddRect(p_min + ImVec2(1, 1), p_max + ImVec2(1, 1), GetColorU32(ImGuiCol_BorderShadow), rounding, 0, border_size); + dl->AddRect(p_min, p_max, GetColorU32(ImGuiCol_Border), rounding, 0, border_size); + } +} + void ImGui::RenderFrameBorder(ImVec2 p_min, ImVec2 p_max, float rounding) { ImGuiContext& g = *GImGui; diff --git a/extern/imgui_patched/imgui_internal.h b/extern/imgui_patched/imgui_internal.h index 2c8057bd7..a9272ab33 100644 --- a/extern/imgui_patched/imgui_internal.h +++ b/extern/imgui_patched/imgui_internal.h @@ -3449,6 +3449,7 @@ namespace ImGui IMGUI_API void RenderTextClippedEx(ImDrawList* draw_list, const ImVec2& pos_min, const ImVec2& pos_max, const char* text, const char* text_end, const ImVec2* text_size_if_known, const ImVec2& align = ImVec2(0, 0), const ImRect* clip_rect = NULL); IMGUI_API void RenderTextEllipsis(ImDrawList* draw_list, const ImVec2& pos_min, const ImVec2& pos_max, float clip_max_x, float ellipsis_max_x, const char* text, const char* text_end, const ImVec2* text_size_if_known); IMGUI_API void RenderFrame(ImVec2 p_min, ImVec2 p_max, ImU32 fill_col, bool border = true, float rounding = 0.0f); + IMGUI_API void RenderFrameDrawList(ImDrawList* dl, ImVec2 p_min, ImVec2 p_max, ImU32 fill_col, bool border = true, float rounding = 0.0f); // MODIFIED - draw list version of RenderFrame IMGUI_API void RenderFrameBorder(ImVec2 p_min, ImVec2 p_max, float rounding = 0.0f); IMGUI_API void RenderColorRectWithAlphaCheckerboard(ImDrawList* draw_list, ImVec2 p_min, ImVec2 p_max, ImU32 fill_col, float grid_step, ImVec2 grid_off, float rounding = 0.0f, ImDrawFlags flags = 0); IMGUI_API void RenderNavHighlight(const ImRect& bb, ImGuiID id, ImGuiNavHighlightFlags flags = ImGuiNavHighlightFlags_TypeDefault); // Navigation highlight diff --git a/src/gui/pattern.cpp b/src/gui/pattern.cpp index 17e4c3968..5d0e80895 100644 --- a/src/gui/pattern.cpp +++ b/src/gui/pattern.cpp @@ -28,6 +28,17 @@ #include "../utfutils.h" #include +struct DelayedLabel { + float posCenter, posY; + ImVec2 textSize; + const char* label; + DelayedLabel(float pc, float py, ImVec2 ts, const char* l): + posCenter(pc), + posY(py), + textSize(ts), + label(l) {} +}; + inline float randRange(float min, float max) { return min+((float)rand()/(float)RAND_MAX)*(max-min); } @@ -1136,22 +1147,30 @@ void FurnaceGUI::drawPattern() { } } // HACK: rendering here would cause the pairs to be drawn behind the pattern for some reason... + // ...so we capture the table's window draw list... tdl=ImGui::GetWindowDrawList(); ImGui::EndTable(); } + // ...and then use it here ImGui::PushFont(mainFont); if (patChannelPairs && e->isRunning() && tdl!=NULL) { // pair hints float pos=0.0f; float posCenter=0.0f; float posMin=FLT_MAX; float posMax=-FLT_MAX; - float posY=chanHeadBottom; ImVec2 textSize; + unsigned int floors[4][4]; // bit array + std::vector delayedLabels; + + memset(floors,0,4*4*sizeof(unsigned int)); for (int i=0; icurSubSong->chanShow[i]) { continue; } @@ -1164,11 +1183,34 @@ void FurnaceGUI::drawPattern() { continue; } isPaired=true; - break; + if ((unsigned int)pairChpairMax) pairMax=pairCh; } if (!isPaired) continue; + float posY=chanHeadBottom; + + // find a free floor + while (curFloor<4) { + bool free=true; + for (unsigned int j=pairMin; j<=pairMax; j++) { + const unsigned int j0=j>>5; + const unsigned int j1=1U<<(j&31); + if (floors[curFloor][j0]&j1) { + free=false; + break; + } + } + if (free) break; + curFloor++; + } + if (curFloor<4) { + // occupy floor + floors[curFloor][pairMin>>5]|=1U<<(pairMin&31); + floors[curFloor][pairMax>>5]|=1U<<(pairMax&31); + } + pos=(patChanX[i+1]+patChanX[i])*0.5; posCenter=pos; posMin=pos; @@ -1180,8 +1222,11 @@ void FurnaceGUI::drawPattern() { } else { textSize=ImGui::CalcTextSize(pairs.label); } + + posY+=(textSize.y+ImGui::GetStyle().ItemSpacing.y)*curFloor; + tdl->AddLine( - ImVec2(pos,posY), + ImVec2(pos,chanHeadBottom), ImVec2(pos,posY+textSize.y), ImGui::GetColorU32(uiColors[GUI_COLOR_PATTERN_PAIR]), 2.0f*dpiScale @@ -1200,7 +1245,7 @@ void FurnaceGUI::drawPattern() { if (posposMax) posMax=pos; tdl->AddLine( - ImVec2(pos,posY), + ImVec2(pos,chanHeadBottom), ImVec2(pos,posY+textSize.y), ImGui::GetColorU32(uiColors[GUI_COLOR_PATTERN_PAIR]), 2.0f*dpiScale @@ -1230,21 +1275,26 @@ void FurnaceGUI::drawPattern() { 2.0f*dpiScale ); - ImGui::RenderFrame( - ImVec2(posCenter-textSize.x*0.5-6.0f*dpiScale,posY+textSize.y*0.5-3.0f*dpiScale), - ImVec2(posCenter+textSize.x*0.5+6.0f*dpiScale,posY+textSize.y*1.5+3.0f*dpiScale), - ImGui::GetColorU32(ImGuiCol_FrameBg), - true, - ImGui::GetStyle().FrameRounding - ); - - tdl->AddText( - ImVec2(posCenter-textSize.x*0.5,posY+textSize.y*0.5), - ImGui::GetColorU32(ImGuiCol_Text), - pairs.label - ); + delayedLabels.push_back(DelayedLabel(posCenter,posY,textSize,pairs.label)); } } + + for (DelayedLabel& i: delayedLabels) { + ImGui::RenderFrameDrawList( + tdl, + ImVec2(i.posCenter-i.textSize.x*0.5-6.0f*dpiScale,i.posY+i.textSize.y*0.5-3.0f*dpiScale), + ImVec2(i.posCenter+i.textSize.x*0.5+6.0f*dpiScale,i.posY+i.textSize.y*1.5+3.0f*dpiScale), + ImGui::GetColorU32(ImGuiCol_FrameBg), + true, + ImGui::GetStyle().FrameRounding + ); + + tdl->AddText( + ImVec2(i.posCenter-i.textSize.x*0.5,i.posY+i.textSize.y*0.5), + ImGui::GetColorU32(ImGuiCol_Text), + i.label + ); + } } ImGui::PopFont(); From cb8ed42cd6ff839eb91031ca4c1aa92fd466cae1 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 9 Oct 2023 04:28:08 -0500 Subject: [PATCH 23/72] GUI: channel pair hints, part 5 SNES freq mod --- src/engine/platform/snes.cpp | 7 +++++++ src/engine/platform/snes.h | 1 + 2 files changed, 8 insertions(+) diff --git a/src/engine/platform/snes.cpp b/src/engine/platform/snes.cpp index 1918cb842..f5742b1ca 100644 --- a/src/engine/platform/snes.cpp +++ b/src/engine/platform/snes.cpp @@ -703,6 +703,13 @@ unsigned short DivPlatformSNES::getPan(int ch) { return (chan[ch].panL<<8)|chan[ch].panR; } +DivChannelPair DivPlatformSNES::getPaired(int ch) { + if (chan[ch].pitchMod) { + return DivChannelPair("mod",(ch-1)&7); + } + return DivChannelPair(); +} + DivSamplePos DivPlatformSNES::getSamplePos(int ch) { if (ch>=8) return DivSamplePos(); if (!chan[ch].active) return DivSamplePos(); diff --git a/src/engine/platform/snes.h b/src/engine/platform/snes.h index 0992a46a7..277a06c95 100644 --- a/src/engine/platform/snes.h +++ b/src/engine/platform/snes.h @@ -101,6 +101,7 @@ class DivPlatformSNES: public DivDispatch { void* getChanState(int chan); DivMacroInt* getChanMacroInt(int ch); unsigned short getPan(int chan); + DivChannelPair getPaired(int chan); DivSamplePos getSamplePos(int ch); DivDispatchOscBuffer* getOscBuffer(int chan); unsigned char* getRegisterPool(); From 4450ebb7aabde85bb2ba83ed290d2d05ca064e78 Mon Sep 17 00:00:00 2001 From: Electric Keet Date: Mon, 9 Oct 2023 15:50:38 -0700 Subject: [PATCH 24/72] Add "duplicate" to inst. list context menu. It's right at the top of the menu, purely because that's the order the buttons are in. --- src/gui/dataList.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/gui/dataList.cpp b/src/gui/dataList.cpp index 8925b69fe..2762b6fc3 100644 --- a/src/gui/dataList.cpp +++ b/src/gui/dataList.cpp @@ -133,6 +133,9 @@ void FurnaceGUI::insListItem(int i, int dir, int asset) { curIns=i; updateFMPreview=true; ImGui::PushStyleColor(ImGuiCol_Text,uiColors[GUI_COLOR_TEXT]); + if (ImGui::MenuItem("duplicate")) { + doAction(GUI_ACTION_INS_LIST_DUPLICATE); + } if (ImGui::MenuItem("replace...")) { doAction((curIns>=0 && curIns<(int)e->song.ins.size())?GUI_ACTION_INS_LIST_OPEN_REPLACE:GUI_ACTION_INS_LIST_OPEN); } From f1145a14ad1d8006e75a9ead940a6c518bf12783 Mon Sep 17 00:00:00 2001 From: RevvoBolt <106453096+RevvoBolt@users.noreply.github.com> Date: Thu, 5 Oct 2023 22:10:24 +0200 Subject: [PATCH 25/72] Bridge Zone Cover (Famicom + VRC6) I made a cover of Bridge Zone for the Famicom with the VRC6 sound chip expansion. Hopefully this is alright as a demo! --- demos/nes/Bridge Zone.fur | Bin 0 -> 3246 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 demos/nes/Bridge Zone.fur diff --git a/demos/nes/Bridge Zone.fur b/demos/nes/Bridge Zone.fur new file mode 100644 index 0000000000000000000000000000000000000000..d3843438f70e89189cd4cc6de4db4fe72c1e1de1 GIT binary patch literal 3246 zcmV;f3{mrVoW)rSbW=qdo|}7<+m_OXS7|BQ92XU`78C@RhqMK(w6zq|-e4oIQbL;a zk+x|N5l&Mc79WdpG${DssDxv0DMzKncG8ZrnkDHsMu~QcQ5vq*;88xAtn+|S+g?p%Jrxi3>+bq z(@Z3Z2*xNh=*TqMypHsl(tjcK&Hn$VY1Pif4!g($L%R`R=Z6!WmH#> zHd*XTm%699%W5$C_;jMvag@h#Aq9^682%e3*D{u@LI*^cJ;CbK! zAZZXGbAc_uZs03m@?b(_;1Ccsgpdqi1@IT(2jHdzLT&{X18ae2fjz+Jp@cjM#3T~3 z3|I#QfPKKnfRIE;6>t*B9Y)A2!23W#G9fnLG2k6wz;LV|cxX6vnT{9q1~G~vIwDH-c{j-w3`Dd?WZq z@QvW(6(NTe4$uKSAOL#60Ej>o5Dmlt{eW1YKM)7R1B3*@4}u>AKL~yh{2=&2@Ppt7 z!4HBT1V0FV5d0wcLGURzKHw;jF(b<|N^{ZJjO)kI3a6VfdwQ-Zzo@*j z%?AiM zminDj6i~Pr<(65LP}oHnNM^a69&EZZb!JhGDX-FA0nS9q8K!bXgF&y?3jz)I?vc&$ zf}wqHzilqedg1)A_yQ9B&3FlmHNI+mLr z6PAu=(gLLQB*$4?O4R1Wu4V&KZRO_*)J-XB|5Vl=%VtDfYnoo-u3qfHj7HEI#j7*w z+A%#_vreZr^Lowr#GWeoRbF*nDO4p|9UdJWg*9PSI$muML_rf6&jg0C*-tC-Q2SR= z=1_Iu@ZrM}hYlT@kT7J(;K73i4j2Fz!ABtH=guDcHa6Tt-_ugM?uT)hFRN1lDp4+w zCN#tc^&Jlc3p(OE#SSH}Q&G;;{#d$8mSxxTW^FHLOVU%8mG*htKN|J!=^d~AcPJc~~)a0^$ZgqZf<7Z26`16@;uhh8FD&$ggqWV7UNaA8gbeyiV=Rp_@hG|MbORd%_kge+&4%C2Tvl3KRQ)BUY(lyIdeOY;K24s+63Yq$kmk&e#YwK{Sz z_DpNtq!T}x5^ooG?I~{EkDI7nIZJ%I>pQ+)c*YS&I-fWHNp%65B`5>PNm)&L585-Lcx(ao5A0r`~*ZiHO^8iZZX{@b`zf;MXG_ znto;a+(!=8>R;o1%BT@juWf&0{ws(u#lGdgA5f3(I15{B?Co|C)c_>%7-} z!xhrCqW|@j`fpd)J-y_ItLk6)^lx8Iek53||87j2YeC7bdooI{dFX3@%-UgTyS|Bk zz;NTS<+)A6-!-Lv@_wGa^0O0}0drev)tcBjKMj)-mYp3^KYh-t)iHrhC!f=|KYDUR zyRFKb^y0SP=M@eZ^Fp$;{*lF=&7W`G_u-HkN5*_}d}4{MZT7svBR}4@y6}U;E!RC~ zZurL?p1I4`FWKa1H;-ztK2@FVT0iTbmRI)mjMdp01+%7xF2J-j7rtgp0vSknC*fU$ zFC%1L)xKT5z)6v$;wN4-vj zKBnU!b+EWDsaa4NH!=o3i{K_7dRBAI$yHPV-XeUB3bfZHd$ifE>EcdiTmu^u;?^+k zQec@@-UG8ft){9jW!54j#6HZc1S%1ty0unKVgQrC9li?u$GGOM=|!=QXu53noF4i> zPD@+V6*mj1kKjnSN6Q^7m>k_hs*+&+{WzvGh3P=(=5ftYG;~&9(q1u*8B9YL-l5Bh z9Zf4u{TNg`xMswTFWDIif{ULL`vZmk>C@+w9L&x2T~5A%u@FDLUkD%{jcHFf-v6L} zsZ-*mMo$D^?91?lLWl8MhwT4Pf=UUfOyPb$t@+!q&pXag4}c6jA+kQO7f?a8Z-}*-9rcvi=vz z-EHF+KAr@_C9;#t1nrWE(yryuF*JldQ@=a)Yk3D?2NvsDXAo72a z&G*h$JB0{#F)PC{sK-RaB11es*T5GUc)NiwVL9q^Bk~^Y#Rh&p%N+*Z#qzF}-rAYD zCCnUk+l5qreQWgmut!LiM+jf2-4P+_ju7tA?lJI7X&zxMif)2|_cA3X%gb1$idDLD zFZ((B9Oh+}pQ(id$j~Ez=zlY4TfbJ@?Qj4YXaLPe<2)@s>qdVKq z1|W!p{=ezIhTUwSA>_KS>aT1~RIUA%Q50c~hLES1eg74sD10}HEQIR$nIhq{f!jna zpxEIm(tyep>-a*EmbAN$zk`)@cpY!mXfshSU}g9lTBHG&i4KcMOTyoR`t7Xj-mVg< z5I#eCOn|?<38-YDj|t?UK8KYTAk(WM3muY3%kK3^GOg#bGW_W%8ZMel_&jZCIg!@I gOR%03CbN4ABSDIn?R@1=bvWsDGVWN&o-= literal 0 HcmV?d00001 From 43468653a07bc26de73752cffcb4b3576813e576 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Tue, 10 Oct 2023 20:15:58 -0500 Subject: [PATCH 26/72] prepare for pre-calculated pitch table --- src/asm/spc700/player.s | 7 +++++++ src/asm/spc700/snes.s | 1 + src/engine/dispatch.h | 29 +++++++++++++++++++++++++++++ src/engine/platform/abstract.cpp | 3 +++ src/gui/settings.cpp | 2 +- 5 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 src/asm/spc700/player.s create mode 100644 src/asm/spc700/snes.s diff --git a/src/asm/spc700/player.s b/src/asm/spc700/player.s new file mode 100644 index 000000000..6ce6c3673 --- /dev/null +++ b/src/asm/spc700/player.s @@ -0,0 +1,7 @@ +; command stream player code for SPC700 architecture. + +csTick: + ret + +csInit: + ret diff --git a/src/asm/spc700/snes.s b/src/asm/spc700/snes.s new file mode 100644 index 000000000..7127bd4b5 --- /dev/null +++ b/src/asm/spc700/snes.s @@ -0,0 +1 @@ +; SNES DivDispatch code. diff --git a/src/engine/dispatch.h b/src/engine/dispatch.h index 1a8ec347d..3f2dda6b1 100644 --- a/src/engine/dispatch.h +++ b/src/engine/dispatch.h @@ -267,6 +267,29 @@ struct DivCommand { value2(0) {} }; +struct DivPitchTable { + int pitch[(12*128)+1]; + unsigned char linearity, blockBits; + bool period; + + // get pitch + int get(int base, int pitch, int pitch2); + + // linear: note + // non-linear: get(note,0,0) + int getBase(int note); + + // calculate pitch table + void init(float tuning, double clock, double divider, int octave, unsigned char linear, bool isPeriod, unsigned char block=0); + + DivPitchTable(): + linearity(2), + blockBits(0), + period(false) { + memset(pitch,0,sizeof(pitch)); + } +}; + struct DivDelayedCommand { int ticks; DivCommand cmd; @@ -692,6 +715,11 @@ class DivDispatch { */ virtual void renderSamples(int sysID); + /** + * tell this DivDispatch that the tuning and/or pitch linearity has changed, and therefore the pitch table must be regenerated. + */ + virtual void notifyPitchTable(); + /** * initialize this DivDispatch. * @param parent the parent DivEngine. @@ -718,6 +746,7 @@ class DivDispatch { if (chipClock