Talk to other MIDI Designer users about MIDI Designer, iOS MIDI and related topics. Or share layouts, pages, and ideas.

Check out our Facebook Group.

Of course, if you want to send us an email, feel free.

Open problem reports

Summary of user requests

MIDI Designer
Design your perfect MIDI controller for iPad, iPhone, and now on M-powered Macs
New StreamByter Features (June 2021) - MIDI Designer Q&A

New StreamByter Features (June 2021)

+1 vote
asked May 30, 2021 in Advanced by MIDI Designer Team (Dan)
Thanks for the much needed update to Stream Byter. I have been using it in MDP for quite some time and went to Nic when I had questions. My biggest issues that have been resolved is:
    lack of Delay functionality – very important for my application
    lack of IF … ELSE
    lack of While functionality   

Other welcome changes for me include:
    Literal decimals will save hex conversion errors
    Exit keyword will eliminate unwanted execution steps
    Alias keywords to make coding a bit easier and more understandable

I really needed delay in sending out midi messages to ensure their sequence is maintained. I developed several delay functions in MDP and am preparing to present them in the MDP Forum. I started to update older designs and need to finish them.

As a Beta tester, I was surprised to see the new features in the Beta just a few days ago. It appears there is insufficient time before release for me to test the SB behavior. There is a lack of information to Beta Testers about how new changes are implemented. I will report in the Beta Test Forum my issue with how to use the new portrait mode.

Thanks, Don
Can you please ask a separate, atomic question here about the beta for portrait mode so we can explain?

We haven’t released new SB changes. Your testing can be awaited if that’s workable for you

Thanks for your quick response. I already found out how to access portrait mode, tested it, and reported my results on TestFlight. I just added a comment about Beta Testing procedure in general in the Beta Test forum. This comment I made was primarily about the long-awaited (at least for me) StreamByter update. I plan on testing some of the SB updates when I update my layout in the next few weeks.
Wow we have a lot of unanswered TestFlight feedback... thanks!

Regarding the SB update... basically it's a 100% replacement of the last SB. It's very unlikely that any of the features don't work.

Basically the delays are the main thing worth testing. Everything else should... just work.

I will start with several existing SB codes and verify they still work. Then I will change it to include some of the new features and pot back.
Thank you for testing, Don! Let us know how the research goes, pls


2 Answers

+2 votes
Best answer

StreamByter Features in 2.200+

See for more notes.


In StreamByter inside MIDI Designer Pro 2, delays have only worked in some contexts (not over Wi-Fi and Bluetooth, not for incoming MIDI). Delays are now fixed to work correctly for all connection types and both for SB input rules and output rules.

StreamByter System Updates

All updates relevant to the StreamByter v1.3, 1.4 and 1.5 are incorporated:

  • specify literal decimals using $, e.g. if M3 == $127
  • long form keywords with no more forcing to upper case (e.g. assign, send, while, math, include, subroutine)
  • use (Yamaha convention, C-2 to G8) note literals, prefixed by '^' character (eg: ^C-2, ^Bb6, ^G#3, ^Ab3, ^C3) in rules
  • use ‘alias’ keyword to give your variables and literals custom names (eg. alias I0 myCounter, assign myCounter = 0)
  • use ‘block’ keyword to block an event (same as XX = XX +B)
  • use ‘exit’ keyword to terminate the processing immediately
  • now supports ‘ELSE’ with IF
  • use ‘while CONDITION’ as synonym for ‘if CONDITION +loop’
  • define code macros with ‘define’ (e.g.. define control_changed m0 == F0 7D 01, if control_changed ...)
  • create multi rule subroutines with parameters (‘subroutine’ rule) callable from anywhere (including nested calls)
  • new 'W (wide) array of 16x128 of unsigned 16 bit integers
  • new 'P' (precision) array of 256 *signed* 32 bit integers for higher precision maths
  • send any arbitrary message (eg. OSC) over UDP using send +udp
  • note ons with velocity of zero (NVR-nil velocity rewrite) are rewritten to note offs by default (no more 9X XX 00 = 8X)
  • use spaces in your block labels and control names

Most notably from 1.4:

...we have responded to the criticism that the StreamByter language is ‘assembler’ like. You can now use long form keywords instead of the original 3 character short forms. Coupled with a relaxation on case convention, this makes code look much more readable and easier to craft and understand. The language has been enhanced allowing the use of custom names for variables, simple macros, fully blown parameterised subroutines and code includes. Despite the new improvements, everything is backwards compatible, so existing code written in short form will work just fine.


  1. StreamByter V1.3 Update (Audeonic Soapbox Announcement)
  2. StreamByter V1.4 Update (Audeonic Soapbox Announcement)
  3. StreamByter V1.5 Update (Audeonic Soapbox Announcement)
answered May 30, 2021 by MIDI Designer Team (Dan)
edited Jun 12, 2021 by MIDI Designer Team (Dan)
Great to see updates to Streambyter. I’ve been hoping to see delays come to MD so I can parse sysex. Are delays in MD still on roadmap? Thanks for these though.
For me it’s the delays needed when sending multiple NRPN values as CC#s, because they all use cc98/99/06 and will cancel each other out without delays. It’s the reason I need to use MIDIFIRE in combo with MD. Its been a while since I’ve tweaked any of my code for the layouts but I’ll be able to take a look and do some testing when I’m back home later in the week. Like I said though, the recent updates are welcome and cool!cheers
Okay we've upload a fix for delays just now, coming to Beta in a few minutes.

Examples of delay

# clone all controller events from
# channel 1 to channel 2 with a 5s delay
B0 = B1 +C +D5000
Updated this answer: we've fixed delays now for all connection types and input and output SB. Thanks!
Don't know if anyone uses it, but this update should also allow one-way sending UDP/OSC type messages from MDP2.
JK great callout, this could be huge... just not sure for whom. I wonder what the use cases are, what kind of OSC targets there are, etc. Surely for somebody it's critical.
+1 vote
We found a user, Gerd Westendorp, is maintaining an awesome StreamByter help page focused on the MDP2 implementation at:
answered Jun 8, 2021 by MIDI Designer Team (jkhiser)
Thanks for this. I’ll add it to the main Sb post at some point too
done, added to the main doc