From 600972fad61a71a9e6dcd77c97a954e728ed3723 Mon Sep 17 00:00:00 2001 From: iggy <iggy@muc.ccc.de> Date: Sat, 10 Jun 2023 02:44:18 +0200 Subject: [PATCH] py: added crazysynth, small improvements to tinysynth, added demos back to main menu --- python_payload/apps/flow3r/menu_crazysynth.py | 94 +++++++++++++++++++ python_payload/apps/flow3r/menu_main.py | 34 +++---- python_payload/apps/flow3r/menu_tinysynth.py | 8 +- 3 files changed, 118 insertions(+), 18 deletions(-) create mode 100644 python_payload/apps/flow3r/menu_crazysynth.py diff --git a/python_payload/apps/flow3r/menu_crazysynth.py b/python_payload/apps/flow3r/menu_crazysynth.py new file mode 100644 index 0000000000..9f41efcdaa --- /dev/null +++ b/python_payload/apps/flow3r/menu_crazysynth.py @@ -0,0 +1,94 @@ +from synth import tinysynth + +from st3m import menu,event,control,ui +from st3m.system import hardware,audio + +synths = [tinysynth(440,0),tinysynth(440,0),tinysynth(440,0)] +#synth = tinysynth(440,0) + +def set_play(value): + print ("set_controls_overlay") + if value: + for synth in synths: synth.start() + else: + for synth in synths: synth.stop() + +the_freq = 440 + +def set_frequency(value): + global the_freq + the_freq = value + for synth in synths: + synth.freq(the_freq) + +def set_pitch0(value): + synths[0].freq(the_freq+the_freq*value) + +def set_pitch1(value): + synths[1].freq(the_freq+the_freq*value) + +def set_pitch2(value): + synths[2].freq(the_freq+the_freq*value) + +def get_menu(): + m = menu.Menu("crazysynth") + + freq=control.ControlKnob( + name="freq", + on_set=set_frequency, + default=the_freq, + min=220,max=440*4,step=10 + ) + #m.add_petal(menu.MenuItemControl("freq",freq), petal_index=7) + m.add(menu.MenuItemControl("freq",freq)) + + m.add(menu.MenuItemControl("mute",control.ControlSwitch( + name="mute", + on_set=audio.set_mute, + on_get=audio.get_mute + ))) + + pitch0 = control.ControlSlide( + name="pitch", + on_set=set_pitch0, + default=0, + min=-0.5,max=0.5 + ) + m.add_petal(menu.MenuItemControl("pitch0",pitch0), petal_index=3) + + pitch1 = control.ControlSlide( + name="pitch", + on_set=set_pitch1, + default=0, + min=-0.5,max=0.5 + ) + m.add_petal(menu.MenuItemControl("pitch1",pitch1), petal_index=5) + + pitch2 = control.ControlSlide( + name="pitch", + on_set=set_pitch2, + default=0, + min=-0.5,max=0.5 + ) + m.add_petal(menu.MenuItemControl("pitch2",pitch2), petal_index=7) + + vol = control.ControlKnob(name="vol", + on_mod=audio.adjust_volume_dB, + on_get=audio.get_volume_relative + ) + + mi_vol = menu.MenuItemControl("volume",vol) + + m.add(mi_vol) + #m.add_petal(mi_vol,1) + + play = control.ControlSwitch(name="play",on_set=set_play,default=False) + #m.add_petal(menu.MenuItemControl("play",play), petal_index=5) + m.add(menu.MenuItemControl("play",play)) + + m.ui.r = 60 + return m + + + +m = get_menu() \ No newline at end of file diff --git a/python_payload/apps/flow3r/menu_main.py b/python_payload/apps/flow3r/menu_main.py index 9aa7e1c0f2..e13df1a0e7 100644 --- a/python_payload/apps/flow3r/menu_main.py +++ b/python_payload/apps/flow3r/menu_main.py @@ -1,8 +1,8 @@ from st3m import menu,event,control from apps import demo_worms, cap_touch_demo -#from apps import demo_sparabo, melodic_demo, harmonic_demo -from apps.flow3r import menu_settings,menu_tinysynth +from apps import demo_sparabo, melodic_demo, harmonic_demo +from apps.flow3r import menu_settings,menu_tinysynth,menu_crazysynth import time @@ -13,32 +13,32 @@ def get_menu(): menu_apps = menu.Menu("apps") menu_music = menu.Menu("music") - #Skipping for mem constraints - #for app_module in [demo_sparabo,melodic_demo,harmonic_demo]: - # menu_music.add(menu.MenuItemApp(app_module.app)) + for app_module in [demo_sparabo,melodic_demo,harmonic_demo]: + menu_music.add(menu.MenuItemApp(app_module.app)) for app_module in [demo_worms,cap_touch_demo,]: menu_apps.add(menu.MenuItemApp(app_module.app)) - #testmenu = menu.Menu("test") + testmenu = menu.Menu("test") - #item_add = menu.MenuItem("+") - #item_add.action = lambda x: testmenu.add(menu.MenuItem("new {}".format(len(testmenu.items)))) + item_add = menu.MenuItem("+") + item_add.action = lambda x: testmenu.add(menu.MenuItem("new {}".format(len(testmenu.items)))) - #item_sub = menu.MenuItem("-") - #item_sub.action = lambda x: testmenu.pop() if len(testmenu.items) > 4 else None + item_sub = menu.MenuItem("-") + item_sub.action = lambda x: testmenu.pop() if len(testmenu.items) > 4 else None - #item_foo = menu.MenuItem("foo") - #testmenu.add(item_foo) - #testmenu.add(item_sub) - #testmenu.add(item_add) - #menu_badge.add(menu.MenuItemSubmenu(testmenu)) + item_foo = menu.MenuItem("foo") + testmenu.add(item_foo) + testmenu.add(item_sub) + testmenu.add(item_add) + menu_badge.add(menu.MenuItemSubmenu(testmenu)) menu_main.add(menu.MenuItemSubmenu(menu_badge)) menu_main.add(menu.MenuItemSubmenu(menu_apps)) - #menu_main.add(menu.MenuItemSubmenu(menu_music)) + menu_main.add(menu.MenuItemSubmenu(menu_music)) menu_main.add(menu.MenuItemSubmenu(menu_settings.get_menu())) - menu_main.add(menu.MenuItemSubmenu(menu_tinysynth.get_menu())) + menu_music.add(menu.MenuItemSubmenu(menu_tinysynth.get_menu())) + menu_music.add(menu.MenuItemSubmenu(menu_crazysynth.get_menu())) return menu_main diff --git a/python_payload/apps/flow3r/menu_tinysynth.py b/python_payload/apps/flow3r/menu_tinysynth.py index 70c67a3a82..ec2d70e148 100644 --- a/python_payload/apps/flow3r/menu_tinysynth.py +++ b/python_payload/apps/flow3r/menu_tinysynth.py @@ -26,7 +26,12 @@ def set_pitch(value): def get_menu(): m = menu.Menu("tinysynth") - + m.add(menu.MenuItemControl("mute",control.ControlSwitch( + name="mute", + on_set=audio.set_mute, + on_get=audio.get_mute + ))) + freq=control.ControlKnob( name="freq", on_set=set_frequency, @@ -58,6 +63,7 @@ def get_menu(): play = control.ControlSwitch(name="play",on_set=set_play,default=False) m.add_petal(menu.MenuItemControl("play",play), petal_index=5) + m.ui.r = 60 return m -- GitLab