Beatbuddy (BB) and Ditto X4 Midi Sync

Beatbuddy (BB) and Ditto X4 Midi Sync

I’ve been trying to get this working for a while now.  Here is a thread to help everyone else looking into this as to what is working and what is not.

* I am using RC_1.3.0.0_Build_91
* This firmware package has a known bug where it will not install using OSX.  I had to borrow a windows machine to install it on the X4

X4 Special Setup
* Dip switch 2  is “up” to put the pedal in queued mode.

BB Special Setup
* Change MIDI out channel to 4
* This is what the Ditto is hardwired to listen to.

General Summary
This is a general summary of what is working, although see the details below for the gotchas, caveats, etc.
* Midi clock synch
* BB Start –> Starts Loop1
* BB Stop –> Stops all loops
* BB Part Transition 1–>2 and 2–>1 :  This works with a lot of caveats.

Midi Clock Synch
* The MIDI clock is routed from the BB to the X4.
* This allows the X4 to start/stop recording to the closest beat
* The BB should be set to export the clock only when it is playing.  Otherwise I have seen that a constantly running clock can cause instability on the X4

BB Start
* I have the BB configured to play one measure of intro and then send the Start message.
* This message is sent as a MIDI Sysex command
* If a loop is already recorded in Loop1 on the X4, it will start playing Loop1 (synched with the midi clock) when it receives this command.

BB Stop
* I have the BB configured to send the stop message after the Outro is played.
* This message is sent as a MIDI Sysex command
* If any loop is playing it will stop
   * Because the X4 is setup in queued mode, it will stop at the end of the loop
   * Special attention needs to be paid to trigger the Outro on the BB during the last measure of the Loop

BB Pause
* When the BB is told to pause, it sends a Sysex stop message.  This will stop the X4
* When the BB unpauses it does not trigger the X4 to resume.
* It would be nice for this interaction to work, but I have not figured this out yet.
* I would not recommend planning on this feature working for you, but would love to hear if anyone has gotten it working!

Beat Buddy Fills
* Playing fills on the beat buddy seems to work great.
* The Ditto X4 is not affected by the fills and will keep the beat with the midi clock.

Beat Buddy Next Part Issue
* One great feature of the BB is the long press which triggers a transition from Part1 (of the drum song) to Part2.  It is obviously a very useful feature to want to use especially since the X4 also has 2 parts: Loop1 and Loop2.
* I have gotten this to work, but there is a bit of a workaround needed. Keep reading for the issues and my solution.
* When the BB transitions from Part1 to Part2 (or visa versa) it sends the following on the MIDI bus:
   * CC102 with value = 1 or 2 (depending on which part is being transitioned to)
   * BIG GOTCHA: Regardless of what the MIDI channel of the BeatBuddy is set to, this CC102 will always be sent on channel 1
* Recall that the X4 is setup in queued mode (which I still find to be the best for recording purposes and self-jamming sessions)
  * Because of this, one cannot issue the command to ‘Start Loop 2’ on the beat if Loop 1 is playing, as this would queue Loop2 to play, but only after Loop1 is done playing again.
  * There is a workaround for this.

Beat Buddy Next Part Solution
* To solve the issues listed above, I have employed a computer in the loop solution.  I am using a Macbook as the computer and a USB midi interface (In/Out) in conjunction with this.
   * The new MIDI connection is BB Midi Out –> USB Midi In and USB Midi Out — X4 Midi In
   * Also needed is some MIDI software on the computer.  While there may be other solutions, I tested this with Bome MIDI Translator (MT) Pro .

Route the Midi Ports
In order to maintain the existing functionality, a route is added (via Bome MT) sending all traffic on USB Midi In out on USB Midi Out

Intercept the “Change Part” command and send new commands
Recall that the BB sends the CC102 on Channel1 even though the X4 is listening for commands on Channel4
1.  Bome MT listens on Channel1 and then triggers on the event CC102 with value = {1,2}.
2. Depending on the value {1,2} a 0ms (immediate) timmer is triggered using Bome MT to handle the respective part switching.  The Method is the same, with different CC commands used for the X4 depending on which part to switch to
3. Stop the existing loop on the X4
   * CC9   Looper 1 Stop ( if switching to loop2 )
   * CC23 Looper 2 Stop ( if switching to loop1 )
4. Wait 50ms [another value may also work, this is what I settled with that worked reliably]
5. Start the new loop on the X4
   * CC22 Looper 2 Rec/Dub/Start ( if switching to loop2 )
   * CC3   Looper 1 Rec/Dub/Start ( if switching to loop1 )
6. Make sure that Bome MT sends the preceeding commands on Channel4, which the X4 is listening for.

Running with the above Hardware in the Loop solution does seem to work reliably and very well.

MIDI Special Commands Needed
Based on the experience listed so far, I would suggest that TC adds a few “MIDI Only” commands that add additional functionality rather than just immitate a button press.

Start Stop Immediately
Regardless of what the DIP switch is set to, MIDI should expose the ability for a controller to stop a given loop, or all loops, immediately.

Play next part
* Also regardless of the DIP switch setting, the X4 should allow a MIDI controller to immediately transition to the next loop playing.
* It would be useful even to use a similar CC message and value like the BB is using such that the value can be {1,2} so that a MIDI controller can just immediately provide the change.

This would be a very useful feature anyways, but especially when used with a MIDI controller that supports pausing and resuming.
* a CC to pause would temporarily halt the playback
* a CC to resume would then start teh playback up again immediately where it left off.

I hope this is useful to anyone else looking.

read more