Skip to main content

Configuration tool for Korg nanoKontrol Studio

Project description

Korg™ nanoKONTROL Studio™ config tool

While there exists MIDI protocol specification for other Korg™ nano* products like nanoKONTROL™ or nanoKONTROL2™, we have nothing for the more modern nanoKONTROL Studio™ (and thus no tools like Nano-Basket for the nanoKONTROL Studio™

This project provides a CLI tool for reading and writing configuration from and to YAML based config files plus a basis for future nanoKONTROL Studio™ based projects which need to talk to the device using the proprietary MIDI based protocol.

Install and use

You can either install nanokontrol-config via pipx

# have pipx installed first
pipx install nanokontrol-config
nanokontrol-config ...

.. simply run it via uvx provided by the uv package

# have uv installed first
uvx nanokontrol-config ...

.. or checkout the project and run it via uv run

# have git and uv installed first
git clone https://github.com/frans-fuerst/nanokontrol-config.git
cd nanokontrol-config
uv run nanokontrol-config ...

If you are running into problems installing python-rtmidi, try to provide pkg-config and libasound2-dev (or similar) before installing nanokontrol-config.

With all approaches you get an entry point nanokontrol-config with the following syntax:

nanokontrol-config [<global-opts>] <CMD> [<command-opts>]

Exporting the config

Read the current config from your attached nanoKONTROL Studio™ device and save it to a YAML file.

nanokontrol-config e[xport] [-o|--output current-config.yaml]

Sending the config

Read a YAML file and push it to your (attached) device:

nanokontrol-config s[et] [-i|--input modified-config.yaml]

Patching the config

NOT YET IMPLEMENTED

Read just a sparse config (only implementing the modifications you need) and apply it to the configuration currently stored on your device:

nanokontrol-config p[atch] [-i|--input sparse-config.yaml]

Disclaimer

I'm not affiliated in any way with Korg™ and this project is solely based on reverse engineering MIDI I/O.

Of course using this tool is fully your own risk - I hereby refuse any responsibility for any damages.

License

See [License.md].

Contribution

Initialize

git clone https://github.com/frans-fuerst/nanokontrol-config.git
cd nanokontrol-config
uv run pre-commit install

Manually run checks and fixes

# run all checks which would be executed on commit, but on unstaged stuff, too
uv run pre-commit run --hook-stage pre-commit --all-files
# run all type checking (mypy) on current (unstaged) state
uv run pre-commit run check-python-typing --all-files
uv run pre-commit run check-python-linting --all-files
uv run pre-commit run check-python-format --all-files
uv run pre-commit run check-python-isort --all-files
uv run pre-commit run check-python-unittest --all-files
uv run pre-commit run check-python-doctest --all-files
uv run pre-commit run check-yaml-linting --all-files

uv run pre-commit run fix-python-linting --hook-stage manual --all-files
uv run pre-commit run fix-python-format --hook-stage manual --all-files
uv run pre-commit run fix-python-isort --hook-stage manual --all-files

implement -> uv run pytest -> commit -> repeat

Manually run checks and fixes

uv version --bump <patch|minor|major>
uv build
# manual tests
git push
uv publish --token <TOKEN>

Missing for a v1.0

  • info lists all devices and identifies Korg products
  • patch implemented
  • default values properly for all BaseModel instances implemented
  • proper documentation and comments
  • linter is satisfied

Troubleshooting

  • Reset to firmware defaults: SCENE + BACK + STOP + Turn on

Future

  • Graphical UI
  • YAML import/export file config supports comments
  • Support for importing/exporting the Korg™ proprietary configuration file format
  • Support for other Korg™ nano* products
  • Support for other MIDI controllers
  • Availability for MicroPython (i.e. no dependency to pydandtic or mido)

External sources

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

nanokontrol_config-0.4.0.tar.gz (33.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nanokontrol_config-0.4.0-py3-none-any.whl (12.6 kB view details)

Uploaded Python 3

File details

Details for the file nanokontrol_config-0.4.0.tar.gz.

File metadata

  • Download URL: nanokontrol_config-0.4.0.tar.gz
  • Upload date:
  • Size: 33.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.7.1

File hashes

Hashes for nanokontrol_config-0.4.0.tar.gz
Algorithm Hash digest
SHA256 acec3545fd7a134071020bdf55fd7260371297afef15f44d3c7c7b0bd86ba119
MD5 bc98a88e6d1b42f5542dd4b163a7e144
BLAKE2b-256 70f1ed5f0e5c6ba423709000d5ddcda6332577337a2b08fc97684bef7da51974

See more details on using hashes here.

File details

Details for the file nanokontrol_config-0.4.0-py3-none-any.whl.

File metadata

File hashes

Hashes for nanokontrol_config-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e3efad52f8593eb4e6042fc6533df4df89874df734199a5a23b509bdd35d9fe3
MD5 57ce921fe3dc2e6dcc9c223266787c61
BLAKE2b-256 be4e49b3d2d9e769b2bccc862ee4c3c1daea2d9d176c0699e02db752b39c7512

See more details on using hashes here.

Supported by

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