diff options
Diffstat (limited to 'web-project/src/solo_tool_web.py')
| -rw-r--r-- | web-project/src/solo_tool_web.py | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/web-project/src/solo_tool_web.py b/web-project/src/solo_tool_web.py index 3c68585..02ffdac 100644 --- a/web-project/src/solo_tool_web.py +++ b/web-project/src/solo_tool_web.py @@ -10,6 +10,9 @@ from urllib.parse import unquote 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 recording import recordingControls def fileName(path: str) -> str: return unquote(basename(splitext(path)[0])) @@ -30,6 +33,7 @@ def songList(st: SoloTool, songDrawer) -> None: sessions = {} sessionManager = None midiPedal = ActitionController() +recorder = Recorder(1024, 48000) def makeKeyboardHandler(st: SoloTool): def handleKey(e: events.KeyEventArguments): @@ -103,15 +107,17 @@ def sessionPage(sessionId: str): ui.button(icon='undo', on_click=st.jump, color='secondary').props(f"size={buttonSize}").style('flex: 2') ui.button(icon='skip_next', on_click=handlers.songRelative(st, 1)).props(f"size={buttonSize}").style('flex: 1') - # Playback rate + # Volume slider + with ui.row().classes('w-full justify-between no-wrap items-center'): + volumeLabels = ",".join([f"{v}:'{int(v*100)}%'" for v in [0.0, 0.25, 0.5, 0.75, 1.0, 1.25]]) + ui.slider(min=0, max=1.25, step=0.01).bind_value(st, 'volume').props(f':marker-labels="{{{volumeLabels}}}"').classes('q-px-md') + + # Playback rate and recording controls with ui.row().classes('w-full justify-between no-wrap items-center'): markerLabels = ",".join([f"{v}:'{v}x'" for v in [0.4, 0.6, 0.8, 1.0, 1.2]]) ui.slider(min=0.4, max=1.2, step=0.05).bind_value(st, 'rate').props(f'snap markers :marker-labels="{{{markerLabels}}}"').classes('q-px-md') - # Volume - with ui.row().classes('w-full justify-between no-wrap items-center'): - volumeLabels = ",".join([f"{v}:'{int(v*100)}%'" for v in [0.0, 0.25, 0.5, 0.75, 1.0, 1.25]]) - ui.slider(min=0, max=1.25, step=0.01).bind_value(st, 'volume').props(f':marker-labels="{{{volumeLabels}}}"').classes('q-px-md') + recordingControls(st, recorder, sessionManager) @ui.page('/') def landingPage(): @@ -151,4 +157,4 @@ def main(port, refresh, reload, session_path): # Hardcoded dev settings if __name__ in {"__main__", "__mp_main__"}: start(8080, 0.5, False, "https://files.0xf7.com") - #start(8080, 0.5, True, "/home/eddy/music/sessions") + #start(8080, 0.5, True, "/home/eddy/music") |
