mididings is a MIDI processor/router for ALSA, implemented as a Python module. Some of its features are particularly geared towards live keyboardists.
Features:
- Filters and routes MIDI events depending on event type, channel, note, controller, etc.
- Applies transposition, velocity curve/offset, etc., or converts events to a different type. Using Python code, arbitrary transformations of MIDI events are possible.
- All MIDI processing is done in C (for speed reasons), with the ability to call back into Python if desired.
- Multiple patches can be switched via MIDI. Note-off and sustain pedal events are specially handled to avoid stuck notes.
What is new in this release:
- The VoiceFilter() unit was improved to work properly for voices other than the highest and lowest one.
- A VoiceSplit() was added to allow easily creating multiple related voice filters (e.g. for a brass section).
- OSCInterface() and livedings were simplified by using default port numbers if none are specified.
What is new in version 20100318:
- Added VoiceFilter() to filter individual voices from a chord.
- The Output() unit can now send arbitrary control changes, and a new
- class OutputTemplate was added to simplify creating partially
- parametrized outputs.
- Added lots of new examples to the documentation.
- Several minor fixes and cleanup.
What is new in version 20100307:
- Added livedings as a graphical frontend to mididings that allows monitoring and triggering scene changes.
- Added SceneGroup() to make multiple subscenes accessible under a single program number.
- Support floating split points using the new FloatingKeySplit() unit.
- Added Panic() to send all-notes-off messages on all channels.
- Several new OSC messages supported by mididings.extra.OSCInterface().
- New module mididings.extra.gm containing constants for program and controller numbers defined in the General MIDI standard.
- Enable realtime scheduling for MIDI processing with the 'jack' backend.
What is new in version 20100202:
- Major documentation update, now including a tutorial and explaining some of the relevant Python basics.
- Renamed a few units and parameters to keep names somewhat consistent.
- Removed the types parameters from Fork() and Print(), the same result can be achieved using a selector.
- The upper or lower limit for note ranges can now be omitted.
- All splits now support an "else" rule. A patch with a key of None is used when none of the other filters match.
- Added operator | (OR) for selectors.
- Added LatchNotes() to hold notes until the key is pressed again.
- Significant performance improvement when calling overloaded functions.
What is new in version 20100112:
- Included a command line program "mididings" that allows running simple patches without writing full-fledged Python scripts. For example: $ mididings "Transpose(12) >> Velocity(fixed=64)"
- A first attempt to support system exclusive, system realtime and system common messages. New units include SysEx(), SysExFilter() and SysExSplit(). Thanks to Christopher Arndt for some very helpful suggestions.
- Added support for polyphonic aftertouch, untested for obvious reasons :(
- Implemented a hook system to easily extend some of mididings' functionality.
- Added hook objects MemorizeScene() (scene persistence between restarts), OSCInterface() (scene switching via OSC), and AutoRestart() (automatic restart when the script changes. Best. Feature. Ever.)
- Unified run() and run_scenes(), as well as Print() and PrintString(). The different functionality now depends only on keyword arguments.
- Renamed Call() to Process(). Call() now offers the functionality of both CallAsync() and CallThread().
- Renamed GenerateEvent() to Generator() and InitAction() to Init().
- Changed semantics of CtrlFilter(), CtrlValueFilter(), ProgFilter() to block events of other types (again...).
- Added parameter "curve" to Velocity(), applying an exponential curve.
- New unit VelocityLimit().
- New operator & to use multiple filters as a selector with operator %.
What is new in version 20090113:
- This release adds functions to limit the number of simultaneous notes, or to make a MIDI signal monophonic (with retriggering).
- It provides a new event-type agnostic inversion operator for filters, and Output() now supports sending volume changes (CC 7).
What is new in version 20081123:
- This version adds support for processing standard MIDI files directly.
- Patch numbers can now be greater than 128, and Output() supports sending bank select messages.
- Various bugs have been fixed.
What is new in version 20081109:
- Several problems with the JACK backend have been fixed.
- This release also features support for channel aftertouch, a few additional units, and a new operator (%) for filters.
- A new function has been added to mididings.extra that allows saving the selected patch number and restoring it the next time the script is run.
What is new in version 20080913:
- This release adds some convenience functions to run shell commands, and to send OSC or DBUS messages.
- The validity checking of function arguments has been improved to produce more helpful error messages.
Requirements:
- ALSA driver
- Python
- The Boost Libraries
Comments not found