Compare commits
2 Commits
08e4b9e8bd
...
ac6a049516
| Author | SHA1 | Date | |
|---|---|---|---|
| ac6a049516 | |||
| caaa055c8a |
@@ -1,9 +1,4 @@
|
||||
"""
|
||||
AbletonOSC — full Ableton Live 11 OSC remote script.
|
||||
Ableton calls create_instance() to instantiate the control surface.
|
||||
"""
|
||||
from .manager import Manager
|
||||
|
||||
|
||||
def create_instance(c_instance):
|
||||
return Manager(c_instance)
|
||||
try:
|
||||
from .manager import Manager
|
||||
except ImportError:
|
||||
pass
|
||||
|
||||
+27
-10
@@ -9,7 +9,8 @@ import sys
|
||||
try:
|
||||
from ableton.v2.control_surface import ControlSurface
|
||||
except ImportError:
|
||||
# Allow importing outside of Ableton for tooling
|
||||
from contextlib import contextmanager
|
||||
|
||||
class ControlSurface: # type: ignore
|
||||
def __init__(self, c_instance=None):
|
||||
self._c_instance = c_instance
|
||||
@@ -29,6 +30,16 @@ except ImportError:
|
||||
def log_message(self, msg):
|
||||
print(msg)
|
||||
|
||||
def show_message(self, msg):
|
||||
print(msg)
|
||||
|
||||
def schedule_message(self, delay, callback):
|
||||
pass
|
||||
|
||||
@contextmanager
|
||||
def component_guard(self):
|
||||
yield
|
||||
|
||||
from .osc_server import OSCServer
|
||||
from .song import SongHandler
|
||||
from .track import TrackHandler
|
||||
@@ -52,12 +63,17 @@ class Manager(ControlSurface):
|
||||
def __init__(self, c_instance=None):
|
||||
super().__init__(c_instance)
|
||||
self._setup_logging()
|
||||
self.osc_server = OSCServer(listen_port=LISTEN_PORT, send_port=SEND_PORT)
|
||||
self._handlers = []
|
||||
self._setup_handlers()
|
||||
self.osc_server.start()
|
||||
logger.info("AbletonOSC started (listen=%d, send=%d)", LISTEN_PORT, SEND_PORT)
|
||||
self.osc_server.send("/live/startup", ())
|
||||
try:
|
||||
self.osc_server = OSCServer(listen_port=LISTEN_PORT, send_port=SEND_PORT)
|
||||
self.osc_server.start()
|
||||
self._setup_handlers()
|
||||
self.show_message("AbletonOSC: Listening on port %d" % LISTEN_PORT)
|
||||
logger.info("AbletonOSC started (listen=%d, send=%d)", LISTEN_PORT, SEND_PORT)
|
||||
self.osc_server.send("/live/startup", ())
|
||||
except OSError as e:
|
||||
self.show_message("AbletonOSC: Couldn't bind to port %d (%s)" % (LISTEN_PORT, e))
|
||||
logger.error("Couldn't bind to port %d: %s", LISTEN_PORT, e)
|
||||
|
||||
# ------------------------------------------------------------------
|
||||
|
||||
@@ -81,10 +97,11 @@ class Manager(ControlSurface):
|
||||
BrowserHandler,
|
||||
GrooveHandler,
|
||||
]
|
||||
for cls in handler_classes:
|
||||
h = cls(self)
|
||||
h.init_api()
|
||||
self._handlers.append(h)
|
||||
with self.component_guard():
|
||||
for cls in handler_classes:
|
||||
h = cls(self)
|
||||
h.init_api()
|
||||
self._handlers.append(h)
|
||||
|
||||
# Control endpoints
|
||||
self.osc_server.add_handler("/live/test", self._handle_test)
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
try:
|
||||
from .AbletonOSC.manager import Manager
|
||||
except ImportError:
|
||||
# Allows pytest to import without Ableton's runtime present
|
||||
pass
|
||||
|
||||
|
||||
def create_instance(c_instance):
|
||||
return Manager(c_instance)
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
[build-system]
|
||||
requires = ["setuptools>=68"]
|
||||
build-backend = "setuptools.backends.legacy:build"
|
||||
requires = ["setuptools>=68", "wheel"]
|
||||
build-backend = "setuptools.build_meta"
|
||||
|
||||
[project]
|
||||
name = "ableton-osc"
|
||||
|
||||
Reference in New Issue
Block a user