by Audeonic


General purpose programmable MIDI effect processor for Audio Units and CoreMIDI (iOS and macOS)


New - StreamByter University - everything you need to know about writing StreamByter scripts!


StreamByter is a plugin for creating custom MIDI effects. It can be used as an Apple Audio Unit (AU) effect or as a standalone app connected via CoreMIDI virtual ports. StreamByter is ported from our acclaimed MidiFire MIDI processing environment.

An iOS device (minimum iOS 11) and a suitable AU host app such as AUM, apeMatrix, Cubasis or Sequencism is required to use the AU variant on an iDevice. On Mac, the minimum macOS version is High Sierra and Logic Prox X 10.4.2. To use with CoreMIDI, a routing app like MidiFire is recommended and an iOS device with at least iOS 8 or a Mac running Yosemite is required.

Use StreamByter to:

  • Extend the MIDI processing functionality of any AU host.
  • Remap channels, notes, controllers (anything MIDI)
  • Filter MIDI events coarsely or finely
  • Clone or Delay any event
  • Send any event automatically when plugin is loaded
  • Create complex effects using programming concepts like conditionals, loops, variables (including array, timing and random), and math operators.
  • Monitor MIDI events entering and leaving the module
  • Share presets amongst your macs and iOS Devices using iCloud Drive.

StreamByter in apeMatrix, iPad

StreamByter in AUM, iPhone

StreamByter Standalone, iPhone

StreamByter in apeMatrix, iPhone


StreamByter is available via Apple's iOS and Mac App Stores. Just click on the download button below to be taken there right now.


Let's explore some of the features of StreamByter in slightly more detail. The definitive reference is in the builtin manual; an online copy of which can be accessed in the Support Resources section.

Entering Rules

StreamByter is configured using a (fairly sparse) textual rules 'language' that defines how the effect should operate. You enter rules in the provided edit box and press the 'Install Rules' button which checks and activates your rules. If there are errors in your rules, then the text takes on a red hue with the lines in error flagged with '#ERR' for you to fix. After you fix a rule, you don't need to remove that '#ERR' if the rule is correct; StreamByter will do that for you.

Edit box with an error

Anything following a '#' character is treated as a comment. You can of course use the copy/cut paste features. A quick way to clear the edit box is to hold-press and choose 'Select All' from the pop-up menu and then choose 'Cut'.

Important - just about everything you do in the Stream Byter is done in hexadecimal. Have a hex calculator/table ready. Also use this handy table for looking up hex values of MIDI notes. You also need to have understanding of the MIDI protocol. Somascape is the best guide out there.

When a MIDI event is passed into the Stream Byter, the rules are evaluated from top to bottom. Now, we will move on to the actual rules.


Also known as Stream Byter I rules, these types of rules match an incoming MIDI event and then transform it in some way. Transformations include rewriting any part of the event, delaying it, blocking it or cloning it.

These types of rules can also be used inside conditionals (see below)

Sending Events

Use the SND rule to send a MIDI message of any type. Additionally, the event can be given a delay and it will not issue until that time has expired.


StreamByter works with arrays of values. There are local arrays (4 of them, each with 256 elements) and one global (also 256 elements) which is shared with all StreamByter instances running in a host. The ASS rule is used to set the value of a variable.

A variable array element can be addressed directly or indirectly.

The incoming message is also presented as a variable array that you can examine and alter.

Variables can be marked as 'preserved' which means their current value (no matter what it is) is stored with the StreamByter configuration and restored when it is loaded.

There are also some 'special' variables that can be used including random number generation values, timing points and shortcuts for message length/status/channel.


Labels are a way for the StreamByter to display information to the user about what is happening in the code. There are two labels (LB0 and LB1) and you use the SET rule to set their value. You can display the value of any variable or event byte in hex, decimal or as a note name. You can also supply a literal string (max 3 chars) to be displayed.

StreamByter Labels

Labels are also really handy for debugging code!


StreamByter includes conditionals and loops using the IF/END rule. There is also an IF LOAD variant that gets executed when the StreamByter loads. This is used to setup variables or issue events on start.


The MAT rule is used to perform mathematical operations on two operands. This includes basic arithmetic and modulo operators.


StreamByter supports AUv3 state saving, and you can save your work into a preset inside an AUv3 host for later recall. A handful of factory presets are also provided with commonly used constructs.

Version 1.2 adds an internal presets manager where you can manage presets within the application itself also. The presets manager can operate on local storage or with iCloud Drive in order to share to other macOS or iOS hosts.

On iOS, the Files app and iTunes sharing is supported. On macOS, drag and drop is supported. These apply to the standalone app only.

Support Resources

  • You can examine the full built-in app manual to get the complete picture on the feature set and usage. PDF Version
  • The basics of the pattern matching (Stream Byter I) rules are discussed in this MidiBridge Tutorial. As StreamByter is backwards compatible with the MidiBridge version, this is still a good way to get started.
  • Watch the hairy arms in this Introduction video!

  • Version 1.2 - presets and monitoring in Logic Pro X

  • Join us over at the Audeonic Soapbox Forum to post questions (or see if your question has already been answered?) or take part in the friendly discourse.
  • On twitter -
  • Or you can use good old fashioned email to contact the development team at directly.

    © 1999-2022 Audeonic Apps