@@ -366,111 +366,6 @@ void Sync::step() {
366366
367367}
368368
369- // TODO simulate button press on the UI
370-
371- struct SyncAux1ModeHandler : MenuItem {
372- Sync *module ;
373- int32_t mode;
374- void onAction (EventAction &e) override {
375- module ->virtualModule .syncUI .aux1Mode = mode;
376- module ->virtualModule .handleAux1ModeChange (mode);
377- module ->virtualModule .syncUI .storeMode (module ->virtualModule .syncUI .aux1Mode , AUX_MODE1_MASK, AUX_MODE1_SHIFT);
378- }
379- void step () override {
380- rightText = (module ->virtualModule .syncUI .aux1Mode == mode) ? " ✔" : " " ;
381- MenuItem::step ();
382- }
383- };
384-
385- struct SyncAux2ModeHandler : MenuItem {
386- Sync *module ;
387- int32_t mode;
388- void onAction (EventAction &e) override {
389- module ->virtualModule .syncUI .aux2Mode = mode;
390- module ->virtualModule .handleAux2ModeChange (mode);
391- module ->virtualModule .syncUI .storeMode (module ->virtualModule .syncUI .aux2Mode , AUX_MODE2_MASK, AUX_MODE2_SHIFT);
392- }
393- void step () override {
394- rightText = (module ->virtualModule .syncUI .aux2Mode == mode) ? " ✔" : " " ;
395- MenuItem::step ();
396- }
397- };
398-
399- struct SyncAux3ModeHandler : MenuItem {
400- Sync *module ;
401- int32_t mode;
402- void onAction (EventAction &e) override {
403- module ->virtualModule .syncUI .aux3Mode = mode;
404- module ->virtualModule .handleAux3ModeChange (mode);
405- module ->virtualModule .syncUI .storeMode (module ->virtualModule .syncUI .aux3Mode , AUX_MODE3_MASK, AUX_MODE3_SHIFT);
406- }
407- void step () override {
408- rightText = (module ->virtualModule .syncUI .aux3Mode == mode) ? " ✔" : " " ;
409- MenuItem::step ();
410- }
411- };
412-
413- struct SyncAux4ModeHandler : MenuItem {
414- Sync *module ;
415- int32_t mode;
416- void onAction (EventAction &e) override {
417- module ->virtualModule .syncUI .aux4Mode = mode;
418- module ->virtualModule .handleAux4ModeChange (mode);
419- module ->virtualModule .syncUI .storeMode (module ->virtualModule .syncUI .aux4Mode , AUX_MODE4_MASK, AUX_MODE4_SHIFT);
420- }
421- void step () override {
422- rightText = (module ->virtualModule .syncUI .aux4Mode == mode) ? " ✔" : " " ;
423- MenuItem::step ();
424- }
425-
426- };
427-
428- struct SyncRestorePresets : MenuItem {
429- Sync *module ;
430- ModuleWidget *moduleWidget;
431-
432- int32_t mode;
433- void onAction (EventAction &e) override {
434- std::string rootDir = assetLocal (" presets" );
435- systemCreateDirectory (rootDir);
436- std::string subDir = assetLocal (" presets/Via SYNC" );
437- systemCreateDirectory (subDir);
438-
439- float knob1Store = moduleWidget->params [Sync::KNOB1_PARAM]->value ;
440- float knob2Store = moduleWidget->params [Sync::KNOB2_PARAM]->value ;
441- float knob3Store = moduleWidget->params [Sync::KNOB3_PARAM]->value ;
442- float cv2AmtStore = moduleWidget->params [Sync::CV2AMT_PARAM]->value ;
443- float cv3AmtStore = moduleWidget->params [Sync::CV3AMT_PARAM]->value ;
444- float aStore = moduleWidget->params [Sync::A_PARAM]->value ;
445- float bStore = moduleWidget->params [Sync::B_PARAM]->value ;
446-
447- uint32_t currentState = module ->virtualModule .syncUI .modeStateBuffer ;
448-
449- moduleWidget->reset ();
450- module ->virtualModule .syncUI .modeStateBuffer = module ->virtualModule .syncUI .stockPreset1 ;
451- moduleWidget->save (" presets/Via SYNC/1 (Harmonic Osc).vcvm" );
452- module ->virtualModule .syncUI .modeStateBuffer = module ->virtualModule .syncUI .stockPreset2 ;
453- moduleWidget->save (" presets/Via SYNC/2 (Arpeggiated Osc).vcvm" );
454- module ->virtualModule .syncUI .modeStateBuffer = module ->virtualModule .syncUI .stockPreset3 ;
455- moduleWidget->save (" presets/Via SYNC/3 (Arpeggiated Osc BP).vcvm" );
456- module ->virtualModule .syncUI .modeStateBuffer = module ->virtualModule .syncUI .stockPreset4 ;
457- moduleWidget->save (" presets/Via SYNC/4 (Voct).vcvm" );
458- module ->virtualModule .syncUI .modeStateBuffer = module ->virtualModule .syncUI .stockPreset5 ;
459- moduleWidget->save (" presets/Via SYNC/5 (Sequence).vcvm" );
460- module ->virtualModule .syncUI .modeStateBuffer = module ->virtualModule .syncUI .stockPreset6 ;
461- moduleWidget->save (" presets/Via SYNC/6 (LFO).vcvm" );
462-
463- module ->virtualModule .syncUI .modeStateBuffer = currentState;
464- moduleWidget->params [Sync::KNOB1_PARAM]->setValue (knob1Store);
465- moduleWidget->params [Sync::KNOB2_PARAM]->setValue (knob2Store);
466- moduleWidget->params [Sync::KNOB3_PARAM]->setValue (knob3Store);
467- moduleWidget->params [Sync::CV2AMT_PARAM]->setValue (cv2AmtStore);
468- moduleWidget->params [Sync::CV3AMT_PARAM]->setValue (cv3AmtStore);
469- moduleWidget->params [Sync::A_PARAM]->setValue (aStore);
470- moduleWidget->params [Sync::B_PARAM]->setValue (bStore);
471-
472- }
473- };
474369
475370struct Sync_Widget : ModuleWidget {
476371
@@ -533,25 +428,113 @@ struct Sync_Widget : ModuleWidget {
533428 Sync *module = dynamic_cast <Sync*>(this ->module );
534429 assert (module );
535430
536- menu->addChild (construct<MenuLabel>());
537- menu->addChild (construct<MenuLabel>(&MenuLabel::text, " Logic Out" ));
538- menu->addChild (construct<SyncAux1ModeHandler>(&MenuItem::text, " High during attack" , &SyncAux1ModeHandler::module , module , &SyncAux1ModeHandler::mode, 0 ));
539- menu->addChild (construct<SyncAux1ModeHandler>(&MenuItem::text, " Delta" , &SyncAux1ModeHandler::module , module , &SyncAux1ModeHandler::mode, 1 ));
431+ struct SyncAux1ModeHandler : MenuItem {
432+ Sync *module ;
433+ int32_t mode;
434+ void onAction (EventAction &e) override {
435+ module ->virtualModule .syncUI .aux1Mode = mode;
436+ module ->virtualModule .handleAux1ModeChange (mode);
437+ module ->virtualModule .syncUI .storeMode (module ->virtualModule .syncUI .aux1Mode , AUX_MODE1_MASK, AUX_MODE1_SHIFT);
438+ }
439+ void step () override {
440+ rightText = (module ->virtualModule .syncUI .aux1Mode == mode) ? " ✔" : " " ;
441+ MenuItem::step ();
442+ }
443+ };
444+
445+ menu->addChild (MenuEntry::create ());
446+ menu->addChild (MenuLabel::create (" Logic Out" ));
447+ const std::string logicLabels[] = {
448+ " High during attack" ,
449+ " Delta"
450+ };
451+ for (int i = 0 ; i < (int ) LENGTHOF (logicLabels); i++) {
452+ SyncAux1ModeHandler *aux1Item = MenuItem::create<SyncAux1ModeHandler>(logicLabels[i], CHECKMARK (module ->virtualModule .syncUI .aux1Mode == i));
453+ aux1Item->module = module ;
454+ aux1Item->mode = i;
455+ menu->addChild (aux1Item);
456+ }
457+
458+ struct SyncAux2ModeHandler : MenuItem {
459+ Sync *module ;
460+ int32_t mode;
461+ void onAction (EventAction &e) override {
462+ module ->virtualModule .syncUI .aux2Mode = mode;
463+ module ->virtualModule .handleAux2ModeChange (mode);
464+ module ->virtualModule .syncUI .storeMode (module ->virtualModule .syncUI .aux2Mode , AUX_MODE2_MASK, AUX_MODE2_SHIFT);
465+ }
466+ void step () override {
467+ rightText = (module ->virtualModule .syncUI .aux2Mode == mode) ? " ✔" : " " ;
468+ MenuItem::step ();
469+ }
470+ };
540471
472+ menu->addChild (MenuLabel::create (" Signal Out" ));
473+ const std::string signalLabels[] = {
474+ " Triangle" ,
475+ " Contour"
476+ };
477+ for (int i = 0 ; i < (int ) LENGTHOF (signalLabels); i++) {
478+ SyncAux2ModeHandler *aux2Item = MenuItem::create<SyncAux2ModeHandler>(signalLabels[i], CHECKMARK (module ->virtualModule .syncUI .aux2Mode == i));
479+ aux2Item->module = module ;
480+ aux2Item->mode = i;
481+ menu->addChild (aux2Item);
482+ }
541483
542- menu->addChild (construct<MenuLabel>(&MenuLabel::text, " Alt output" ));
543- menu->addChild (construct<SyncAux2ModeHandler>(&MenuItem::text, " Triangle" , &SyncAux2ModeHandler::module , module , &SyncAux2ModeHandler::mode, 0 ));
544- menu->addChild (construct<SyncAux2ModeHandler>(&MenuItem::text, " Contour" , &SyncAux2ModeHandler::module , module , &SyncAux2ModeHandler::mode, 1 ));
484+ struct SyncAux3ModeHandler : MenuItem {
485+ Sync *module ;
486+ int32_t mode;
487+ void onAction (EventAction &e) override {
488+ module ->virtualModule .syncUI .aux3Mode = mode;
489+ module ->virtualModule .handleAux3ModeChange (mode);
490+ module ->virtualModule .syncUI .storeMode (module ->virtualModule .syncUI .aux3Mode , AUX_MODE3_MASK, AUX_MODE3_SHIFT);
491+ }
492+ void step () override {
493+ rightText = (module ->virtualModule .syncUI .aux3Mode == mode) ? " ✔" : " " ;
494+ MenuItem::step ();
495+ }
496+ };
545497
546- menu->addChild (construct<MenuLabel>(&MenuLabel::text, " Quadrature" ));
547- menu->addChild (construct<SyncAux3ModeHandler>(&MenuItem::text, " 0 degrees" , &SyncAux3ModeHandler::module , module , &SyncAux3ModeHandler::mode, 0 ));
548- menu->addChild (construct<SyncAux3ModeHandler>(&MenuItem::text, " 90 degrees" , &SyncAux3ModeHandler::module , module , &SyncAux3ModeHandler::mode, 1 ));
549- menu->addChild (construct<SyncAux3ModeHandler>(&MenuItem::text, " 180 degrees" , &SyncAux3ModeHandler::module , module , &SyncAux3ModeHandler::mode, 2 ));
550- menu->addChild (construct<SyncAux3ModeHandler>(&MenuItem::text, " 270 degrees" , &SyncAux3ModeHandler::module , module , &SyncAux3ModeHandler::mode, 3 ));
498+ menu->addChild (MenuLabel::create (" Quadrature" ));
499+ const std::string quadratureLabels[] = {
500+ " 0 degrees" ,
501+ " 90 degrees" ,
502+ " 180 degrees" ,
503+ " 270 degrees"
504+ };
505+ for (int i = 0 ; i < (int ) LENGTHOF (quadratureLabels); i++) {
506+ SyncAux3ModeHandler *aux3Item = MenuItem::create<SyncAux3ModeHandler>(quadratureLabels[i], CHECKMARK (module ->virtualModule .syncUI .aux3Mode == i));
507+ aux3Item->module = module ;
508+ aux3Item->mode = i;
509+ menu->addChild (aux3Item);
510+ }
511+
512+ struct SyncAux4ModeHandler : MenuItem {
513+ Sync *module ;
514+ int32_t mode;
515+ void onAction (EventAction &e) override {
516+ module ->virtualModule .syncUI .aux4Mode = mode;
517+ module ->virtualModule .handleAux4ModeChange (mode);
518+ module ->virtualModule .syncUI .storeMode (module ->virtualModule .syncUI .aux4Mode , AUX_MODE4_MASK, AUX_MODE4_SHIFT);
519+ }
520+ void step () override {
521+ rightText = (module ->virtualModule .syncUI .aux4Mode == mode) ? " ✔" : " " ;
522+ MenuItem::step ();
523+ }
551524
552- menu->addChild (construct<MenuLabel>(&MenuLabel::text, " Table mode" ));
553- menu->addChild (construct<SyncAux4ModeHandler>(&MenuItem::text, " Group-specific" , &SyncAux4ModeHandler::module , module , &SyncAux4ModeHandler::mode, 0 ));
554- menu->addChild (construct<SyncAux4ModeHandler>(&MenuItem::text, " Global" , &SyncAux4ModeHandler::module , module , &SyncAux4ModeHandler::mode, 1 ));
525+ };
526+
527+ menu->addChild (MenuLabel::create (" Wave Options" ));
528+ const std::string auxLabels[] = {
529+ " Group-specific" ,
530+ " Aux"
531+ };
532+ for (int i = 0 ; i < (int ) LENGTHOF (auxLabels); i++) {
533+ SyncAux4ModeHandler *aux4Item = MenuItem::create<SyncAux4ModeHandler>(auxLabels[i], CHECKMARK (module ->virtualModule .syncUI .aux4Mode == i));
534+ aux4Item->module = module ;
535+ aux4Item->mode = i;
536+ menu->addChild (aux4Item);
537+ }
555538
556539 struct PresetRecallItem : MenuItem {
557540 Sync *module ;
@@ -589,9 +572,8 @@ struct Sync_Widget : ModuleWidget {
589572 StockPresetItem *stockPresets = MenuItem::create<StockPresetItem>(" Stock presets" );
590573 stockPresets->module = module ;
591574 menu->addChild (stockPresets);
592-
593575
594- }
576+ }
595577
596578};
597579
0 commit comments