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.py18
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")