Building Controllers 0.1: Progress

November 8th, 2012

I’ve continued on my Mixer project, adding 8 per channel as meters. Currently, each meter circuit consists of a 4094 register attached to a uln2003 transistor array. The idea behind that was that it’s actually possible to control each led individually this way. However, the wiring of these two is pretty space consuming and besides the two chips also each led would need its own series resistor. I tried tow hack myself around that by controlling the leds voltage with pwm from the arduino I use to control and read the mixer. Unfortunately this leads to the pwm leaking into the whole circuit and thus screwing with my fader readings. No good…

For the next version I will use an MC34063 instead. It takes an analog control voltage to light up up to 10 leds and already provides the series resistors inside. Since I will not use the pwm outputs of the arduino for anything else, it seems convenient. The 34063 is a bit pricey though (€1,35).

Apart from all that, the setup worked nicely and I’m looking forward to having it all save and sound in a case to actually start playing with it!

There was no space left on the board for the uln2003s, so they needed to be attached with cables. Sisyphean task...

This board is seriously overhacked...

The raw mixer...

...looks much nicer once you put a lid on it :)

Quäkmonster Workshop for KOMA Elektronik

November 7th, 2012

KOMA Elektronik asked me to host a workhop making Quäkmonsters for DE:BUGs “Musiktechniktage” last week. It was quite fun and we got some very nice results. With this positive experience, stay tuned for more to come!

The Original, waiting for company

Some bodies are made for antennas :)

These two came out great!

Dissecting a Gear Motor

October 29th, 2012

There’s a project I’m working on (yes ANOTHER one, stay tuned, I’m serious with this one!) where I need to use a motor with around 20rpm that runs on 3-5V DC. I actually [found one] but it’s awfully loud. I opened a gear Motor that runs on 230V AC to see, why that one is much more quiet (only vibration).


the 230V AC mirror ball motor: the gears inside, then the motor, consisting of a permanent magnet in the middle and a coil wired directly to 230V

My guess is that the DC motor produces more noise due to its higher pulse frequency and the brush contacts whereas the AC motor has no brushes and pulses with 50Hz, a frequency not amplified by its enclosure…

HowTo: 14bit Midi from PD to Ableton Live

October 24th, 2012

Midi sucks. I never understood how people could work with 7bit when it comes to filters or mixing consoles. That’s why I started building my [mixer controller]. Now that it at least works halfway, I started experimenting with its implementation with common computer programs. Luckily, Live has the ability to handle 14bit midi messages, and its easy!

How 14bit midi works

The regular MIDI control message has 7bits, giving you a number between 0 and 127. 14bit messages use two of those, using two corresponding control messages. Looking at the list of [MIDI controller numbers] you can see that numbers 32-63 are “LSB for controllers 0-31”. They provide the 7 higher bits to our value. Controller 1 gives us 2^0 to 2^6, controller 33 will add 2^7 to 2^13. A device or program that uses 14bit midi will expect both messages to be sent together.

I built a small patch in PD that takes an analog signal read by an arduino and converts it to two midi messages, sending a 14bit midi message on channel 2, using controller 1 and 33. Note that the Arduinos analog in uses only 10bit. That’s why we multiply the incoming number with 16, adding 4 bits.

converting a 10bit number into a 14bit MIDI message

The messages are sent via a virtual MIDI port. Here’s a nice tutorial how to set that up on a mac:

How to implement 14bit control messages in Ableton

It’s very easy. Activate Abletons MIDI learn function, click on whatever you want to control and turn your knob or use whatever controller you want to implement. Ableton will recognize it. Now look on the bottom of the screen and you’ll see a drop down menu where you can choose the kind of control message Ableton should expect from that controler. Here, you choose “Absolute(14bit)”. And there you go :)

Bottom left: choose the type of message you're receiving

I hope this helps! Let me know if I made a mistake or you didn’t understand something.

Building Controllers 0.1 [updated]

September 22nd, 2012

Being a fan of customized user interfaces, I started building me a small mixing desk controller.

The idea is to in the end have a set channel modules that I can stick together and have a mixing desk controller of the size I need. Below you see my first test version that has 5 Channels with 5 potis and one slider and a button with led each (makes 30 potis/sliders in total). They’re connected via the obligatory Arduino, multiplexing one analog in via a combination of 4094 registers and 4051 multiplexers.

As you can see, the first board design needed a considerable amount of hacking. The main feature, a backchannel that feeds 5 vu meters with audio levels, isn’t on the board yet. But so far it works. Stay tuned…


The Dark Side. Quite a few bridges were to be made...


Front view. The pcb is a standard EU (16x10cm). Pretty compact :)


I took a back plate of one of our enclosures at work to build an enclosure for the mixer. I already managed to control PureData and Ableton with it. Next is Virtual DJ. It’s fun for sure!

Now with a little improvised front plate

CNC me pt. 4 – what again?

August 15th, 2012

With quite some shame I admit that the reason you did not hear about this project for 8 months (!) is mainly because I was to lazy to drag myself to the next screw specialist. To put the parts together I had drilled in december I needed a special kind of screw with a flat head. They did not have those at my favorite hardware store and 6 weeks of holiday in Thailand distracted me, so it only came to my attention last week that a specialist is actually just around the corner…
Anyway: here’s a first glimpse of the result. I can already see that it is full of design flaws. However, I will continue with it, knowing that I’ll learn a lot in the process. Main problem now will be to design a z-axis that fits around the thing. The table itself is about 60cm long, which means, I’ll need a base of at least 80×80 to fit the support for the last axis. Let’s see what I can do…

The actual table is not installed yet. It can move about 35 cm in each axis.


July 11th, 2012

Even though this years was by far my best [Fusion Festival] there’s not too much I remember about it musicwise. I’ll leave it up to you to imagine why ;) Anyway, in retrospective, I find two acts worth mentioning, simply because they were exactly as entertaining as I expected them to be:
Be Svendsen had me rocking for two hours straight. He was an heavy rotation already before I got to the festival, but now it’s even worse. My favorite: Black Tower Hotel

Douglas Greed did a beautiful opening of the main stage two o’clock noon on saturday. As mentioned before, I do not favor vocal tracks, but his combo did some serious rocking. Here’s a nice podcast of his I found:

To come down, listen to Nicolas Jaars Essential Mix. I spent two hours watching the summer rain from my window listening to it. The man’s a genius…

Follow Me!

June 15th, 2012

There’s a new feature to this blog! If you look into the lower right corner of your browser you’ll see a “follow” button (provided you activated java script in your browser). Click it and leave your mail address. You’ll be updated whenever there’s a new post.


June 15th, 2012

I do admit I hate vocal house (at least the souly stuff). Douglas Greed really made me laugh with this one:


Arduino Multiplexing / Pure Data Communication

June 13th, 2012

I’m learning a lot of Arduino stuff right now, since I started yet another project. The objective is to create controllers that output 14-Bit MIDI (also known as [NRPN]) or OSC. Reason is mainly that MIDI pisses me off thousandfold. Why the hell are we still stuck to 7 bits when it comes to controlling musical equipment?!?
So I sat down and started designing a sort of mixer controller for use with [Pure Data] that not only controls but also get a visual feedback on sound levels in the form of LED bar graphs. I did a basic layout I will post later. For now it looks like a standard mixing console with

  • 4 channels having
  • 1 Fader
  • 9 knobs (typically 1xGain, 4xEQ, 4xAux)
  • 10 Buttons (Mute, PFL, 4xGroup, 4xPre/Post)
  • 10 LEDs to show button states
  • 1 12 LED bargraph to show audio levels


That is a lot of analog in and output. Considering the amount of free pins on an Arduino, this calls for some serious multiplexing, of which I did first tests in the last days.

Pure Data audio levels on a LED bar graph

I did some first tests connecting two 10LED bar graphs to 3 4093 shift registers. I played audio files in PD, using [env~] to get the dB levels on a scale from one to ten and send them to the Arduino which then conveyed them into the registers. This was a bit tricky since a register only goes to 8 and the two leftover LEDs have to be controlled with the next one. I got it running after a while, though.

Results: I tested several intervals for [env~] and settled for 8000 samples. Everything else made the display too jumpy. The dynamic of the scale is still not satisfactory. That is something that might be solved by software, but the binary output of the 4096 also limits it a lot. While it`s really cheap this way, I might be better off using a D/A converter.

I learned quite some things about serial communication and it’s parsing with the Arduino. I might write a tutorial these days…

Multiplexing analog Inputs with the 4051

To handle the above amount of sliders and potis I’ll have to do multiply it’s analog inputs. The cheapest way I found so far is to use 4051s  (8 ins) or 4067s (16 ins). I salvaged a circuit board from a broken midi keyboard of mine that had 8 sliders and 8 knobs in combination with two 4051s, so I wrote a patch that reads these 16 controllers and reports changes to PD. That worked extremely well. I will post the Arduino program and the circuit here in a while.