Skip to main content

Control napari with a MIDI controller.

Project description

midi-app-controller

codecov Documentation Status PyPI version

midi-app-controller is an app, that allows user to control all applications using 'pyapp-kit/app-model' with a USB MIDI controller.

Documentation

Documentation at https://midi-app-controller.readthedocs.io/en/latest/.

Usage (napari)

MIDI App Controller is a package designed to integrate MIDI controllers with Python Qt apps using app-model. As of now, it is used most commonly with napari, a viewer for multi-dimensional images. We will show how to use MIDI App Controller with napari but getting started with other applications should look very similar.

Installation

To install MIDI App Controller in your environment (where Python and napari are already installed), use this command:

pip install midi-app-controller

napari will automatically detect the package and install the plugin next time it starts.

To install the newest development version, clone the GitHub repo and install it as a local package.

Setup

Launch the plugin from the Plugins menu.

A panel will open to the side.

Controller

If your MIDI controller is supported out of the box, you can simply select the appropriate model. If not, you will need to tell MIDI App Controller how to interact with this model of controller by creating a controller schema.

Once you have selected the controller schema, you can select binds schema.

MIDI ports

If they haven't been selected automatically, select MIDI input and output ports that correspond to your physical controller.

Start handling

After a controller and bindings are selected, you can click "Start handling". This will start a thread that listens to all input from the controller and invokes appropriate commands. You can close the panel with the settings, the thread will work in the background until you click "Stop handling".

Edit binds

Click "Edit binds" to open dialog where you can configure bindings by choosing which physical buttons and knobs on your controller correspond to which commands in the application. Think of it like configuring keyboard shortcuts.

All configurations are simple YAML files which you can copy, share, or edit manually. You can click "Reveal in explorer" to see the exact location of the currently chosen config file. You shouldn't edit built-in presets stored in the package directory; when you edit a built-in preset in the graphical user interface, a copy will automatically be created.

After you save changes, if you have already started handling, you need to click "Restart handling" to start a new server with the changes applied.

Usage without GUI

The library can be also controlled using the singleton of StateManager class:

from midi_app_controller.state.state_manager import get_state_manager

state = get_state_manager()
# Now the library can be controlled using `state`.

Development

Installing

python3 -m pip install -e .

Testing

python3 -m pip install -e .[testing]
python3 -m pytest --cov .

Testing docs

mkdocs serve -a localhost:8080

Using pre-commit

python3 -m pip install -e .[dev]
pre-commit install

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

midi_app_controller-0.1.0rc0.tar.gz (149.1 kB view details)

Uploaded Source

Built Distribution

midi_app_controller-0.1.0rc0-py3-none-any.whl (159.2 kB view details)

Uploaded Python 3

File details

Details for the file midi_app_controller-0.1.0rc0.tar.gz.

File metadata

  • Download URL: midi_app_controller-0.1.0rc0.tar.gz
  • Upload date:
  • Size: 149.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for midi_app_controller-0.1.0rc0.tar.gz
Algorithm Hash digest
SHA256 ab30271df380d9d0d59f4b4ac369b8edef16c074e0a7473d8ee69dc668e7e1ac
MD5 00322f7acec4d096f5fc300cfc80fb92
BLAKE2b-256 4a6dec5bff3f0bd5a36f71db6a0adf48681508d3b08acb50b36c3d48f45775eb

See more details on using hashes here.

Provenance

The following attestation bundles were made for midi_app_controller-0.1.0rc0.tar.gz:

Publisher: publish.yml on napari/midi-app-controller

Attestations:

File details

Details for the file midi_app_controller-0.1.0rc0-py3-none-any.whl.

File metadata

File hashes

Hashes for midi_app_controller-0.1.0rc0-py3-none-any.whl
Algorithm Hash digest
SHA256 740e7363106aa18aef1215f3ee98a1801cfdfacf791b48250fc19bae98c5e2e1
MD5 330ca06688ee188d5eb8cf080078b5ef
BLAKE2b-256 c9342e0a9962b1782b33e1c81641d3639fd6722714c46da3db582ca8eabfde9b

See more details on using hashes here.

Provenance

The following attestation bundles were made for midi_app_controller-0.1.0rc0-py3-none-any.whl:

Publisher: publish.yml on napari/midi-app-controller

Attestations:

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page