Merge pull request #660 from jpcima/reset-scala-ui

Add button to reset scala file
This commit is contained in:
JP Cimalando 2021-02-23 23:08:45 +01:00 committed by GitHub
commit 4b97e55352
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 67 additions and 28 deletions

View file

@ -197,22 +197,22 @@ widget_class mainView {open
} }
} }
} }
Fl_Group {subPanels_[kPanelControls]} {open Fl_Group {subPanels_[kPanelControls]} {
xywh {5 110 790 285} xywh {5 110 790 285} hide
class LogicalGroup class LogicalGroup
} { } {
Fl_Group {} {open Fl_Group {} {open
xywh {5 110 790 285} box ROUNDED_BOX xywh {5 110 790 285} box ROUNDED_BOX
class RoundedGroup class RoundedGroup
} { } {
Fl_Group controlsPanel_ {open selected Fl_Group controlsPanel_ {open
xywh {5 110 790 285} box THIN_DOWN_FRAME xywh {5 110 790 285} box THIN_DOWN_FRAME
class ControlsPanel class ControlsPanel
} {} } {}
} }
} }
Fl_Group {subPanels_[kPanelSettings]} {open Fl_Group {subPanels_[kPanelSettings]} {open
xywh {5 109 790 316} hide xywh {5 109 790 316}
class LogicalGroup class LogicalGroup
} { } {
Fl_Group {} { Fl_Group {} {
@ -253,7 +253,7 @@ widget_class mainView {open
} }
Fl_Group {} { Fl_Group {} {
label Tuning open label Tuning open
xywh {205 270 390 100} box ROUNDED_BOX labelsize 12 align 17 xywh {175 270 415 100} box ROUNDED_BOX labelsize 12 align 17
class TitleGroup class TitleGroup
} { } {
Fl_Box {} { Fl_Box {} {
@ -283,13 +283,13 @@ widget_class mainView {open
} }
Fl_Box {} { Fl_Box {} {
label {Scala file} label {Scala file}
xywh {225 290 100 25} labelsize 12 xywh {195 290 100 25} labelsize 12
class ValueLabel class ValueLabel
} }
Fl_Button scalaFileButton_ { Fl_Button scalaFileButton_ {
label DefaultScale label DefaultScale
comment {tag=kTagLoadScalaFile} comment {tag=kTagLoadScalaFile}
xywh {225 330 100 25} labelsize 12 xywh {195 330 100 25} labelsize 12
class ValueButton class ValueButton
} }
Fl_Spinner scalaRootKeySlider_ { Fl_Spinner scalaRootKeySlider_ {
@ -302,6 +302,11 @@ widget_class mainView {open
xywh {375 330 30 25} labelsize 12 textsize 12 xywh {375 330 30 25} labelsize 12 textsize 12
class ValueMenu class ValueMenu
} }
Fl_Button scalaResetButton_ {
comment {tag=kTagResetScalaFile} selected
xywh {295 330 25 25} labelsize 12
class ResetSomethingButton
}
} }
Fl_Group userFilesGroup_ { Fl_Group userFilesGroup_ {
label Files open label Files open

View file

@ -70,6 +70,7 @@ struct Editor::Impl : EditorController::Receiver, IControlListener {
kTagSetOversampling, kTagSetOversampling,
kTagSetPreloadSize, kTagSetPreloadSize,
kTagLoadScalaFile, kTagLoadScalaFile,
kTagResetScalaFile,
kTagSetScalaRootKey, kTagSetScalaRootKey,
kTagSetTuningFrequency, kTagSetTuningFrequency,
kTagSetStretchedTuning, kTagSetStretchedTuning,
@ -81,6 +82,7 @@ struct Editor::Impl : EditorController::Receiver, IControlListener {
STextButton* sfzFileLabel_ = nullptr; STextButton* sfzFileLabel_ = nullptr;
CTextLabel* scalaFileLabel_ = nullptr; CTextLabel* scalaFileLabel_ = nullptr;
STextButton* scalaFileButton_ = nullptr; STextButton* scalaFileButton_ = nullptr;
STextButton* scalaResetButton_ = nullptr;
CControl *volumeSlider_ = nullptr; CControl *volumeSlider_ = nullptr;
CTextLabel* volumeLabel_ = nullptr; CTextLabel* volumeLabel_ = nullptr;
SValueMenu *numVoicesSlider_ = nullptr; SValueMenu *numVoicesSlider_ = nullptr;
@ -583,6 +585,7 @@ void Editor::Impl::createFrameContents()
typedef STextButton EditFileButton; typedef STextButton EditFileButton;
typedef STextButton PreviousFileButton; typedef STextButton PreviousFileButton;
typedef STextButton NextFileButton; typedef STextButton NextFileButton;
typedef STextButton ResetSomethingButton;
typedef SPiano Piano; typedef SPiano Piano;
typedef SActionMenu ChevronDropDown; typedef SActionMenu ChevronDropDown;
typedef SControlsPanel ControlsPanel; typedef SControlsPanel ControlsPanel;
@ -738,6 +741,11 @@ void Editor::Impl::createFrameContents()
auto createNextFileButton = [&createGlyphButton](const CRect& bounds, int tag, const char*, CHoriTxtAlign, int fontsize) { auto createNextFileButton = [&createGlyphButton](const CRect& bounds, int tag, const char*, CHoriTxtAlign, int fontsize) {
return createGlyphButton(u8"\ue0da", bounds, tag, fontsize); return createGlyphButton(u8"\ue0da", bounds, tag, fontsize);
}; };
auto createResetSomethingButton = [&createValueButton](const CRect& bounds, int tag, const char*, CHoriTxtAlign, int fontsize) {
STextButton* btn = createValueButton(bounds, tag, u8"\ue13a", kCenterText, fontsize);
btn->setFont(makeOwned<CFontDesc>("Sfizz Fluent System R20", fontsize));
return btn;
};
auto createPiano = [](const CRect& bounds, int, const char*, CHoriTxtAlign, int fontsize) { auto createPiano = [](const CRect& bounds, int, const char*, CHoriTxtAlign, int fontsize) {
SPiano* piano = new SPiano(bounds); SPiano* piano = new SPiano(bounds);
auto font = makeOwned<CFontDesc>("Roboto", fontsize); auto font = makeOwned<CFontDesc>("Roboto", fontsize);
@ -1471,6 +1479,13 @@ void Editor::Impl::valueChanged(CControl* ctl)
Call::later([this]() { chooseScalaFile(); }); Call::later([this]() { chooseScalaFile(); });
break; break;
case kTagResetScalaFile:
if (value != 1)
break;
changeScalaFile(std::string());
break;
case kTagSetVolume: case kTagSetVolume:
ctrl.uiSendValue(EditId::Volume, value); ctrl.uiSendValue(EditId::Volume, value);
updateVolumeLabel(value); updateVolumeLabel(value);

View file

@ -100,6 +100,7 @@ view__29->addView(view__39);
LogicalGroup* const view__40 = createLogicalGroup(CRect(5, 110, 795, 395), -1, "", kCenterText, 14); LogicalGroup* const view__40 = createLogicalGroup(CRect(5, 110, 795, 395), -1, "", kCenterText, 14);
subPanels_[kPanelControls] = view__40; subPanels_[kPanelControls] = view__40;
view__0->addView(view__40); view__0->addView(view__40);
view__40->setVisible(false);
RoundedGroup* const view__41 = createRoundedGroup(CRect(0, 0, 790, 285), -1, "", kCenterText, 14); RoundedGroup* const view__41 = createRoundedGroup(CRect(0, 0, 790, 285), -1, "", kCenterText, 14);
view__40->addView(view__41); view__40->addView(view__41);
ControlsPanel* const view__42 = createControlsPanel(CRect(0, 0, 790, 285), -1, "", kCenterText, 14); ControlsPanel* const view__42 = createControlsPanel(CRect(0, 0, 790, 285), -1, "", kCenterText, 14);
@ -108,7 +109,6 @@ view__41->addView(view__42);
LogicalGroup* const view__43 = createLogicalGroup(CRect(5, 109, 795, 425), -1, "", kCenterText, 14); LogicalGroup* const view__43 = createLogicalGroup(CRect(5, 109, 795, 425), -1, "", kCenterText, 14);
subPanels_[kPanelSettings] = view__43; subPanels_[kPanelSettings] = view__43;
view__0->addView(view__43); view__0->addView(view__43);
view__43->setVisible(false);
TitleGroup* const view__44 = createTitleGroup(CRect(255, 26, 535, 126), -1, "Engine", kCenterText, 12); TitleGroup* const view__44 = createTitleGroup(CRect(255, 26, 535, 126), -1, "Engine", kCenterText, 12);
view__43->addView(view__44); view__43->addView(view__44);
ValueMenu* const view__45 = createValueMenu(CRect(25, 60, 85, 85), kTagSetNumVoices, "", kCenterText, 12); ValueMenu* const view__45 = createValueMenu(CRect(25, 60, 85, 85), kTagSetNumVoices, "", kCenterText, 12);
@ -126,39 +126,42 @@ view__44->addView(view__49);
ValueMenu* const view__50 = createValueMenu(CRect(195, 60, 255, 85), kTagSetPreloadSize, "", kCenterText, 12); ValueMenu* const view__50 = createValueMenu(CRect(195, 60, 255, 85), kTagSetPreloadSize, "", kCenterText, 12);
preloadSizeSlider_ = view__50; preloadSizeSlider_ = view__50;
view__44->addView(view__50); view__44->addView(view__50);
TitleGroup* const view__51 = createTitleGroup(CRect(200, 161, 590, 261), -1, "Tuning", kCenterText, 12); TitleGroup* const view__51 = createTitleGroup(CRect(170, 161, 585, 261), -1, "Tuning", kCenterText, 12);
view__43->addView(view__51); view__43->addView(view__51);
ValueLabel* const view__52 = createValueLabel(CRect(125, 20, 205, 45), -1, "Root key", kCenterText, 12); ValueLabel* const view__52 = createValueLabel(CRect(155, 20, 235, 45), -1, "Root key", kCenterText, 12);
view__51->addView(view__52); view__51->addView(view__52);
ValueMenu* const view__53 = createValueMenu(CRect(220, 60, 280, 85), kTagSetTuningFrequency, "", kCenterText, 12); ValueMenu* const view__53 = createValueMenu(CRect(250, 60, 310, 85), kTagSetTuningFrequency, "", kCenterText, 12);
tuningFrequencySlider_ = view__53; tuningFrequencySlider_ = view__53;
view__51->addView(view__53); view__51->addView(view__53);
ValueLabel* const view__54 = createValueLabel(CRect(210, 20, 290, 45), -1, "Frequency", kCenterText, 12); ValueLabel* const view__54 = createValueLabel(CRect(240, 20, 320, 45), -1, "Frequency", kCenterText, 12);
view__51->addView(view__54); view__51->addView(view__54);
StyledKnob* const view__55 = createStyledKnob(CRect(310, 45, 358, 93), kTagSetStretchedTuning, "", kCenterText, 14); StyledKnob* const view__55 = createStyledKnob(CRect(340, 45, 388, 93), kTagSetStretchedTuning, "", kCenterText, 14);
stretchedTuningSlider_ = view__55; stretchedTuningSlider_ = view__55;
view__51->addView(view__55); view__51->addView(view__55);
ValueLabel* const view__56 = createValueLabel(CRect(295, 20, 375, 45), -1, "Stretch", kCenterText, 12); ValueLabel* const view__56 = createValueLabel(CRect(325, 20, 405, 45), -1, "Stretch", kCenterText, 12);
view__51->addView(view__56); view__51->addView(view__56);
ValueLabel* const view__57 = createValueLabel(CRect(20, 20, 120, 45), -1, "Scala file", kCenterText, 12); ValueLabel* const view__57 = createValueLabel(CRect(20, 20, 120, 45), -1, "Scala file", kCenterText, 12);
view__51->addView(view__57); view__51->addView(view__57);
ValueButton* const view__58 = createValueButton(CRect(20, 60, 120, 85), kTagLoadScalaFile, "DefaultScale", kCenterText, 12); ValueButton* const view__58 = createValueButton(CRect(20, 60, 120, 85), kTagLoadScalaFile, "DefaultScale", kCenterText, 12);
scalaFileButton_ = view__58; scalaFileButton_ = view__58;
view__51->addView(view__58); view__51->addView(view__58);
ValueMenu* const view__59 = createValueMenu(CRect(135, 60, 170, 85), kTagSetScalaRootKey, "", kCenterText, 12); ValueMenu* const view__59 = createValueMenu(CRect(165, 60, 200, 85), kTagSetScalaRootKey, "", kCenterText, 12);
scalaRootKeySlider_ = view__59; scalaRootKeySlider_ = view__59;
view__51->addView(view__59); view__51->addView(view__59);
ValueMenu* const view__60 = createValueMenu(CRect(170, 60, 200, 85), kTagSetScalaRootKey, "", kCenterText, 12); ValueMenu* const view__60 = createValueMenu(CRect(200, 60, 230, 85), kTagSetScalaRootKey, "", kCenterText, 12);
scalaRootOctaveSlider_ = view__60; scalaRootOctaveSlider_ = view__60;
view__51->addView(view__60); view__51->addView(view__60);
TitleGroup* const view__61 = createTitleGroup(CRect(615, 161, 754, 261), -1, "Files", kCenterText, 12); ResetSomethingButton* const view__61 = createResetSomethingButton(CRect(120, 60, 145, 85), kTagResetScalaFile, "", kCenterText, 12);
userFilesGroup_ = view__61; scalaResetButton_ = view__61;
view__43->addView(view__61); view__51->addView(view__61);
ValueLabel* const view__62 = createValueLabel(CRect(20, 20, 120, 45), -1, "User SFZ folder", kCenterText, 12); TitleGroup* const view__62 = createTitleGroup(CRect(615, 161, 754, 261), -1, "Files", kCenterText, 12);
view__61->addView(view__62); userFilesGroup_ = view__62;
ValueButton* const view__63 = createValueButton(CRect(20, 60, 120, 85), kTagChooseUserFilesDir, "DefaultPath", kCenterText, 12); view__43->addView(view__62);
userFilesDirButton_ = view__63; ValueLabel* const view__63 = createValueLabel(CRect(20, 20, 120, 45), -1, "User SFZ folder", kCenterText, 12);
view__61->addView(view__63); view__62->addView(view__63);
Piano* const view__64 = createPiano(CRect(5, 400, 795, 470), -1, "", kCenterText, 12); ValueButton* const view__64 = createValueButton(CRect(20, 60, 120, 85), kTagChooseUserFilesDir, "DefaultPath", kCenterText, 12);
piano_ = view__64; userFilesDirButton_ = view__64;
view__0->addView(view__64); view__62->addView(view__64);
Piano* const view__65 = createPiano(CRect(5, 400, 795, 470), -1, "", kCenterText, 12);
piano_ = view__65;
view__0->addView(view__65);

View file

@ -1178,6 +1178,14 @@ static bool
sfizz_lv2_load_file(LV2_Handle instance, const char *file_path) sfizz_lv2_load_file(LV2_Handle instance, const char *file_path)
{ {
sfizz_plugin_t *self = (sfizz_plugin_t *)instance; sfizz_plugin_t *self = (sfizz_plugin_t *)instance;
char buf[MAX_PATH_SIZE];
if (file_path[0] == '\0')
{
sfizz_lv2_get_default_sfz_path(instance, buf, MAX_PATH_SIZE);
file_path = buf;
}
bool status = sfizz_load_file(self->synth, file_path); bool status = sfizz_load_file(self->synth, file_path);
sfizz_lv2_update_file_info(self, file_path); sfizz_lv2_update_file_info(self, file_path);
return status; return status;
@ -1187,6 +1195,14 @@ static bool
sfizz_lv2_load_scala_file(LV2_Handle instance, const char *file_path) sfizz_lv2_load_scala_file(LV2_Handle instance, const char *file_path)
{ {
sfizz_plugin_t *self = (sfizz_plugin_t *)instance; sfizz_plugin_t *self = (sfizz_plugin_t *)instance;
char buf[MAX_PATH_SIZE];
if (file_path[0] == '\0')
{
sfizz_lv2_get_default_scala_path(instance, buf, MAX_PATH_SIZE);
file_path = buf;
}
bool status = sfizz_load_scala_file(self->synth, file_path); bool status = sfizz_load_scala_file(self->synth, file_path);
if (file_path != self->scala_file_path) if (file_path != self->scala_file_path)
strcpy(self->scala_file_path, file_path); strcpy(self->scala_file_path, file_path);
@ -1308,7 +1324,7 @@ restore(LV2_Handle instance,
"[sfizz] Error while restoring the file %s\n", self->sfz_file_path); "[sfizz] Error while restoring the file %s\n", self->sfz_file_path);
} }
if (sfizz_load_scala_file(self->synth, self->scala_file_path)) if (sfizz_lv2_load_scala_file(self->synth, self->scala_file_path))
{ {
lv2_log_note(&self->logger, lv2_log_note(&self->logger,
"[sfizz] Restoring the scale %s\n", self->scala_file_path); "[sfizz] Restoring the scale %s\n", self->scala_file_path);