I always have some problems with starting a new post about a device I built. They always seem to begin similarly. This post, anyways, describes the actions that took place for me building a DMX-to-Kramer converter.
The operation is quite straightforward: You assign a DMX-address to the device and connect it to lighting-desk/ your DMX-infrastructure. Upon receiving certain DMX values the converter sends out data via its serial port. These data being sent out are part of Kramer’s Protocol-2000 command-stack.
This way you can control any Kramer device via DMX.
To keep operation as simple (and secure) as possible I did not implement the complete command-set of Kramer’s Protocol-2000 but only a few commands. In this example I only implemented the commands to change video-output of the Kramer device. Anything else is possible as well, of course.
A very early prototype on a breadboard. Most important stuff (the display…) is already working.
The circuitboard was developed using Fritzing. It was etched at PCBPool. I realized that I forgot to include the capacitors in the second that I unpacked the circuitboard. Afterwards it still took me ~2 hours to realize nothing was working because of those little bastards…
Duct tape and microcontrollers … Story of my life…
The last K2000-Protocol command is always displayed for debugging purposes.
That’s what my desk looks like during those phases.
Coming close to an end…
DMX-In, Serial-Out. DMX-address can esily be changed via the buttons next to the serial port. The next version will probably get some Serial-In as well.
Back side (Front side?)
As I already stated earlier I only implemented video-switching via K2000-Protocol. Switching other aspects (Audio, for example) will just be a minor change in code. It would be possible to completely implement the K2000 protocol but I don’t think this is very sensible since it would probbly increase the chance of totally messing things up during normal operation.
As you already might have guessed this is a simple MIDI to DMX transceiver. It’s powered via USB and doesn’t need any additional drivers. On a German Windows XP it installs itself as an ‘USB Audiogerät’.
The aim of it is to have some practical solution to control lights with Ableton (any midi sequencer). In Germany we say “AEG: Auspacken, einschalten, geht” (which is a pun based on a german company’s name and means something like “unpack, switch on, enjoy”.)
There are, of course, other ways to control your lights via a midi sequencer. You could, for example, have a dedicated midi track in ableton to send out midi to your GrandMA onPC (any lighting software). This would give you the power of your lighting desk combined with the power of your midi sequencer.
On the other hand side this might be a little bit of overkill if you just want to drive some LED pars (or it might even be impossible if you never worked with a lighting software before). Furthermore you are always using your lighting software ‘blindsided’. you can just hope your midi clip triggers the correct chaser. I know from my experience that it really takes a lot of preparation to make sure every midi clip only triggers your desired lights. Many things can (and will) go wrong. Therefore it’s easy (and fun – somehow) to quickly edit your midi clip on your light-track (or group of tracks) and instantly see the changes you made. Don’t forget: If you are using midi clips you are automatically in sync with your sequencer. No need to send an extra clock signal etc.
However, you could also think about controlling your existing hardware lighting console via true DMX. Might lead to some interesting combinations if you are having a gig in a venue with a fixed lighting structure and a lightjockey who will give you control over his desk (as if that ever happened……).
Sadomex can send out DMX-signals based on incoming midi-notes or midi-CCs. The mode can be changed during usage. The communication works one way. It’s midi IN and DMX OUT.
512 DMX channels are supported. This is achieved by using different midi channels. Midi Notes/CCs 0-127 on channel 1 represent DMX channels 1-128. Midi Note/CC 0 (the first one….however you may count) on midi channel 2 represents DMX channel 129 and so on….
Naturally, the resolution is only half as precise as native DMX since midi only supports a range of 128 values and DMX supports 256. There could be different workarounds but that would only make it more complicated. This way, a midi note’s velocity of 127 (full) represents a DMX channel’s value if 255.
This video shows the device in action with an LED Par lamp. Notice how the lights stay in sync with the metronome:
This is how you configure Ableton to talk to Sadomex. In this scenario the first 128 DMX channels can be addressed due to the output channel being set to 1. If you would like to control a fixture with a start-address greater than 128 (and smaller than 256) you would set the output channel to 2. Realize Ableton’s possibilities to group tracks. This way vou could control a whole bunch of fixtures as if they were midi clips. The clips in the screenshot, by the way, are those from the video above.
A demo file for Ableton 8.2 can be downloaded here . It shows some basic patterns for controlling an RGB LED Par at DMX address 10.
I put together another example which is a little more complex. This one controls a Coemar iSpot 575 EB with a base address of 194. Notice how the output midi-channel of the iSpot’s tracks is set two ‘2’ in order to reach DMX-address 194. The pinkish coloured clips are chasers (e.g. continuously change colourwheel 2 between colour 5 and 6) whereas the blueish-green ones represent static values (gobowheel 1 set to ‘open’).
This is all done with Sadomex being in ‘Note’ mode (reacting to Midi notes and their respective velocity values…).In my eyes, Ableton’s workflow is not quite optimized for easily creating CC curves for this special scenario. Maybe it’s easy to achieve in-sync CC curves/values with other sequencers.
It surely IS a pain in the back to put together pan/tilt motion with midi notes. Furthermore you are really bound to a certain tempo when it comes to pan / tilt motion (a smooth tilt wave at 112 bpm like shown in the example won’t look as smooth at 65 bpm without being altered to a high degree). On the other hand side it’s fun thinking about what you might be able to do with things like Ableton’s built in Midi Effects like Velocity, etc….
This time it’s being controlled via Akai’s APC20 which makes it even more fun.
Due to my 1337 computer skillz (not) it was absolutely impossible for me to convert my video -with- audio. If you look carefully you see the LED Par from the previous example in the bottom of the movie. It’s flashing in sync. At least you can get an idea of what it’s all about:
I’m not quite sure how to proceed with this right now. At the moment (october 2010) all my resources are tied to other things. Maybe I’m going to build a few ones when there is time and sell or swap them. Contact me if you are interested in a unit or if you have any questions regarding the device.
[Update 31.10.2010]
Oh Ableton how much I adore love like you! After playing with the above setup for a time I was not really confident with Ableton’s native possibilities for live-editing the Midi (i.e. DMX) output. For example: It’s a quite common task to make a moving head point to a certain position and make it do its motion arround this position then. This can basically all be done by simple note-to-dmx conversion but it’s not as dynamically assignable and easy to do like you would with your dedicated lighting-controller (I guess you know I’m talking ’bout GrandMA…….). That’s why I had a look at Max 4 Live. Fortunately I have been tinkering with PureData before so the start was not that complicated for me. What came out is a nice little MAX midi effect doing all the necessary processing within one device:
(I later realized that what I built is nothing more than an ordinary MIDI-lfo.) What the effect does is that it creates a sine-envelope for the velocity values of the incoming notes (those notes which are played in the active clip). Since everything is midi-assignable the amplitude of the sine (= the size of the effect) and the offset (= the position the head is moving around) can either be selected from fixed and user-configurable presets or they can directly be controlled by a knob or a fader (assigned to the dials in the screenshot). The sine’s periodicity (=fixed multiples of the motion’s velocity) can be selected from four presets as well.
(Yes…you surely Do have to look a little bit careful to locate the mouse and its actions in the lower left corner of Ableton…)
See how the Pan/ Tilt positions can be selected by triggering one of the presets or how they can be controlled by the dial.
The output still looks a little …not perfect but I don’t care. It does the job quite well. One of the biggest advantages: It doesn’t send a ‘Note OFF’ when live’s transport is stopped. That leads to the fact that the last position is stored and the moving head does NOT reset to it’s ‘zero-position’. Good thing just in case you are in the middle of a show and need to stop live’s transport. Sure it’s a good idea to have those kind of effect on the dimmer channels too because that way lights will stay on even if you stop.
You can, as well, apply the Max4Live device (which doesn’t have an interesting name yet) to other channels. The colour wheel, for instance. The result is the same: You can select colours from one of the presets or apply a colour chaser or controll the position of the colour-wheel in realtime via the midi-assignable dial.
Das Ortofo V2 is a nice tool to use the Behringer BCF2000 fadercontroller with a GrandMa lighting desk. It gives you the functionality of using motorfaders and supports all the Elements of the BCF2000 to be used with GrandMA (onPC).
Here is a video to demonstrate its functionality:
I’ve built version 1 a few years ago and since then have been asked a lot of times about the possibility for USB support and whether I’m selling them.
Good news: Das Ortofo now supports native midi over USB. Furthermore did I build a batch of 10 devices which are all for sale (September 2010). Contact me if you want to get one.
The following diagram shows how everything is connected (click for larger image):
This one might be interesting for all you GrandMa onPC users out there. Those who are operating a GrandMa Micro or Pico and are missing the motorfaders of the fullsize console might also benefit from it. Das Ortofo is a hardware-based midi processor especially designed for controlling the motorfaders of a Behringer BCF2000 and sending the corresponding MIDI-data to the GrandMA lighting desk.
[Update 30.9.2010: I’ve built a new version which natively supports USB and which is for sale. Find it over here .]
Quite some time ago I got myself the Torq System from M-Audio. Due to the fact that I don’t like the thought of controlling a musicsoftware via my computer’s mouse (just because it looks plain stupid in front of an audience) I used the BCR2000 from Behringer in conjuntion with Bome’s Midi-Translator for scrolling through the playlist, triggering fx, loading tracks, etc…
Good thing about it: it worked. Bad thing: Every now and then I am making music in a little bar and the dj ‘booth’ is quite packed. using the BCR2000 always meant using an extra laptop stand on top of the mixer so noone couls really see me.
That’s why I built my own Torq-dedicated MIDI-Controller.
Ladies and Gentlemen: I’m proudly presenting the Andy1000 Midi Controller
This project is based on the Arduino platform with a “Duemilanove”-Board and an ‘168’ controller (pretty basic stuff).
Starting with a frontplate from a Server Rack. It was 19 inches wide but I cutted it down to 30cm (11.8 inches) to make it fit in front of my laptop. The marks for the holes have to be set rather precise since the buttons will later be fixed on a vectorboard.
After drilling. The housing is made of plywood. This version is 6 cm high. I later built a new one which is only 4 cm.
That’s basically about what it will look like
The Buttons are attached to a DIN-module (Digital In)-board from uCapps.de that I had lying arround. Basically it’s just 4 shift registers. No real magic here.
Buttons mounted to a vectorboard
Interconnections. I didn’t really care about the pins I attached the buttons to since this will later be handled within the microcontroller’s code.
One extra rotary encoder (ALPS, 24 steps) for scrolling through the playlist. The vectorboards with the buttons will be fixed to the frontplate via screws. The Arduino and the DIN-Module will later be hot-glued to the bottom of the case.
This extra circuit was attached -after- all the basic soldering was done. It turned out that it was necessary to do some debouncing of the rotary encoder’s output. It is based on this scheme and helps a little bit.
Nearly finished, Knobs for the poties are still missing. I still (have to) use Bome’s Midi-Translator, especially for the ‘navigation’-controls (scroll up, down, etc) but who cares…
There we go!
And that’s another brilliant shot of how it looks like in real life…erm…well….the bar was already packed and I didn’t want to flashlight the crowd…
The code for the Arduino will be put up soon. It is still a bit crappy and needs some finetuning. Just contact me via the web form if you want to get it sooner.
As most of you should know by now I am not only a specialiolo(lo)gist (for everything) but also one astonishing (specialiolo(lo)logic) lightjockey – at least in my second life on most of my weekends.
When LJ’ing I use the the GrandMa Lighting Desk most of the times. Sometimes I’m lucky and get to work with a hardware unit but most of the times I have to stick to the PC version with a Midi-Keyboard attached. So far so good / bad. Over the last years I came across some things that might be better. Like Midi output. Talking about GrandMA it IS possible but kind of limited and a huge amount of time is killed when taking care about Midi programming. (Those of you who are familiar with the GrandMa might argue pro and con. Others might just not know what I’m talking about…just read on.)
Trying to find a universal way to get Midi Signals out of my lighting desk I wrote a nice little ArtNet-to-Midi Converter. that way I can get Midi out of my lighting desk without even thinking about it.
The (Windows-) tool acts like an ArtNet Node (just like the one from Enttec , for example). The important part: the received ArtNet data are translated into Midi Values. The first 128 DMX channels (1..128) are translated into Midi CCs. DMX channels 129…255 are translated into pulsed Midi outputs (note on .. wait a few miliseconds .. note off) starting at C-1. That’s basically about it.
The software has some cool side-features like settings being saved in the registry ‘n stuff but like every program it’s still not complete (DMX in, Midi out indicators not working yet). But worth the effort. The basic Midi-IO is handled via MidiOX, again.
Some time ago I bought Korg’s PadKontrol. The device is a sweet little Midi Controller with very sensitive touchpads. One of the better things about it is that the pads are lit when pushed. We used both Korg PadKontrol and the Akai MPD24 for making music with Ableton Live and the Korg just felt better because the Pads were way more sensible and the optical feedback just gives you that important kind of extra confidence that says: “Button hit, bro”.
The downside of the controller is the original programming of the firmware. you can -of course- send all the common Midi-stuff (Notes, CCs). But the padlights are just crap. You can configure the pads to be in ‘Flash’ or ‘Toggle’-mode but in either way the light will only flash for a fracture of a second and that’s it. Just imagine a live situation where you configured some pads as toggled and others as flashed. Even if a pad is set to ‘on’ you won’t be able to recognize that. Second best (worst?) thing is that the majority of the buttons besides the 16 main pads can only be used for configuring the device, including the JogWheel.
Fortunately the controller (and some of Korg’s other products) supports the so called ‘Native Mode’. In that mode the Controller only sends out SysEx Messages and you can do your own processing. Furthermore you have complete control over all the elements of the controller (Jogwheel, all buttons, all the lights, …)
There are already applications out there that automatically put the Controller into Native Mode and take care about the processing of the SysEx messages but I didn’t find any of them to be easy to use or userfriendly (or Windows-Capable). At the end I am planning to use thecontroller in a live environment and I don’t want to have to mess arround with Perl-scripts or Max-patches ‘n stuff.
That’s why I built my own Windows program to put the controller into Native Mode and do some SysEx-processing afterwards. At the moment the software sends hard-wired Midi-Notes on every pad as well as the JogWheel and the knobs. There might be other possible configurations but I found this one to be rather universal.
[Update 2.3.2010]
Due to recent contributions there is a huge amount of changes being implemented. These changes mostly regard the Midi-Data being put out. The changes are documented further below.
Explanation:
the pads send notevalues depending on the selected bank. This is easy. When the JogWheel is turned to the left it will send notes ‘E2’ for 3 miliseconds (note on … wait .. note off). That’s a value which proved to be okay. When the X-Button is pressed the JogWheel will send ‘F#2’ (turning left) and G2 (turning right) note impulses for 3 miliseconds. When Knob1 is turned to the left it will send out ‘G0’ notes for 3 miliseconds; when it reached its left end position it will send a G#0 note (guessed it: for 3 miliseconds). When the ‘Roll’ Button is pressed it will not only switch the internal bank but also send out an ‘E0’ note for 5 miliseconds; this might be useful for triggering bank changes in your software or whatever. At the moment the output midichannel is hardwired to 1. The touchpad isn’t used yet.
The first half of the video shows the normal operation mode of the PadKontrol. You will realize the difference in the pad’s behaviour after it is switched into Native Mode (the moment that the controller is put into Native Mode can be identified by the change of the diplayed information from “5.01” to “GMA”.). The pads (configured as ‘Flash’-pads by default) stay lit as long as you keep them pressed.
You can easily change the configuration of any pad’s behaviour. This video shows how to configure the pads to be in Toggle-Mode. Press the ‘Scene’-button. The display will change to ‘TGL’. All the pads that are now selected will be in ‘Toggle’-mode. All the pads that are deselected will be configured as ‘Flash’ again.
What you will also realize is that the applications supports multiple ( 3 ) banks that can be selected via the ‘Roll’-, ‘Flam’- and ‘Hold’-buttons. That makes up to 48 configurable pads. Every bank’s pads can be configured independently to FLASH-, TOGGLE- or CNx- Mode (explained below). When a bank is recalled its pad’s states (on / off meaning lit / unlit) will automatically be recovered. Switching banks will not change the controller’s output (of course).
You can enter the settings at any time to change a pad’s behaviour. It won’t interfere with the controller’s output.
The second mode that I implemented is called ‘Interconnect’. You enter it by pressing the ‘Message’ button. The display will change to ‘CN1’. You can now select those pads that will be linked to each other. Explanation: when configured in the ‘CN1’-mode only one pad will light up (and send midi -out…). Every other pad configured in that same mode will be deactivated (and send a note-off value, of course. This mode might be useful when controlling Ableton’s ‘Arm Track’ or for selecting the Track you want to cue on your headphone or … .
I implemented 3 ‘CN’-modes. (CN1, CN2, CN3). They can be reached via the ‘Message’-, ‘Fixed Velocity’- and ‘Prog Change’-buttons and are independent for all three banks.
[29.11.2010] I created a new video trying to explain all this a little bit more in detail:
The software is written in VB6 and all the Midi processing is based on the Midi-Ox ActiveX-plugin and the VB6-examples that can be found on the website. You need to install Midi-Ox in order to run the program. Furthermore it’s a good idea to have Korg’s USB drivers installed. Configure the program’s I/O like shown below to have Midi-Out via MidiYoke 1. From my experience the best way to do it is to set the I/O via Midi-Ox and give it a restart.Everything should be fine then.
The output of the software is rather hard to explain. The best way is to monitor it via MidiOx’s output monitor. You can change the output data in a wide variety by accessing the config-dialog:
The settings should be rather self-explanatory (at least to me…feel free to send me an e-mail if you have any questions). All the settings are stored in the user’s branch of the registry (Windows XP) under HKEY_CURRENT_USER\Software\PadKontrol. In case you go for the tough-boy approach and manually want to alter anything there please keep in mind that the entries are case sensitive.
[Update 11.1.2011]
The program now supports MIDI feedback for the 16 pads. Inspired by User ‘Fedejair’ from the DJTechTools-Forum I updated the software so the 16 pads can be switched on and off via incoming MIDI-data being sent from Traktor or ableton or whatever software you want want to use.
In order to be able to do this you first have to add another MIDI-In-port in the configuration of my software. If, for example, you use my program to control Native Insturments’ Traktor then you’ll probably have ‘MidiYoke 1’ as the output going into Traktor. To enable MIDI feedback FROM Traktor add MidiYoke’s port number 2 as an input in my program and set Traktor to ouput MIDI data via midiyoke 2. Do NOT use MidiYoke 1 as an output towards Traktor AND as an input FROM Traktor. This will sure cause some nasty feedback behaviour.
If you’ve done this open the config-dialog and find the new button:
[…]
[Update 29.4.2011]
The feedback mode has undergone a major review and is now a lot easier to implement. Feedback mode can be configured for selected pads by accessing it via the ‘ProgChange’ Button of the PadKontrol (which makes it that the CN3-mode is gone). Just hit the button and keep it pressed. The dislay will change to ‘fdb’ which indicates that you are in the configuration for the feedback mode.
A pad which is configured for the feedback mode reacts on the incoming midi note it would send out. To explain this let’s have a look at the midi output sheet of the software:
It is read like this:
If bank number 1 is active then pad number 1 (upper left) will send out a midi note ‘C-1’ (the first possible midi note). If this pad is configured for the feedback mode it will be lit when a ‘Note On C-1’ midi signal is received (velocity >= 63).
[Update 20.6.2012] I just discovered a little flaw in here. C-1 is a bit misleading since different tools show different values. Anyway, it’s the lowest possible Midi note that pad #1 is reacting to. That’s shown as C-1 in Midi-Ox but it’s shown as C-2 in Ableton. If you send a note for pad #1 as a feedback to the PadKontrol and pad #9 is lit you know that you (like me) were caught by the ‘octave-trap’.
A pad in feedback mode can only be used when it is activated (lit up). Otherwise it will not send out any midi data when you press it.
In order for the software to recognize incoming midi data you have to add a midi-in port to the configuration. This might look like this:
Have a look at the ‘Open MIDI In Devices’ listbox. The PadKontrol-Ports are used for communicating with the controller itself. ‘In from Midi Yoke 2’ means that if you have a software running on your computer, let’s say Traktor 2, which sends out midi data via MidiYoke 2 then these data are received by my software.
If you look at the ‘Open MIDI Out Devices’ listbox then you’ll probably guess that my software sends midi data through MidiYoke Port 1 out to the world. That’s the port that you should configure in your receiving software (i.e. Traktor) to listen to.
This example shows the demo version of Traktor 2 together with my software. Please pay some special attention to the fact that the first song to be played has 3 hotcues (3 pads are lit) and the second one only has 2 hotcues. The pads are dynamically reactivated and can be used accordingly.
What you cannot see in the video is that all three banks of pads are supported in feedback mode. Cool thing, I’d say =)
These two screenshots show the midi configuration of Traktor for deck A to send out and react to midi data. Of course you are not limited to Traktor at all but can use my tool with any kind of software being capable of midi in-/output.
Traktor’s midi OUT port is set to MidiYoke2 ….
[18.6.2012]
Based on suggestions made by Jan from Belgium I added this option:
It means that pads which are configured in feedback-mode always send midi data even if they are not toggled by external midi feedback. Typical usecase could be a drumtrack which visualizes the beat of your kickdrum sample (i.e. pad is blinking with the beat). This mode being active you have the possibility to then add additional kicks by simply hitting the pad.
Furthermore there is another mode which must have been implemented quite some time ago but i totally forgot about it… TRK-Mode. You set it by pressing the “Settings/ Enter” button (lower right of the jogdial). Pads in TRK-mode are always lit. They behave like pads in FLASH-mode (TRK stands for …”tracking” or so…I don’t remember).
[1.7.2012]
When you change the banks (via ‘Roll’, ‘Flam’ or ‘Hold’ button) the bank-numer is now shown in the display for a short time. Furthermore the direction is shown in the display when you twist the jogwheel.
The PadKontrol’s XY-pad is now supported. You can either have it send out ordinary midi CC data (that’s CC126 and 127 for now) …
…OR….
You can use it as a tap button.
When this mode is active the pad will not send a continuous stream of midi CCs but only a single CC date (CC #125, value: 127) when it is hit. Due to the nature of the XY-pad this mode is not absolutely perfect but for a rough tap it’s quite cool to use.
The program can be downloaded here . I decided to give it a try and make it donationware. The program is fully functional. The only limitation is a nag-screen being shown at the program’s start.
If you want to get rid of it (or encourage me to implement new features) take your chance and have a look at my Amazon Wishlist or feel free to donate something via Paypal:
Dang! My turntable broke. When hitting the Start-Button it just didn’t move. When given a little ‘hint’ into one direction it started spinning (forward or backward). Break mechanism didn’t work either. It didn’t stop instantly but kept on spinning, slowly decreasing its speed.
Must either be something with the motor’s solenoids or with the driver.
This baby is way too old for thinking about warranty so let’s go.
Numark TT-200 upside down, case open.
There we go. That’s the motor ‘n stuff.
Checked the solenoids. Forutnately all six were okay. Rather precise 15 Ohm each.
The backside of the motor-driver (or is it the front side? who knows…). The heatsink for the driver has already been removed.
Ordered a new Driver IC at TS-Audio.de. The guys over there are EXTREMELY fast and very cheap. Maybe they could take a little more care about packaging.
Back in the days I was only second best in my desoldering-class. I think this boy is broken so I don’t really care.
New IC installed perfectly
What can I say…after putting it all together (don’t forget to apply some thermal paste) it worked flawlessly. Great! so let’s just have a look at the costs: New turntable: 250 ( and up to 500) Euros. Spare motor: roughly 140 Euros. New driver IC: 11 Euros (including packaging)…unbeatable.
Somehow it’s a pity i still don’t have any reasons to buy me a set of 1200’s..
Mein Alkoholkonsum der letzten Wochen ist nicht okay. Gar nicht.
Feedback von der KiTa. Erste Schätzungen gehen davon aus, dass unser Junge etwas zu pfiffig ist, um sich nicht darum zu kümmern. Mal gucken, vielleicht steuern wir mit RTL2 dagegen, wenn das doller wird.