aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cli-project/pyproject.toml4
-rw-r--r--cli-project/src/solo_tool_cli.py15
-rw-r--r--solo-tool-project/pyproject.toml4
-rw-r--r--solo-tool-project/src/solo_tool/handlers.py14
-rw-r--r--solo-tool-project/src/solo_tool/midi_controller_launchpad_mini.py4
-rw-r--r--solo-tool-project/test/midi_launchpad_mini_integrationtest.py8
-rw-r--r--web-project/pyproject.toml4
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"]