This document is about the StreamByter Plugin by Audeonic. Here are three links to get started:
- Audeonic StreamByter, instructions
- Audeonic StreamByter for Midi Fire, instructions
- Audeonic Forums, for question posting, discussions, and reviewing prior solutions
In conjunction with Audeonic — makers of MidiFire and Midi Bridge — the plugin is available as an in-app purchase for MIDI Designer Pro 2.96 and above (February 2018).
NOTE: StreamByter is a plugin in MIDI Designer Pro 2 (scroll down in the Connections pane of Config) and also part of MidiFire by Audeonic.
2021-07 Note
The StreamByter plug-in now supports almost all functionality including delays and on-load. See New Features June 2021.
Also We found a user, Gerd Westendorp, is maintaining an awesome StreamByter help page focused on the MDP2 implementation. Check it out here.
Overview
MIDI Designer Pro 2 version 2.96 is a huge step forward for our most advanced users. We're introducing the StreamByter Plugin by Audeonic. The Plugin provides MIDI manipulation in two places: before MIDI Designer processes the MIDI, and before the MIDI produced by MIDI Designer gets sent to a Wi-Fi, Bluetooth, Virtual or Hardware target via CoreMIDI.
StreamByter was initially released in May '13 as a way to extend MidiBridge 1.5 'out in the field' for customers and has been continuously improved since then. The StreamByter in Midi Designer is the "StreamByter II" version that exists in Audeonic’s MidiFire app (iOS/macOS).
What does StreamByter do? It allows you to make custom MIDI processing modules that you design yourself using a concise programming language made up of rules. There are simple rules for matching and transforming MIDI events and more complex rules for writing modules that behave conditionally, set/examine variables, perform math/timing operations, and of course, generate MIDI messages.
Here is a very simple case: you are playing a keyboard and you decide that you want to turn a single knob ("reverb," for instance). The higher (to the right) you go on the keyboard, the louder the reverb gets.
That's a single line match/transform StreamByter Input rule:
9X = BX 5B X2
The above rule can be summarized as follows: For every note event seen, set the value of the ‘reverb’ controller number (on same channel as note) to the MIDI note number of the note.
Rules can be joined. Imagine you want to toggle the value of another knob from top to bottom every time you hit an A3 on the keyboard, but you don't want the message to go out for 10 seconds? That's another rule. Generally rules do one or more of these things, and often combine them:
- decompose and recompose longer MIDI messages
- filter MIDI messages
- transform MIDI messages
- produce more MIDI messages
The first case, decompose MIDI messages, will be useful for parsing incoming sysex dumps for hardware synths that produce parseable sysex dumps for patches.
Writing StreamByter rules does require knowledge of the MIDI protocol and how to construct rules correctly. There is an introductory tutorial on the Audeonic site and the full StreamByter manual is available there too. There is also a dedicated section to the StreamByter on the Audeonic forum. Midi Designer customers are welcome to post questions or requirements there where the developer and other StreamByter users will help out.
StreamByter input and output rules are saved and shared with your layout. Any MIDI Designer Pro 2 user may open a layout with rules someone else has authored free of charge. There's an in-app purchase to author or edit StreamByter rules.
To Access
Navigate to Config -> Connections and scroll down. You'll see two buttons, one for input rules and one for output rules.
The instructions are identical for iPhone users.
Input Rules
The Input Rules process MIDI after it comes into MIDI Designer, before it is parsed and affects your controls.
Put one or more rules in the text box and tap "Install." If your rules are installed correctly, you'll see this dialog:
If there is an error in your rules, you'll see this dialog:
Also, the rules that contain an error will show with #ERR at the start of the line.
Output Rules
The Output Rules process MIDI before it hits your Wi-Fi, bluetooth, virtual and hardware MIDI destinations.
The input box functions identically to the StreamByter Input Rules.
Some Examples for StreamByter
9X = BX 3C X2
Filter: Convert any NOTE ON from any channel
Preserve channel, produce CC60 (which is 3C hex), and convert the note number to the value
96 = BX 3C X2
Filter: Convert any NOTE ON from channel 7
Preserve channel, produce CC60 (which is 3C hex), and convert the note number to the value
9X 00-3C = BX 3C X2
Filter: Convert NOTE ONs from any channel between 0 and 60 (3C in hex)
Preserve channel, produce CC60 (which is 3C hex), and convert the note number to the value
9X 00-3C = B6 3C X2
Filter: Convert NOTE ONs from any channel between 0 and 60 (3C in hex)
Produce channel 7, CC60 (which is 3C hex), and convert the note number to the value
Full Instructions
For the full instructions, please see:
- The Soapbox User Forums at Audeonic, where StreamByter has been discussed extensively
Frequently Asked Questions
- Would this be a good way to parse Sysex, e.g., for a patch dump from a synth?This is one of the main use cases for input rules. We're very hopeful that the plugin will fit the bill.
- Where Are The Labels Displayed?StreamByter has the ability to adjust and show labels, but this is not implemented yet in MIDI Designer Pro 2.96.
- Can I share layouts make with the StreamByter Plugin?Yes, users who have not purchased the plugin can use the layout and even the StreamByter modifications. They will not be able to modify the StreamByter rules for input and output.
- I want to use StreamByter to translate feedback from my MIDI target to MD. Can you help?Yes, check this QA answer!
IF YOU HAVE ANY FEEDBACK ON THE PLUGIN WHATSOEVER, PLEASE HIT US UP AT MIDIDESIGNER/CONTACT or AT SUPPORT [AT] MIDIDESIGNER [DOT] COM.