Skip to the content
PCBKitNew board
4 layers245 × 180 mmController PCB Files, the printed circuit board in 3D

Controller PCB Files

JosephFiddes/ProjectSoloJam

Files and info for my solo jam project.

Size
245 × 180 mm
Copper layers
4
Thickness
1.6 mm
Parts
101
Nets
116
Pads
414
Tracks, vias
541, 32
Pours
1
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
20 Nov 2024
Updated
10 Aug 2026

Overview

Controller PCB Files is an open-source printed circuit board by JosephFiddes, from the JosephFiddes/ProjectSoloJam repository on GitHub. It is a 4-layer board of 245 × 180 mm with 101 parts on 116 nets, routed with 541 tracks and 32 vias.

It is built around the CD4053BE. Its parts include 40 resistors, 16 capacitors, 16 switches, 8 ICs and 8 diodes. It belongs with the AVR (ATmega, ATtiny) boards of this library.

Main components

1

README

README.md

ProjectSoloJam (Work In Progress)

Files and info for my solo jam project.

Controller Prototype.

Physical controller to send commands to REAPER, via Open Sound Control. The controller can toggle recording, change track volumes, and set record arming for tracks.

A template REAPER project set up for the controller is found under SoloJamTemplate/SoloJamTemplate.rpp.

Assembly

Solder the electronic components to the PCB. Note the Arduino UNO is connected via header pins.

Place four of Corner Washer Thing 1 on the piece of wood, and then place the PCB on top, such that the washers are going through the PCB's four corner holes (note: the top-left corner hole is underneath the Arduino UNO - see the image above).

Nail the PCB to the wood piece using nails with a 3mm diameter.

(optional) Place Corner Washer Thing 2 on each of the nails.

Setup

Dependencies

Currently, the solution is only designed for Windows.

The following dependencies are required:

  • oscpp: library for constructing and parsing OpenSoundControl packets.
  • windows.h

Compilation

Serial2OSC

Prior to compilation, make sure that the port being used by the Arduino matches to port used by Serial2OSC. This can be done by opening serial2osc.cpp, finding the line #define SERIAL_PORT "COM7" and changing the "COM7" to whatever port the Arduino is using.

This project makes use of the winsock2.h library, and is compiled with MinGW (g++). Run build to compile the program.

Controller

The code for the controller is run on an Arduino UNO, and can be compiled in the Arduino IDE. The electrical circuit diagram of the controller is shown below:

Circuit diagram of controller.

A higher quality version of the image above may be found by clicking here.

Required REAPER Settings

REAPER needs to have OSC control enabled.

  1. Go to Preferences -> Control/OSC/Web.
  2. Add "OSC (Open Sound Control)" Control surface, with mode "Local port"
  3. Set Local listen port to 2345.

Operation

With REAPER open, run serial2osc.exe. Pressing a button activates record arm for the corresponding track, and deactivates the record arm for the previous track.

Bill of Materials

ProductQty
Electronic Components:
FSM103 12x12mm switch16
AKTSC22K switch covers16
Arduino Uno1
PTA4553-2010CIB103 Slide Potentiometer8
CD4053B Multiplexers8
1 uF Capacitors16
100 Ohm Resistors16
10K Ohm Resistors24
8-long row of Header Pins3
6-long row of Header Pins1
Solo Jam Controller PCB1
Piece of wood big enough to nail the PCB to1
3mm diameter nails4
3D Printed Files:
Corner Washer Thing 14
Corner Washer Thing 24
SliderKnob8

TODO

  • Features to add to controller:
    • move playhead to start
    • Remove items from particular track
    • Edit tempo?
  • When recording starts while playback is off, playback turns on automatically - but the controller does not update bIsRecording. Also consider when playback turns off while recording, which leads to a wierd state.
  • Figure out bug where random nonsense sometimes gets sent through COM port on start-up. (low priority - hasn't happened in a while, and not a massive concern anyway)
  • In OSCconnection.h, find a way to force "buffer" to be aligned to 32 bits. (Note that the solution is to have it be the first thing in the class definition, but a better solution might be worthwhile since the current one doesn't feel super robust.)
  • Design and manufacture top-piece for controller for stability and isolation of electronics.

Parts

101
QtyValueFootprintReferences
2410kResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR2, R10, R12, R14, R16, R17, R18, R19, R20, R21, R22, R23, R24, R27, R28, R31 +8
16100Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR1, R3, R5, R7, R9, R11, R13, R15, R25, R26, R29, R30, R33, R34, R37, R38
161uCapacitor_THT:CP_Radial_D5.0mm_P2.50mmC1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16
16SW_PushButton_Switch_THT:SW_PUSH-12mmSW0, SW1, SW2, SW3, SW4, SW5, SW6, SW7, SW8, SW9, SW10, SW11, SW12, SW13, SW14, SW15
8CD4053BPackage_DIP:DIP-16_W7.62mmU1, U2, U3, U4, U5, U6, U7, U8
8LEDLED_THT:LED_D4.0mmD0, D1, D2, D3, D4, D5, D6, D7
8R_FaderPotentiometer_THT:Potentiometer_Bourns_PTA4543_Single_SlideRV1, RV2, RV3, RV4, RV5, RV6, RV7, RV8
3, ,
1Arduino_UNO_R2Module:Arduino_UNO_R2_WithMountingHolesA1

The 100 most common of 101 parts.

Questions

How big is the Controller PCB Files PCB?

It measures 245 × 180 mm and has 4 copper layers, 1.6 mm thick.

What parts does the Controller PCB Files use?

101 parts, built around the CD4053BE. 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 Controller PCB Files KiCad files?

From the JosephFiddes/ProjectSoloJam repository on GitHub, at the commit this page was made from: the board is Controller/Controller PCB Files/Controller PCB Files.kicad_pcb and its schematic Controller/Controller PCB Files/Controller PCB Files.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Controller PCB Files design in my own project?

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

Similar boards

  • 4 layers111 × 110 mmComplex vco ranged, the printed circuit board in 3D

    Complex vco ranged

    lennartquerter/euro-rack-synth

    Lenimal Github for DIY for a Eurorack Synth

    234 parts13
  • 4 layers180.9 × 110 mmWaveshaper Marcin, the printed circuit board in 3D

    Waveshaper Marcin

    michalelektryk/NoA-SSH

    Noise of Antimatter - Subshaper

    223 parts8
  • 2 layers147.4 × 63.2 mmGuitar down octave, the printed circuit board in 3D

    Guitar down octave

    MR-DOS/guitar_down_octave

    A octave-down effect for guitar. All analog, no microcontroller, no DSP.

    219 parts5GPL-3.0
  • 2 layers68.6 × 53.3 mmINK-128DA28, the printed circuit board in 3D

    INK-128DA28

    TheEccentricGenius/INK4u_Board

    An UNO form factor board with a AVR128DA28 processor.

    59 parts5CERN-OHL-W-2.0
  • 4 layers389.8 × 179.5 mmCbm ultipet v1, the printed circuit board in 3D

    Cbm ultipet v1

    fachat/cbm_ultipet

    Note: this is a part of a larger set of repositories, with upetfamily as the main repository.

    466 parts3GPL-3.0
  • 2 layers100 × 100 mmKleingorium, the printed circuit board in 3D

    Kleingorium

    lytex/kleingorium

    Expansion board for https://github.com/hexagon5un/klangorium that generates harmonic frequency multiplications and divisions

    95 parts3
  • 4 layers48.5 × 56 mmDigirig icom, the printed circuit board in 3D

    Digirig icom

    1vers1on/digirig_icom

    A custom hardware controller for the ICOM IC-2730 radio, featuring digital audio processing and USB connectivity.

    70 parts1
  • 2 layers99.1 × 49.9 mmComm interface, the printed circuit board in 3D

    Comm interface

    ezod/rc2014-comm-interface

    RC2014 Communication Interface Module

    32 parts1