New Experimental OS for x0xb0x adds DIN Swing
Moderators: Altitude, adafruit_support_bill, adafruit, phono, mome rath

New Experimental OS for x0xb0x adds DIN Swing

by Omsk411 on Sat Apr 07, 2012 12:35 pm

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.]
Attachments
x0xb0x.hex
OmskOS v0.9 beta for x0xb0x
(42.76 KiB) Downloaded 319 times
Last edited by Omsk411 on Sat May 12, 2012 11:34 am, edited 2 times in total.
Omsk411
 
Posts: 9
Joined: Sat Apr 07, 2012 12:00 pm

Re: New Experimental OS for x0xb0x adds DIN Swing

by antto on Sat Apr 07, 2012 3:00 pm

there is the option to use MIDI sync from your PC which is shuffled
..just saying

about the x0x being 1 clock tick late - yes
this has been a bug in the stock x0xb0x firmware, and has propagated into sokkos
recently, i think alex_dubinsky reported it
but i've solved that problem in my firmware before that, and i haven't even noticed it :roll:
We are here too: irc.freenode.net >>> #x0xb0x
..:: c0nb0x v1.00 ::.. http://forums.adafruit.com/viewtopic.php?f=7&t=29282 (new control app - win/osx)
VCO Tuning: http://forums.adafruit.com/viewtopic.php?f=12&t=24759 (do it the EASY way)
User avatar
antto
 
Posts: 1362
Joined: Thu Apr 15, 2010 2:21 pm
Location: 127.0.0.1

Re: New Experimental OS for x0xb0x adds DIN Swing

by Omsk411 on Sat Apr 07, 2012 5:39 pm

antto wrote:about the x0x being 1 clock tick late - yes
this has been a bug in the stock x0xb0x firmware, and has propagated into sokkos
recently, i think alex_dubinsky reported it
but i've solved that problem in my firmware before that, and i haven't even noticed it :roll:


That's crazy. I bought this thing brand-new from Just Music here in Berlin and this timing bug was in it. I'm surprised Mode Machines would ship it that way.

antto wrote:there is the option to use MIDI sync from your PC which is shuffled
..just saying


Not an option for me. I'm going strictly hardware--there's no PC in my rig. It's just a nice, clean setup of 4 boxes...at least, that's my plan now that I've got the x0xbox working the way I want:
Attachments
Screen Shot 2012-04-08 at 00.37.18.png
Screen Shot 2012-04-08 at 00.37.18.png (668.26 KiB) Viewed 6843 times
Omsk411
 
Posts: 9
Joined: Sat Apr 07, 2012 12:00 pm

Re: New Experimental OS for x0xb0x adds DIN Swing

by antto on Sat Apr 07, 2012 6:41 pm

Omsk411 wrote:I'm surprised Mode Machines would ship it that way.

:lol: i doubt they even care how the firmware works

note: this is open source, thus any bugs are supposed to be fixed by whoever is able to do it
We are here too: irc.freenode.net >>> #x0xb0x
..:: c0nb0x v1.00 ::.. http://forums.adafruit.com/viewtopic.php?f=7&t=29282 (new control app - win/osx)
VCO Tuning: http://forums.adafruit.com/viewtopic.php?f=12&t=24759 (do it the EASY way)
User avatar
antto
 
Posts: 1362
Joined: Thu Apr 15, 2010 2:21 pm
Location: 127.0.0.1

Re: New Experimental OS for x0xb0x adds DIN Swing

by Luap on Sat Apr 07, 2012 9:04 pm

Omsk411 wrote: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


They are amongst the cheapest x0xb0xes available for a reason ;) Lots of warning signs around here and elsewhere about the internet.

Omsk411 wrote:I'm surprised Mode Machines would ship it that way.



No one here will be! :lol:

But I hope it serves you well.. And damn, thats a lot of good work you did in just 2 days!? Good job 8)
Luap
 
Posts: 355
Joined: Wed Jul 08, 2009 6:10 pm
Location: London'ish. UK

Re: New Experimental OS for x0xb0x adds DIN Swing

by izze on Sat Apr 07, 2012 9:52 pm

Hey Chad!

I always thought that it is because of some sort of midi latency on my soundcard that my x0xb0x is always a little out of sync, great to hear that you fixed it.. Great Work !! :)

I love your setup, thumbs up for anyone who doesnt use a PC' in his musical setup !! I was like you, but now having the Access Virus TI, i had to implement my pc into my homestudio.
Keep it up!

Thanks for the firmware
User avatar
izze
 
Posts: 75
Joined: Thu Sep 02, 2010 1:28 am

Re: New Experimental OS for x0xb0x adds DIN Swing

by Omsk411 on Sun Apr 08, 2012 3:08 am

antto wrote:note: this is open source, thus any bugs are supposed to be fixed by whoever is able to do it


I must respectfully disagree with this statement. While it's true that the open-source nature of the device means that bugs can be fixed by whomever is capable, it doesn't mean that a customer should expect to be faced with such things as soon as they unpack it from the box. This x0xb0x is sold through a professional music dealer alongside other products from Dave Smith Instruments, Access Music, Roland, Yamaha, and Korg. This customer expects to be buying an instrument to create music, just as I did. Being an open-source platform is no excuse for putting out an inferior product. The product should ship with a stable and reliable set of baseline features (was there a pun there?) and the open-source nature of the product should just be a cherry on top for those who want to invest the time to customize the device to their needs.

antto wrote: :lol: i doubt they even care how the firmware works


Luap wrote: They are amongst the cheapest x0xb0xes available for a reason :wink: Lots of warning signs around here and elsewhere about the internet.


:oops: Geez...that doesn't paint a nice picture of the Mode Machines brand, which is a shame since I was actually interested in the SID box they make. It seems like a great combination of x0xb0x sequencer action married to a SID...a sort of dream machine for me...but now I must approach with caution. :(

I guess it's good that I qualified my statement about the x0xb0x sound quality by limiting it to the Mode Machines version. If they are, indeed, the cheapest out there, then I guess I can take comfort in knowing that other x0xb0xers may be enjoying an authentic TB-303 sound. My statement was made more as a public service announcement--a caution to anyone who is curious about the Mode Machines x0xb0x. For me, I'm looking for the silver lining here and am actually glad that my x0xb0x doesn't sound exactly like a TB-303. It will compliment the real one when put into the mix.

izze wrote:I was like you, but now having the Access Virus TI, i had to implement my pc into my homestudio.


Funny--my TI2 Desktop is sitting just out-of-frame to the left of the setup in my picture! I know exactly what you mean about that thing--it's a complete joy to use in a DAW. It merely compliments all the benefits of working in a DAW--instant recall of projects, no external patching, etc.--while providing all the fun of a hardware interface and the CPU savings. I had thought about using the TI in my live setup, too--I still have a stereo input open on the Octatrack and 8 free MIDI tracks for sequencing. But, alas, it will simply be too much to carry to a gig where setup space will likely be limited. For now, I just sample it into the Octatrack. But I digress...

izze wrote:I always thought that it is because of some sort of midi latency on my soundcard that my x0xb0x is always a little out of sync, great to hear that you fixed it.. Great Work !!

Thanks for the firmware


You're welcome and I hope it fixes the problem for you! :D

-Chad
Omsk411
 
Posts: 9
Joined: Sat Apr 07, 2012 12:00 pm

Re: New Experimental OS for x0xb0x adds DIN Swing

by Omsk411 on Sun Apr 08, 2012 3:16 am

Oh, and I guess I should add one more thing: Now that I've taken care of my technical problems and have actually had a chance to try using the x0xb0x to make music last night, I have to say that this thing is DOPE!!! While I have no problem programming lines into my real TB-303 (especially after replacing all the tact switches to get rid of double- and triple-triggering issues), it's so much more fun and intuitive to build a sequence while everything is running...hearing all the changes in real-time without ever loosing the groove. The step-wise interface of the x0xb0x firmware is such a great benefit. I can already foresee my future workflow:

1. Write first part in real-time on x0xb0x.
2. Quickly transcribe that part into the TB-303.
3. Write second part in real-time on x0xb0x.
4. Play both at the same time.

:mrgreen:

-Chad
Omsk411
 
Posts: 9
Joined: Sat Apr 07, 2012 12:00 pm

Re: New Experimental OS for x0xb0x adds DIN Swing

by antto on Sun Apr 08, 2012 4:42 am

i think your impression of Mode Machines will change upside down if you browse this forum
did Mode Machines in any way pointed you to the adafruit or ladyada website?
before you bought it, did you know that it's not designed by Mode Machines but by someone else, and Mode Machines have nothing to do with it's design at all?
this is where you're supposed to go if you were ti find out more about what the x0xb0x is

on one hand, Mode Machines has written a nice specification of the x0xb0x as if they guarantee about it, or as if THEY made it..
on the other hand, if something goes wrong - they will probably blaim it on the creator (ladyada)

..how convenient, isn't it?
We are here too: irc.freenode.net >>> #x0xb0x
..:: c0nb0x v1.00 ::.. http://forums.adafruit.com/viewtopic.php?f=7&t=29282 (new control app - win/osx)
VCO Tuning: http://forums.adafruit.com/viewtopic.php?f=12&t=24759 (do it the EASY way)
User avatar
antto
 
Posts: 1362
Joined: Thu Apr 15, 2010 2:21 pm
Location: 127.0.0.1

Re: New Experimental OS for x0xb0x adds DIN Swing

by guest on Sun Apr 08, 2012 5:50 am

its good to see somone mucking around in the firmware
guest
 
Posts: 3155
Joined: Fri Feb 17, 2006 4:35 am

Re: New Experimental OS for x0xb0x adds DIN Swing

by izze on Sun Apr 08, 2012 5:59 am

Well Chad if you want a SID you should build a MB-6582 (Midibox). I built one fully loaded some time ago, but sadly i had to sell it because of financial crisis (hard times for me). I cry every day thinking about my beloved MB 6582 :(

Image

Image


Oh so you got a TI2 ? thats dope! i love using mine, the possibilities are endless, i hope the new OS comes out soon.

The x0xb0x is a real winner to play around, maybe if you got the time, open yours up, use as_x0x_tune VST to tune it, and also tune the Cutoff with TM3 after that and that should fix "most" of the "mode machines doesnt sound like the real thing" problems. I dont think modemachines takes the time to tune it, i guess everything is in middle position and gets shipped that way.

Oh my god.. still.. how i miss my SID :cry:
User avatar
izze
 
Posts: 75
Joined: Thu Sep 02, 2010 1:28 am

Re: New Experimental OS for x0xb0x adds DIN Swing

by kroffe on Sun Apr 08, 2012 2:27 pm

Testing out omskOS 0.9 beta right now and it seem to be running smoothly. No big functions seem to be cut out of sokkOS which is a real gem. Great work! :mrgreen:
kroffe
 
Posts: 37
Joined: Wed Jan 21, 2009 2:04 am

Re: New Experimental OS for x0xb0x adds DIN Swing

by Omsk411 on Mon Apr 09, 2012 3:29 am

antto wrote:i think your impression of Mode Machines will change upside down if you browse this forum
did Mode Machines in any way pointed you to the adafruit or ladyada website?


No, I found this place on my own after trying the DIN Sync swing function and wondering why it wasn't working.

antto wrote:before you bought it, did you know that it's not designed by Mode Machines but by someone else, and Mode Machines have nothing to do with it's design at all?


Yes, I knew that Mode Machines wasn't responsible for the design of the x0xb0x before I bought it, but I was given false security by the brand name and the fact it was sold at a normal music store. The message I got was "Don't want to spend all the extra time mucking about trying to find parts, build, and tune your own x0xb0x? Then you're in luck: Mode Machines has already gone through the effort so you can get right to the important part: making music!" Of course, this statement wasn't written anywhere, but this was the impression I got from it all. Now I know better. :(

izze wrote:if you want a SID you should build a MB-6582 (Midibox).


That might be a good idea. I'd finally be able to put this pile of 6581, 6581R4, and 8580R5 chips to some good use... :roll:

kroffe wrote:Testing out omskOS 0.9 beta right now and it seem to be running smoothly. No big functions seem to be cut out of sokkOS which is a real gem. Great work! :mrgreen:


Thank you! Indeed, I did not remove any functions from the SokkOS when I added the DIN Sync Swing. Well, let me rephrase that: I did not intentionally remove any functions from the SokkOS and my changes shouldn't have affected any of the existing functions, but this claim still needs to be tested and verified. ;)

The SokkOS is pushing the limits of the microprocessor's program memory, but I was lucky to be able to implement my changes with only a few lines of additional code. I might not be so lucky if I try to add something else (and after using this thing the last two nights, I do have an idea for one more feature I'd like to sneak in if there's space for it...).
Omsk411
 
Posts: 9
Joined: Sat Apr 07, 2012 12:00 pm

Re: New Experimental OS for x0xb0x adds DIN Swing

by Omsk411 on Mon Apr 09, 2012 2:36 pm

Hey everyone!

One final update now that the extended weekend is wrapping to a close. I've added one more handy feature to my OS as well as performed a tiny code optimization. Here's an explanation of the new feature:

When in MIDI Sync mode, the RUN button now toggles the run-state of the DIN Sync device. Pressing RUN will turn off the Start pin of the DIN Sync but will keep the clocks going. Pressing RUN a second time will re-engage the Start pin on the next nearest eighth-note. What that last bit means is that you can now stop and restart a DIN Sync device in the middle of a performance while keeping all your other MIDI gear running! This is essential for some of the Roland boxes where you have to stop them in order to switch between Play and Write modes, or to switch to other Banks/Tracks. Just stop the slave device with the x0xb0x's RUN button and make your changes, then use RUN again to restart in-sync. 8)

I originally limited this feature to work only while the sequencer was running, but removed that restriction because its also useful to be able to start the DIN Sync device while all the other MIDI gear is stopped. That provides an opportunity to "solo" the instrument and tweak it on its own without having everything else running. To do this previously required disconnecting the SYNC cable or switching off the DIN Sync on the device, a procedure that had become tedious.

Note that if you start your MIDI Clock source while the DIN Sync device is running, the DIN Sync device will not reset its playback location to the beginning of its pattern--it will just keep running from its current location and will likely be out-of-sync with the MIDI Clock. You must manually stop the DIN Sync device by pressing the Run button before starting the MIDI Clock source in order to have the DIN Sync device start at the beginning of its pattern.

I've been using this OS throughout the weekend and have been very satisfied with its performance and reliability. If you can benefit from its additional features, then I hope you find it similarly enjoyable. This x0xb0x has really become my dream MIDI-to-DIN Sync converter...and it's a cool synth, too! :D

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 load/edit/storage portion of the OS, it would obviously be prudent to backup your patterns any way you can before trying this out.

Cheers!

Chad
Attachments
x0xb0x.hex
OmskOS v0.93 beta for x0xb0x
(42.92 KiB) Downloaded 293 times
Omsk411
 
Posts: 9
Joined: Sat Apr 07, 2012 12:00 pm

Re: New Experimental OS for x0xb0x adds DIN Swing

by izze on Mon Apr 09, 2012 5:56 pm

What a busy little bee you are :D

Cant wait for 1.0 release, you keep spitting them out in no time. Good work, where is your knowledge from ?

Greetz
User avatar
izze
 
Posts: 75
Joined: Thu Sep 02, 2010 1:28 am