PICMIX - DIY midi DJ controller
PICMIX - DIY midi DJ controller Posted on: 26.10.2011 by Dannielle Glassey After years of mixing with vinyl and a DVS system for a while it is time to take a next step. A midi DJ controller. I looked at almost every possible controller there is on the market but I didn't really found what I was looking for. Too cramped or too much bells and whistles and so on. I mix mnml, deep and tech house and never use effects.I wanted a controller that has only the buttons and faders I want and what is there has to work great and accurate. As I don't like a sync button the pitch fader has to have a 10 bit resolution at least. The Vestax VCI-100 comes almost closest to what I wanted with the 1.4 firmware but since I do have electronic knowledge I decided to build it myself. I'm very familiar with PIC microcontrollers so I did't have to believe long. A lot of believeing and prototyping was done first to see if it was do-able to do it myself. Everything went great so I started gathering parts to measure. After that I've drawn a front panel and sent it to Schaeffer. The result is just stunning: You see it has a very basic and simple layout. Everything is panel mounted, I want it to feel solid. I'm used to quality feel, this has to be it too. The mainboard runs of a PIC16f887, I do program it with a C compiler. Jog wheels will be driven on an optical encoder. Playback buttons are arcade buttons. The panel is almost completely mounted but I don't have a pic of that yet. So, more details and updates will follow. Next will be wiring everything up and test every component. | |
Dannielle Glassey 18.11.2011 | What do you guys believe of a vintage wooden look: |
Dannielle Glassey 17.11.2011 | Both jogs are installed now finally. Next will be the casing. |
Chasidy Heckenbach 17.11.2011 |
Originally Posted by michaeldunne109
it's cross platform and also i believe what the new midi fighter utility uses. it's very simple to use and comes with plenty of example code. edit: it's C++ not straight C tho |
Dannielle Glassey 17.11.2011 | Well I use the CCS compiler in combination with a Microchip PIC. It's a very powerful piece of software and it lets you code in pretty standard C. Not that hard to understand. Though the compiler is not that cheap. The cheapest thing would be an Arduino. You can use an Arduino that has lots of I/O pins so you don't have to worry about multiplexing and so on. Otherwise with lesser I/O pins you could use serial shift registers like a 74HC595 and 74HC165. Sending out midi with the CCS compiler is easy, I made a small function for it. Code:
void midiout(int cc_data, int c_num, int c_val){ putc(cc_data); putc(c_num); putc(c_val); } |
Maryanne Weatherill 16.11.2011 |
Originally Posted by Skirmitt
Have ya any resources for coding Midi in C? Have to a project in college next year and it has to involve a bit of coding. Cheers. |
Era Roka 17.11.2011 | Looking goooooooood |
Dannielle Glassey 15.11.2011 | Hehe, would be an honour :-) Meanwhile a pic of the countersunk screws on the jogs. A lot better imo. |
Era Roka 15.11.2011 | If you'll make a tut. A link of it would be in my signature for sure! |
Dannielle Glassey 15.11.2011 | At the end of the project I'll post my resources. Meanwhile feel free to ask what you want :-) Meanwhile I made the holes from the perspex top plate countersunk. 1 done, 1 to go. Not my favorite thing to do as perspex cracks easily under stress :eek: |
Maryanne Weatherill 15.11.2011 | Really liking this. You should do a tutorial. |
Dannielle Glassey 15.11.2011 | Then I need to modify the front panel and I don't want to screw it up :-) I'll make the screws from the top plate countersunk so they look better. I learned a lot from this build. If I would make another one not many things would change but still, you can always improve. |
Arcelia Siebeneck 15.11.2011 | looking good man why not set the encoders lower down below the front plate? You could use pcb mounting bolts like these: http://www.ebay.co.uk/itm/150665393728 |
Dannielle Glassey 15.11.2011 | That is weird. I expected more feedback on this :-) I'll keep posting updates anyway. I'll be mounting the second jog wheel today wich means the front panel will be finished hooray ! |
Dannielle Glassey 14.11.2011 | Jog pieces are in. Had to adjust the holes a bit but now everything is fine. Gave them a quick black spray for now. It consists of 3 pieces as you see. I wanted it to be a bit lower but I can't do that with these encoders so it will stay like this. At the end of the project I'll give them an extra shot of paint. |
Dannielle Glassey 10.11.2011 | While waiting for the jogs I dreamed about an improved version: http://mylantec.be/upload/pm2_pre.pdf |
Chasidy Heckenbach 08.11.2011 | i suspect that will be plenty just checked my icon idj and it has exactly 80 ticks per rotation. not all that many but the jogs are also pretty small. the jogs on that are actually very nice to use. i guess there must be some optimal number of ticks relative to the platter size, rather than just the bigger the number the better. also i suspect how fast the controller processes and ends out the data will be at least as important. can't get my old hercules mk2 to work at the moment, but i suspect the number of ticks there isn't much different to my idj but the jogs feel very sluggish when u use them in comparison. |
Dannielle Glassey 08.11.2011 | I checked how many ticks I now have per rotation of the jogs. I have now 512 ticks. Pretty good for a DIY solution imho and more than enough for my purposes. A shame that a lot of commercial devices don't say how many ticks they offer. |
Dannielle Glassey 08.11.2011 | I play tech, deep and mnml indeed. A more relax mixing style is what I handle. I've chosen those knobs cause I'm used to a http://www.rodec.com/productdetails.php?code=14 mixer and I like this one very much. I play almost 15 years now with this flavor of knobs. You can "throw" with these if you need to. |
Lilliana Perris 08.11.2011 | May I ask why you prefer those fader caps over the usual style ones? You probably not into slamming em etc. Do you play minimal tech or? Just wondering! Awesome job at finishing this project....almost! |
Dannielle Glassey 08.11.2011 | Got a mail today to tell me that the jogs will be shipped today I expect them to be here at the end of the week. Meanwhile I did some mixing with it and all I can say is wow, this works just the way I want it to. Also installed the browse encoder and knob. The knob is a solid piece of aluminum. When you turn the knob you browse in the tracklist. When you press the knob you scroll through the map list and load A and B collapse and expand the maps. Easy to work with. |
Dannielle Glassey 03.11.2011 | I might be missing something to. Guess I'll have to look close on what is possible with all the options Traktor has. Do you guys have a reference guide for the MIDI controls in Traktor ? Small thing I did today is wiring the encoder to browse in the file list. Now everything is wired up and works. Now finishing the case and waiting for the Jog wheels and the extensive testing can begin :-) Offcourse I'll post a small video of it in action. |
Chasidy Heckenbach 03.11.2011 |
Originally Posted by MiL0
|
Arcelia Siebeneck 03.11.2011 |
Originally Posted by Skirmitt
but it might be easier to do it with the Traktor mappings... not sure how though. |
Dannielle Glassey 03.11.2011 | The mapping for Traktor is complete after I've cleaned up my code with the help of the page that zestoi gave me. Now I've drawn the jog wheels. These will be 90mm in diameter. The base is 2 layers of MDF and a perspex top. The perspex top will make it possible to use some sort of skins between the MDF and the perspex. I hope all fits well, fingers crossed. The parts will be laser cut. Also made an MDF case for it, glue is drying at the moment. --------- Another question, how can you map the cue(play?) button in Traktor so that it plays if I press it and stop if I release it ? |
Dannielle Glassey 01.11.2011 | Impressive what you've made. I always believe that the best solutions come from people that build it for theirself with only the end result in mind Such projects have passion. |
Chasidy Heckenbach 01.11.2011 |
Originally Posted by Skirmitt
I hope to finish the PCB
and basic form of the code this week so I can do some testing with it.
I heard of Midimasher before a lot, what does it do exactly ?
i wanted an app that would connect to all my controllers (and to traktor via one massive tsi and some virtual midiports) and route data any which way i wanted. the core is C++ (bad C++, more just C really) and implements any number of virtual layers for any controller with full led recall, handles reading the data and passing it onto user defined callbacks (coded in LUA) when needed. i was afraid of latency issues using LUA but it seems fine. hadn't even heard of LUA until using it, but it seems ideal for what i need and embedible. here for example is my attempt at recreating the slicer that the twitch/itch has in midimasher http://midimasher.djism.com/lua/lib/slicer.lua quick code example, this will make a launchpad led flash to the beatphase in traktor: Code:
capture("traktor", "heartbeat_a", ALL, 0, function(d, e, v, p) print("beat "..v) if v > 0 then send("lp", "0,0", 1, lp_yellow) else send("lp", "0,0", 1, lp_black) end end) |
Dannielle Glassey 01.11.2011 | The reason I'm sending on that particular channel is cause I didn't have a good midi message reference, I do now with that page you gave me, thanks a lot for that. Changing all midi messages to something that makes sense was on top of my to do list. Must be something weird then with that Numark controller :-) Sending a note off message might only be usable for cueplay actions where you hold the button indeed. You're right about that. I hope to finish the PCB and basic form of the code this week so I can do some testing with it. I heard of Midimasher before a lot, what does it do exactly ? |
Chasidy Heckenbach 01.11.2011 | any reason you're sending on midi channel 7? each midi port can send data on each of the 16 midi channels without getting mixed up with a different controller etc. i only ever used to care about midi channels when i was chaining synths via old school din-style midi cables using the midi-thru ports. |
Chasidy Heckenbach 01.11.2011 |
Originally Posted by Skirmitt
this is the url i usually refer to for basic midi spec info: http://www.midi.org/techspecs/midimessages.php your code seems sensible. no real need to send an actual noteoff message on release. internally in midimasher i just translate all noteon and noteoff messages into 'note' message for callbacks to attach to. only really makes any difference if you want to control an actual synth, where u need to send a noteoff message else the next noteon won't retrigger the ADSR envelope. |
Dannielle Glassey 01.11.2011 | Thanks for your answer !! The reason I asked is cause the Numark Total Control I looked at from my friend is sending the note on on release so the track starts playing on release. You could believe of releasing a record to make it play, though I don't believe it is logical for a controller. I do send CC for a fader and pitch bend for the pitch fader. As for the buttons I now send only a note on with value 0 and 127. Example: Code:
newd0 = input(pin_d0); if(oldd0 != newd0) { if(newd0)midiout(150,40,127); else midiout(150,40,0); } |
Chasidy Heckenbach 01.11.2011 |
Originally Posted by Skirmitt
you definately want to send out a message when the buttons are pressed and if you don't also send out a message on release then the buttons can't be mapped to "hold" type controls. i.e: can only be used for triggers or toggles. the lpd8 in PC mode is like that as it only sends out a PC message when u press a pad - tho PC messages only need 2 bytes. makes the PC mode not so useful anyway, even when they're translated into notes or cc's. the shorter answer to your question is "play on press" |
Dannielle Glassey 01.11.2011 | I was wondering, what do most controller send out on a button press ? Do they send an on press message and an on release message ? What do you guys prefer, play on release or press ? |
Era Roka 31.10.2011 |
Originally Posted by Skirmitt
|
Dannielle Glassey 31.10.2011 | Ok I'll see what I can do about that :-) If the prototype works I'll draw some schematics. I'll make a PCB out of it, no problem to share it. |
Era Roka 30.10.2011 | If you would share a how-to on the pcb(build and programming) you would be the best ever!! |
Fatimah Czuprynski 30.10.2011 | i believe most important would be a shopping list so everybody could see what they have to pay. And maybe a list of the major steps you have to follow for those who never build a midi controller before. when we will see a finished picture of your beatiful work? |
Era Roka 30.10.2011 |
Originally Posted by Skirmitt
|
Chasidy Heckenbach 30.10.2011 |
Originally Posted by Skirmitt
|
Dannielle Glassey 30.10.2011 | What would like to know in detail ? I would like to help. |
Fatimah Czuprynski 30.10.2011 | dude, would be so happy if you could bring us a complete building tutorial |
<< Back to Reviews of DJ equipment Reply