diff --git a/editor/CMakeLists.txt b/editor/CMakeLists.txt index 935f5c79..33f99afe 100644 --- a/editor/CMakeLists.txt +++ b/editor/CMakeLists.txt @@ -4,15 +4,17 @@ include("cmake/Vstgui.cmake") set(EDITOR_RESOURCES logo.png logo_text.png + logo_text_white.png logo_text@2x.png - logo_full_white.png + logo_text_white@2x.png + background.png + background@2x.png icon_white.png icon_white@2x.png knob48.png knob48@2x.png Fonts/fluentui-system-regular-20.ttf - Fonts/ABeeZee-Regular.ttf - Fonts/ABeeZee-Regular.ttf + Fonts/Roboto-Regular.ttf PARENT_SCOPE) function(copy_editor_resources SOURCE_DIR DESTINATION_DIR) diff --git a/editor/layout/main.fl b/editor/layout/main.fl index 477d2d40..3ad0e0f5 100644 --- a/editor/layout/main.fl +++ b/editor/layout/main.fl @@ -6,8 +6,12 @@ widget_class mainView {open xywh {572 266 800 475} type Double class LogicalGroup visible } { + Fl_Box {} {selected + image {../resources/background.png} xywh {190 110 600 280} + class Background + } Fl_Group {} { - comment {theme=darkTheme} open + comment {theme=darkTheme} xywh {0 0 800 110} class LogicalGroup } { @@ -17,22 +21,22 @@ widget_class mainView {open } { Fl_Box {} { comment {tag=kTagFirstChangePanel+kPanelGeneral} - image {../resources/logo_full_white.png} xywh {10 11 165 63} + image {../resources/logo_text_white.png} xywh {35 9 120 60} class SfizzMainButton } Fl_Button {} { comment {tag=kTagFirstChangePanel+kPanelGeneral} - xywh {55 75 25 25} labelsize 24 + xywh {49 73 25 25} labelsize 24 class HomeButton } Fl_Button {} { comment {tag=kTagFirstChangePanel+kPanelControls} - xywh {80 75 25 25} labelsize 24 + xywh {81 73 25 25} labelsize 24 class CCButton } Fl_Button {} { comment {tag=kTagFirstChangePanel+kPanelSettings} - xywh {105 75 25 25} labelsize 24 + xywh {112 73 25 25} labelsize 24 class SettingsButton } } @@ -137,7 +141,7 @@ widget_class mainView {open } } } - Fl_Group {subPanels_[kPanelGeneral]} {open selected + Fl_Group {subPanels_[kPanelGeneral]} { xywh {5 110 791 285} class LogicalGroup } { diff --git a/editor/resources/Fonts/ABeeZee-Italic.ttf b/editor/resources/Fonts/ABeeZee-Italic.ttf deleted file mode 100644 index d98743af..00000000 Binary files a/editor/resources/Fonts/ABeeZee-Italic.ttf and /dev/null differ diff --git a/editor/resources/Fonts/ABeeZee-Regular.ttf b/editor/resources/Fonts/ABeeZee-Regular.ttf deleted file mode 100644 index 71e6d162..00000000 Binary files a/editor/resources/Fonts/ABeeZee-Regular.ttf and /dev/null differ diff --git a/editor/resources/Fonts/Roboto-Regular.ttf b/editor/resources/Fonts/Roboto-Regular.ttf new file mode 100644 index 00000000..2b6392ff Binary files /dev/null and b/editor/resources/Fonts/Roboto-Regular.ttf differ diff --git a/editor/resources/background.png b/editor/resources/background.png new file mode 100644 index 00000000..67126867 Binary files /dev/null and b/editor/resources/background.png differ diff --git a/editor/resources/background@2x.png b/editor/resources/background@2x.png new file mode 100644 index 00000000..9177e38b Binary files /dev/null and b/editor/resources/background@2x.png differ diff --git a/editor/resources/knob48.png b/editor/resources/knob48.png index aa5c8eb3..d0fc774a 100644 Binary files a/editor/resources/knob48.png and b/editor/resources/knob48.png differ diff --git a/editor/resources/knob48@2x.png b/editor/resources/knob48@2x.png index 2f8d49e6..f064cfc3 100644 Binary files a/editor/resources/knob48@2x.png and b/editor/resources/knob48@2x.png differ diff --git a/editor/resources/logo_full_white.png b/editor/resources/logo_full_white.png deleted file mode 100644 index 8aace05a..00000000 Binary files a/editor/resources/logo_full_white.png and /dev/null differ diff --git a/editor/resources/logo_text_white.png b/editor/resources/logo_text_white.png new file mode 100644 index 00000000..312719e5 Binary files /dev/null and b/editor/resources/logo_text_white.png differ diff --git a/editor/resources/logo_text_white@2x.png b/editor/resources/logo_text_white@2x.png new file mode 100644 index 00000000..d3464ae7 Binary files /dev/null and b/editor/resources/logo_text_white@2x.png differ diff --git a/editor/src/editor/Editor.cpp b/editor/src/editor/Editor.cpp index 24503d1e..dd0f21ab 100644 --- a/editor/src/editor/Editor.cpp +++ b/editor/src/editor/Editor.cpp @@ -318,7 +318,8 @@ void Editor::Impl::createFrameContents() { CViewContainer* mainView; - SharedPointer iconWhite = owned(new CBitmap("logo_full_white.png")); + SharedPointer iconWhite = owned(new CBitmap("logo_text_white.png")); + SharedPointer background = owned(new CBitmap("background.png")); SharedPointer knob48 = owned(new CBitmap("knob48.png")); SharedPointer logoText = owned(new CBitmap("logo_text.png")); @@ -369,6 +370,7 @@ void Editor::Impl::createFrameContents() typedef CTextLabel ValueLabel; typedef CViewContainer VMeter; typedef SValueMenu ValueMenu; + typedef CViewContainer Background; #if 0 typedef CTextButton Button; #endif @@ -397,7 +399,7 @@ void Editor::Impl::createFrameContents() box->setBackgroundColor(theme->boxBackground); box->setTitleFontColor(theme->titleBoxText); box->setTitleBackgroundColor(theme->titleBoxBackground); - auto font = owned(new CFontDesc("ABeeZee", fontsize)); + auto font = owned(new CFontDesc("Roboto", fontsize)); font->setSize(fontsize); box->setTitleFont(font); return box; @@ -411,7 +413,7 @@ void Editor::Impl::createFrameContents() lbl->setBackColor(CColor(0x00, 0x00, 0x00, 0x00)); lbl->setFontColor(theme->text); lbl->setHoriAlign(align); - auto font = owned(new CFontDesc("ABeeZee", fontsize)); + auto font = owned(new CFontDesc("Roboto", fontsize)); font->setSize(fontsize); lbl->setFont(font); return lbl; @@ -432,7 +434,7 @@ void Editor::Impl::createFrameContents() lbl->setBackColor(CColor(0x00, 0x00, 0x00, 0x00)); lbl->setFontColor(theme->text); lbl->setHoriAlign(align); - auto font = owned(new CFontDesc("ABeeZee", fontsize)); + auto font = owned(new CFontDesc("Roboto", fontsize)); font->setSize(fontsize); lbl->setFont(font); return lbl; @@ -455,7 +457,7 @@ void Editor::Impl::createFrameContents() #endif auto createValueButton = [this, &theme](const CRect& bounds, int tag, const char* label, CHoriTxtAlign align, int fontsize) { CTextButton* button = new CTextButton(bounds, this, tag, label); - auto font = owned(new CFontDesc("ABeeZee", fontsize)); + auto font = owned(new CFontDesc("Roboto", fontsize)); font->setSize(fontsize); button->setFont(font); button->setTextAlignment(align); @@ -469,7 +471,7 @@ void Editor::Impl::createFrameContents() auto createValueMenu = [this, &theme](const CRect& bounds, int tag, const char*, CHoriTxtAlign align, int fontsize) { SValueMenu* vm = new SValueMenu(bounds, this, tag); vm->setHoriAlign(align); - auto font = owned(new CFontDesc("ABeeZee", fontsize)); + auto font = owned(new CFontDesc("Roboto", fontsize)); font->setSize(fontsize); vm->setFont(font); vm->setFontColor(theme->valueText); @@ -509,6 +511,11 @@ void Editor::Impl::createFrameContents() SPiano* piano = new SPiano(bounds); return piano; }; + auto createBackground = [&background](const CRect& bounds, int, const char*, CHoriTxtAlign, int) { + CViewContainer* container = new CViewContainer(bounds); + container->setBackground(background); + return container; + }; #include "layout/main.hpp" diff --git a/editor/src/editor/layout/main.hpp b/editor/src/editor/layout/main.hpp index c8e93a39..a91fc21c 100644 --- a/editor/src/editor/layout/main.hpp +++ b/editor/src/editor/layout/main.hpp @@ -1,153 +1,155 @@ /* This file is generated by the layout maker tool. */ LogicalGroup* const view__0 = createLogicalGroup(CRect(0, 0, 800, 475), -1, "", kCenterText, 14); mainView = view__0; -enterTheme(darkTheme); -LogicalGroup* const view__1 = createLogicalGroup(CRect(0, 0, 800, 110), -1, "", kCenterText, 14); +Background* const view__1 = createBackground(CRect(190, 110, 790, 390), -1, "", kCenterText, 14); view__0->addView(view__1); -RoundedGroup* const view__2 = createRoundedGroup(CRect(5, 4, 180, 105), -1, "", kCenterText, 14); -view__1->addView(view__2); -SfizzMainButton* const view__3 = createSfizzMainButton(CRect(5, 7, 170, 70), kTagFirstChangePanel+kPanelGeneral, "", kCenterText, 14); +enterTheme(darkTheme); +LogicalGroup* const view__2 = createLogicalGroup(CRect(0, 0, 800, 110), -1, "", kCenterText, 14); +view__0->addView(view__2); +RoundedGroup* const view__3 = createRoundedGroup(CRect(5, 4, 180, 105), -1, "", kCenterText, 14); view__2->addView(view__3); -HomeButton* const view__4 = createHomeButton(CRect(50, 71, 75, 96), kTagFirstChangePanel+kPanelGeneral, "", kCenterText, 24); -view__2->addView(view__4); -CCButton* const view__5 = createCCButton(CRect(75, 71, 100, 96), kTagFirstChangePanel+kPanelControls, "", kCenterText, 24); -view__2->addView(view__5); -SettingsButton* const view__6 = createSettingsButton(CRect(100, 71, 125, 96), kTagFirstChangePanel+kPanelSettings, "", kCenterText, 24); -view__2->addView(view__6); -RoundedGroup* const view__7 = createRoundedGroup(CRect(185, 5, 565, 105), -1, "", kCenterText, 14); -view__1->addView(view__7); -Label* const view__8 = createLabel(CRect(15, 8, 55, 38), -1, "File:", kCenterText, 16); -view__7->addView(view__8); -Label* const view__9 = createLabel(CRect(15, 40, 55, 70), -1, "KS:", kCenterText, 16); -view__7->addView(view__9); -HLine* const view__10 = createHLine(CRect(10, 36, 370, 41), -1, "", kCenterText, 14); -view__7->addView(view__10); -HLine* const view__11 = createHLine(CRect(10, 68, 370, 73), -1, "", kCenterText, 14); -view__7->addView(view__11); -Label* const view__12 = createLabel(CRect(80, 7, 310, 37), -1, "DefaultInstrument.sfz", kCenterText, 20); -sfzFileLabel_ = view__12; -view__7->addView(view__12); -Label* const view__13 = createLabel(CRect(80, 39, 310, 69), -1, "Key switch", kCenterText, 20); -view__7->addView(view__13); -Label* const view__14 = createLabel(CRect(10, 71, 70, 96), -1, "Voices:", kRightText, 12); -view__7->addView(view__14); -LoadFileButton* const view__15 = createLoadFileButton(CRect(315, 9, 340, 34), kTagLoadSfzFile, "", kCenterText, 24); -view__7->addView(view__15); -EditFileButton* const view__16 = createEditFileButton(CRect(340, 9, 365, 34), kTagEditSfzFile, "", kCenterText, 24); -view__7->addView(view__16); -Label* const view__17 = createLabel(CRect(75, 71, 125, 96), -1, "", kCenterText, 12); -infoVoicesLabel_ = view__17; -view__7->addView(view__17); -Label* const view__18 = createLabel(CRect(130, 71, 190, 96), -1, "Max:", kRightText, 12); -view__7->addView(view__18); -Label* const view__19 = createLabel(CRect(195, 71, 245, 96), -1, "", kCenterText, 12); -numVoicesLabel_ = view__19; -view__7->addView(view__19); -Label* const view__20 = createLabel(CRect(250, 71, 310, 96), -1, "Memory:", kRightText, 12); -view__7->addView(view__20); -Label* const view__21 = createLabel(CRect(315, 71, 365, 96), -1, "", kCenterText, 12); -memoryLabel_ = view__21; -view__7->addView(view__21); -RoundedGroup* const view__22 = createRoundedGroup(CRect(570, 5, 795, 105), -1, "", kCenterText, 14); -view__1->addView(view__22); -Knob48* const view__23 = createKnob48(CRect(45, 15, 93, 63), -1, "", kCenterText, 14); -view__22->addView(view__23); -view__23->setVisible(false); -ValueLabel* const view__24 = createValueLabel(CRect(40, 65, 100, 70), -1, "Center", kCenterText, 12); -view__22->addView(view__24); +SfizzMainButton* const view__4 = createSfizzMainButton(CRect(30, 5, 150, 65), kTagFirstChangePanel+kPanelGeneral, "", kCenterText, 14); +view__3->addView(view__4); +HomeButton* const view__5 = createHomeButton(CRect(44, 69, 69, 94), kTagFirstChangePanel+kPanelGeneral, "", kCenterText, 24); +view__3->addView(view__5); +CCButton* const view__6 = createCCButton(CRect(76, 69, 101, 94), kTagFirstChangePanel+kPanelControls, "", kCenterText, 24); +view__3->addView(view__6); +SettingsButton* const view__7 = createSettingsButton(CRect(107, 69, 132, 94), kTagFirstChangePanel+kPanelSettings, "", kCenterText, 24); +view__3->addView(view__7); +RoundedGroup* const view__8 = createRoundedGroup(CRect(185, 5, 565, 105), -1, "", kCenterText, 14); +view__2->addView(view__8); +Label* const view__9 = createLabel(CRect(15, 8, 55, 38), -1, "File:", kCenterText, 16); +view__8->addView(view__9); +Label* const view__10 = createLabel(CRect(15, 40, 55, 70), -1, "KS:", kCenterText, 16); +view__8->addView(view__10); +HLine* const view__11 = createHLine(CRect(10, 36, 370, 41), -1, "", kCenterText, 14); +view__8->addView(view__11); +HLine* const view__12 = createHLine(CRect(10, 68, 370, 73), -1, "", kCenterText, 14); +view__8->addView(view__12); +Label* const view__13 = createLabel(CRect(80, 7, 310, 37), -1, "DefaultInstrument.sfz", kCenterText, 20); +sfzFileLabel_ = view__13; +view__8->addView(view__13); +Label* const view__14 = createLabel(CRect(80, 39, 310, 69), -1, "Key switch", kCenterText, 20); +view__8->addView(view__14); +Label* const view__15 = createLabel(CRect(10, 71, 70, 96), -1, "Voices:", kRightText, 12); +view__8->addView(view__15); +LoadFileButton* const view__16 = createLoadFileButton(CRect(315, 9, 340, 34), kTagLoadSfzFile, "", kCenterText, 24); +view__8->addView(view__16); +EditFileButton* const view__17 = createEditFileButton(CRect(340, 9, 365, 34), kTagEditSfzFile, "", kCenterText, 24); +view__8->addView(view__17); +Label* const view__18 = createLabel(CRect(75, 71, 125, 96), -1, "", kCenterText, 12); +infoVoicesLabel_ = view__18; +view__8->addView(view__18); +Label* const view__19 = createLabel(CRect(130, 71, 190, 96), -1, "Max:", kRightText, 12); +view__8->addView(view__19); +Label* const view__20 = createLabel(CRect(195, 71, 245, 96), -1, "", kCenterText, 12); +numVoicesLabel_ = view__20; +view__8->addView(view__20); +Label* const view__21 = createLabel(CRect(250, 71, 310, 96), -1, "Memory:", kRightText, 12); +view__8->addView(view__21); +Label* const view__22 = createLabel(CRect(315, 71, 365, 96), -1, "", kCenterText, 12); +memoryLabel_ = view__22; +view__8->addView(view__22); +RoundedGroup* const view__23 = createRoundedGroup(CRect(570, 5, 795, 105), -1, "", kCenterText, 14); +view__2->addView(view__23); +Knob48* const view__24 = createKnob48(CRect(45, 15, 93, 63), -1, "", kCenterText, 14); +view__23->addView(view__24); view__24->setVisible(false); -Knob48* const view__25 = createKnob48(CRect(110, 15, 158, 63), kTagSetVolume, "", kCenterText, 14); -volumeSlider_ = view__25; -view__22->addView(view__25); -ValueLabel* const view__26 = createValueLabel(CRect(105, 65, 165, 87), -1, "0.0 dB", kCenterText, 12); -volumeLabel_ = view__26; -view__22->addView(view__26); -VMeter* const view__27 = createVMeter(CRect(175, 15, 210, 70), -1, "", kCenterText, 14); -view__22->addView(view__27); +ValueLabel* const view__25 = createValueLabel(CRect(40, 65, 100, 70), -1, "Center", kCenterText, 12); +view__23->addView(view__25); +view__25->setVisible(false); +Knob48* const view__26 = createKnob48(CRect(110, 15, 158, 63), kTagSetVolume, "", kCenterText, 14); +volumeSlider_ = view__26; +view__23->addView(view__26); +ValueLabel* const view__27 = createValueLabel(CRect(105, 65, 165, 87), -1, "0.0 dB", kCenterText, 12); +volumeLabel_ = view__27; +view__23->addView(view__27); +VMeter* const view__28 = createVMeter(CRect(175, 15, 210, 70), -1, "", kCenterText, 14); +view__23->addView(view__28); enterTheme(defaultTheme); -LogicalGroup* const view__28 = createLogicalGroup(CRect(5, 110, 796, 395), -1, "", kCenterText, 14); -subPanels_[kPanelGeneral] = view__28; -view__0->addView(view__28); -RoundedGroup* const view__29 = createRoundedGroup(CRect(0, 0, 175, 280), -1, "", kCenterText, 14); -view__28->addView(view__29); -Label* const view__30 = createLabel(CRect(15, 10, 75, 35), -1, "Curves:", kLeftText, 14); +LogicalGroup* const view__29 = createLogicalGroup(CRect(5, 110, 796, 395), -1, "", kCenterText, 14); +subPanels_[kPanelGeneral] = view__29; +view__0->addView(view__29); +RoundedGroup* const view__30 = createRoundedGroup(CRect(0, 0, 175, 280), -1, "", kCenterText, 14); view__29->addView(view__30); -Label* const view__31 = createLabel(CRect(15, 35, 75, 60), -1, "Masters:", kLeftText, 14); -view__29->addView(view__31); -Label* const view__32 = createLabel(CRect(15, 60, 75, 85), -1, "Groups:", kLeftText, 14); -view__29->addView(view__32); -Label* const view__33 = createLabel(CRect(15, 85, 75, 110), -1, "Regions:", kLeftText, 14); -view__29->addView(view__33); -Label* const view__34 = createLabel(CRect(15, 110, 75, 135), -1, "Samples:", kLeftText, 14); -view__29->addView(view__34); -Label* const view__35 = createLabel(CRect(115, 10, 155, 35), -1, "0", kCenterText, 14); -infoCurvesLabel_ = view__35; -view__29->addView(view__35); -Label* const view__36 = createLabel(CRect(115, 35, 155, 60), -1, "0", kCenterText, 14); -infoMastersLabel_ = view__36; -view__29->addView(view__36); -Label* const view__37 = createLabel(CRect(115, 60, 155, 85), -1, "0", kCenterText, 14); -infoGroupsLabel_ = view__37; -view__29->addView(view__37); -Label* const view__38 = createLabel(CRect(115, 85, 155, 110), -1, "0", kCenterText, 14); -infoRegionsLabel_ = view__38; -view__29->addView(view__38); -Label* const view__39 = createLabel(CRect(115, 110, 155, 135), -1, "0", kCenterText, 14); -infoSamplesLabel_ = view__39; -view__29->addView(view__39); -LogicalGroup* const view__40 = createLogicalGroup(CRect(5, 110, 795, 395), -1, "", kCenterText, 14); -subPanels_[kPanelControls] = view__40; -view__0->addView(view__40); -view__40->setVisible(false); -RoundedGroup* const view__41 = createRoundedGroup(CRect(0, 0, 790, 285), -1, "", kCenterText, 14); -view__40->addView(view__41); -Label* const view__42 = createLabel(CRect(0, 0, 790, 285), -1, "Controls not available", kCenterText, 40); +Label* const view__31 = createLabel(CRect(15, 10, 75, 35), -1, "Curves:", kLeftText, 14); +view__30->addView(view__31); +Label* const view__32 = createLabel(CRect(15, 35, 75, 60), -1, "Masters:", kLeftText, 14); +view__30->addView(view__32); +Label* const view__33 = createLabel(CRect(15, 60, 75, 85), -1, "Groups:", kLeftText, 14); +view__30->addView(view__33); +Label* const view__34 = createLabel(CRect(15, 85, 75, 110), -1, "Regions:", kLeftText, 14); +view__30->addView(view__34); +Label* const view__35 = createLabel(CRect(15, 110, 75, 135), -1, "Samples:", kLeftText, 14); +view__30->addView(view__35); +Label* const view__36 = createLabel(CRect(115, 10, 155, 35), -1, "0", kCenterText, 14); +infoCurvesLabel_ = view__36; +view__30->addView(view__36); +Label* const view__37 = createLabel(CRect(115, 35, 155, 60), -1, "0", kCenterText, 14); +infoMastersLabel_ = view__37; +view__30->addView(view__37); +Label* const view__38 = createLabel(CRect(115, 60, 155, 85), -1, "0", kCenterText, 14); +infoGroupsLabel_ = view__38; +view__30->addView(view__38); +Label* const view__39 = createLabel(CRect(115, 85, 155, 110), -1, "0", kCenterText, 14); +infoRegionsLabel_ = view__39; +view__30->addView(view__39); +Label* const view__40 = createLabel(CRect(115, 110, 155, 135), -1, "0", kCenterText, 14); +infoSamplesLabel_ = view__40; +view__30->addView(view__40); +LogicalGroup* const view__41 = createLogicalGroup(CRect(5, 110, 795, 395), -1, "", kCenterText, 14); +subPanels_[kPanelControls] = view__41; +view__0->addView(view__41); +view__41->setVisible(false); +RoundedGroup* const view__42 = createRoundedGroup(CRect(0, 0, 790, 285), -1, "", kCenterText, 14); view__41->addView(view__42); -LogicalGroup* const view__43 = createLogicalGroup(CRect(5, 109, 795, 395), -1, "", kCenterText, 14); -subPanels_[kPanelSettings] = view__43; -view__0->addView(view__43); -view__43->setVisible(false); -TitleGroup* const view__44 = createTitleGroup(CRect(255, 1, 535, 111), -1, "Engine", kCenterText, 12); -view__43->addView(view__44); -ValueMenu* const view__45 = createValueMenu(CRect(25, 60, 85, 85), kTagSetNumVoices, "", kCenterText, 12); -numVoicesSlider_ = view__45; +Label* const view__43 = createLabel(CRect(0, 0, 790, 285), -1, "Controls not available", kCenterText, 40); +view__42->addView(view__43); +LogicalGroup* const view__44 = createLogicalGroup(CRect(5, 109, 795, 395), -1, "", kCenterText, 14); +subPanels_[kPanelSettings] = view__44; +view__0->addView(view__44); +view__44->setVisible(false); +TitleGroup* const view__45 = createTitleGroup(CRect(255, 1, 535, 111), -1, "Engine", kCenterText, 12); view__44->addView(view__45); -ValueLabel* const view__46 = createValueLabel(CRect(15, 20, 95, 45), -1, "Polyphony", kCenterText, 12); -view__44->addView(view__46); -ValueMenu* const view__47 = createValueMenu(CRect(110, 60, 170, 85), kTagSetOversampling, "", kCenterText, 12); -oversamplingSlider_ = view__47; -view__44->addView(view__47); -ValueLabel* const view__48 = createValueLabel(CRect(100, 20, 180, 45), -1, "Oversampling", kCenterText, 12); -view__44->addView(view__48); -ValueLabel* const view__49 = createValueLabel(CRect(185, 20, 265, 45), -1, "Preload size", kCenterText, 12); -view__44->addView(view__49); -ValueMenu* const view__50 = createValueMenu(CRect(195, 60, 255, 85), kTagSetPreloadSize, "", kCenterText, 12); -preloadSizeSlider_ = view__50; -view__44->addView(view__50); -TitleGroup* const view__51 = createTitleGroup(CRect(200, 159, 590, 279), -1, "Tuning", kCenterText, 12); -view__43->addView(view__51); -ValueLabel* const view__52 = createValueLabel(CRect(125, 20, 205, 45), -1, "Root key", kCenterText, 12); -view__51->addView(view__52); -ValueMenu* const view__53 = createValueMenu(CRect(220, 60, 280, 85), kTagSetTuningFrequency, "", kCenterText, 12); -tuningFrequencySlider_ = view__53; -view__51->addView(view__53); -ValueLabel* const view__54 = createValueLabel(CRect(210, 20, 290, 45), -1, "Frequency", kCenterText, 12); -view__51->addView(view__54); -Knob48* const view__55 = createKnob48(CRect(310, 45, 358, 93), kTagSetStretchedTuning, "", kCenterText, 14); -stretchedTuningSlider_ = view__55; -view__51->addView(view__55); -ValueLabel* const view__56 = createValueLabel(CRect(295, 20, 375, 45), -1, "Stretch", kCenterText, 12); -view__51->addView(view__56); -ValueLabel* const view__57 = createValueLabel(CRect(20, 20, 120, 45), -1, "Scala file", kCenterText, 12); -view__51->addView(view__57); -ValueButton* const view__58 = createValueButton(CRect(20, 60, 120, 85), kTagLoadScalaFile, "DefaultScale", kCenterText, 12); -scalaFileButton_ = view__58; -view__51->addView(view__58); -ValueMenu* const view__59 = createValueMenu(CRect(135, 60, 170, 85), kTagSetScalaRootKey, "", kCenterText, 12); -scalaRootKeySlider_ = view__59; -view__51->addView(view__59); -ValueMenu* const view__60 = createValueMenu(CRect(170, 60, 200, 85), kTagSetScalaRootKey, "", kCenterText, 12); -scalaRootOctaveSlider_ = view__60; -view__51->addView(view__60); -Piano* const view__61 = createPiano(CRect(5, 400, 795, 470), -1, "", kCenterText, 14); -view__0->addView(view__61); +ValueMenu* const view__46 = createValueMenu(CRect(25, 60, 85, 85), kTagSetNumVoices, "", kCenterText, 12); +numVoicesSlider_ = view__46; +view__45->addView(view__46); +ValueLabel* const view__47 = createValueLabel(CRect(15, 20, 95, 45), -1, "Polyphony", kCenterText, 12); +view__45->addView(view__47); +ValueMenu* const view__48 = createValueMenu(CRect(110, 60, 170, 85), kTagSetOversampling, "", kCenterText, 12); +oversamplingSlider_ = view__48; +view__45->addView(view__48); +ValueLabel* const view__49 = createValueLabel(CRect(100, 20, 180, 45), -1, "Oversampling", kCenterText, 12); +view__45->addView(view__49); +ValueLabel* const view__50 = createValueLabel(CRect(185, 20, 265, 45), -1, "Preload size", kCenterText, 12); +view__45->addView(view__50); +ValueMenu* const view__51 = createValueMenu(CRect(195, 60, 255, 85), kTagSetPreloadSize, "", kCenterText, 12); +preloadSizeSlider_ = view__51; +view__45->addView(view__51); +TitleGroup* const view__52 = createTitleGroup(CRect(200, 159, 590, 279), -1, "Tuning", kCenterText, 12); +view__44->addView(view__52); +ValueLabel* const view__53 = createValueLabel(CRect(125, 20, 205, 45), -1, "Root key", kCenterText, 12); +view__52->addView(view__53); +ValueMenu* const view__54 = createValueMenu(CRect(220, 60, 280, 85), kTagSetTuningFrequency, "", kCenterText, 12); +tuningFrequencySlider_ = view__54; +view__52->addView(view__54); +ValueLabel* const view__55 = createValueLabel(CRect(210, 20, 290, 45), -1, "Frequency", kCenterText, 12); +view__52->addView(view__55); +Knob48* const view__56 = createKnob48(CRect(310, 45, 358, 93), kTagSetStretchedTuning, "", kCenterText, 14); +stretchedTuningSlider_ = view__56; +view__52->addView(view__56); +ValueLabel* const view__57 = createValueLabel(CRect(295, 20, 375, 45), -1, "Stretch", kCenterText, 12); +view__52->addView(view__57); +ValueLabel* const view__58 = createValueLabel(CRect(20, 20, 120, 45), -1, "Scala file", kCenterText, 12); +view__52->addView(view__58); +ValueButton* const view__59 = createValueButton(CRect(20, 60, 120, 85), kTagLoadScalaFile, "DefaultScale", kCenterText, 12); +scalaFileButton_ = view__59; +view__52->addView(view__59); +ValueMenu* const view__60 = createValueMenu(CRect(135, 60, 170, 85), kTagSetScalaRootKey, "", kCenterText, 12); +scalaRootKeySlider_ = view__60; +view__52->addView(view__60); +ValueMenu* const view__61 = createValueMenu(CRect(170, 60, 200, 85), kTagSetScalaRootKey, "", kCenterText, 12); +scalaRootOctaveSlider_ = view__61; +view__52->addView(view__61); +Piano* const view__62 = createPiano(CRect(5, 400, 795, 470), -1, "", kCenterText, 14); +view__0->addView(view__62);