ES5506: Amiga pitch option......
This commit is contained in:
parent
de935c3aac
commit
6d8a343ead
7 changed files with 233 additions and 77 deletions
|
|
@ -7173,8 +7173,17 @@ void FurnaceGUI::drawInsEdit() {
|
|||
macroList.push_back(FurnaceGUIMacroDesc(_("Arpeggio"),&ins->std.arpMacro,-120,120,160,uiColors[GUI_COLOR_MACRO_PITCH],true,NULL,macroHoverNote,false,NULL,true,ins->std.arpMacro.val));
|
||||
macroList.push_back(FurnaceGUIMacroDesc(_("Pitch"),&ins->std.pitchMacro,-2048,2047,160,uiColors[GUI_COLOR_MACRO_PITCH],true,macroRelativeMode));
|
||||
break;
|
||||
case DIV_INS_ES5506:
|
||||
macroList.push_back(FurnaceGUIMacroDesc(_("Volume"),&ins->std.volMacro,0,4095,160,uiColors[GUI_COLOR_MACRO_VOLUME]));
|
||||
case DIV_INS_ES5506: {
|
||||
float usesAmigaVol=true;
|
||||
for (int i=0; i<e->song.systemLen; i++) {
|
||||
if (e->song.system[i]==DIV_SYSTEM_ES5506) {
|
||||
if (!e->song.systemFlags[i].getBool("amigaVol",false)) {
|
||||
usesAmigaVol=false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
macroList.push_back(FurnaceGUIMacroDesc(_("Volume"),&ins->std.volMacro,0,usesAmigaVol?64:4095,160,uiColors[GUI_COLOR_MACRO_VOLUME]));
|
||||
macroList.push_back(FurnaceGUIMacroDesc(_("Arpeggio"),&ins->std.arpMacro,-120,120,160,uiColors[GUI_COLOR_MACRO_PITCH],true,NULL,macroHoverNote,false,NULL,true,ins->std.arpMacro.val));
|
||||
macroList.push_back(FurnaceGUIMacroDesc(_("Filter Mode"),&ins->std.dutyMacro,0,3,160,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,¯oHoverES5506FilterMode));
|
||||
macroList.push_back(FurnaceGUIMacroDesc(_("Panning (left)"),&ins->std.panLMacro,0,4095,160,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL));
|
||||
|
|
@ -7186,6 +7195,7 @@ void FurnaceGUI::drawInsEdit() {
|
|||
macroList.push_back(FurnaceGUIMacroDesc(_("Outputs"),&ins->std.fbMacro,0,5,64,uiColors[GUI_COLOR_MACRO_OTHER]));
|
||||
macroList.push_back(FurnaceGUIMacroDesc(_("Control"),&ins->std.algMacro,0,2,32,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true,es5506ControlModes));
|
||||
break;
|
||||
}
|
||||
case DIV_INS_MULTIPCM:
|
||||
macroList.push_back(FurnaceGUIMacroDesc(_("Volume"),&ins->std.volMacro,0,127,160,uiColors[GUI_COLOR_MACRO_VOLUME]));
|
||||
macroList.push_back(FurnaceGUIMacroDesc(_("Arpeggio"),&ins->std.arpMacro,-120,120,160,uiColors[GUI_COLOR_MACRO_PITCH],true,NULL,macroHoverNote,false,NULL,true,ins->std.arpMacro.val));
|
||||
|
|
|
|||
|
|
@ -1273,6 +1273,7 @@ bool FurnaceGUI::drawSysConf(int chan, int sysPos, DivSystem type, DivConfig& fl
|
|||
int channels=flags.getInt("channels",0x1f)+1;
|
||||
int volScale=flags.getInt("volScale",4095);
|
||||
bool amigaVol=flags.getBool("amigaVol",false);
|
||||
bool amigaPitch=flags.getBool("amigaPitch",false);
|
||||
ImGui::Text(_("Initial channel limit:"));
|
||||
if (CWSliderInt("##OTTO_InitialChannelLimit",&channels,5,32)) {
|
||||
if (channels<5) channels=5;
|
||||
|
|
@ -1291,12 +1292,21 @@ bool FurnaceGUI::drawSysConf(int chan, int sysPos, DivSystem type, DivConfig& fl
|
|||
if (ImGui::Checkbox(_("Amiga channel volumes (64)"),&amigaVol)) {
|
||||
altered=true;
|
||||
}
|
||||
pushWarningColor(amigaPitch && e->song.linearPitch==2);
|
||||
if (ImGui::Checkbox(_("Amiga-like pitch (non-linear pitch only)"),&amigaPitch)) {
|
||||
altered=true;
|
||||
}
|
||||
if (ImGui::IsItemHovered()) {
|
||||
ImGui::SetTooltip("pitch linearity is set to linear. this won't do anything!");
|
||||
}
|
||||
popWarningColor();
|
||||
|
||||
if (altered) {
|
||||
e->lockSave([&]() {
|
||||
flags.set("channels",channels-1);
|
||||
flags.set("volScale",volScale);
|
||||
flags.set("amigaVol",amigaVol);
|
||||
flags.set("amigaPitch",amigaPitch);
|
||||
});
|
||||
}
|
||||
break;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue