MIDIbox SID V1 Walkthrough
NOTE: This is a walkthrough for an expired design. The MIDIbox SID V2 Walkthrough is located here.
This page summarizes the steps which are required to successfully build a MIDIbox SID V1. It lists especially all those pitfalls which where noticed in the last years by people who are not familar with MIDIbox projects.
If a certain hint is missing, then please let me know. I will try to collect all related informations here, which are normaly scattered over the Homepage, the MIDIbox Wiki and the Forum.
Planning the construction
- If you've never built a MIDIbox project before, it makes sense to start with the minimal MIDIbox SID solution, which consists of a CORE and SID module. You can expand your MIDIbox later by a Control Surface and multiple slave SIDs, there is nothing which has to be thrown away!
- You should also consider to purchase a 2x20 LCD, it's very helpful for debugging
- Even a MIDIbox SID can run without a BankStick, you should consider to buy at least one, otherwise you are not able to store more than one sound patch.
- The Step A control surface isn't that expensive, it requires only one 74HC165, 8*10k resistors, 6 buttons and a rotary encoder. It allows you to edit all SID parameters without a computer.
- The MIDIbox SID V1 page lists some hardware options. This list also contains references to PCB layouts and part lists, plus a rough estimation of the costs. The simplest solution is just to order the PCBs and the parts in form of "kits" at http://mbhp.coinoptech.com or www.mikes-elektronikseite.de
- If you are planning to hunt for the parts by yourself, check the WhereToOrder page, which contains links to some advisable mailorder companies.
- sometimes it's cheaper in longterm to order more pieces of electronic components than listed in the order lists. For example, ordering 20 * 10k resistors two times can cost much more than just ordering a 100 pieces pack one time.
- Parts which are frequently used in the MIDIbox Hardware Platform:
- Resistors: 220 Ohm, 1k Ohm, 10k Ohm (all 1/4 Watt)
- Capacitors: 100 nF, 10 uF
- 74HC595 ("DOUT shift register") and 74HC165 ("DIN shift register")
- "BankSticks" (24LC256 EEPROMs)
- 16pin IC sockets
- 1-row SIL and 2-row DIL headers
- Ribbon Cable
- breadboards/prototype boards/stripeboards for mounting control elements (buttons, LEDs, etc..)
- Beside of SID and CORE module, you also need a PSU (Power-Supply-Unit). Since the SID requires two different voltages (6581: 12V, 8580: 9V), it's hard to find a PSU which fits perfectly.
Example: if you are taking a PSU with 15V for the SID module as well as for the CORE module, the 78L12 voltage regulator has to consume only 3V difference, but the 7805 voltage regulator at the CORE module has to consume 15V-5V = 10V! As a result, the 7805 will get extremely hot, especially if the core draws a lot of current (e.g. when a LCD with backlight is supplied in addition).
Therefore I strongly recomment the use of the original C64 PSU, which you propably already own (if you've canibalized an old C64), and which delivers the right voltages. I've also noticed, that this PSU leads to perfect signal/noise ratios on the SID audio output.
Here a link to the interconnection plan: mbhp_4xsid_c64_psu_optimized.pdf (don't be confused about the 4 CORE/SID configuration, this circuit works as well with only one CORE/SID pair)
- Enclosure: at the beginning you could mount the modules on a carton (shoe or pizza box ;-), later you can search for a nice case - either take the case of an old defective device or buy a new one. Since tastes are very individual, I cannot give much more tips for this decition.
- Required tools: Soldering iron (min. 15W, not more than 30W), thin soldering tip for small electronical parts, soldering tin, screwdrivers, cutter (for cutting cables), flat nose pliers, a multimeter for measuring voltages (can be a cheap one!)
- Useful tools: desoldering pump, drill
- Learning soldering: search in google for "soldering guide" - example: www.kpsec.freeuk.com/solder.htm
Setup the CORE module
- The MBHP_CORE page contains a soldering guide, which gives you an overview about how to build the module.
- Complete and test the core module before continuing with the SID module - this makes the debugging process easier!
- After it has been built, you should check the voltages first before putting the ICs into the socket (see MBHP_CORE)
- If you've purchased an preburned PIC with MIOS Bootstrap loader, you are ready to continue, otherwise you have to program the Loader into the PIC first - see also this page.
- Connect the MIDI In and Out with your computer, open a MIDI Monitor like MIDI-Ox and check if the core sends the so called "upload request"
- Now you need to upload MIOS (the operating system). I suggest the use of MIOS Studio, since the usage is very easy compared to SysEx tools.
- MIOS as well as all MIOS applications are available at the MIOS Download page.
- If you are not able to upload MIOS, then please continue at the MIDI troubleshooting guide before asking for help in the forum. Most frequent reasons for failures: Short circuits on core module, MIDI In/Out connected wrong, two pins of the MIDI socket swapped, MIDI interface not running or bugs in MIDI driver
- Note that the LCD (if connected) won't show any text so long MIOS hasn't been uploaded. The LCD should show black bars at the upper bar so long it is not initialized. If you don't see anything, check the connections again, and check especially the contrast pot. More infos also in the MIDIbox Wiki - HowToConnectLCD page.
- Test if the MIOS was uploaded successfully: the LCD will show a copyright message after power-on, thereafter you should see "READY." at the upper line.
- If no LCD is connected, you could upload the crc utility. It will send a checksum over MIDI, which can be displayed with a MIDI Monitor.
NOTE: if your MIDI interface is not multi client capable, you need to close MIOS-Studio before starting the MIDI Monitor. Or you can just use the internal MIDI Monitor of MIOS Studio (details see MIOS Studio page
- When all these checks were successfull, you can start with the SID module
Testing the SID module
- The MBHP_SID page contains a soldering guide, which gives you an overview about how to build the module.
- Don't plug the SID and the two 74HC595 into the sockets before the initial voltage checks. Connect the SID to the CORE like described in one of the following schematics: mbhp_sid_c64_psu.pdf, mbhp_4xsid_c64_psu_optimized.pdf. All of them refer to the C64 PSU, but they are also informative if you are using a different PSU
- Note that there are differences between the CORE->SID interconnections of an "old" and an "current" MBHP_SID layout. Older boards need a different wiring like described here.
- Always use the latest midibox_sid release which is available at the download page. Older releases could be incompatible with your hardware. Newer versions are mostly in beta state, and only intended for experts who've read the appr. threads in the forum.
- Now you could just upload the MIDIbox SID application. You will notice several .hex (and .syx) files in the .zip package. If you are using MIOS Studio, only the .hex files are relevant. The .syx files are converted .hex files for direct upload with other SysEx tools.
- Search the .hex file which fits for your needs: main.hex is the setup that I'm using for my own MIDIbox SID with Step C control surface and 8580 SID. There are several prepared setups for 8580 and 6581 SIDs, for master and slave modules.
- If you are unsure, then just take the main.hex file for your first tests. It doesn't really matter if the Control Surface (CS) is enabled or not, the main difference is the behaviour on incoming and outgoing MIDI events (e.g. the CS version will send three SysEx dumps to the slaves after power-on).
- Play a note at MIDI Channel #1, you could either use a MIDI keyboard, the virtual keyboard of MIOS Studio/MIDI-Ox, or a sequencer. You should hear a cheap pulse sound. This is the preset sound, which is stored in the internal EEPROM of the PIC
- Alternatively you could upload the sid_testtone application, which is available at the MIOS download page. This application just plays a 1kHz triangle wave after MIOS has been booted (no MIDI keyboard or sequencer required to play a note)
- If you don't hear any sound, then there could be a problem with the connections between CORE and SID module, or a short circuit at the SID module itself? The mbsid_interconnection_test available at the MIOS download page allows you to check, if the CORE module can control the pins of the SID. The main.asm file of this application contains the required steps. If one of the SID pins cannot be controlled, then you know, that the problem must be related to your hardware.
- If the interconnection test was successfull, and you are able to play sounds, here some additional infos to things, which are not obvious:
- The SID audio out is not so loud as on my other synths: thats correct, you need to amplify it if required. Or just add a (hardware or software) compressor - this makes sense anyhow for more powerful sounds!
- You hear a (silent or loud) 50Hz or 60Hz buzz in the background: thats either a wiring (ground loop) or PSU problem. The mbhp_4xsid_c64_psu_optimized.pdf diagram includes some tips how to eliminate the buzz sound (consider the use of a C64 PSU, use shielded audio cables!)
- You hear high-frequency noise in the background: thats a known issue with the SID chip. Especially the 6581 is affected by this problem.
- After a sound has been played, you can sometimes still hear it in the background: thats also an known issue with the VCA of the SID chip.
- The filter resonance has nearly no effect: known SID issue, see also the Interview with Bob Yannes
- The preset patches which get use of the filter are sounding strange: the filter characteristic of the 6581 and 8580 are different, therefore you will find two different preset libraries in the preset package. It's also very important that your core is running with the right filter settings - there are different preassembled .hex/.syx files 6581 and 8580, the default filter setting in main.hex is for the 8580 filter.
- Customizing the application: this can be done by editing the settings in main.asm (or in a selected setup_*.asm file which already fits your needs). After a change, you have to rebuild the application like described here.
- read all the infos in the main.asm header of the MIDIbox SID application!
- DEFAULT_DEVICE_ID and AUTO_DEVICE_ID: don't touch these settings, they are perfect
- CBM8580_FILTER_FIX: must be 1 if you are using a 8580 SID
- CBM8580_FILTER_SWITCH*: optional feature to switch between the 6581 and 8580 filter control algorithm with a switch or jumper at a specific IO pin. This setting is only useful if two SID modules (one with 6581, another with 8580) are connected to the same core. This feature was requested by a user for his specific MIDIbox SID setup, in normal cases you can ignore it!
- CS_ENABLED and AUTO_CS_ENABLED: enables/disables the control surface.
- CS_MENU_DISPLAYED_ITEMS: defines the display size and the number of menu select buttons
- CS_MENU_USE_INCDEC_BUTTONS: optionally, the rotary encoder of Step A control surface can be replaced by two buttons for incrementing/decrementing the values
- CS_MENU_USE_DETENTED_ENCODER and CS_MENU_ENC_SPEED_VALUE: rotary encoder specific settings, depends on the encoder type you are using. Note, that in addition the type has to be selected in mios_tables.inc
- CS_MENU_DEFAULT_LINK: should be 1 on a Master-Slave setup without control surface
- ENABLE_AOUT: enables the CV output extension. 1 for the MBHP_AOUT module, 2 for the MBHP_AOUT_LC module.
- ENABLE_AIN_LFO_WAVEFORM: allows you to use 6 analog inputs at J5 of the core module as 6th waveform of the LFOs - by doing so, pot or joystick movements can be routed through the modulation matrix to Pitch, Pulsewidth and Filter.
- all other switches were mostly requested by users - if you don't understand the reason for these parameter, then just don't change them!
- Preset patches: they are available in a .zip package from the MIDIbox SID page and require at least one BankStick. You can use the JSynthLib editor or TL's Patch Manager.
- Editing sound patches: there are several possibilities
- Using a MIDI Controller or the capabilities of your host sequencer - CC numbers are listed in sid_cc_implementation_chart.txt
- There is also a VSTi available which allows you to control a subset of the CC parameters (not all of them!) from a host sequencer: www.saschazone.de
- Use the JSynthLib based editor, which gives you access to all parameters, and which allows you to store the patches.
- Or just edit the sounds directly on the Control Surface Step A/B/C
- Important: when a new BankStick is connected, a format process will be started, which takes at least one minute. You will see a special message on screen, and the SID will output some beeps on each formated patch slot - but for users who have no LCD connected this process could lead to confusion, since the MIDI functions of the box are not accessible until BankStick is completely initialized! So - please connect the BankStick after you've finished the first tests.
Building a Step A Control Surface
- Although the Step A page lists the possibilities for different display sizes and encoder/button solutions, I strongly recomment the use of a 2x20 LCD, 6 menu buttons and a rotary encoder. The whole menu handling has been optimized for this setup, all other options lead to following compromisses:
- INC/DEC buttons: very ugly usage, parameter sweeps cannot be realized efficiently
- 2x16 LCD: only 4 menu items are displayed, but sometimes 5 are desired, e.g. for the ENV section. This means, that you need to scroll the menu to the right in order to see the 5th parameter, which normaly belongs to the same parameter set.
- 2x40 LCD: better overview, in most menu pages you don't need to scroll anymore, but in the mainpage (where the patch is displayed) only the left half is used, which doesn't look very aesthetical
- Wisefire has started a great Blog. I will add some more infos on this topic if required.
Setup the Master-Slave configuration (Step B)
- Details (e.g. the installation of slave SIDs) is listed here
Setup the Step C Control Surface
- All required schematics, diagrams, default frontpanel layout is listed here
- Prepare all button/encoder/LED boards and measure the dimensions before you are starting with the frontpanel! Mount it on a carton first, and check the handling - this is especially required, if you are planning to re-arrange the parts for your own MIDIbox. Try it out before the order!
- General handling: when you are moving a rotary encoder, or when you are pressing a button, the LCD menu will jump to the appr. menu page, so that you can see the modified value on screen. The encoders at the OSC and ENV section are arranged in the same order like on the display (5 menu items -> 5 encoders). Another example: pressing the OSC Ctrl button will scroll the menu automatically to the page which fits with the 5 "Misc" section. This means, that by pressing buttons, and moving encoders, you have a direct and fast interaction with the LCD menu
- The "assign" groups in the OSC and ENV section can be customized in cs_menu_enc_table.inc - you are able to assign additional parameters to them, you can use them to send absolute or relative MIDI controllers to other synthesizers, or you can use them to control the currently visible menu items directly (very useful especially in the WT sequencer page!) - by default, the Assign group of the OSC section sends CC#16..CC#20 at MIDI Channel 16, and the Assign Group in the ENV section controls the menu items directly.
- Button and LED assignments can be adapted to the hardware in cs_menu_io_tables.inc, by default they are matching with my own hardware (see mbsid_din_default.pdf and mbsid_dout_default.pdf
- Encoder assignments can be adapted in mios_tables.inc if required
- Sometimes people are asking, if they need to take future enhancements into account for their panel design. General statement from my side: I will never change my own frontpanel anymore, therefore you are at the save side when your own panel includes the same buttons/LEDs/encoders (the arrangement doesn't matter). Future functions will be available as alternative key functions. E.g., for MIDIbox SID V2 a dedicated modulation matrix for the CV outs are planned, they will be controlable from the normal modulation matrix within a special menu.
...can be found in the MIDIbox SID FAQ and in the Forum (use the search function!)
Last update: 2015-09-24
Copyright © 1998-2015, Thorsten Klose. All rights reserved.