Hardware by SDS for

DJ Beat Eurorack Module

DJFX Controller

Reflex Live Loop DJ Audio Sampler Controller


DJ Beat

A module to convert Clock signals from script in DJ Mixxx Software to useful clock pulses for eurorack sequencers, cross-over sequencers (i.e. Beat Step Pro / sim), and MIDI type hardware sequencers (i.e. SDS Accord  Sequarallel)
 
Keeping in the 3 HP size range, it's a compact addition to the rack, even though it's presently on the test panel between Mixxx and the rack right now!

Most of the info about the development of this module is available in the youTube video below, but a brief description is in order for those that are bandwidth challenged (as even I was -up until recently)

As can be seen in the panel image, there are 4 CV output jacks, 3 trigger style, and 1 analog CV for the VU Meter output. This can be useful for audio level controls in the modular, like gain on Mixxx audio gain, ducking, or lights.

The main clock output provides an evenly spaced accurate clock for beat style module applications. The Accord Sequarallel derives all of it's clocks & multipliers from a solid 1/4 measure clock input. An Ornament & Crime module can be used to multiply up clocks from this as it is nice and stable.

The Beat output, mis-named really, outputs 4 clocks to every pulse the Clock outputs. It is also as stable. This is useful for hardware that needs a faster clock like the aforementioned BeatStep Pro, or an Octatrack.

The Reset output will send a pulse on every 4 clocks by default. As an option (mode button held etc) it can output only on a start condition after a stop.

To make the module compliant with a couple of others I have in the rack, the DJ Beat will:
-continually output clocks at the last rate known, or 120 BPM from a power up.
-Stop clocks for 4 beats when a "real" clock from Mixxx is received.

The knob acts as a clock phase adjustment. At first the range was a full beat, but I found adjustment was only for aligning a very small region, namely the latency of the audio card in my DDJ Flex4 controller. For the first weeks I was having to make slight adjustments, even over a single evening, but soon realized it was the beat-markers in the songs that were out not the DJ Beats module!

Since then I have shored it up to a quarter of that range. Also the knob selected 1 of 24 (MIDI) steps in a beat. This turned out to be rather coarse when using for drums, so I tightened it up to 96 PPQN which is nice. The MIDI clock output still runs at 24 PPQN as everything I own is that, although eventually I'll just make it an option for you more picky timing connoisseurs!

 

So... How does it work so well???

I have seen a couple of others on Mixxx forums pioneering into external synchronization with Mixxx, each with less than wonderful results. One was quite creative and ended up just being a hand maintained precision time base that, in the videos, worked surprisingly well! I had started in on the idea about 6 months prior to making it work properly as never had the time to finish. In that time I saw problems of others (wanting to go straight from Mixxx to MIDI) and getting really discouraged and stopped posting any updates. The was discouraging for me too!

I had thought of a decent modification to the Mixxx program that would insert a "ping" into the audio stream similar to the way Ableton Link works with their wireless clock controls. It is after all riding on something that does need to keep streaming, audio, thus might be foolproof. I have never tried it so I don't know but it seems to  work. With link, software and app's can all stay in sync, but for MIDI clocking hardware we have in the studio, a hardware bridge is still needed. . ..not to mention modifying Mixxx to send the ping! Out of my league entirely.

"Beat_Active"
Years ago (2012) I attempted this as soon as I saw "beat_active" key. This is sent every javascript cycle from 50 mS before the beat, to 50 mS after the beat. I thought, OK! I'll just have the processor wait until it get the Midi message that indicates a beat_active, add 50mS to it, then ignore any more for 100 mS. in 50 mS output the clock pulse. Solved!
 

Unfortunately, this was very misleading. As it turns out, the script cycle (unlike the little processors I program) is very slow, and can probably be even slower or they wouldn't have made the fudge-factor 100 mS! As the diagram above shows, the first beat_active can vary by 20 mS. In reality you could double that from my results.

 

Enter the "beat_distance" Parameter!
I'm not sure how long the beat_distance output has existed in Mixxx, but it made everything here possible. I can't remember what it was intended for, but it works!.
As you can see in the above simplified example, the present point of play, relative to the last beat, is sent. I simply converted the 0.00 to 1.00 value to 0-127 for a Midi CC value, multiplied it by the last beat time then subtracted that from the beat time to predict when the next beat will be.

OK OK, I know what you're thinking; If the calculations are based on the last beat time and phase, then it's all relative to the first beat, so how can it be accurate? Well the beat_active works both ways, a bit ahead, of a bit behind. In the DJ Beat module is a free-running clock so alignment is achieved over a few clocks by adjusting towards it. Once stable, the offset knob is set to make up for propagation delay in the whole system, and doesn't really need to be touched again. Changing your sound devices latency setting might warrant an adjustment, but it's solid.

 

This video shows the designing, programming, theory, and application of the SDS DJ Beat as it was in December 2023. Some updates have improved it since, both decks can control it and only while the deck is playing (play_latch)

So far, having clock sync for my modular sequencers and rack has been a gas! Fo MIDI it's perfect for sync'd arps on my Korg, and hardware drum Loops

 

There's more to come! The script and xml for Mixxx (controller file) and Arduino (.ino) / schematic for the DJ Beat module will be posted here once it's more ready!

 


DJFX Controller

A USB FX Controller designed for Mixxx! Use all 6 FX with some special features...

 

Web page under development

Last update March 3rd 2024