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")) {
|
if (ImGui::MenuItem("make instrument")) {
|
||||||
doAction(GUI_ACTION_SAMPLE_MAKE_INS);
|
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")) {
|
if (ImGui::MenuItem("duplicate")) {
|
||||||
doAction(GUI_ACTION_SAMPLE_LIST_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)) {
|
if (ImGui::BeginPopup("InsTypeList",ImGuiWindowFlags_NoMove|ImGuiWindowFlags_AlwaysAutoResize|ImGuiWindowFlags_NoTitleBar|ImGuiWindowFlags_NoSavedSettings)) {
|
||||||
char temp[1024];
|
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) {
|
for (DivInstrumentType& i: makeInsTypeList) {
|
||||||
strncpy(temp,insTypes[i][0],1023);
|
strncpy(temp,insTypes[i][0],1023);
|
||||||
if (ImGui::MenuItem(temp)) {
|
if (ImGui::MenuItem(temp)) {
|
||||||
|
@ -5907,10 +5927,24 @@ bool FurnaceGUI::loop() {
|
||||||
e->song.ins[curIns]->amiga.useNoteMap=true;
|
e->song.ins[curIns]->amiga.useNoteMap=true;
|
||||||
if (i!=DIV_INS_AMIGA) e->song.ins[curIns]->amiga.useSample=true;
|
if (i!=DIV_INS_AMIGA) e->song.ins[curIns]->amiga.useSample=true;
|
||||||
|
|
||||||
|
if (makeDrumkitMode) {
|
||||||
for (int j=0; j<120; j++) {
|
for (int j=0; j<120; j++) {
|
||||||
e->song.ins[curIns]->amiga.noteMap[i].freq=48;
|
e->song.ins[curIns]->amiga.noteMap[j].freq=48;
|
||||||
e->song.ins[curIns]->amiga.noteMap[i].map=j;
|
e->song.ins[curIns]->amiga.noteMap[j].dpcmFreq=15;
|
||||||
e->song.ins[curIns]->amiga.noteMap[i].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;
|
nextWindow=GUI_WINDOW_INS_EDIT;
|
||||||
|
@ -7267,6 +7301,7 @@ FurnaceGUI::FurnaceGUI():
|
||||||
killGraphics(false),
|
killGraphics(false),
|
||||||
safeMode(false),
|
safeMode(false),
|
||||||
midiWakeUp(true),
|
midiWakeUp(true),
|
||||||
|
makeDrumkitMode(false),
|
||||||
audioEngineChanged(false),
|
audioEngineChanged(false),
|
||||||
settingsChanged(false),
|
settingsChanged(false),
|
||||||
debugFFT(false),
|
debugFFT(false),
|
||||||
|
@ -7277,6 +7312,7 @@ FurnaceGUI::FurnaceGUI():
|
||||||
macroPointSize(16),
|
macroPointSize(16),
|
||||||
waveEditStyle(0),
|
waveEditStyle(0),
|
||||||
displayInsTypeListMakeInsSample(-1),
|
displayInsTypeListMakeInsSample(-1),
|
||||||
|
makeDrumkitOctave(3),
|
||||||
mobileEditPage(0),
|
mobileEditPage(0),
|
||||||
wheelCalmDown(0),
|
wheelCalmDown(0),
|
||||||
shallDetectScale(0),
|
shallDetectScale(0),
|
||||||
|
|
|
@ -1477,6 +1477,7 @@ class FurnaceGUI {
|
||||||
bool killGraphics;
|
bool killGraphics;
|
||||||
bool safeMode;
|
bool safeMode;
|
||||||
bool midiWakeUp;
|
bool midiWakeUp;
|
||||||
|
bool makeDrumkitMode;
|
||||||
bool audioEngineChanged, settingsChanged, debugFFT;
|
bool audioEngineChanged, settingsChanged, debugFFT;
|
||||||
bool willExport[DIV_MAX_CHIPS];
|
bool willExport[DIV_MAX_CHIPS];
|
||||||
int vgmExportVersion;
|
int vgmExportVersion;
|
||||||
|
@ -1486,6 +1487,7 @@ class FurnaceGUI {
|
||||||
int macroPointSize;
|
int macroPointSize;
|
||||||
int waveEditStyle;
|
int waveEditStyle;
|
||||||
int displayInsTypeListMakeInsSample;
|
int displayInsTypeListMakeInsSample;
|
||||||
|
int makeDrumkitOctave;
|
||||||
int mobileEditPage;
|
int mobileEditPage;
|
||||||
int wheelCalmDown;
|
int wheelCalmDown;
|
||||||
int shallDetectScale;
|
int shallDetectScale;
|
||||||
|
|
Loading…
Reference in a new issue