GUI: implement "make me a drum kit" option
This commit is contained in:
parent
5224c4666d
commit
66bacef681
|
@ -254,6 +254,9 @@ void FurnaceGUI::sampleListItem(int i, int dir, int asset) {
|
|||
if (ImGui::MenuItem("make instrument")) {
|
||||
doAction(GUI_ACTION_SAMPLE_MAKE_INS);
|
||||
}
|
||||
if (ImGui::MenuItem("make me a drum kit")) {
|
||||
doAction(GUI_ACTION_SAMPLE_LIST_MAKE_MAP);
|
||||
}
|
||||
if (ImGui::MenuItem("duplicate")) {
|
||||
doAction(GUI_ACTION_SAMPLE_LIST_DUPLICATE);
|
||||
}
|
||||
|
|
|
@ -5893,6 +5893,26 @@ bool FurnaceGUI::loop() {
|
|||
|
||||
if (ImGui::BeginPopup("InsTypeList",ImGuiWindowFlags_NoMove|ImGuiWindowFlags_AlwaysAutoResize|ImGuiWindowFlags_NoTitleBar|ImGuiWindowFlags_NoSavedSettings)) {
|
||||
char temp[1024];
|
||||
if (displayInsTypeListMakeInsSample==-2) {
|
||||
ImGui::Text("Drum kit mode:");
|
||||
if (ImGui::RadioButton("Normal",!makeDrumkitMode)) {
|
||||
makeDrumkitMode=false;
|
||||
}
|
||||
if (ImGui::RadioButton("12 samples per octave",makeDrumkitMode)) {
|
||||
makeDrumkitMode=true;
|
||||
}
|
||||
|
||||
if (!makeDrumkitMode) {
|
||||
ImGui::Text("Starting octave");
|
||||
ImGui::SameLine();
|
||||
if (ImGui::InputInt("##DKOctave",&makeDrumkitOctave,1,3)) {
|
||||
if (makeDrumkitOctave<0) makeDrumkitOctave=0;
|
||||
if (makeDrumkitOctave>9) makeDrumkitOctave=9;
|
||||
}
|
||||
}
|
||||
|
||||
ImGui::Separator();
|
||||
}
|
||||
for (DivInstrumentType& i: makeInsTypeList) {
|
||||
strncpy(temp,insTypes[i][0],1023);
|
||||
if (ImGui::MenuItem(temp)) {
|
||||
|
@ -5907,10 +5927,24 @@ bool FurnaceGUI::loop() {
|
|||
e->song.ins[curIns]->amiga.useNoteMap=true;
|
||||
if (i!=DIV_INS_AMIGA) e->song.ins[curIns]->amiga.useSample=true;
|
||||
|
||||
for (int j=0; j<120; j++) {
|
||||
e->song.ins[curIns]->amiga.noteMap[i].freq=48;
|
||||
e->song.ins[curIns]->amiga.noteMap[i].map=j;
|
||||
e->song.ins[curIns]->amiga.noteMap[i].dpcmFreq=15;
|
||||
if (makeDrumkitMode) {
|
||||
for (int j=0; j<120; j++) {
|
||||
e->song.ins[curIns]->amiga.noteMap[j].freq=48;
|
||||
e->song.ins[curIns]->amiga.noteMap[j].dpcmFreq=15;
|
||||
e->song.ins[curIns]->amiga.noteMap[j].map=j%12;
|
||||
if ((j%12)>=e->song.sampleLen) continue;
|
||||
}
|
||||
} else {
|
||||
int index=-makeDrumkitOctave*12;
|
||||
for (int j=0; j<120; j++) {
|
||||
e->song.ins[curIns]->amiga.noteMap[j].freq=48;
|
||||
e->song.ins[curIns]->amiga.noteMap[j].dpcmFreq=15;
|
||||
if (index<0 || index>=e->song.sampleLen) {
|
||||
index++;
|
||||
continue;
|
||||
}
|
||||
e->song.ins[curIns]->amiga.noteMap[j].map=index++;
|
||||
}
|
||||
}
|
||||
|
||||
nextWindow=GUI_WINDOW_INS_EDIT;
|
||||
|
@ -7267,6 +7301,7 @@ FurnaceGUI::FurnaceGUI():
|
|||
killGraphics(false),
|
||||
safeMode(false),
|
||||
midiWakeUp(true),
|
||||
makeDrumkitMode(false),
|
||||
audioEngineChanged(false),
|
||||
settingsChanged(false),
|
||||
debugFFT(false),
|
||||
|
@ -7277,6 +7312,7 @@ FurnaceGUI::FurnaceGUI():
|
|||
macroPointSize(16),
|
||||
waveEditStyle(0),
|
||||
displayInsTypeListMakeInsSample(-1),
|
||||
makeDrumkitOctave(3),
|
||||
mobileEditPage(0),
|
||||
wheelCalmDown(0),
|
||||
shallDetectScale(0),
|
||||
|
|
|
@ -1477,6 +1477,7 @@ class FurnaceGUI {
|
|||
bool killGraphics;
|
||||
bool safeMode;
|
||||
bool midiWakeUp;
|
||||
bool makeDrumkitMode;
|
||||
bool audioEngineChanged, settingsChanged, debugFFT;
|
||||
bool willExport[DIV_MAX_CHIPS];
|
||||
int vgmExportVersion;
|
||||
|
@ -1486,6 +1487,7 @@ class FurnaceGUI {
|
|||
int macroPointSize;
|
||||
int waveEditStyle;
|
||||
int displayInsTypeListMakeInsSample;
|
||||
int makeDrumkitOctave;
|
||||
int mobileEditPage;
|
||||
int wheelCalmDown;
|
||||
int shallDetectScale;
|
||||
|
|
Loading…
Reference in a new issue