Hey everyone!
I'm brand new here and have only owned a x0xb0x for about two days now. I originally purchased this Mode Machines x0xb0x because I read the SokkOS user manual (both for version 1.9.1 and 2.0 beta) and saw that the DIN Sync output was supposed to swing when you turned up the swing on the x0xb0x sequencer. Much to my dismay, I found that this was not true. Though it was possible to get the x0xb0x to swing, the clock coming out of the DIN Sync jack was still straight timing. I found a forum post from Sokkan (the guy who wrote the SokkOS) where he clarified that he never claimed or intended for the DIN Sync output to swing with the x0xb0x sequencer and that it must have been a mistake on the part of the manual writer.
I was totally pissed by this since the ability to swing the DIN Sync output was 90% of the reason that I wanted to get the x0xb0x. I already have a TB-303, so I didn't need the synth (and I can tell you, the Mode Machine x0xb0x does NOT sound like the real thing...the filter cutoff range is totally different and the resonance doesn't boost the bass when it's turned down...but whatever). But you all know that the real TB-303 cannot swing, and I didn't want to bother with some sort of shuffle box--a piece of hardware with a power supply that makes absolutely no sound--when assembling my live show.
Therefore, I took it upon myself to take a look at the SokkOS 2.0 beta source code to see if I could hack in a DIN Swing of some kind. After over a day of work, I'm happy to say that I believe I have succeeded! I present to you all: OmskOS 0.9 beta!!! [EDIT: Version 0.94 available further below.]
As mentioned above, I started with SokkOS 2.0 beta and ended up fixing one problem immediately: I found that the x0xb0x (and also my TB-303 slaved to the DIN Sync) was 1 MIDI Clock pulse behind the rest of my hardware. It was especially easy to notice when slowing down the MIDI Clock source to 40BPM. Has everyone been using the x0xb0x this way for the last few years? I sure hope not but, if you have, you may be very happy with my fix. Now the x0xb0x and TB-303 start exactly on the beat when I hit play on my MIDI Clock source (which is an Elektron Octatrack if you were wondering).
Secondly, I implemented a crude DIN Swing by exploiting some mechanisms that already existed in the SokkOS. The reason that I say my solution is crude is that the DIN Clock being generated is not evenly spaced when the x0xb0x is running (either when synced to MIDI Clock, which is my primary use-case, or when running on Internal Tempo). What my solution does is to send out 3 DIN Clock pulses in rapid succession for each 32nd-note that occurs in the x0xb0x sequencer. The three pulses take about 15ms to transmit (I did not test this on a scope--I'm just basing this number on the various timers in use on the microprocessor) and then no DIN Clocks are sent until the next 32nd-note in the x0xb0x sequencer.
I decided to go for this solution since none of the Roland gear I have are equipped with sequencers that run higher than a 32nd-note timebase. Therefore, when the first clock pulse triggers a note on the TB-303, the next two pulses are simply counted by the TB-303 but don't cause its sequencer to advance. Therefore, in a series of 6 clock pulses (6 pulses are required for each 16th-note), only clock pulses 1 and 4 are of any significance to the TB-303 (clock pulse 1 engages the note-gate of the synth while clock pulse 4 closes the note-gate on a 16th-note). The other 4 pulses are only necessary to advance the TB-303's internal counter so it is cued-up for the next note on the following clock pulse. I assume this will work with any of the Roland drum machines as well as the TB-303, but probably will NOT work with the MC-202 which has very deep timing characteristics in its sequencer. If someone has an MC-202 and wants to confirm or deny this assumption, I'd appreciate it.
Because, at the highest swing setting, the DIN Sync must send 6 pulses in extremely fast succession, the top tempo I've been able to reliably achieve is 150BPM. Anything higher than that and the 15ms run of clock pulses will start to smash together and the TB-303 will fall out of sync. Of course, with lower swing amounts, the tempo can be increased further. In my opinion, this is an acceptable limit since the swing starts becoming rather jumbled at that those high tempos--the groove disappears. The groove is much more enjoyable down below 130BPM.
I have attached the x0xb0x.hex file here so anyone who is interested can give it a shot. As I mentioned before, using the x0xb0x slaved to MIDI Clock is my primary use-case--any other usage may not work correctly (for example, I already know the DIN Clock will sometimes be wrong right when the sequencer starts when using Internal Tempo). Nevertheless, if you're slaving your x0xb0x to a MIDI Clock source, I think you'll find this works pretty well.
DISCLAIMER: I cannot take any responsibility for any problems, loss of data, or destruction of property that could occur from using this OS. It is submitted for you to use as-is and I make no warranty or guarantee to its effectiveness or stability. I'm not a commercial developer--I'm just a bit of a weekend boffin who wanted to solve a particular problem for himself. If you also have success with this, I will be happy. But if you have problems, please understand that there will be little I can do to help you. And even though I made no changes to the pattern/playback portion of the OS, it would obviously be prudent to backup your patterns any way you can before trying this out.
Best of luck and enjoy!
Chad
[EDIT: Version 0.93 available further below.]



