diff options
Diffstat (limited to 'web-project/src/solo_tool_web.py')
| -rw-r--r-- | web-project/src/solo_tool_web.py | 20 |
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) |
