Skip to the content
PCBKitNew board
2 layers422.4 × 118.2 mmMidiMood (tht), the printed circuit board in 3D

MidiMood (tht)

silveirago/MidiMood82

This repository contains the code for a custom MIDI controller project called MidiMood, built using an ATmega32U4 microcontroller (or similar).

Size
422.4 × 118.2 mm
Copper layers
2
Thickness
1.6 mm
Parts
53
Nets
55
Pads
249
Tracks, vias
505, 60
Pours
2
Routed
Yes
KiCad
KiCad 5 (file 20171130)
Created
17 Sep 2020
Updated
3 Sep 2024

Overview

MidiMood (tht) is an open-source printed circuit board by silveirago, from the silveirago/MidiMood repository on GitHub. It is a 2-layer board of 422.4 × 118.2 mm with 53 parts on 55 nets, routed with 505 tracks and 60 vias.

It is built around the CD74HC4067M. Its parts include 11 switches, 2 capacitors, 1 resistor, 1 IC and 1 diode. It belongs with the AVR (ATmega, ATtiny) boards of this library.

Main components

1

README

README.md

MidiMood

For a detailed tutorial, visit:

This repository contains the code for a custom MIDI controller project called MidiMood, built using an ATmega32U4 microcontroller (or similar). The project is designed to handle potentiometers, buttons, and other controls to send MIDI messages via USB, BLE, or standard MIDI protocols.

Table of Contents

Overview

MidiMood is a comprehensive MIDI controller implementation that supports various input methods (buttons, potentiometers, encoders) and output methods (USB MIDI, BLE MIDI). The controller is designed to be highly customizable, supporting multiple microcontroller platforms including ATmega32U4, ATmega328, and Teensy.

Features

  • USB MIDI Support: Send and receive MIDI messages over USB.
  • BLE MIDI Support: Use Bluetooth Low Energy (BLE) for wireless MIDI communication.
  • Potentiometer and Button Handling: Capture input from potentiometers and buttons and convert them into MIDI messages.
  • Multiplexer Support: Extend the number of inputs using multiplexers.
  • Debugging Support: Debugging messages can be enabled via serial communication.
  • Multi-platform: Supports ATmega32U4, ATmega328, and Teensy microcontrollers.

Files Description

  • _MidiMood.ino: The main Arduino sketch that initializes the MIDI controller and runs the main loop.
  • A_POTENTIOMETERS.ino: Contains the logic for reading potentiometer values and converting them into MIDI Control Change messages.
  • B_BUTTONS.ino: Handles the button inputs, converting them into MIDI Note On/Off or Control Change messages.
  • FUNCTIONS.ino: Helper functions used throughout the project, including handling MIDI messages and other utility functions.
  • LOOP.ino: The main loop where the program checks for inputs and sends out MIDI messages.
  • MACKIE.h: Defines constants for Mackie Control Universal (MCU) protocol, used for controlling DAWs.
  • Z_ATMEGA32U4.ino: Microcontroller-specific setup code for ATmega32U4-based boards.
  • Z_SETUP.ino: General setup code, initializing pins, and configuring input/output modes.

Material

Setup Instructions

1. Clone the Repository

bash
git clone https://github.com/yourusername/midi-controller-project.git
cd midi-controller-project

2. Install Arduino IDE

Make sure you have the Arduino IDE installed on your computer. You can download it from the official website.

3. Open the Project

Open the _MidiMood.ino file in the Arduino IDE. This file serves as the entry point to the project.

4. Select Your Board

In the Arduino IDE, select the appropriate board based on your microcontroller:

  • For ATmega32U4 boards (e.g., Arduino Leonardo), select Arduino Leonardo.
  • For ATmega328 boards (e.g., Arduino Uno), select Arduino Uno.
  • For Teensy boards, select the correct Teensy model.

5. Upload the Code

Connect your microcontroller to your computer via USB and upload the code using the Upload button in the Arduino IDE.

Dependencies

  • ResponsiveAnalogRead: Library for smoothing analog readings from potentiometers.
  • MIDI Library: To handle MIDI communication over USB and serial.
  • BLE MIDI: For Bluetooth MIDI communication (if using BLE).

You can install these libraries using the Arduino Library Manager.

Usage

Once the code is uploaded, your MIDI controller will be recognized by your computer or mobile device as a MIDI device. You can start using it to send MIDI messages to your DAW or other MIDI-compatible software.

Debugging

If you want to see debugging messages, enable the DEBUG flag in the code. This will allow you to monitor the MIDI messages and other details via the serial monitor in the Arduino IDE.

Parts

53
QtyValueFootprintReferences
2610kPotentiometer_THT:Potentiometer_Alpha_RD901F-40-00D_Single_Vertical_CircularHoles-noSilkpot1, pot2, pot10, pot11, pot12, pot13, pot14, pot15, pot16, pot17, pot18, pot19, pot20, pot21, pot22, pot23 +10
11SWToggle Switch:Toggle switch smallSW1, SW2, SW3, SW4, SW5, SW6, SW7, SW8, SW9, SW10, SW11
2100nFCapacitor_THT:C_Disc_D3.0mm_W1.6mm_P2.50mmC1, C2
2CD74HC4067MPackage_SO:SOIC-24W_7.5x15.4mm_P1.27mm4067_1, 4067_2
1220OHMSResistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P5.08mm_HorizontalR1
1Arduino_Pro_Micropromicro:ProMicroU3
1ConnectorConnector_PinHeader_2.54mm:PinHeader_2x05_P2.54mm_VerticalJ1
1LEDLED_THT:LED_D5.0mmD1
1LOGOSilks:MidiMood panel 2G***

The 46 most common of 53 parts.

Questions

How big is the MidiMood (tht) PCB?

It measures 422.4 × 118.2 mm and has 2 copper layers, 1.6 mm thick.

What parts does the MidiMood (tht) use?

53 parts, built around the CD74HC4067M. 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 MidiMood (tht) KiCad files?

From the silveirago/MidiMood repository on GitHub, at the commit this page was made from: the board is PCB (not tested)/MidiMood (Kicad files)/MidiMood (tht).kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the MidiMood (tht) design in my own project?

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

Similar boards

  • 2 layers312 × 140 mmTsynth2 Rev1.3, the printed circuit board in 3D

    Tsynth2 Rev1.3

    Electrotechnique/TSynth-Teensy4.1

    TSynth for Teensy 4.1

    108 parts182
  • 2 layers248.9 × 120.7 mm16nx, the printed circuit board in 3D

    16nx

    16n-faderbank/16nx

    16nx is a controller for musical instruments. Sixteen faders,MIDI over USB and jack, CV out, and I2C out. Based around RP2040.

    171 parts76
  • 4 layers100 × 100 mmOPDM, the printed circuit board in 3D

    OPDM

    brenonsantos/OpenPDM

    OpenPDM is an open-source programable Power Distribution Module for your car

    156 parts75MIT
  • 2 layers215.9 × 101.6 mmIps20, the printed circuit board in 3D

    Ips20

    gzweigle/open-hybrid-piano

    Building a hybrid MIDI digital piano

    135 parts61GPL-3.0
  • 2 layers152.4 × 95.3 mmControl board, the printed circuit board in 3D

    Control board

    carsonrobles/fpga-guitar-pedal

    FPGA based guitar effect station.

    51 parts36
  • 2 layers100 × 100 mmEavesdrum module, the printed circuit board in 3D

    Eavesdrum module

    tobigun/EavesDrum

    EavesDrum is an e-drum trigger module project, designed for musicians and makers. It allows you to connect drum pads or piezo triggers and converts their signals into MIDI events.

    103 parts25GPL-3.0
  • 4 layers33 × 65.5 mmOM FlexGrid Rigid PCB, the printed circuit board in 3D

    OM FlexGrid Rigid PCB

    Open-Muscle/OpenMuscle-FlexGrid

    60-sensor wearable with flexible PCB and pressure matrix

    65 parts19CERN-OHL-S-2.0
  • 2 layers110 × 75 mmShark bait remote, the printed circuit board in 3D

    Shark bait remote

    idlehandsdev/shark_bait

    The files and firmware for the Shark Bait wireless pumping system.

    65 parts13