Skip to main content

Configure an Akai EWI USB MIDI wind controller via MIDI from the command line

Project description

ewi-usb-config-cli

Configure an Akai EWI USB MIDI wind controller via MIDI from the command line on Linux, macOS or Windows.

Installation

Via pip:

pip install ewi-usb-config-cli

Via pipx:

pipx install ewi-usb-config-cli

Usage

usage: ewi-usb-config [-h] [-d DEVICE_ID] [-a] [-f] [-r PATH] [--all-banks]
                      [-s PATH] [-p PORT] [-t TIMEOUT] [-v] [--version]
                      [setting ...]

Configure an Akai EWI USB MIDI wind controller via MIDI.

positional arguments:
  setting               Setting to send to EWI in the form name=value (can be
                        given more than once)

options:
  -h, --help            show this help message and exit
  -d DEVICE_ID, --device-id DEVICE_ID
                        SysEx Device ID (default: 0x7F)
  -a, --ascii           Set SysEx dump output format to ASCII hexadecimal
                        values
  -f, --force           Allow overwriting existing file when writing received
                        SysEx dump
  -r PATH, --receive PATH
                        Receive SysEx dump from EWI and save in file PATH (use
                        '-' to write to standard output)
  --all-banks           Request all settings banks (0-3) (the purpose of banks
                        1 and 3 is unclear)
  -s PATH, --send PATH  Send SysEx dump file PATH to EWI (use '-' to read from
                        standard input)
  -p PORT, --port PORT  Number or (part of) name of MIDI input/output port to
                        open (default: 'EWI-USB')
  -t TIMEOUT, --timeout TIMEOUT
                        SysEx dump reception timeout (default: 5)
  -v, --verbose         Output verbose messages of program operation to stderr
  --version             show program's version number and exit

Settings:
   breath-gain, bite-gain, bite-ac-gain, pb-gain, key-delay, unknown-1,
   midi-channel, fingering, transposition, velocity, breath-cc-1, breath-cc-2,
   unknown-2, bite-cc-1, bite-cc-2, pb-up-cc, pb-down-cc

Examples

Connect your Akai EWI USB wind controller via USB and use your system's MIDI tools to check that it shows up as MIDI input and output ports having names with "EWI-USB" in them.

Then use the terminal to send commands to your EWI using the ewi-usb-config program.

For example, to set the key delay to 10 (the factory default value is 7):

ewi-usb-config key-delay=10

Configure the MIDI control change type, which is sent when biting on the rubber mouth piece to only send Modulation (CC #1) and disable sending Pitch Bend as well. Also set the bite gain to value 20 (the factory default value is 64):

ewi-usb-config bite-cc-1=0 bite-cc-2=1 bite-gain=20

Configure the MIDI messages types, which are sent in response to breath input, to Breath Controller (CC #2) and Channel Aftertouch, which is the factory default behaviour:

ewi-usb-config breath-cc-1=2 breath-cc-2=127

Retrieve all current settings from the device as a MIDI System Exclusive (SysEx) dump and write it to the file ewi-usb.syx using the -r|--receive option:

ewi-usb-config -r ewi-usb.syx

Send a SysEx dump to the device to restore all settings saved in the dump using the -s|--send option:

ewi-usb-config -s ewi-usb.syx

Retrieve a settings dump but output the SysEx data as hexadecimal numbers in ASCII to the standard output by adding the -a|--ascii option and using - as the output filename to indicate standard output:

ewi-usb-config -ar -

This produces output like this:

F0 47 7F 6D 00 00 06 40 40 40 40 07 7F F7
F0 47 7F 6D 02 00 0B 00 00 40 78 02 7F 00 7F 00 7F 7F F7

Note that this format can not be loaded back into the EWI USB. It is meant mainly as a debugging tool for developers.

Settings Values

All settings take values from 0 to 127, unless noted otherwise here.

  • For the controller settings, some values in that range have no effect. See the table in the next section below for details.

  • The fingering setting supports the following values:

    Value Fingering System
    0 Standard EWI fingering
    1 Saxophone
    2 Flute
    3 Oboe
    4 EVI Valve 1
    5 EVI Valve 2 (reversed pitch plates)
  • The midi-channel settings takes a value from 0 (channel 1) to 15 (channel 16).

  • The transposition setting takes a value of 52 - 76, with 64 being no transposition and 56 = -12 semitones and 76 = +12 semitones.

  • For the the velocity setting, a value of zero (0) means that the EWI will use dynamic velocity values for note-on messages, according to the breath strength, whereas values 1 - 127 will cause note-on messages to have a fixed velocity of the set value.

Controllers

Value Breath CC 1 Breath CC 2 Bite CC 1 Bite CC 2 Pitch Plate Up Pitch Plate Down
0 OFF OFF OFF OFF OFF OFF
1-119 MIDI CC 1-119 MIDI CC 1-119 MIDI CC 1-119 MIDI CC 1-119 MIDI CC 1-119 MIDI CC 1-119
124 - - Pitchbend UP - - -
125 - - Pitchbend DOWN - - -
126 - - Pitchbend up-down - - -
127 Aftertouch Aftertouch Pitchbend down-up Aftertouch Pitchbend UP Pitchbend DOWN

Aftertouch is always Channel Pressure, aka Mono Aftertouch. Note Pressure, aka Poly Aftertouch, is not supported.

Development

Using the hatch tool:

  • hatch run ewi-usb-config --version
  • hatch run ewi-usb-config --help
  • hatch status
  • hatch project metadata | jq -C | less-R
  • hatch version

Note: hatch run ewi-usb-config can be abbreviated as hatch run euc.

Deployment

hatch version <new version number>
git add ewi_usb_config/version.py
git commit -m "Bump version to <new version number>"
git tag -a -m "Tagging new release <new version number>" vX.Y.Z
git push --tags master

... and let the GitHub Actions release workflow do the rest.

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

ewi_usb_config_cli-0.1.0.tar.gz (10.0 kB view details)

Uploaded Source

Built Distribution

ewi_usb_config_cli-0.1.0-py3-none-any.whl (11.7 kB view details)

Uploaded Python 3

File details

Details for the file ewi_usb_config_cli-0.1.0.tar.gz.

File metadata

  • Download URL: ewi_usb_config_cli-0.1.0.tar.gz
  • Upload date:
  • Size: 10.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.2

File hashes

Hashes for ewi_usb_config_cli-0.1.0.tar.gz
Algorithm Hash digest
SHA256 a1665ddf23cec714793992e6aa5c84ff38923bee46c823b6f8adec45669237d5
MD5 cc8a596578c0768e7a13edcaefa30486
BLAKE2b-256 95bdd4a03bad1b61859ce0bf93f6d68792011a13b531ea9d0be3fb361aff43f2

See more details on using hashes here.

File details

Details for the file ewi_usb_config_cli-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for ewi_usb_config_cli-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 706152e78b2ef63f895f8d5bcb600fc5dc7e2dc13f0e8f3d4dea153f69bb7078
MD5 a0a565eb96e7c3549cebd8407554f989
BLAKE2b-256 c852c40d30f1696b3dc7fafcbfae185564721ba3481f1a6e7d28284d07b29817

See more details on using hashes here.

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