I’m in the process of moving from a laptop-based system with BMT to a hardware-based system centered around BomeBox. One of the key elements is to switch patches on various external Synths (VL40, Tooro, CraftSynth, Link, etc) attached to my rig.
This is not simply a matter of issuing a PC to the Synth, because a number of these synths do not have the ability to properly store a fully developed snapshot of a patch. The VL70, for example, does not store the full set of parameters in it’s INT(ernal) banks (‘because of memory limitations’ some people have opined on newsgroups). Also, some patches require a change to global parameters (the Breath Curve on the VL70, for example. So, I have taken to loading a factory preset and then modifying it as needed by SysEx commands, and then issuing Global Parameter changes by various MIDI commands, including some SysEx.
I successfully implemented this from Ableton Push 3S by a rather involved system involving a home-grown Max4Live (M4L) plugin that reads a ‘TMID’ file containing the directives, is triggered on a MIDI keystroke on the Push 3S, and then sends it out a MIDI stream to the device. (These text files are compiled by a perl script that reads a specification file of my own design and spits out a flock of these TMID files). The M4L plugin honors a series of delays, which are critical to not overloading the target synth. Here is an example TMID for changing patches on a VL70:
0 176 0 33;
10 176 32 1;
20 192 49;
186 176 7 104;
252 240 67 16 87 2 1 12 32 247;
318 240 67 16 87 0 0 12 69 247;
384 240 67 16 87 8 0 8 76 247;
450 240 67 16 87 8 0 5 1 247;
In this format, the first number is the delay (in msec) from the start of the MIDI sequence before issuing the bytes of MIDI (in decimal).
After experimenting to find the proper delays for each MIDI message, this scheme worked very well in performances and jam / recording sessions, over the last 6 months. My sets have involved multiple, simultaneous, complex patch changes (I sometimes play two synths in parallel from my Sylphyo windsynth), and I don’t recall a glitch anywhere while playing live …
As the next phase of my upgrade, I’m moving from a MIDI ‘waterfall’ setup (using MIDI Thru) to a star setup using Bome Box (which is still sitting in US Customs … sigh). Some questions:
-
It looks like there is no ‘Block MIDI’ feature in BMT that integrates both Raw MIDI and Delays (as is implemented by my M4L plugin). So, I will need to use 8 separate BMT translations (for the example above of 8 different delays for 8 MIDI messages) … and each BMT translation would have it’s own delay.
Is that the best way? -
I just want to confirm that a delay in a Translation is from the time that the translation is executed - and that they are not cumulative. Is that correct? (The manual seems to imply that, but I can’t see anywhere where that is explicitly said).
Also … I am trying to avoid a laborious, manual cut-and-paste process that will be prone to error and synchronization issues. Is it possible for me to change my perl script to output the lines for the .BMTP file such as …
Outgoing12=MID1F0431057080014vcF7 Delay Timer1:100:1
(or some such - I have not totally figured out the syntax …)
… and then write another script to ‘hack’ those lines into the .BMTP file automatically …
- Has such an automated bulk-import into BMT’s .BMTP file every been done, and might there be existing tools or processes to make that easier??
…
By the way, this issue does tangentially relate to this other thread (but I believe they are really separate things):