Trance Dance Pop House Techno Blues Folk Ambient Disco Soundtrack

A Simpler site... ..for simpler times!

Fresh DJ MIDI / Vinyl Controller

 Intro: If you're not into techno-garb, skip the green parts ok?
There's lots of MIDI based DJ software controllers out there in the $400 - $4000 range, and yes, if I didn't know electronics & design I would need to try to make one of those match my requirements. They say you can have any setup you want if you're willing to fork over the donaro's. I'm not willing (or able hehe) so I'll have to "make do".
A really great ( & free, which is what makes it great - er ) software is DJ Mixxx. It has a few bugs which are constantly being ironed out by a whole group of people, and is open source which runs on all different platforms. If you have a really good suggestion, chances are it may be included in the next build.

  The requirements I've set out are somewhat unique as well.  I want the unit to not only control a DJ software via MIDI, but would like a timecode vinyl that actually spins like a record  to simulate the action without the bulk of a turn table.  The unit must also have it's own sound card to play the master and a secondary channel for headphones. This way I can feed that into the main sound mixer without interfering with my DAW software(s), but be able to add FX using VST hosts.

  There's also "wish list" additions that may go in later, like a hardware sample recorder to get rid of latency issues, and perhaps a secondary MIDI controller to control a separate software, like the one I may be using to do a "live" song.

  So far, I've made a few boards to take advantage of the original rubber buttons on the Casio case.

  The board to the left has electronic switches (4066's) to switch 3 banks of control pots. There will be a total of 20 knobs mounted mostly on the large flat plastic area below the boards.

  The second board has a display on one side, and the main processor ( a PIC16F74) on the visible side. This chip will control everything except the vinyl simulator.

  The 3rd board is just for push buttons, and the 4th is for buttons and the vinyl control.

  The vinyl PIC  controls a motor out of a VCR that ran the capstan, which is attached to a mount for a CD. I tryed using a CD stepper drive, but it was too weak and glitchy. I think it's designed more for high speeds which isn't at all suitable for 5 turns/ second that this CD will rotate at.
  5 turns/second you say? I know, a real record only turns once every 2 seconds, but some R&D is in order! The CD's data side makes no difference, it's just a shiny cool thing to look at. It's the label on the other side that matters.

  To digitally control any DJ software, 2 signals of 1 kHz, one 90 out of phase with the other must be sent via 2 audio channels. I decided to use infra-red emitter/detector pairs (possibly out of the same VCR??) to pick up the soft lines of this label I designed in Maya.

The soft lines will approximate a sine wave, which is what the software wants.

  The reason for the 90 phase is so the software knows which direction the vinyl is spinning. The PIC microcaontroller will also use this signal to sync the speed of the motor to exactly 1000 Hz. I've already tested the VCR motor and it responds amazingly well to a PWM control over 5 volts. I have added a LM317 voltage regulator to be certain the PWM control curve won't be too jittery. 

  Speaking of jitter, the only issue I've had so far is the label on the disk. The printer didn't line it up well at all. This may need to be tried several times to get it right. Is that "wow" or "flutter"? Trying to remember those old phonograph terms.

  Here's the block diagram thus far. The "Kensington" thing is this cool old laptop dock I found at the Economy 2nd hand store. It has a triple USB 2.0 hub , a 5.1 sound card, RS-232, Printer port etc etc. The important thing is the USB & sound. I had to go inside and modify it so the center channel is now a line input. (Ain) Channels 1&2 are the main out L/R, and channels 5&6 are for the headphones. Notice that I couldn't help putting a
"Samp-Recorder" into the headphone line? I just did!    LOL!

  I had mentioned the cable/plug saving properties of this box? Building that in saves all those USB-MIDI cables, and 2 sets of audio lines right off.

 So basically, all my MIDI needs are done. (The main keyboard is feeding through a Evolution UC-33) So I'll be plugging the Korg into here, and the mini-synth which are both outputs. The light 16 light controller can come from the Korg's MIDI-thru.

  Wow! What a mess! Anyway, the little box at the bottom is an electronic cut-out pulse chopper (uses two buttons) that is totally real time. It'll be using 4066's to make it a soft switch, but it's completely stand-alone for now.

  March 26th 2012 - This image is a flash animation now so click on some of the sections to see schematics etc. If you have been following the project over February, you may have noticed the addition of the "FL Studio" PIC. This is to control the DAW software, and makes this controller unique.

Because I plan to merge canned music with my own, and perform it live, some automation is desirable. Many of my songs I do live are accompanied / automated by FL Studio in place of a sound engineer and lighting controller operator. (remember the starving artist comment? hehe) The big problem has been the huge awkward pause from one song to another, and I think in some situations it'd be better to even beat match them to flow together. Especially in a dance scenario.

  This new configuration enables all sorts of possibilities, beat-matching and cross-fading are only the basic things this set-up can do!
  -Automated Hot-Cues on the DJ Mixxx side can be automated as loops in FL Studio and called as one-shots from one button, or a note on the keyboard etc, and would move much  faster and in sync with the beat.
  -Adding more drums in a tune, synchronized of course, would be awesome.

  -Control over delays and deeper flanges / reverbs fed into FL Studio via the mixer has already been used several weekends, but to be able to cue knob presets on Hot-Cues  would be fun! There is some latency with the delays, but taking out the "dry" signal and offsetting the first delay by the latency gets rid of any problems.


 I've have lots of problems with the project including increasing the power supply twice, and then needing a fan on the regulators (damn TTL's!!) most of which are too boring   (and silly ) to mention..

Plus the above mentioned vinyl control might be on the scrap heap. I successfully made it work, but it's a delicate thing, and have been considering using a "touch strip" instead, but then, as my friend Mik said, "are you going to be scratching anyway?"  The answer is probably no, but I do like twisting things up sometimes, just for fun and getting crazy so you never know.

 I even thought of using an infra-red sensor to measure my hand waving back and forth like a Theremin to control "stuff"!

Anyway, it's all up in the air right now, but as you can see it's getting pretty crowded on that face.... and there's still at least 5 more buttons, a rotary step switch,  and a joystick to go on there! The joystick will be cool. Oh and I've collected up 4 foot pedals that I've reserved inputs for. Yay! Foot pedals!

The view below shows it  as it is now. There's a separate MIDI port for the lightshow / Korg synth / retro synth daisy-chain, and an extra off of the FL Studio in going back out as a MIDI thru. The 3 rd MIDI inside is for DJ Mixxx.


  Which slowly I'm figuring out how to program for. Script was never one of my strong suits, but I can write a clunky routine all the same hehe. Cheers!




 Update April 14th: There were issues with the FL Studio PIC being a 16F57, not enough processor! So I replaced it with another 16F74 which seems to have solved all of the problems. Writing the script for Mixxx to interface has been a challenge. I still haven't decided how to control the "Vinyl" input, there's so many ways. A finger strip piqued my interest for a while, but as for cue'ing, I've added an incremental rotary switch which also doubles as a song selector out of function mode.

 The button map has changed some for function / FL Studio modes, but a key change is the "Jump Ahead" mode. (Func+Sel Ch2 = on)
This allows looping out, then returning to the song at the position it would be at if there was no loop! Really fun to use, especially if you know the song. This is accomplished by the song being auto-loaded into Sampler 4 when the play button is pressed. When the loop is started, the main channel 1 or 2 continues to play with the volume down, and Sampler 4's volume is turned up. This happens seamlessly. Sampler 4's bass is cut so if you want to mix the original Channel 1 or 2 back in before exiting the loop, by turning it's volume control, the kick beat stays the same.
  If you just want to mix the jump loop into the original, turn it's volume control before entering the loop. This sets a defeat-volume-down, but just for one jump. Another thing I discovered is that the headphone-cut button can be used to cut in the main mix (if the headphones are on) during a jump loop. This makes great effects!

Anyway, here is the switch layout thus far, it looks complicated, but really it's not!

June 2012: I have written a user manual, and changed the USB 1.0 audio card to a Chinese cheapo USB 2.0 box. ASIO4ALL works great with it, and very low latencies!
 Of course I had to re-write the Mixxx script latencies to compensate. I can't post the user manual because it is so big, and it'd be useless to anyone but me, but it's 16 pages long.

4 Pages are to do with MIDI implementation / interaction. FL Studio can control most aspects of Mixxx directly, but the function that allows me to perform a song into the end of a song playing in Mixxx, then at the end of my song, automatically play Mixxx's Channel 2...with sync'ed beat!..way cool!


Well there it is, yet another project done....and yes,  it's important!

                     **Stay Tuned! I will add updates from time to time Sandrine Sims March 16 2013. Updated to remove flash Nov29 2023


 home page