When I was young I'd heard rumours about a fantastical sound card for the computer known as the Roland MT-32 - imagining that if it was good enough to be the default sound device for games such as Monkey Island, then it had to be good! Of course I was a kid at the time, the kind that didn't even have enough money to even be allowed inside the kind of stores that would sell this stuff. Fast forward to adulthood and I learned that it wasn't a sound card at all - it was a standalone MIDI-module! The second thing I learned was that they originally were, and still are, incredibly expensive items. Especially for people born without any sense of rhythm.
Cue other incredibly talented people found on the Internet, in particular for creating the mt32-pi project - allowing people like myself to build a device capable of at least emulating one of these fantastical devices. All it takes is a somewhat cheap, mostly available Raspberry Pi 3 or 4. As with everything I enjoy playing around with, as long as it is simple enough for me to do so - I'll look into building my own version of it. Granted, I may have cheated more than a little bit by starting out with a copy of the design files for clymsyMIDI as my starting point.
I had a lot of fun building the original BulkyMIDI-32, the process can best be described as an exciting journey down a rabbit hole of all things MIDI and similarly themed audio projects. This resulted in a multitude of adapters built for connecting things together, including a whole host of interesting modules that can be either used with the BulkyMIDI-32 or in many cases can be used by themselves alongside other music equipment. To keep things separate I've split the modules-section so that you'd be able to determine which PCB designs belong together.
For the technical details as well as information regarding the modules included by this specific github project, consult the table below. Follow the documentation links for build instructions, BOM and anything else you'd need for that specific module. Faceplates and any backplates listed are for the most most part only decorative, allowing you to put together something similar to a case without actually requiring a 3d-printer. Also, check out the schematics for more information about the electronic side of things.
As previously mentioned several modules has been designed as part of the same project, these add different functionality and due to their identical form factor - they can all be stacked to build your very own MIDI-mountain! Though they bear the BulkyMIDI-32 name, they can all be used independently of the main BulkyMIDI-32-module - they will communicate using standard MIDI. Should you want to, they should be able to live happily alongside your vintage MIDI-devices.
Module | Description |
---|---|
BulkyMIDI-32 | Main BulkyMIDI-32-module (running mt32-pi). |
BulkyMIDI-32 Audio Switch | Module for switching between various audio sources, similar to the source selection switch on a stereo system. |
BulkyMIDI-32 Channel Monitor | MIDI-channel activity monitor, lights up an LED corresponding to the channel on activity. Implemented using basic CMOS logic chips. |
BulkyMIDI-32 Channel Monitor 2 | Mainly the same as above, except that the hardware is implemented using an Arduino Pro Micro and is therefore a lot easier to obtain the parts for. |
BulkyMIDI-32 Input Switch | Module for switching between up to four MIDI sources, the selected input is then replicated to three different THRU-ports. This allows you to easily switch between equipment as well as chain together different systems. |
BulkyMIDI-32 Play | Used for playing MIDI-files (.MID) from an SD-card using an Arduino Pro Micro. The hardware can also be uses as a basis for building a custom MIDI-merger, MIDI-message filtering or simply as a USB to MIDI-adapter. |
This is the main module of the project, if you came here looking to build an mt32-pi device then this is it. You have the option of going the cheaper route of just building the basic module, consisting only of the main module and nothing else. Alternatively, you can just build the whole thing as shown above. Given the cost of PCB fabrication, I recommend just building a complete unit. Note that the list below will include alternate versions of boards, so you need to decide which of them you'll need based on their description.
Module | Required | Description | Documentation | Order |
---|---|---|---|---|
BulkyMIDI-32 | Yes | Main module | Documentation, BOM, Setting it up, Getting started | PCBWay |
BulkyMIDI-32 Panel | Recommended | Adds a vertical surface for mounting switches and rotary encoder. | Documentation, BOM | PCBWay |
BulkyMIDI-32 Front panel (FP1) | Optional | Decorative front panel, mounts on BulkyMIDI-32 Panel. Designed for use with BulkyMIDI-32 Extras. | Documentation | PCBWay |
BulkyMIDI-32 Front panel (FP2) | Recommended | Decorative front panel, mounts on BulkyMIDI-32 Panel | Documentation | PCBWay |
BulkyMIDI-32 Extras | Optional | Adds passive audio mixing, RS-232 connectivity and RS-232 baud rate translation. | Documentation, BOM | PCBWay |
BulkyMIDI-32 Faceplate (FB1) | Optional | Faceplate that goes on top of the device, with simple logo. | Documentation | PCBWay |
BulkyMIDI-32 Faceplate (FB2) | Recommended | Alternate faceplate that goes on top of the device, with different logo. | Documentation | PCBWay |
One of the drawbacks to using a vintage boombox as my stereo speaker system, is that it doesn't have any more than one audio input meaning that I would normally have to switch around the cables all the time. Well I can't really complain as not everyone is lucky enough to even have an input, at all! However, since I have one I wanted something that would let me switch between at the touch of a button. So, I built a simple audio switch and now you can build one as well!
Module | Required | Description | Documentation | Order |
---|---|---|---|---|
Audio Switch | Yes | Main module | Documentation, BOM | PCBWay |
Audio Switch Panel | Optional | Adds a vertical surface installing switches as well as adding channel indicator LEDs. | Documentation, BOM | PCBWay |
Audio Switch Front Panel (FP1) | Optional | Decorative front panel, mounts on Audio Switch Panel. | Documentation | PCBWay |
BulkyMIDI-32 Faceplate (FB1) | Optional | Faceplate that goes on top of the device, with simple logo. | Documentation | PCBWay |
BulkyMIDI-32 Faceplate (FB2) | Optional | Alternate faceplate that goes on top of the device, with different logo. | Documentation | PCBWay |
One of the first things I wanted to add to the BulkyMIDI-32 was more blinking lights, as it turns out there were devices back in the day that did this - the were called channel monitors. Their purpose is simply to have an LED for each of the 16 MIDI channels, then as a MIDI-message passes through that contains channel information - the corresponding LED is lit up and will stay on for some time.
The circuit design was based on an article by W. Dunczewski, titled MIDI Channel Monitor and was printed in the 1993 october issue of Elektor Electronics. Besides the obvious attraction to blinking lights in controlled forms, what I liked about it is that everything is implemented entirely in basic CMOS logic chips (there's no traditional CPU or MCU handling the data).
Module | Required | Description | Documentation | Order |
---|---|---|---|---|
Channel Monitor | Yes | Main module | Documentation, BOM | PCBWay |
Channel Monitor Panel | Optional | Adds a vertical surface for mounting the 16 channel LEDs. | Documentation, BOM | PCBWay |
Channel Monitor Front Panel (FP1) | Optional | Decorative front panel, mounts on Channel Monitor Panel. | Documentation | PCBWay |
BulkyMIDI-32 Faceplate (FB1) | Optional | Faceplate that goes on top of the device, with simple logo. | Documentation | PCBWay |
BulkyMIDI-32 Faceplate (FB2) | Optional | Alternate faceplate that goes on top of the device, with different logo. | Documentation | PCBWay |
This module displays MIDI-channel activity in realtime, with an LED for each of the 16 channels. While it effectively does the same as the BulkyMIDI-32 Channel Monitor, I also wanted to build a modern version of it using an Arduino Pro Micro and a couple of shift registers as well. Mostly an easy task, having implemented the hardware changes and writing the firmware for it while waiting for the missing ICs for the first one to arrive on the slow boat from China.
Module | Required | Description | Documentation | Order |
---|---|---|---|---|
Channel Monitor 2 | Yes | Main module | Documentation, BOM | PCBWay |
Channel Monitor Panel | Optional | Adds a vertical surface for mounting the 16 channel LEDs. | Documentation, BOM | PCBWay |
Channel Monitor Front Panel (FP1) | Optional | Decorative front panel, mounts on Channel Monitor Panel. | Documentation | PCBWay |
BulkyMIDI-32 Faceplate (FB1) | Optional | Faceplate that goes on top of the device, with simple logo. | Documentation | PCBWay |
BulkyMIDI-32 Faceplate (FB2) | Optional | Alternate faceplate that goes on top of the device, with different logo. | Documentation | PCBWay |
This module was created in order to easily switch between different MIDI inputs, the selected input is then replicated to three different THRU-ports. What this allows me to do on the input-side is to select between a keyboard, a USB MIDI-interfaces connected to a modern system and that of a vintage computer system. Duplicating the MIDI-messages on different THRU-ports allow me to send the same data to several MIDI-devices, such as an original Roland MT-32 as well as a MT32-PI (such as the BulkyMIDI-32 itself).
Module | Required | Description | Documentation | Order |
---|---|---|---|---|
Input Switch | Yes | Main module | Documentation, BOM | PCBWay |
Input Switch Panel | Optional | Adds a vertical surface installing switches as well as adding indicator LEDs. | Documentation, BOM | PCBWay |
Input Switch Front Panel (FP1) | Optional | Decorative front panel, mounts on Input Switch Panel. | Documentation | PCBWay |
BulkyMIDI-32 Faceplate (FB1) | Optional | Faceplate that goes on top of the device, with simple logo. | Documentation | PCBWay |
BulkyMIDI-32 Faceplate (FB2) | Optional | Alternate faceplate that goes on top of the device, with different logo. | Documentation | PCBWay |
In many ways the missing module when it comes to playing around with a Roland MT-32, both the vintage kind as well as the emulated version that is the main BulkyMIDI-32 module (running mt32-pi) - simply playing back a .MID-file without a computer attached to it. Implemented with an Arduino Pro Micro at its heart, you can put your files on an SD-card and play them back - use a long press when starting playback to loop the file, another long press to stop playback. During playback the rotary encoder encoder can be used to speed up or slow down the tempo.
Given that the designs have provisions for more than the expected number of MIDI-ports, a change in firmware can allow the hardware design to be used for entirely different purposes such as MIDI-message filtering, merging inputs and similar functionality.
Module | Required | Description | Documentation | Order |
---|---|---|---|---|
Play | Yes | Main module | Documentation, BOM | PCBWay |
Play Panel | Optional | Adds a vertical surface for oled-display and rotary encoder. | Documentation, BOM | PCBWay |
Play Front Panel (FP1) | Optional | Decorative front panel, mounts on Play Panel. | Documentation | PCBWay |
BulkyMIDI-32 Faceplate (FB1) | Optional | Faceplate that goes on top of the device, with simple logo. | Documentation | PCBWay |
BulkyMIDI-32 Faceplate (FB2) | Optional | Alternate faceplate that goes on top of the device, with different logo. | Documentation | PCBWay |
Separate from the main modules are several adapters, designed for use with the BulkyMIDI-32 in particular though most of them simply speak standard MIDI - so they should work with original equipment such as the original Roland MT-32. Follow the included in the table below for details such as build instructions, BOM and anything else you'd need for that specific module. The repository also includes a folder for schematics in PDF-format, these will be needed in order to track down any faults you encounter when building up and testing the adapters.
Module | Required | Description | Documentation | Order |
---|---|---|---|---|
Amiga MIDI Interface (DB25) | Optional | RS-232 to MIDI adapter for Amiga 500/600/1200/2000/3000/4000. | Documentation, BOM | PCBWay |
Amiga MIDI Interface (IDC) | Optional | RS-232 to MIDI adapter for Amiga 500/600/1200/2000/3000/4000. Use with IDC to DB25 cable. | Documentation, BOM | PCBWay |
Evolution Mk-7 Adapter | Optional | The Evolution Mk-7 MIDI keyboard only came with a DB15-connector as its only output, intended for plugging into a soundcard. This adapts that to regular 5-pin DIN-sockets. | Documentation, BOM | PCBWay |
Gameport (DB15) | Optional | Adapter for plugging a MIDI-cable directly into the gameport on several common sound cards. | Documentation, BOM | PCBWay |
Gameport (IDC) | Optional | Adapter for plugging a MIDI-cable into the gameport on common sound cards. Use with IDC-cable to a male DB15-connector, may be easier to use with several older computer case designs. | Documentation, BOM | PCBWay |
MIDI Breakout Board | Optional | Handy breakout board for when you want to add MIDI-ports to an Arduino-board. | Documentation, BOM | PCBWay |
NB! The repository may contain pieces of modules and adapters designed for use with these, if they're not listed in one of these tables then they're a work in progress. They might be functional, they might blow up or I simply haven't remembered to update the documentation for them yet. PCBWay order links will always point you towards the last know good revision that I've tested, meaning they worked at least once with the equipment I have available.
Everything comes from something, in particular when it comes to most of my electronics projects. I mainly build things I would like to own, often doing a respin to fit my own particular style and preferences with most of the hardest parts of the designs already provided by people more knowledgable than I.
The software running on the Raspberry Pi is provided by the mt32-pi while the hardware itself can be considered to be based on the information provided by the associated wiki. As already mentioned I started out with the design files for clymsyMIDI as a starting point for the design.