Giter Club home page Giter Club logo

tebl / bulkymidi-32 Goto Github PK

View Code? Open in Web Editor NEW
45.0 8.0 4.0 298.96 MB

A HW build of the MT32-PI project, allowing you to emulate a Roland MT-32 using a Raspberry Pi. Includes enough additional modules to build a MIDI-mountain as well as adapters for connecting to most things retro.

License: Creative Commons Attribution Share Alike 4.0 International

C++ 86.60% C 13.40%
roland-mt32 midi-device retrogaming mt-32 raspberry-pi audio mt32-pi midi music

bulkymidi-32's Introduction

BulkyMIDI-32

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 those of us who were born without any sense of rhythm.

BulkyMIDI-32 YouTube image

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.

BulkyMIDI-32

I had a lot of fun building the original BulkyMIDI-32, my process can best be described as an exciting journey down a rabbit hole of all things MIDI including 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 they can be also be used by themselves or alongside other vintage music equipment. In order to keep things separate I've split the modules-section so that you'd quickly be able to determine which PCB designs could belong together.

1> Modules

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.

BulkyMIDI-32

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 Dexed A variant of BulkyMIDI-32 that was intended for running MiniDexed.
BulkyMIDI-32 ExModule BulkyMIDI-32-styled module for connecting modern WaveTable-modules up to MIDI-devices.
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 Internal BulkyMIDI-32 built for installing in a 3.5" PC drivebay.
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.
BulkyMIDI-32 Power Switch BulkyMIDI-32-module for managing power to other BulkyMIDI-32-modules.
BulkyMIDI-32 VU SIDi At the moment this is an LM3915-based VU-meter.

1.1> BulkyMIDI-32

BulkyMIDI-32 Status: Completed

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 (FB2) Optional Faceplate that goes on top of the device Documentation PCBWay

1.2> BulkyMIDI-32 Audio Switch

BulkyMIDI-32 Status: Completed

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 (FB2) Optional Faceplate that goes on top of the device Documentation PCBWay

1.3> BulkyMIDI-32 Channel Monitor

BulkyMIDI-32 Status: Working, but documentation is missing.

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 (FB2) Optional Faceplate that goes on top of the device Documentation PCBWay

1.4> BulkyMIDI-32 Channel Monitor 2

BulkyMIDI-32 Status: Working, but documentation is missing.

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 version that could be put together using parts that aren't quite as vintage as the parts required by that module.

In the end, the core of the module was implemented using an Arduino Pro Micro in combination with a couple of shift registers. In theory the board can be built up as a simple USB-to-MIDI converter, or it can be used to have the MCU process MIDI-messages - note that Arduino sketches to do any of this do not exist.

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 (FB2) Optional Faceplate that goes on top of the device Documentation PCBWay

1.5> BulkyMIDI-32 Dexed

BulkyMIDI-32 Dexed Status: Untested prototype

A variant of BulkyMIDI-32 that was intended for running MiniDexed, a software that is similar to MT32-PI - except that it instead emulates up to eight Yamaha DX7 synthesizers on mostly the same hardware. I built one up and played around with it, my conclusion afterwards is that while it may work - I have absolutely no idea of how to use it. Or even a real keyboard for that matter. So in case someone finds it interesting enough to build one up using the files provided, please tell me whether it actually works.

1.6> BulkyMIDI-32 ExModule

BulkyMIDI-32 ExModule Status: Completed

There was a time when PC soundcards, mostly ISA, came with a WaveTable-header for attaching WaveTable-modules directly onto it it. Originally devised for mounting a separate WaveBlaster-module onto a Creative Soundblaster 16, but most often they're just referred to as WaveTable-headers as the form factor was inevitably adopted by several other companies who made similar modules with their own chipsets on it.

Ordering a selection of more modern modules from serdashop.com for installing into one of my vintage PCs, I couldn't decide on which one to put where - until I finally decided and realized that my AWE32 doesn't even have that feature. So for a year or so they've lived in the box the came in, buy in the end I figured it was time to do something with them. So I started building something to use them externally instead - following the guide up on atari.joska.no, itself referencing an article printed in Elektor Electronics (july/august 1997), I ended up with the BulkyMIDI-32 ExModule. Plug a MIDI-cable into it, hook the audio output up to your amplifier and enjoy!

Module Required Description Documentation Order
ExModule Yes Main module Documentation, BOM PCBWay
ExModule Panel Optional Adds a vertical surface installing switches as well as adding channel indicator LEDs. Documentation, BOM PCBWay
ExModule Front Panel (FP1) Optional Decorative front panel, mounts on Audio Switch Panel. Documentation PCBWay
BulkyMIDI-32 Faceplate (FB2) Optional Faceplate that goes on top of the device Documentation PCBWay

1.7> BulkyMIDI-32 Input Switch

BulkyMIDI-32 Input Status: Completed

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
Input Switch Faceplate (FB2) Optional Faceplate that goes on top of the device, similar to the two below - except it's missing a hole. Documentation PCBWay
BulkyMIDI-32 Faceplate (FB2) Optional Faceplate that goes on top of the device Documentation PCBWay

1.8> BulkyMIDI-32 Internal

BulkyMIDI-32 Internal Status: Working prototype

In many ways this is the module that this entire repository has building towards, a 3.5" drive bay expansion for vintage computers. Is this a sane thing to attempt to build without any kind of 3d-printer involved in the process? No it is not. Did I build it anyway? Yes, you're looking at it. Is it finished? No.

1.9> BulkyMIDI-32 Play

BulkyMIDI-32 Play Status: Completed

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 (FB2) Optional Faceplate that goes on top of the device Documentation PCBWay

1.10> BulkyMIDI-32 Power Switch

Status: Untested

1.11> BulkyMIDI-32 VU SIDi

BulkyMIDI-32 VU SIDi Status: Prototype, with issues to work out

This is a module that I'll probably have to rethink properly, mostly because of attempting to integrate a little too much in one go without a proper understanding of either of them. The first part of it is a VU-meter based on the LM3915 chip which isn't a solution I particularly enjoyed using, at least in part due to one of the two modes supported by the chip doesn't really work properly when powered from 5v. The other mode is too flickery for my comfort.

The SIDi-part of it was based directly on github-project SIDI by user doctea, and I can't figure out how to get it to work. This probably isn't a problem with the code, but more my lack of understanding how to work with a music chip directly. I'm not a musician or even know how to play any sort of instrument, so it is a case of biting off more than I can chew - at least for the forseeable future.

2> Adapters

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
MIDI TRS Adapter Optional TRS to MIDI adapter, has jumpers to select between TRS A- or B-wiring. Use with standard 3.5mm TRS-cable, as is commonly used for stereo audio. 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 to me.

3> Acknowledgements

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.

bulkymidi-32's People

Contributors

tebl avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

bulkymidi-32's Issues

OLED choices?

The options for the OLED are incredibly opaque. Some recommendations would be nice; I ordered some for my project based on the information given, did not realize until they arrived that the ones I ordered used an FPC instead of headers. Really annoyed at the lack of suggested parts.

A few points of Clarification

Tebl,

First of all, thank you for this project. It is nice to have a project that makes the MT32-Pi feel like a complete device, rather than just a raspberry pi with a hat. While I was building it, I took down a few notes and I would like to provide some constructive feedback that I think would help clear things up for people, and improve the design even further.

  1. The tactile buttons on the front panel should be 12mm. I didn't find this indicated anywhere in the build documentation just that they were "slightly long" and it took me some trial and error. Specifically the part # I found that worked well for my was Digikey # TS02-66-120-BK-160-LCR-D.

  2. I'd recommend the diodes on the extras board should be 1N5819 Schottky Diodes instead of 1N4001s standard silicon diodes. The Vf of the 1N4001 is 0.7V, which means the 5V rail on the extras board is down to only 4.3v-4.2v. It does work, but this is getting pretty low for a 5V rail. A 1N5189 is the same price and only has a 0.3V drop. It would be a drop in replacement.

  3. I wasn't sure what the "faceplate" connector J4 was for on the main board. I looked and looked, but I couldn't figure out a purpose for it. I wound up ordering extra connectors for it as part of the BOM that ultimately never got used. Perhaps it used to be part of an older revision and no longer serves a purpose. Assuming this connector is not needed, the space could be repurposed for #4.

  4. Since the extras board is really designed to be used in conjunction with the main board, the power socket on it is redundant, especially since it can't power the main board. However, I think this space could be used to add a convenient power switch. What would be nice to have here instead would be a PCB mount, right angle toggle switch to turn the whole bulkymidi on and off. Perhaps a 2 pin header (in place of J4) could pass the power down from the DC jack on the main board down to the extras board, to the switch, and then back up to the main board. This could be bypassed with a solder jumper on the main board if the extras board was not used. I wired mine up by hand (photo attached), but perhaps it could be incorporated into the design.

rear-power-switch

  1. BOM suggestions:
    a. extas - I found no use for the M2 screws/nuts on the Extras board. Either I missed what these are for, or they are no longer needed in the current revision.
    b. The knobs on the extras board can be no larger than ~15mm in diameter. I learned this the hard way.
    c. Main board - J4 was not needed
    d. A note on the MIDI jacks (5 pin DIN). There seem to be two distinct styles of these. One style with the two front pins close together at 5mm Example - Digikey P/N CP-2350-ND (the more common) , and another style with the front two pins further apart at 10mm (what the PCB uses, and common on AliExpress) - Example Digikey P/N 1939-G-1006-ND. You may want to indicate this on the BOM so it is clear which part is needed. Or alternately, add holes at 5mm (in addition to the 10mm) on the PCB so either style would be compatible.

  2. A few additional pictures of the sides/back of a completed MT-32 Pi would be helpful during the build process to see how it all stacks together if you could include them, especially the way the raspberry pi can mount on the standoffs and the header.
    raspberry-pi-mounting

Thanks again,
Matt

Couple of notes

Hi, just a couple of notes since discussions aren't enabled.

re TRS MIDI; the official standard has now settled on Type A, though there's plenty of type b devices still around.

Also, I love that you're working on a MiniDexed version. I just made one recently for my digital piano and have been wondering how to case it up. A BulkyMIDI form factor would be great :D

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.