diff options
-rw-r--r-- | cli-project/pyproject.toml | 4 | ||||
-rw-r--r-- | cli-project/src/solo_tool_cli.py | 15 | ||||
-rw-r--r-- | solo-tool-project/pyproject.toml | 4 | ||||
-rw-r--r-- | solo-tool-project/src/solo_tool/handlers.py | 14 | ||||
-rw-r--r-- | solo-tool-project/src/solo_tool/midi_controller_launchpad_mini.py | 4 | ||||
-rw-r--r-- | solo-tool-project/test/midi_launchpad_mini_integrationtest.py | 8 | ||||
-rw-r--r-- | web-project/pyproject.toml | 4 |
7 files changed, 32 insertions, 21 deletions
diff --git a/cli-project/pyproject.toml b/cli-project/pyproject.toml index 3e2c855..489d1ec 100644 --- a/cli-project/pyproject.toml +++ b/cli-project/pyproject.toml @@ -8,9 +8,9 @@ authors = [ { name = "Eddy Pedroni", email = "epedroni@pm.me" }, ] description = "A CLI frontend for the solo_tool library" -requires-python = ">=3.12" +requires-python = ">=3.13" dependencies = [ - "solo_tool" + "solo_tool>=2.0" ] dynamic = ["version"] diff --git a/cli-project/src/solo_tool_cli.py b/cli-project/src/solo_tool_cli.py index 5cc1537..d0f39c1 100644 --- a/cli-project/src/solo_tool_cli.py +++ b/cli-project/src/solo_tool_cli.py @@ -3,6 +3,7 @@ import time from solo_tool import SoloTool from solo_tool.midi_controller_launchpad_mini import MidiController +from solo_tool.session_manager import loadSession def main(): args = sys.argv[1:] @@ -10,20 +11,16 @@ def main(): print("Please provide path to session file") sys.exit(1) - soloTool = SoloTool() - soloTool.loadSession(args[0]) - - def tick(): - soloTool.tick() - threading.Timer(0.1, tick).start() + soloTool = loadSession(args[0]) midiController = MidiController(soloTool) midiController.connect() try: - while(True): - time.sleep(0.1) - soloTool.tick() + while True: + raw = input("> ") + if raw == "q": + break except KeyboardInterrupt: pass finally: diff --git a/solo-tool-project/pyproject.toml b/solo-tool-project/pyproject.toml index 36d4891..7921be9 100644 --- a/solo-tool-project/pyproject.toml +++ b/solo-tool-project/pyproject.toml @@ -4,18 +4,18 @@ build-backend = "setuptools.build_meta" [project] name = "solo_tool" +version = "2.0" authors = [ { name = "Eddy Pedroni", email = "epedroni@pm.me" }, ] description = "A library for dissecting guitar solos" -requires-python = ">=3.12" +requires-python = ">=3.13" dependencies = [ "python-rtmidi", "sip", "mido", "python-vlc" ] -dynamic = ["version"] [project.optional-dependencies] dev = [ diff --git a/solo-tool-project/src/solo_tool/handlers.py b/solo-tool-project/src/solo_tool/handlers.py index 13e982b..0a4ee21 100644 --- a/solo-tool-project/src/solo_tool/handlers.py +++ b/solo-tool-project/src/solo_tool/handlers.py @@ -19,3 +19,17 @@ def positionToKeyPoint(st: SoloTool) -> Callable[[], None]: def f(): st.keyPoint = st.position return f + +def changeKeyPoint(st: SoloTool, delta: int) -> Callable[[], None]: + from bisect import bisect_right, bisect_left + def f(): + if delta > 0: + pivot = bisect_right(st.keyPoints, st.keyPoint) - 1 + elif delta < 0: + pivot = bisect_left(st.keyPoints, st.keyPoint) - 1 + else: + return + new = max(min(pivot + delta, len(st.keyPoints) - 1), 0) + st.keyPoint = st.keyPoints[new] + return f + diff --git a/solo-tool-project/src/solo_tool/midi_controller_launchpad_mini.py b/solo-tool-project/src/solo_tool/midi_controller_launchpad_mini.py index 3dc8ec6..6d2b5b2 100644 --- a/solo-tool-project/src/solo_tool/midi_controller_launchpad_mini.py +++ b/solo-tool-project/src/solo_tool/midi_controller_launchpad_mini.py @@ -35,8 +35,8 @@ class MidiController: 96 : self._soloTool.stop, 114 : self._soloTool.jump, 112 : self._playPause, - #118 : self._soloTool.previousStoredAbLimits, - #119 : self._soloTool.nextStoredAbLimits, + 118 : handlers.changeKeyPoint(self._soloTool, -1), + 119 : handlers.changeKeyPoint(self._soloTool, 1), 117 : handlers.positionToKeyPoint(self._soloTool), 48 : handlers.changeSong(self._soloTool, -1), 49 : handlers.seekRelative(self._soloTool, -0.25), diff --git a/solo-tool-project/test/midi_launchpad_mini_integrationtest.py b/solo-tool-project/test/midi_launchpad_mini_integrationtest.py index 9588f9f..9e8c92e 100644 --- a/solo-tool-project/test/midi_launchpad_mini_integrationtest.py +++ b/solo-tool-project/test/midi_launchpad_mini_integrationtest.py @@ -167,16 +167,16 @@ def test_previousAndNextKeyPositionButtons(uut, midiWrapperMock, soloTool, playe assert soloTool.keyPoint == 0.0 midiWrapperMock.simulateInput(nextKeyPositionButton) - soloTool.keyPoint == 0.1 + assert soloTool.keyPoint == 0.1 midiWrapperMock.simulateInput(nextKeyPositionButton) - soloTool.keyPoint == 0.2 + assert soloTool.keyPoint == 0.2 midiWrapperMock.simulateInput(previousKeyPositionButton) - soloTool.keyPoint == 0.1 + assert soloTool.keyPoint == 0.1 midiWrapperMock.simulateInput(previousKeyPositionButton) - soloTool.keyPoint == 0.1 + assert soloTool.keyPoint == 0.1 def test_playbackRateButtons(uut, midiWrapperMock, soloTool, playerMock): playbackRateOptions = { diff --git a/web-project/pyproject.toml b/web-project/pyproject.toml index 440812e..844de72 100644 --- a/web-project/pyproject.toml +++ b/web-project/pyproject.toml @@ -8,10 +8,10 @@ authors = [ { name = "Eddy Pedroni", email = "epedroni@pm.me" }, ] description = "A NiceGUI-based web frontend for the solo_tool library" -requires-python = ">=3.12" +requires-python = ">=3.13" dependencies = [ "nicegui==2.11.1", - "solo_tool" + "solo_tool>=2.0" ] dynamic = ["version"] |