Construction guide of external mixer to work with DBMix ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Simon M. Werner (c) 2000 Contents ~~~~~~~~ 0. Disclaimer ~~~~~~~~~~~~~ 1. Introduction and reasons ~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2. System Requirements ~~~~~~~~~~~~~~~~~~~~~~ 2.1 Before you start 3. Construction of the exmixer ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3.1 How does it work? 3.2 Another word of warning 3.3 What you need for construction 3.3.1 Tools and equipment required 3.3.2 Parts list 3.4 Construction 4. Configuring DBMix with the exmixer ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4.1 Calibrating the joystick 4.2 The exmixer Preferences Dialog 5. Additional stuff ~~~~~~~~~~~~~~~~~~~ 0. Disclaimer ~~~~~~~~~~~~~ **************************************************************************** I TAKE *NO* RESPONSIBILITY ON THE CORRECTNESS OF THIS DOCUMENTATION, IF YOU FRY ANY OF YOUR COMPONENTS, DON'T BLAME ME. SOME OF THE CONSTRUCTION DESCRIBED IN THIS DOCUMENT SHOULD ONLY BE DONE BY PEOPLE WHO KNOW WHAT THEY ARE DOING. **************************************************************************** This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Should you need to contact me, the author, you can do so either by e-mail - mail your message to For your convenience, the GNU General Public License version 2 is included in the package: See the file COPYING. 1. Introduction and reasons ~~~~~~~~~~~~~~~~~~~~~~~~~~~ So you want to be a DJ? This readme explains how to construct an external mixer (exmixer) that can be integrated with DBMix. This allows your PC to become a DJ mixing station, no mouse reqiured. DBMix can read more than one games (joystick) port, this enables you to easily create a device with variable resistors that can control any of the DBMix adjustments for any channel, such as pitch, volume, main volume etc. DBMix is also capable of using buttons to play, pause, mute etc. If you find any errors in this document please tell me and I will fix them. Should you have any problems or additional requests related to the exmixer device you can contact me at: rgbe@yahoo.com I only created the exmixer and it's interface with DBMix, I did not write DBMix, that was done by Robert Dean, see README for details. Any DBMix related questions should go to him. The reason I have created the exmixer was that I have a friend who wanted an external mixing device where he can mix music together, like a normal DJ with two turntables. But he wanted to mix mp3 on his PC. So I found DBMix which does most of job. I designed and constructed a device that connects to the games port, I also added code to DBMix to interface with the exmixer and volia. We have an exmixer that works very well. You can use DBMixer with an ordinary joystick, but I don't see the point of this as the joystick will always spring back to the middle. You could remove the springs in the joystick but then it will just limp to one side. If you wish, I can construct an exmixer for you but for a price. My guess is that it would cost you around $US200 for me to build it for you. Build it yourself and it will cost you around $US20. 2. System Requirements ~~~~~~~~~~~~~~~~~~~~~~ - Joystick/games port (preferably more than 1), most standard sound cards come with one. - Linux kernel 2.4 or greater with joystick support. I have only tried kernel 2.2 without any success, but this does not mean it won't work. Kernel 2.4 users a later joystick driver than kernel 2.2 . - A joystick or exmixer device (more details below). - A reasonable computer, must be able to at least two samples at once without any problems. - A bit of free time. 2.1 Before you start ~~~~~~~~~~~~~~~~~~~~ Before you start the construction of the exmixer read the disclaimer at the top of this page, as I said I take *no* responsibility what so ever for your actions. There is a chance that if you do wire up the exmixer incorrectly that you will fry at least your joystick port, maybe even your main board. Read this documentation *before* continuing any further: http://www.hut.fi/Misc/Electronics/docs/joystick/pc_circuits.html It has some extra safety tips and it is where I sourced all the information I needed about the PC joystick port. Before you start construction of the exmixer make sure DBMix works with just a joystick alone. I don't want you building an exmixer and then find out that it doesn't work on your system. Read the instructions at the end of this document "Configuring DBMix with the exmixer". 3. Construction of the exmixer ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ These intructions are more of a breif guide than a step-by-step process on how to build an exmixer. I assume you have the intellegence to be able to safely use all the tools nessecary. Basically, if you have read through the documentation below and don't understand it, this construction project is not for you. 3.1 How does it work? ~~~~~~~~~~~~~~~~~~~~~ The exmixer will be connected to one or more games port of a PC (I don't know if this applies to other systems, please tell me if it does). The games port works by sending a current through the resistor and then measuring the resistance. The variable resistor allows the position of the slider to be detected. The games port is a wonderfully simple port, but not the most accurate, especially with an analog system. The buttons used are just simple on/off switches. 3.2 Another word of warning ~~~~~~~~~~~~~~~~~~~~~~~~~~~ The device I created works fine on my hardware, I cannot garuantee it will be the same for yours. I am using a SBLive and a Vibra 16 for my games port. It is a good idea to know what you are doing when building this device, if you have not done any electrical work or have not done anything of this sort before. I suggest you search the net or visit your local library to find information on assembly with electricity and electronics, and *BE CAREFUL*. Guides to soldering can be found here: http://www.epemag.wimborne.co.uk/solderfaq.htm http://media.butler.edu/chad/ha/solder.html http://www.mtechnologies.com/building/atoz.htm Before you start you need to *plan* what you want to do. Below are the general instructions on how to create an exmixer with 6 buttons and 6 sliders, you may want more or less sliders. Every slider can be assigned to any adjustment bar you see on DBMix. Because a standard games port only allows for only four sliders/axis per port we will need to use two games ports, hence two cables comming from the exmixer. If you only have one games port you will have to go out and find yourself a second games port if you want more than 4 slider controls. The same applies for buttons, there are a maximum of 4 buttons available per port. This construction guide will assume you have two games ports. The finished exmixer will look like this: Figure-1: A typical DJ mixer. ############################################################################ # # # CHANNEL 0 CHANNEL 1 # # # # Buttons: # # |----| |----| |----| |----| |----| |----| # # |Prev| |Play| |Next| |Prev| |Play| |Next| # # |----| |----| |----| |----| |----| |----| # # Main Volume # # Volume Volume # # 0 - | # # 0 - | 0 - | 10 - | # # | | 20 - | # # | | 30 -### # # | ### 40 - | # # 50 - | 50 - | 50 - | # # ### | 60 - | # # | | 70 - | # # | | 80 - | # # 100 - | 100 - | 90 - | # # 100 - | # # Pitch: -----##----- ---##------- # # # # 0 100 200 # # Cross fader: ------------##- # # # ############################################################################ This is what the finished product will look like, only a little more real I hope :-). It will also have that "home made" look and feel to it. Costs: I source parts from a shop called "Surplustronics", it's basically a shop which takes in old equipment and sells it dirt cheap. They also sell all sorts of electronic/eletrical equipment. I recommend you start at a shop like this first, they are usually dirt cheap. My exmixer cost around $NZ40 (~$US20). 3.3 What you need for construction ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3.3.1 Tools and equipment required ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Solder iron, a cheap one will do. - Solder wire, small handy packs can be cheaply purchased. - Wire cutter/stripper. - An electric drill with a 2-4mm drill piece. - A multimeter, this is essential to make sure your wiring is correct. - A saw, to cut slots for the sliders. - A file. - A philips screw driver. (I used my Leatherman Super Tool, it does wonders.) 3.3.2 Parts list ~~~~~~~~~~~~~~~~ 1 box/container to put everything in. I bought an old modem or something which was in a rather large case. I ripped the guts out, cleaned the case and I had a cool recycled case. 6 100 kOhm linear variable resistors (the sliders). You can use up to 250 kOhm resistors. Make sure they are *not* logarithmic. I used shorter sliders for the pitch and longer sliders for the volume, to be neat and save space. 6 20 kOhm resistors, 0.5 Watt will do, one for each slider. 12 Screws, to hold the sliders in place. 6 knobs for the sliders. 6 Buttons that don't go click. 4m 10 to 13 core cable (a cable with 10 to 13 wires inside it). 2m for each games port. 2 15 pin male plugs to fit games port. 2 Plug houses to enclose the plugs. (if sold seperately from the plug) 0.5m Insulated wire. 3.4 Construction ~~~~~~~~~~~~~~~~ As I said earlier planning is important. If you want a good quality product in the end, you must plan every step before you go. This will save you time in the long run and things will be neater. 1. Layout: Once you have purchaced your parts or know the size of the sliders, it is good to draw on a piece of paper the layout of the exmixer. Something simple like the design in Figure-1 above will be sufficient. Remember you don't want everything crammed in together so try and make use of all the space available. An accurate scale diagram would be best. If you are going to add buttons remember to allocate them enough space as well. Once you have decided on your layout pencil in all the holes that need to be drilled, and the slider slots. I like to draw everything to scale on a piece of paper, I can then stick the paper onto the back face of the mixer using sticky tape. 2. Preparing the case: If you bought an old case like I did, make sure you remove all the unecessary things before you begin drilling. Remember: Once you have drilled a hole you cannot undrill it, so be careful. doesn't apply here :-). Cutting the slots for the sliders is the hardest part of the project. You will have to drill a few holes in a row so that you can fit a saw into the gap. I used the wood saw which comes on my Leatherman, but any jig saw will do fine. Use a file to make the sides of the slot smooth. Now screw all the sliders into place and same with the buttons. Making sure you place all the sliders the same way up. 3. Joystick plug: Now we have to create the joystick plugs. If you haven't already done so read the page at: http://www.hut.fi/Misc/Electronics/docs/joystick/pc_circuits.html it has all you need to know about the games port plug. If the page is no longer there, email me at: rgbe@yahoo.com Basically, the joystick contains 15 pins, see Figure-2 below, we are going to use all the pins except for pins 12 and 15, just to play safe. Some soundcards use these two pins for the MIDI device. Figure-2: Looking face on at the male plug. 1 2 3 4 5 6 7 8 |---------------------------------| | o o o o o o o o | \ / \ o o o o o o o / \___________________________/ 9 10 11 12 13 14 15 Pin assignments: ---------------- 1 : +5vDC 2 : Button 0 3 : Slider 0 4 : GND (ground) 5 : GND (ground) 6 : Slider 1 7 : Button 1 8 : +5vDC 9 : +5vDC 10 : Button 2 11 : Slider 2 12 : GND (ground) or MIDI 13 : Slider 3 14 : Button 3 15 : +5vDC or MIDI As you can see by looking at the table the plug is symetrical. Pins 1 and 8 do the same job, as do pins 2 and 7, and so on. Cut the 13 core cable in two, we need one for each games port. So we now have two cables of 2m length. Now solder each of the wires in the cable to the the plug, make sure not to use pins 12 and 15. Also try and keep a track of the colours of the wires you are soldering so we know which wire goes to which pin. Once this is complete double check your wiring with a multimeter, make sure you don't have any shorts anywhere. 4. Soldering the sliders and buttons: Alright what we want to do now is remove about 20cm (9") of the outer sheath of the cable. Now all the coloured wires are exposed. Study the circuit diagram below and connect up the corresponding wires. Figure-3: Circuit layout of games port ============================================== pin 1, 8, or 9 +5vDC ___________________ | | 20K | pin 3 Slider0 ______/\/\/\____ | | 100K | _/\/\/\_____| | | 20K | pin 6 Slider1 ______/\/\/\____ | | 100K | _/\/\/\_____| | | 20K | pin 11 Slider2 ______/\/\/\____ | | 100K | _/\/\/\_____| | | 20K | pin 13 Slider3 ______/\/\/\____ | | 100K | _/\/\/\_____| | ___ pin 2 button1 ______o o_______ | ___ | pin 7 button2 ______o o_______| | ___ | pin 10 button3 ______o o_______| | ___ | pin 14 button4 ______o o_______| | | pin 4 or 5 GND ______________| | ============================================== For example, if you want to connect Slider0, take the wire that is comming from pin 3, solder it to a 20 kOhm resistor, then connect the other of the resistor to a terminal on the slider. Take a wire that is going to a +5vDC pin, you can use pins 1, 8 or 9 for this. Connect this wire to the other terminal of the slider. Don't use pins 12 or 15. The 20 kOhm resistor is to avoid incorrect detection of the sliders. Some games ports such as the one on my SBLive will report a stationary slider as moving when all the sliders are near the zero resistance end. Adding a 20 kOhm resistor here should eliminate this problem. If this still occurs, using a larger resistor may help, such as a 30 or 40 kOhm resistor. For the buttons you connect one end to a button pin (2, 7, 10, or 14) and the other end to a ground pin (4 or 5). If you are making a mixer with more than four sliders or buttons, you will have to use a second cable and a second port. The instructions are the same as above. ********************************************************* **** TEST IT WITH A MULTIMETER BEFORE YOU PLUG IT IN **** ********************************************************* This is where things tend to burn when you do things wrong. Make sure you test the device before pluging it in. There should be between 0 Ohms and 100 kOhms resistance in the circuit. With the multimeter test each slider with the slider at both its limits. Test each button as well. Once you have tested the slider you can plug it in and configure it. See the next section on configuring the exmixer. Now all you have to do is secure the wires using cable ties and close the box. Make sure you also secure the main cables as well. 4. Configuring DBMix with the exmixer ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The following instructions will guide you through the configuration of the exmixer. It is a real simple process, first we will calibrate the exmixer, then create the exmixer preferences to set up the sliders. 4.1 Calibrating the joystick ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ First we need package jscal or xjscal these can be found at: http://www.suse.cz/development/joystick/ More information on calibrating the joystick can be found here: file:///usr/src/linux/Documention/joystick.txt http://www.suse.cz/development/input/ xjscal is an easy to use calibration program that runs under X11. I recommend it for the exmixer. If you find that once you have started DBMix and the slider does things the wrong way round you can use the flip axis switch in xjscal. Be sure to return the slider to the center before calibration is complete. The calibration programs will create a ~/.joystick file, this will be used by DBMix. You must also set the nullzone to zero, otherwise there will be a part where the slider will be unresponsive. 4.2 The exmixer Preferences Dialog ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Once you have created the exmixer, configuring the device to work with DBMix is straight forward. You must have "Enable external mixer" checked in the DBMix preferences dialog. Then click "Config exmixer ..." to configure the exmixer. The dialog that appears is straight forward to use. If you require more than 2 devices, follow the instructions in section 5. The "Enabled" check button will enable the device given in the "Device" box. The "Assignment" column allows you to assign a given slider or button to a particular function. The "Channel" column combo boxes (if available) will assign the slider to a given channel. Assignment labels, a brief description: Pitch: Adjusts the pitch of a channel. Volume: Adjusts the volume of a channel. Main Volume: Adjusts the master volume control. Cue Volume: Adjusts the cue volume. Cross Fade: Adjusts the cross fader. Fade Speed: Adjusts the fade speed. Balance: Adjusts the master left/right balance. The button assignment labels are straight forward. If you don't know which button is which, you can press the button when the exmixer Settings window is open, this will switch the focus to the specified button. 5. Additional stuff ~~~~~~~~~~~~~~~~~~~ Thats it! Happy mixing. And *please* tell me if you ever create your own exmixer, I would like to hear from you to see how it went. And just some recognition that someone has made use of this document. If you happen to create any cool new tunes you can send a link for me to download them. If you have any requests for additional functionality, tell me and I will see what I can do. To enable more than two games ports you will need to re-compile the code, this can be done by setting: #define MAX_DEV 2 to #define MAX_DEV 3 in "/DBMix/dbmixer/exmixer.h". Then type "make clean" in the DBMix root, then "make" followed by "make install". The same can be done if you happen to build a mixer with more than four axes or buttons (don't ask me how), just change the following to however many axes/buttons you require: #define MAX_AXES 4 #define MAX_BUT 4 These can also be found in the exmixer.h file. Ciao, Simon