BMC Holly

A Teensy 4.0 powered MIDI Controller with Buttons/Leds/Oleds!


Holly is a 6 Footswitch MIDI Foot Controller with Leds and Displays for each footswitch, it's design to be as compact as possible using a standard 1590DD type enclosure making it very portable for gigs! But that's not the best part, Holly runs on a Teensy 4.0 which means you can write your own firmware, that's right not just program the actions of each button but write the entire firmware on your own and make it 100% yours! Holly comes with BMC 2 installed which means you can use it with the BMC Editor app and use any custom build on BMC.

Holly was designed to use mostly off the shelf parts that you can get all over the internet with the exception being the custom main board, the board for the displays and cover plates. These boards are there just to make the wiring easier, they have no SMD parts on them.

Holly can be bus powered and it was designed to draw as little power as possible, however it requires at least 250mA to operate, please make sure your USB Bus can provide it, otherwise you should you a 5V DC power supply with at least 250mA current, altho 500mA or more is highly recommended. If you increase the Speed of your Teensy the power needed will increase, at 150Mhz a teensy draws about 50mA at 600mHz it draws a bit over 100mA. Holly does not come with a DC Power supply it will require a 5VDC Center Possitive 2.5mm barrel DC jack, these are redily available online. You may also power Holly USB charger so long as it provides the 250mA current supply.

Holly also makes use of BadassMIDI Products including:

  • MIDI CHIP Pro for Serial MIDI I/O
  • PixelStomp for the footswitches and WS2812 pixels on each footswitch led ring
  • PixelStomp Mux to link all pixelstomps

If you need to access the PGM button the Teensy in Holly you need to remove the backplate and on the motherboard you'll see 2 circular pads labeled "PGM" use a jumper wire to short those 2 pads put the teensy in programming mode.

Holly has numbers on the cover plate, from 1 to 6, on this guide when I refer to Footswitch 1 I'm refering to the footswitch with the "1" label, same goes for the displays and WS2812. The five 3mm status leds as also labeled 1 to 5 and the same logic applies.

Holly uses i2c pins 18 (SDA) and 19 (SCL), the EEPROM Chip, Displays and their Multiplexer all run on the same bus.

  • Teensy 4.0 running @ 150MHz
  • USB MIDI
  • USB Host MIDI
  • 32KB 24LC256 EEPROM over i2c, address 0x50
  • Serial MIDI on Serial1
  • BLE MIDI (optional on Serial 3)

The BLE MIDI runs on an off the shelf ESP32 with custom firmware that takes all MIDI input on BLE and writes it out to it's Serial Bus, which the teensy can then read on Serial3, all midi data sent to Serial3 TX is then sent straight out to BLE. You can use the Arduino MIDI Library with Serial3 as the HardwareSerial bus and read and write to Serial3 as you would if you had standard MIDI I/O

Footswitches:
  • 6 x Footswitches + 2 Tactile Buttons
74HC165 pins as follow:
  • Teensy Pin5 > 74HC165 DAT Pin
  • Teensy Pin 6 > 74HC165 LD Pin
  • Teensy Pin 7 > 74HC165 CLK Pin
  • 74HC165 Pin 0 > Footswitch 1
  • 74HC165 Pin 1 > Footswitch 2
  • 74HC165 Pin 2 > Footswitch 3
  • 74HC165 Pin 3 > Footswitch 4
  • 74HC165 Pin 4 > Footswitch 5
  • 74HC165 Pin 5 > Footswitch 6
Tactile Buttons are wired to Teensy Digital Pins:
  • Pin 30 Left Tactile Button
  • Pin 31 Right Tactile Button
Leds:
  • 6 x WS2812C Data on Pin 8 (TX2), GRB Color
  • 5 x 3mm Green Leds
Green Leds are wired directly to Teensy Pins:
  • Teensy Pin 24 > Status Led 1
  • Teensy Pin 25 > Status Led 2
  • Teensy Pin 26 > Status Led 3
  • Teensy Pin 27 > Status Led 4
  • Teensy Pin 28 > Status Led 5
Aux Jack

Aux Jack is wired for BMC directly to Teensy Pins, The Aux Jack in BMC lets you turn the Jack into either an expression pedal or dual footswitches This is done using a TRS Switching Jack, the TIP is wired to an analog pin, the RING is wired to a digital pin on the teensy, the way it works is, if you want to use it for an expression pedal then the TIP pin is used as an analog input to read the pot of the expression pedal, the RING pin is then turned into a digital output and set to HIGH, this will provide 3.3v to the expression pedal, expression pedals are usually wired this way. The SLEEVE is wired to ground, however, the switching pin of the sleeve is wired to a digital pin on the teensy, this is set as INPUT_PULLUP, this pin is used by BMC to determine if something is plugged in, When nothing is plugged in that ENABLE pin is shorted to ground keeping the pin LOW, when you plug an exp pedal into the Aux Jack the pin then will be HIGH which then tells BMC that an expression pedal is connected so that BMC can read the pot, otherwise the analog pin will be left floating which will send tons of random readings. To use it for dual footswitches both the TIP and RING pins are set to INPUT_PULLUP, same logic applies to the ENABLE pin, however, when it comes to buttons since they have internal pullsup on on the pins the pins will not be floating but always HIGH so the enable pin isn't really used then.

Aux Jack Teensy Wiring:
  • Teensy Pin 23 > Tip
  • Teensy Pin 22 > Ring
  • Teensy Pin 21 > Enable
OLEDS:
  • 6 x 128x32 Oled displays
  • 1 x TCA9548A i2c Multiplexer

All displays use i2c address 0x3C, each display is wired to a different port of the TCA9548A Mux. These use can be controlled with the SSD1306 library from Adafruit. They are not wired in a 1:1 way to the mux, oleds are wired as follows:

  • Oled 1 > Mux Port 0
  • Oled 2 > Mux Port 5
  • Oled 3 > Mux Port 4
  • Oled 4 > Mux Port 3
  • Oled 5 > Mux Port 2
  • Oled 6 > Mux Port 1

By default Holly comes with these features compiled with BMC:
  • 200 Events
  • 128 Names (16 Charactes + EOL)
  • 5 Layers
  • 6 Layer Events
  • 6 Events per button
  • 8 Preset Banks
  • 8 Presets per Bank
  • 8 Events per preset
  • 8 SetLists
  • 16 Songs per SetList
  • 64 Songs in Library
  • 8 Parts per Song
  • 4 Custom SysEx
  • 4 Triggers
  • 4 Timed Events
  • 2 Tempo To Tap
  • 4 Sketch Bytes

Sync:

  • DAW
  • Helix
  • Beatbuddy
  • Axe Fx 3

Badass MIDI Libraries

Arduino BMC Library

Arduino RoxMux Library

Eagle Library

Badass MIDI Controller Library

Follow BadassMIDI for Updates:

BadassMIDI on Instagram
BadassMIDI on Facebook
Specifications:
  • Powered by Teensy 4.0
  • Requires 250mA USB Bus power or 5vDC 2.5mm Barrel Power supply.
  • USB MIDI Compliant
  • USB Host MIDI Compliant
  • MIDI Spec Compliant
  • Optional BLE MIDI
  • Soft-Touch Momentary Footswitches
  • 128x32 OLEDs
  • Dimensions: 7.5"L x 4.75"W x 2.125"H (188mm x 120mm x 53mm) with footswitches
  • Perfect for BMC the Badass MIDI Controller Library!!
Gallery:
Works with MIDI CHIP

these are links affiliate links, you'll be supporting BMC development when you purchase from these links


Shop BMC Products!