EMF_Camp_Badge/synth/main.py

68 lines
1.7 KiB
Python

"""BEEP BEEP!
Todo: fix this, it doesn't work at at the moment
"""
___name___ = "Synthesizers"
___license___ = "MIT"
___categories___ = ["Sound"]
___dependencies___ = ["speaker", "buttons", "ugfx_helper", "app"]
import ugfx, speaker, ugfx_helper
from tilda import Buttons
from buttons import *
from app import restart_to_default
ugfx_helper.init()
speaker.enabled(True)
octave = 4
def mode_buttons():
global octave
print("mode: buttons")
notes = {
Buttons.BTN_1: "C",
Buttons.BTN_2: "C#",
Buttons.BTN_3: "D",
Buttons.BTN_4: "D#",
Buttons.BTN_5: "E",
Buttons.BTN_6: "F",
Buttons.BTN_7: "F#",
Buttons.BTN_8: "G",
Buttons.BTN_9: "G#",
Buttons.BTN_Star: "A",
Buttons.BTN_0: "A#",
Buttons.BTN_Hash: "B"
}
render_ui()
alive = True
while alive:
note_to_play = None
for btn, note in notes.items():
if is_pressed(btn):
note_to_play = note
break
if note_to_play:
speaker.note("{}{}".format(note_to_play, octave))
else:
speaker.stop()
if is_triggered(Buttons.BTN_Menu):
return
if is_triggered(Buttons.JOY_Up):
octave = min(6, max(0, octave+1))
render_ui()
if is_triggered(Buttons.JOY_Down):
octave = min(6, max(0, octave-1))
render_ui()
def render_ui():
ugfx.clear()
ugfx.text(5, 5, "Synth", ugfx.BLACK)
ugfx.text(5, 30, "Use the buttons >", ugfx.BLACK)
ugfx.text(5, 80, "Octave: {}".format(octave), ugfx.BLUE)
mode_buttons() # Todo: Allow different modes and allow users to switch between them via joystick or something
restart_to_default()