Skip to the content
PCBKitNew board
2 layers65 × 56 mmClumsyMIDI, the printed circuit board in 3D

A THT-only Raspberry Pi expansion board containing a MIDI interface, DAC, and OLED display

Size
65 × 56 mm
Copper layers
2
Thickness
1.6 mm
Parts
26
Nets
61
Pads
136
Tracks, vias
171, 32
Pours
2
Routed
Yes
KiCad
KiCad 5 (file 20171130)
Created
26 Nov 2020
Updated
19 Dec 2020

Overview

ClumsyMIDI is an open-source printed circuit board by gmcn42, from the gmcn42/clumsyMIDI repository on GitHub, published under the CC-BY-SA-4.0 licence. It is a 2-layer board of 65 × 56 mm with 26 parts on 61 nets, routed with 171 tracks and 32 vias.

It is built around the 74HCT14D, H11L1M and M2.5. Its parts include 6 capacitors, 6 resistors, 4 connectors, 2 ICs and 1 diode. It belongs with the audio and music and lEDs and displays boards of this library.

Main components

3

README

README.md

clumsyMIDI

A Raspberry Pi expansion board containing a MIDI interface, DAC, and OLED display requiring only through-hole soldering skills. This is primarily intended as an all-in-one hardware solution for the mt32-pi Roland MT-32 emulator but all features are usable with Raspberry Pi OS, too.

Table of contents

Features

  • TI PCM5102 I2S HiFi DAC (using the ubiquitous GY-PCM5102 carrier board)
  • GPIO MIDI interface with in, out, and thru
  • 0.91" OLED display
  • large-ish 5V bypass capacitor which may help with slightly weak power supplies
  • works with mt32-pi and Raspberry Pi OS
  • no SMT soldering required, so it should be suitable for clumsy DIYers like me ;)

Schematic and BOM

Schematic and BOM are available in the pdf/ subfolder.

How to get the PCB

You can get a zip file with the Gerber files from the releases page and let your favorite board house build the PCB. Alternatively, you can also order directly from PCBWAY via this link for convenience. Full disclosure: If you use the link, PCBWAY will donate 10% of the PCB price to me. I want to make clear that the PCB design is completely free and you are in no way obligated or even encouraged to use that link.

In case you want to make changes to the PCB before ordering somewhere, you can use KiCAD and import the project.

⚠IMPORTANT NOTE:⚠ Before soldering down the DAC board please make sure you check the assembly instructions below about the DAC's solder bridges. Their factory configuration appears to be varying from supplier to supplier and you may need to change them.

PCB Specs

  • PCB size (height * width): 56mm * 65mm
  • Layers: 2
  • Minimum drill size: 0.6mm
  • Minimum track size: 0.25mm (=9.84mil)
  • Minimum track clearance/spacing: 0.25mm (=9.84mil)
  • Surface finish: by preference (the pictured boards are lead-free HASL but pretty much anything will do)

Assembly

As all components are through-hole, you should get by with basic soldering skills. It is usually the best idea to start with the flattest components and work your way up. The 40-Pin GPIO socket should be soldered on last, also remember that it goes on the bottom :).

As shown in the BOM, I recommend socketing U1 and U2 as they are the most likely casualties if defective MIDI devices are connected for some reason. Be mindful of the ICs' orientation. The notch of the 74HCT14 should be where the notch is on the silkscreen. Likewise, the H11L1's dot (marking for Pin 1) should also face the in the direction of the notch on the silkscreen. If inserted correctly, U1 and U2 will "face outward and away from each other".

It is possible to leave out some components, e.g. if you only need MIDI-In. Consult the schematic for details.

As I happily noticed people are actually really starting to build these things, I have opened the discussions page of this project. If you have questions about anything related to the board and its assembly, feel free to open a topic!

An ⚠IMPORTANT⚠ note on the DAC board solder bridges

Before soldering on the DAC board please double-check that the solder bridges on the bottom of your GY-PCM5102 are configured as in the following picture:

So: 1, 2, and 4 to L and 3 to H. This should be the standard factory-set config but at least one builder encountered a board with an unconnected bridge resulting in the DAC being permanently muted. If you have a multimeter you might also want to check good connection from the board's pins to rule out bad solder joints. FLT, FMT, and DEMP should have almost 0Ω to GND while XSMT should have almost 0Ω to pin 20 (top right) of the DAC chip itself.

If yours are un- or wrongly set, you'll have to resolder them.

Rewiring MIDI Thru to Out

In standard configuration, the MIDI Thru output is available on a 5-pin header due to space constraints. If you do not need MIDI Out but want a MIDI Thru, it is possible to route the Thru signal to the MIDI-Out socket instead of the pin header. In that case, leave J4, R1, and R5 unpopulated and solder a wire between the footprint pads of J4 and R1 marked with a circle on the silkscreen, as shown in these two pictures (click for larger version):

Mechanical Parts

Be sure to use some kind of standoffs or similar when connecting clumsyMIDI to the PI. Without them, the board may sit lopsided and come in contact with the HDMI port, potentially causing a short circuit. Apart from that, it's more mechanically stable and simply looks nicer :). The BOM contains the brass standoffs I am using in the pictures.

A General Note

Use caution and common sense while working with electronics, especially while soldering stuff. As stated in the license, I am offering this PCB design as-is incuding any and all defects it may have and will not be held liable for any harm that comes to you or others as a result of using/building/looking at it.

Software Config

mt32-pi

Follow the setup instructions on their site and then set the following options in mt32-pi.cfg:

text
usb = off
output_device = i2s
type = ssd1306_i2c

The option gpio_thru will also work with the MIDI Out port on clumsyMIDI, so use at your preference.

Raspberry Pi OS

You need to add the following to /boot/config.txt to get GPIO MIDI, I2S DAC, and I2C support

text
enable_uart=1
dtoverlay=pi3-miniuart-bt
dtoverlay=midi-uart0

dtparam=i2s=on
dtoverlay=hifiberry-dac

dtparam=i2c_arm=on,i2c_arm_baudrate=400000

Also you need to comment out or remove the line dtparam=audio=on

Additionally for I2C support, add the following line to /etc/modules:

text
i2c-dev

To get regular ALSA MIDI support you need to bridge /dev/ttyAMA0 and an ALSA MIDI port. You can do this with ttymidi. Once you have it compiled and installed, run the following in a terminal:

text
sudo ttymidi -s /dev/ttyAMA0 -b 38400

If you are asking yourself why it needs to be set to 38400 Baud: The line dtoverlay=midi-uart0 causes the Pi's UART base clock to be slightly lowered, so that 38400 (a common RS232 baud rate) effectively becomes 31250 Baud which is MIDI-compatible.

Now you when run aconnect -l in another terminal, you should see a new MIDI client. Something similar to:

text
client 128: 'ttymidi' [type=user,pid=920]
    0 'MIDI out     '
    1 'MIDI in      '

Somewhat confusingly, the out/in naming is reversed because it is from the perspective of ttymidi. That means 'MIDI in' is what it receives from another application and then forwards to the UART. So if you want to play something on a synth connected to the clumsyMIDI's output, the correct command will be

text
aplaymidi -p 128:1 somefile.mid

The I2C display is supported by the Adafruit SSD1306 Python library, among others.

Have fun!

clumsyMIDI ©2020 by Andreas Zdziarstek.
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.
CC BY-SA 4.0

Parts

26
QtyValueFootprintReferences
5220RResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR1, R2, R4, R5, R6
4100nCapacitor_THT:C_Rect_L7.0mm_W2.0mm_P5.00mmC2, C3, C4, C6
4M2.5MountingHole:MountingHole_2.7mm_M2.5MK1, MK2, MK3, MK4
1100uCapacitor_THT:CP_Radial_D6.3mm_P2.50mmC5
11N4148Diode_THT:D_DO-35_SOD27_P7.62mm_HorizontalD1
11kResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR3
1470u 10VCapacitor_THT:CP_Radial_D8.0mm_P3.50mmC1
174HCT14Package_DIP:DIP-14_W7.62mmU1
1Conn_02x20_Odd_EvenConnector_PinSocket_2.54mm:PinSocket_2x20_P2.54mm_VerticalP1
1GY-PCM5102clumsyMIDI:GY-PCM5102A1
1H11L1MPackage_DIP:DIP-6_W7.62mmU2
1LOGOclumsyMIDI:ZDZsmallG***
1MIDI In JackclumsyMIDI:MultiDIN5J3
1MIDI Out JackclumsyMIDI:MultiDIN5J2
1MIDI Thru JackConnector_PinHeader_2.54mm:PinHeader_1x05_P2.54mm_VerticalJ4
1SSD1306 HeaderclumsyMIDI:SSD1306_128_32A2

Questions

How big is the ClumsyMIDI PCB?

It measures 65 × 56 mm and has 2 copper layers, 1.6 mm thick.

What parts does the ClumsyMIDI use?

26 parts, built around the 74HCT14D, H11L1M and M2.5. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the ClumsyMIDI KiCad files?

From the gmcn42/clumsyMIDI repository on GitHub, at the commit this page was made from: the board is clumsyMIDI.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the ClumsyMIDI design in my own project?

Its repository publishes it under the CC-BY-SA-4.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

Similar boards

  • 2 layers65 × 88.8 mmZynthian miniature, the printed circuit board in 3D

    Zynthian miniature

    sstojos/zynthian-miniature

    The basic PCB with MIDIs, Sound Card and 4 encoders only for zynthian.

    52 parts7GPL-3.0
  • 2 layers163 × 120 mmZynthian mini, the printed circuit board in 3D

    Zynthian mini

    sstojos/zynthian-mini

    Zynthian Mini is minimalistic approach to build zynthian synthesizer. It is based on latest V5 zynthian version. More information about zynthian can be found here : https://zynthian.org/

    87 parts1
  • 2 layers163 × 120 mmZynthian mini, the printed circuit board in 3D

    Zynthian mini

    zynthian/zynthian-hw

    Zynthian hardware stuff: PCBs, schemes, parts specifications, pin assignment, ...

    90 parts156
  • 2 layers100 × 100 mmBulkyMIDI-32 Dexed, the printed circuit board in 3D

    BulkyMIDI-32 Dexed

    tebl/BulkyMIDI-32

    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.

    44 parts80CC-BY-SA-4.0
  • 2 layers68 × 46 mmArdor IO, the printed circuit board in 3D

    Ardor IO

    balazsbencs/ardor

    This is a DIY multieffects project with a Raspberry Pi and and Codec Zero and a Raspberry Pi Display 2. With Full NAM A2 support.

    81 parts18MIT
  • 2 layersMIDI in, the printed circuit board in 3D

    MIDI in

    rcarmo/openscad-minidexed-rpi3a

    A case for a MiniDexed synthesizer based on a Raspberry Pi 3A

    7 parts2MIT
  • 2 layers69.9 × 69.9 mmMOMI, the printed circuit board in 3D

    MOMI

    joshnishikawa/MomiPlug

    A few files written for one specific MIDI controller (mainly for reference).

    56 parts
  • 6 layers160 × 100 mmCourant.before colored actual models 20260918T190457, the printed circuit board in 3D

    Courant.before colored actual models 20260918T190457

    KrasForge/Courant

    A 2D finite-difference physical-modeling synthesis engine in structural VHDL: a vibrating membrane/plate/gong solved on FPGA fabric, with a nonlinear chaos term, playable polyphonically over MIDI/CV.

    199 partsMIT