aboutsummaryrefslogtreecommitdiffstats
path: root/web-project/src/solo_tool_web.py
diff options
context:
space:
mode:
Diffstat (limited to 'web-project/src/solo_tool_web.py')
-rw-r--r--web-project/src/solo_tool_web.py20
1 files changed, 16 insertions, 4 deletions
diff --git a/web-project/src/solo_tool_web.py b/web-project/src/solo_tool_web.py
index 98cb9df..4a3de3a 100644
--- a/web-project/src/solo_tool_web.py
+++ b/web-project/src/solo_tool_web.py
@@ -11,6 +11,7 @@ from solo_tool import SoloTool, handlers
from solo_tool.session_manager import SessionManager
from solo_tool.midi_controller_actition import ActitionController
from solo_tool.recorder import Recorder
+from solo_tool.metronome import Metronome
from recording import recordingControls
@@ -34,6 +35,7 @@ sessions = {}
sessionManager = None
midiPedal = ActitionController()
recorder = None
+metronome = None
def makeKeyboardHandler(st: SoloTool):
restartOrPrevious = handlers.restartOrPreviousSong(st, 0.01)
@@ -87,10 +89,19 @@ def sessionPage(sessionId: str):
ui.button(icon='menu', on_click=lambda: songDrawer.toggle()).props('flat dense round color=white')
ui.label().bind_text_from(st, 'song', lambda index: fileName(st.songs[index]) if index is not None else "Select a song").classes('text-lg')
with ui.row().classes('items-center justify-start'):
- ui.button(icon='home', on_click=lambda: ui.navigate.to("/")).props('flat dense round color=white')
+ buttonSize = "20px"
+ bpm = ui.number(value=90, precision=0, min=10, max=300)
+ def toggleMetronome():
+ if metronome.running: metronome.stop()
+ else: metronome.start(bpm.value, 600)
+ ui.button(on_click=toggleMetronome) \
+ .props(f'flat dense round color=white size={buttonSize}') \
+ .bind_icon_from(metronome, "running", lambda running: "timer_off" if running else "timer")
+
+ ui.button(icon='home', on_click=lambda: ui.navigate.to("/")).props(f'flat dense round color=white size={buttonSize}')
def save(): sessionManager.saveSession(st, sessionId)
- ui.button(icon='save', on_click=save).props('flat dense round color=white')
- ui.button(icon='fullscreen', on_click=fullscreen.toggle).props('flat dense round color=white')
+ ui.button(icon='save', on_click=save).props(f'flat dense round color=white size={buttonSize}')
+ ui.button(icon='fullscreen', on_click=fullscreen.toggle).props(f'flat dense round color=white size={buttonSize}')
# Key points list
with ui.right_drawer(top_corner=True, bottom_corner=True).props('width=120 behavior=desktop'):
@@ -148,9 +159,10 @@ def landingPage():
ui.button(id, on_click=partial(ui.navigate.to, f"/{id}"))
def start(port, refresh, reload, sessionPath, bufferSize, samplingRate):
- global sessionManager, recorder
+ global sessionManager, recorder, metronome
sessionManager = SessionManager(sessionPath)
recorder = Recorder(bufferSize, samplingRate)
+ metronome = Metronome(bufferSize, samplingRate)
for id in sessionManager.getSessions():
songTool = sessionManager.loadSession(id)