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