Skip to the content
PCBKitNew board
2 layers56 × 110 mmTrs pcb, the printed circuit board in 3D

A open source, open hardware up-to-16x USB-MIDI-interface for around 15 bucks in its smallest configuration.

Size
56 × 110 mm
Copper layers
2
Thickness
1.6 mm
Parts
125
Nets
105
Pads
436
Tracks, vias
1,492, 14
Pours
2
Routed
Yes
KiCad
KiCad 5 (file 20171130)
Created
8 Mar 2021
Updated
18 Jul 2022

Overview

Trs pcb is an open-source printed circuit board by Windfisch, from the Windfisch/midikraken repository on GitHub. It is a 2-layer board of 56 × 110 mm with 125 parts on 105 nets, routed with 1,492 tracks and 14 vias.

It is built around the HCPL2630M, 74HC595 and 74HC165D. Its parts include 57 resistors, 24 diodes, 18 connectors, 11 ICs and 8 capacitors. It belongs with the audio and music and interfaces and adapters boards of this library.

Main components

3

README

README.md

Midikraken

build doc-links binary_size

An open-source, open-hardware MIDI-USB-interface supporting up to 16 (and maybe beyond?) MIDI ports. The hardware is based on a STM32F103 "blue pill" board which can be cheaply sourced from your favourite chinese seller (note about quality differences), plus other garden variety components such as HC2630 opto couplers (that's just two 6N137 in one package), shift registers, some LEDs and resistors.

Apart from being a MIDI-USB-interface, Midikraken is a feature-packed MIDI router supporting separate clock and note event routing, clock division. Future features may include split-keyboard routing, clock generation or even a hardware arpeggiator.

Example of a Midikraken configuration

Below you will find a technical overview. A user manual is available here.

Releases

Find the latest firmware upgrade packages on the releases page. You only need an USB cable, instructions for Linux and Windows are included.

The schematics and board layout files are on a separate page. Hardware and firmware are versioned separately, their numbers do not match.

Hardware

Midikraken consists of two different PCBs that can be stacked (almost) arbitrarily: The DIN board has four traditional MIDI in/out port pairs, and can house the master microcontroller.

The TRS board gives you eight TRS MIDI pairs that support both TRS-A and TRS-B. (Inputs are automatic, outputs need to be configured in software). It can not house the microcontroller and thus cannot be used without a DIN board.

The boards can be chained using their master/slave connectors and are stackable using M3 screws / spacers. Currently, the firmware must be adapted and recompiled according to the stack configuration. Currently, a maximum of 16 port pairs is supported.

For information on the hardware, the revision history and errata, see the hardware documentation. A build guide for rev01 and rev02 is available.

Firmware

The firmware is written in Rust and is released under the GPLv3 license.

Since the STM32F103 only offers 3 hardware UARTs, we need to emulate the UART protocol in software. For this, a timer interrupt oversamples the UART input pins with thrice the baudrate in order to always read a stable bit at a non-edge. (Guaranteed 1/3 * bit time distance from any edge, so the signal should be quite stable until then.)

Benchmarks show that this can be done fast enough for up to 16 software UARTs (and likely even more), while leaving plenty of cpu cycles (25% for 16 UARTs) free for other work.

Further information about the firmware itself can be found in the firmware documentation.

License

The software in the firmware directory can be redistributed and/or modified under the terms of the GNU General Public License Version 3. Note this does not apply to the bootloader which is under its own license.

The hardware designs in the hardware directory, excluding hardware/lib/3d to which own conditions apply, can be licensed under the terms of the CERN OHL Version 2 license. This specifically includes (but is not limited to) schematics, PCB designs and gerber files.

Contributing

I am happy about contributions, just open a pull request!

Note: Even though Midikraken is licensed under GPLv3 and OHL-S-v2 (the exact versions), any contributions / pull requests must be licensed under the "GPLv3 or any later version" or "OHL-S-v2 or any later version", respectively. This is because on the one hand, I want to be able to update the project to new versions of these licenses, but on the other hand, I don't like licensing my work under a license (e.g. the hypothetical GPLv4) that I haven't even read yet. If such a license is released, I will likely adopt it after revising it.

Parts

125
QtyValueFootprintReferences
32220Resistor_SMD:R_0805_2012MetricR201, R202, R203, R204, R209, R210, R211, R212, R213, R214, R215, R216, R221, R222, R223, R224 +16
241kResistor_SMD:R_0805_2012MetricR205, R206, R207, R208, R217, R218, R219, R220, R301, R302, R303, R304, R305, R306, R307, R308 +8
16AudioJack3footprints:Jack_3.5mm_combo_ledino_uprightJ201, J202, J203, J204, J205, J206, J207, J208, J301, J302, J303, J304, J305, J306, J307, J308
8100nCapacitor_SMD:C_0805_2012MetricC201, C202, C203, C204, C205, C206, C207, C208
8HCPL-2630Package_DIP:DIP-8_W7.62mmU201, U202, U203, U204, U205, U206, U207, U208
8LEDLED_THT:LED_D3.0mm_Horizontal_O6.35mm_Z2.0mmD201, D202, D203, D204, D205, D206, D207, D208
8greenLED_THT:LED_D3.0mm_Horizontal_O6.35mm_Z2.0mmD305, D306, D307, D308, D313, D314, D315, D316
8yellowLED_THT:LED_D3.0mm_Horizontal_O6.35mm_Z2.0mmD301, D302, D303, D304, D309, D310, D311, D312
4MountingHole_3.2mm_M3_DIN965MountingHole:MountingHole_3.2mm_M3_DIN965hole1, hole2, hole3, hole4
274HC595Package_DIP:DIP-16_W7.62mmU103, U104
2Conn_02x03_Odd_EvenConnector_IDC:IDC-Header_2x03_P2.54mm_VerticalJ101, J102
174HC165Package_DIP:DIP-16_W7.62mmU102
1LOGOwindfisch:windfisch_smallerwf
1OSHW-Logo2_9.8x8mm_SilkScreenSymbol:OSHW-Logo2_9.8x8mm_SilkScreenoshw
1RResistor_SMD:R_0805_2012MetricR101
1SolderJumper_2_OpenJumper:SolderJumper-2_P1.3mm_Open_TrianglePad1.0x1.5mmJP102

Questions

How big is the Trs pcb PCB?

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

What parts does the Trs pcb use?

125 parts, built around the HCPL2630M, 74HC595 and 74HC165D. 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 Trs pcb KiCad files?

From the Windfisch/midikraken repository on GitHub, at the commit this page was made from: the board is hardware/trs_pcb/pcb.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the Trs pcb design in my own project?

Its repository states no licence, so its author keeps all rights: ask Windfisch before reusing the design.

More from Windfisch/midikraken

2
  • 2 layers56 × 110 mmDin5 pcb, the printed circuit board in 3D

    Din5 pcb

    Windfisch/midikraken

    A open source, open hardware up-to-16x USB-MIDI-interface for around 15 bucks in its smallest configuration.

    82 parts28
  • 2 layers50.8 × 101.6 mmPerfboard, the printed circuit board in 3D

    Perfboard

    Windfisch/midikraken

    A open source, open hardware up-to-16x USB-MIDI-interface for around 15 bucks in its smallest configuration.

    49 parts28

Similar boards

  • 4 layers157.5 × 130 mmJv thesis, the printed circuit board in 3D

    Jv thesis

    JhonVelasquez/Embedded_system_Synchronize_Plant

    Project of a embedded system that synchronizes signals in a plant. There is electronic (PCB) and software design (FreeRTOS for STM32F7).

    233 parts2
  • 2 layers117.5 × 90.8 mmMCU NET OLED, the printed circuit board in 3D

    MCU NET OLED

    yeataro/LensRotaryDecoder

    Lens rotary decoder

    42 parts1
  • 2 layersNEOCERA jnr project, the printed circuit board in 3D

    NEOCERA jnr project

    tioluwanimofe/neocera-test-junior-project-2024_2025

    report for junior design project class

    151 parts
  • 2 layers245.1 × 160 mm8-Bit CPU 32k, the printed circuit board in 3D

    8-Bit CPU 32k

    slu4coder/Minimal-64x4-Home-Computer

    My DIY TTL home computer with VGA and PS/2 and 4x the processing power of a Commodore C64 or Apple II.

    139 parts326
  • 2 layers171.5 × 106.7 mmSequencer, the printed circuit board in 3D

    Sequencer

    westlicht/performer-hardware

    PER|FORMER Eurorack Sequencer - Hardware Design Files

    435 parts110
  • 2 layers306.1 × 130.2 mm8-Bit CPU 32k, the printed circuit board in 3D

    8-Bit CPU 32k

    slu4coder/Minimal-64-Home-Computer

    Legacy: Full TTL-only home computer with VGA and PS/2 and twice the processing power of a Commodore 64

    132 parts94
  • 2 layers208.9 × 170.8 mm8-Bit CPU 32k, the printed circuit board in 3D

    8-Bit CPU 32k

    slu4coder/Minimal-UART-Computer-3

    Version 3 of my educational DIY TTL computer built around a UART serial interface - now with blinkenlights!

    207 parts54
  • 2 layers148.8 × 132.2 mmUsbflashprog, the printed circuit board in 3D

    Usbflashprog

    robsonsmartins/usbflashprog

    A memory device programmer (Flash/EPROM/E2PROM) board and software, connected to PC by USB port.

    125 parts36