akai-mpkmini-mkii-ctrl


Nameakai-mpkmini-mkii-ctrl JSON
Version 0.3.0 PyPI version JSON
download
home_pagehttps://github.com/BastiTee/akai-mpkmini-mkii-control
SummaryCommand-line controller for AKAI MPKmini MK II.
upload_time2024-12-28 09:15:05
maintainerNone
docs_urlNone
authorBasti Tee
requires_python<3.12,>=3.9
licenseApache 2.0
keywords sysex synth midi
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Command-line controller for AKAI MPKmini MK II

![](resources/gfx/akai-picture.jpeg)

[Source](https://commons.wikimedia.org/wiki/File:Akai_MPK_mini_MK2_-_angled_left_-_2014_NAMM_Show_(by_Matt_Vanacoro).jpg) – [CC BY 2.0](https://creativecommons.org/licenses/by/2.0/deed.en)

[![CI](https://github.com/BastiTee/akai-mpkmini-mkii-control/actions/workflows/main.yml/badge.svg)](https://github.com/BastiTee/akai-mpkmini-mkii-control/actions/workflows/main.yml) ![PyPU - Version](https://img.shields.io/pypi/v/akai-mpkmini-mkii-ctrl.svg) ![PyPI - Python Version](https://img.shields.io/pypi/pyversions/akai-mpkmini-mkii-ctrl.svg)

Best effort project to overcome the fact that AKAI doesn't seem to be interested in fixing Segmentation faults in their [MPKmini Editor](https://www.akaipro.com/mpk-mini-mkii). It currently fixes my own itches but I gladly accept feedback!

**Note:** At this point, I don't own an AKAI MPKmini anymore. This tool was tested for Python 3.9-3.11, which were still supported as of writing. In higher versions, the supported / pinned version of construct [becomes a problem](https://github.com/BastiTee/akai-mpkmini-mkii-control/issues/4), that must be fixed first.

## Install

To install via [PyPi](https://pypi.org/project/akai-mpkmini-mkii-ctrl/):

```
pip install --user akai-mpkmini-mkii-ctrl
```

Please note that the dependency `python-rtmidi` requires compilation resources to be present on your system. For Debian-like systems for example you need to install `sudo apt-get install libasound2-dev`. Refer to the [project documentation](https://spotlightkid.github.io/python-rtmidi/installation.html) for details.

To install from source you can use:

- `python setup.py install`, or
- `make install` which will run a `pipenv` including linting, tests, etc.

## Usage

`akai_mpkmini_mkii_ctrl` supports a set of commands to push or pull presets to and from the device. All commands have a common set of options:

```
-p, --preset NUM     Target preset slot (0 = RAM, 1-4 = Stored preset, default: 0)
-m, --midi-port NUM  MIDI Port on which the device is located (default: 0)
-v, --verbose        Verbose output
--help               Show this message and exit.
```

### Commands

`print-preset`: Print preset on device in human readable format. In this example it will print the preset stored in slot 1 on the device.

```shell
python -m akai_mpkmini_mkii_ctrl \
--preset 1 print-preset
```

`pull-preset`: Pull a binary from the device and write to file.

```shell
python -m akai_mpkmini_mkii_ctrl \
--preset 0 \
pull-preset \
--output-file ram-preset.mk2
```

`push-preset`: Push a local binary preset to the device. This also works with [factory binary presets](resources/factory-patches).

```shell
python -m akai_mpkmini_mkii_ctrl \
--preset 2 \
push-preset \
--input-file resources/factory-patches/preset1.mk2
```

`push-config-preset`: Push a local configuration preset ([Example](resources/config-presets/Base-Config.yaml)) to the device. Notice that you are able to combine several input files for easier re-use. YAML and JSON format is supported. The configurations are applied in order, e.g., in this case [`Base-Config.yaml`](resources/config-presets/Base-Config.yaml) will be extended/overwritten with the properties found in [`Logic-RetroSynth+Juno.yaml`](resources/config-presets/Logic-RetroSynth+Juno.yaml).

```shell
python -m akai_mpkmini_mkii_ctrl \
--preset 0 \
push-config-preset \
--input-file resources/config-presets/Base-Config.yaml \
--input-file resources/config-presets/Logic-RetroSynth+Juno.yaml
```

## Development

You can prepare a `pipenv`-based development environment using:

```shell
make clean venv
```

You can also install the controller to your system using:

```shell
make install
```

To use the local `pipenv`-based version you can use the following command from where you cloned the repository:

```shell
pipenv run python akai_mpkmini_mkii_ctrl
```

## Resources

The implementation is based upon the following resources:

- <https://github.com/gljubojevic/akai-mpk-mini-editor>
- <https://github.com/mungewell/mpd-utils>
- <https://www.snoize.com/midimonitor/>
- <https://github.com/gbevin/SendMIDI>
- <https://github.com/gbevin/ReceiveMIDI>
- <https://www.akaipro.com/mpk-mini-mkii>

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/BastiTee/akai-mpkmini-mkii-control",
    "name": "akai-mpkmini-mkii-ctrl",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "<3.12,>=3.9",
    "maintainer_email": null,
    "keywords": "sysex synth midi",
    "author": "Basti Tee",
    "author_email": "basti.tee@icloud.com",
    "download_url": null,
    "platform": null,
    "description": "# Command-line controller for AKAI MPKmini MK II\n\n![](resources/gfx/akai-picture.jpeg)\n\n[Source](https://commons.wikimedia.org/wiki/File:Akai_MPK_mini_MK2_-_angled_left_-_2014_NAMM_Show_(by_Matt_Vanacoro).jpg) \u2013 [CC BY 2.0](https://creativecommons.org/licenses/by/2.0/deed.en)\n\n[![CI](https://github.com/BastiTee/akai-mpkmini-mkii-control/actions/workflows/main.yml/badge.svg)](https://github.com/BastiTee/akai-mpkmini-mkii-control/actions/workflows/main.yml) ![PyPU - Version](https://img.shields.io/pypi/v/akai-mpkmini-mkii-ctrl.svg) ![PyPI - Python Version](https://img.shields.io/pypi/pyversions/akai-mpkmini-mkii-ctrl.svg)\n\nBest effort project to overcome the fact that AKAI doesn't seem to be interested in fixing Segmentation faults in their [MPKmini Editor](https://www.akaipro.com/mpk-mini-mkii). It currently fixes my own itches but I gladly accept feedback!\n\n**Note:** At this point, I don't own an AKAI MPKmini anymore. This tool was tested for Python 3.9-3.11, which were still supported as of writing. In higher versions, the supported / pinned version of construct [becomes a problem](https://github.com/BastiTee/akai-mpkmini-mkii-control/issues/4), that must be fixed first.\n\n## Install\n\nTo install via [PyPi](https://pypi.org/project/akai-mpkmini-mkii-ctrl/):\n\n```\npip install --user akai-mpkmini-mkii-ctrl\n```\n\nPlease note that the dependency `python-rtmidi` requires compilation resources to be present on your system. For Debian-like systems for example you need to install `sudo apt-get install libasound2-dev`. Refer to the [project documentation](https://spotlightkid.github.io/python-rtmidi/installation.html) for details.\n\nTo install from source you can use:\n\n- `python setup.py install`, or\n- `make install` which will run a `pipenv` including linting, tests, etc.\n\n## Usage\n\n`akai_mpkmini_mkii_ctrl` supports a set of commands to push or pull presets to and from the device. All commands have a common set of options:\n\n```\n-p, --preset NUM     Target preset slot (0 = RAM, 1-4 = Stored preset, default: 0)\n-m, --midi-port NUM  MIDI Port on which the device is located (default: 0)\n-v, --verbose        Verbose output\n--help               Show this message and exit.\n```\n\n### Commands\n\n`print-preset`: Print preset on device in human readable format. In this example it will print the preset stored in slot 1 on the device.\n\n```shell\npython -m akai_mpkmini_mkii_ctrl \\\n--preset 1 print-preset\n```\n\n`pull-preset`: Pull a binary from the device and write to file.\n\n```shell\npython -m akai_mpkmini_mkii_ctrl \\\n--preset 0 \\\npull-preset \\\n--output-file ram-preset.mk2\n```\n\n`push-preset`: Push a local binary preset to the device. This also works with [factory binary presets](resources/factory-patches).\n\n```shell\npython -m akai_mpkmini_mkii_ctrl \\\n--preset 2 \\\npush-preset \\\n--input-file resources/factory-patches/preset1.mk2\n```\n\n`push-config-preset`: Push a local configuration preset ([Example](resources/config-presets/Base-Config.yaml)) to the device. Notice that you are able to combine several input files for easier re-use. YAML and JSON format is supported. The configurations are applied in order, e.g., in this case [`Base-Config.yaml`](resources/config-presets/Base-Config.yaml) will be extended/overwritten with the properties found in [`Logic-RetroSynth+Juno.yaml`](resources/config-presets/Logic-RetroSynth+Juno.yaml).\n\n```shell\npython -m akai_mpkmini_mkii_ctrl \\\n--preset 0 \\\npush-config-preset \\\n--input-file resources/config-presets/Base-Config.yaml \\\n--input-file resources/config-presets/Logic-RetroSynth+Juno.yaml\n```\n\n## Development\n\nYou can prepare a `pipenv`-based development environment using:\n\n```shell\nmake clean venv\n```\n\nYou can also install the controller to your system using:\n\n```shell\nmake install\n```\n\nTo use the local `pipenv`-based version you can use the following command from where you cloned the repository:\n\n```shell\npipenv run python akai_mpkmini_mkii_ctrl\n```\n\n## Resources\n\nThe implementation is based upon the following resources:\n\n- <https://github.com/gljubojevic/akai-mpk-mini-editor>\n- <https://github.com/mungewell/mpd-utils>\n- <https://www.snoize.com/midimonitor/>\n- <https://github.com/gbevin/SendMIDI>\n- <https://github.com/gbevin/ReceiveMIDI>\n- <https://www.akaipro.com/mpk-mini-mkii>\n",
    "bugtrack_url": null,
    "license": "Apache 2.0",
    "summary": "Command-line controller for AKAI MPKmini MK II.",
    "version": "0.3.0",
    "project_urls": {
        "Homepage": "https://github.com/BastiTee/akai-mpkmini-mkii-control"
    },
    "split_keywords": [
        "sysex",
        "synth",
        "midi"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "c0fdefd9834db5fdd9922f48554c6863efb82cbd490d70a039ead050485efbed",
                "md5": "7e6c5e97081092d8f2e47c49b05a19e2",
                "sha256": "2dca2ab123fa8ba7f0d2562fe0cfedd83d039cbbc9aa5b2126a69a98404ddc6b"
            },
            "downloads": -1,
            "filename": "akai_mpkmini_mkii_ctrl-0.3.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "7e6c5e97081092d8f2e47c49b05a19e2",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<3.12,>=3.9",
            "size": 18153,
            "upload_time": "2024-12-28T09:15:05",
            "upload_time_iso_8601": "2024-12-28T09:15:05.180433Z",
            "url": "https://files.pythonhosted.org/packages/c0/fd/efd9834db5fdd9922f48554c6863efb82cbd490d70a039ead050485efbed/akai_mpkmini_mkii_ctrl-0.3.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-12-28 09:15:05",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "BastiTee",
    "github_project": "akai-mpkmini-mkii-control",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "akai-mpkmini-mkii-ctrl"
}
        
Elapsed time: 0.40074s