geigr / jupyterlab-daw

Audio and music in JupyterLab
BSD 3-Clause "New" or "Revised" License
7 stars 0 forks source link

Interoperability with ipytone #2

Open benbovy opened 1 year ago

benbovy commented 1 year ago

One of the goals of this jupyterlab extension is to make it easier using ipytone by providing a few UI widgets so that we can check the global state (audio context, transport timeline) at a glance.

Ideally, when we do something like starting the transport timeline in a notebook using ipytone this should be immediately visible in the JupyterLab enhanced UI and vice-versa.

This means that somehow we need ipytone and jupyterlab-daw widgets to interact with each other in the Jupyterlab front-end. Not sure if that's easy, though, especially regarding packaging: https://github.com/jupyterlab/jupyterlab/issues/9807 and https://jupyterlab.readthedocs.io/en/stable/extension/extension_dev.html#deduplication-of-dependencies seem relevant.

benbovy commented 1 year ago

Perhaps the bridge between ipytone and jupyterlab-daw could be done via a 3rd-party component ipydaw, which similarly to ipylab would provide an ipywidget compatible layer to interact with jupyterlab-daw widgets.

This would keep ipytone and jupyterlab-daw independent from each other, as both could be used in different contexts. It requires both extensions be reusable by 3rd party extensions in the jupyterlab front-end (public API, packaging).

benbovy commented 1 year ago

Ideally, when we do something like starting the transport timeline in a notebook using ipytone this should be immediately visible in the JupyterLab enhanced UI and vice-versa.

For basic transport actions like start, stop and pause this is already possible by setting up Tonejs' Transport event listeners. Implemented in ec352d7.