Table of Contents
You can build a simple circuit based on an opto-isolator, a diode, and a few resistors. If mt32-pi does not detect any USB MIDI devices present on startup, it will expect to receive input on the UART RX pin (pin 10).
💡 Tip: You can disable detection of USB MIDI interfaces by setting
usb = offin the config file. This can shave off a couple of seconds of boot time as USB initialization is then skipped on startup.
Schematic
Breadboard example
6N138 opto-isolators: why not?
There are many schematics around the internet that suggest using a 6N138 opto-isolator in MIDI circuits for microcontrollers such as the Arduino [1].
Sadly, there are also many schematics that suggest connecting them to the Raspberry Pi in a dangerous fashion (i.e. that could cause permanent damage to your Raspberry Pi). Whilst they can be used with a Raspberry Pi with appropriate level shifting or connecting the RX pull-up resistor to 3.3V instead of 5V [2], we do not recommend using them for the following reasons:
- They are designed to run from a 5V power source, but the connection to the Pi's RX pin must not exceed 3.3V otherwise damage can occur, so extra care is needed when hooking them up.
- Some schematics suggest running them from 3.3V, which may work, and would avoid the need for level shifting, but is technically out-of-spec and not allowed by the datasheet of the 6N138.
- The 6N138 has a slow switch-off time, which means it requires an extra pull-down resistor to ensure reliable data transmission.
The H11L1 is a superior component for this application as it can be be powered from a 3.3V power source and does not require the pull-down resistor, hence why we recommend using it instead [3].
🏠 Home
📝 Configuration file
💾 SD card preparation
🔧 Updating mt32-pi
🎹 MIDI connectivity
🔊 I²S DACs
📺 LCD and OLED displays
🖧 Networking
🔩 Custom hardware
🕹️ MiSTer FPGA
🎶 MT-32 synthesis
🎺 SoundFont synthesis
💬 Custom SysEx messages
🎬 Showcase
❓ Help
❤ Support mt32-pi
© Dale Whinham 2020-2022. Released under the GNU General Public License v3.0.