If you're not into techno-garb, skip the
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
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.
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.
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.
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
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.
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
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!
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.
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.
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
-Adding more drums in a tune, synchronized of course, would be awesome.
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
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
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!
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
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
**Stay Tuned! I will add updates from time to time Sandrine Sims March