Skip to the content
2 layers340 × 100 mmTeensy step sequencer, the printed circuit board in 3D

Teensy step sequencer

dwmorrin/teensy-step-sequencer

hardware-based step sequencer using the Teensy 4.1 microcontroller

Size
340 × 100 mm
Copper layers
2
Thickness
1.6 mm
Parts
151
Nets
153
Pads
467
Tracks, vias
803, 84
Pours
1
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
24 Jan 2026
Updated
3 Oct 2026

Overview

Teensy step sequencer is an open-source printed circuit board by dwmorrin, from the dwmorrin/teensy-step-sequencer repository on GitHub. It is a 2-layer board of 340 × 100 mm with 151 parts on 153 nets, routed with 803 tracks and 84 vias.

It is built around the 74HCT245, TEENSY 4.1 and 74HC595. Its parts include 66 diodes, 36 resistors, 32 switches, 4 capacitors and 4 ICs. It belongs with the NXP (LPC, Kinetis, i.MX RT) boards of this library.

Main components

3

README

README.md

Teensy Step Sequencer

This project implements a hardware-based step sequencer using the Teensy 4.1 microcontroller. It utilizes the Teensy's onboard USB Host capabilities to accept input from standard USB keyboards, alongside a custom 32-switch diode matrix for tactile control.

Gallery

Version 1 first build

Version 1 first build

Prototype

Breadboard Setup

Hardware Renders

Main BoardSwitchplate
Main Board RenderSwitchplate Render

System Overview

The application is designed as a standalone, embedded instrument. It functions as an 8-track step sequencer with support for 96 PPQN high-resolution timing, pattern chaining (Song Mode), per-track swing, real-time performance triggers, and visual feedback via an I2C OLED display with scrolling track views.

Hardware Dependencies

  • Microcontroller: Teensy 4.1 (Selected for native USB Host and RAM capacity).
  • Display: - 1.3" SH1106 OLED (I2C) for the graphical interface.
    • 16x LEDs driven by 74HC595 Shift Registers for step visualization.
  • Input: - Standard USB HID Keyboard (via USB Host).
    • 4x8 Diode Matrix Keyboard (32 switches).
    • 2x Analog Potentiometers (Tempo and Parameter control).
  • Output: 8x 5V Logic Triggers (GPIO).

Software Architecture

The codebase adopts a modular architecture separating data, presentation, and hardware control. The source code located in src/ is organized into the following domains:

  • Model (src/Model/) This directory contains the core logic and data structures. It serves as the single source of truth for the application, managing the Pattern Pool, the Playlist (Song Mode), Swing parameters, and the Undo buffer. The Model is decoupled from hardware; it does not know if it is being driven by a clock or edited by a keyboard.

  • View (src/View/) This directory handles all visual output.

    • DisplayManager: Observes the Model and renders the interface (Grid, Transport, Headers) to the OLED. It handles viewport scrolling to display 8 tracks on a 4-track height screen.
    • StepLeds: Manages the 16-step LED array via SPI shift registers. The view layer includes internal throttling logic to maintain a consistent frame rate without blocking the audio/timing threads.
  • Controller (src/Controller/) This directory manages user input and state routing. The UIManager aggregates inputs from multiple hardware sources:

    • USB Keyboard: Handled via the Teensy USBHost_t36 library.
    • Matrix: Handled by KeyMatrix, a custom driver for scanning the 4x8 diode array.
    • Analog: Handled by AnalogInput, which provides hysteresis and signal smoothing for potentiometers.

    Inputs are translated into abstract InputCommands (e.g., CMD_TRANSPORT_TOGGLE), decoupling the physical control method from the internal application logic.

  • Engine (src/Engine/) This directory handles real-time operations.

    • ClockEngine: A 96 PPQN (Pulses Per Quarter Note) interrupt-driven engine. It calculates micro-timing for Swing and groove effects, offering 24 "ticks" per 16th-note step.
    • OutputDriver: Abstraction layer for the physical hardware. It converts track bitmasks into GPIO signals using high-precision interrupt timers.
  • Configuration (src/Config.h) A global header file defining build-time constraints, including track count, pattern limits, pin mappings, and signal polarity.

Expansion Guidelines

The system is designed to be extensible. Developers looking to expand functionality should consider the following architectural patterns:

Persistence (SD Card Storage)

Current pattern data is stored in volatile RAM and is lost upon power cycle. The Teensy 4.1 includes a native micro-SD card slot. Future development should implement a PersistenceManager class. This component should:

  1. Serialize the SequencerModel data structures (Pattern Pool and Playlist) into a binary or JSON format.
  2. Write to the SD card using the standard Arduino SD library.
  3. Interface with the UIManager to allow loading and saving of projects.

Timing Calculation

The system timing is based on a standard 4/4 time signature where a "beat" represents a quarter note.

The engine runs at 96 PPQN resolution. The interval $T$ (milliseconds per tick) is calculated as:

$$T = \frac{60,000}{BPM \times 96}$$

For a standard trigger pulse width of 15ms, the system manages overlapping triggers via a pulse-counter in the interrupt service routine.

Parts

151
QtyValueFootprintReferences
321N4148project_footprints:D_DO-35_SOD27_P7.62mm_HorizontalD35, D36, D37, D38, D39, D40, D41, D42, D43, D44, D45, D46, D47, D48, D49, D50 +16
32CherryMXproject_footprints:CherryMX_1.00uSW1, SW2, SW10, SW11, SW12, SW13, SW14, SW15, SW16, SW17, SW18, SW19, SW20, SW21, SW22, SW23 +16
25330project_footprints:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR3, R10, R11, R12, R13, R14, R15, R16, R17, R18, R20, R22, R23, R25, R26, R29 +9
18LEDproject_footprints:LED_D3.0mmD1, D2, D3, D4, D5, D6, D7, D10, D11, D12, D13, D14, D15, D16, D19, D20 +2
161N5817project_footprints:D_DO-15_P10.16mm_HorizontalD17, D18, D21, D22, D23, D24, D25, D26, D27, D28, D29, D30, D31, D32, D33, D34
91kproject_footprints:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR19, R21, R24, R27, R28, R33, R34, R35, R36
3100nproject_footprints:C_Disc_D5.0mm_W2.5mm_P2.50mmC2, C3, C4
2100kproject_footprints:Potentiometer_Bourns_PTV09A-1_Single_VerticalRV1, RV2
24k7project_footprints:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR1, R2
274HC595project_footprints:DIP-16_W7.62mmU2, U3
1100uproject_footprints:CP_Radial_D5.0mm_P2.50mmC1
13V3project_footprints:TestPoint_Keystone_5000-5004_MiniatureTP2
15Vproject_footprints:TestPoint_Keystone_5000-5004_MiniatureTP1
174HCT245project_footprints:DIP-20_W7.62mmU4
1EXT_PWRproject_footprints:PinHeader_1x02_P2.54mm_VerticalJ4
1GNDproject_footprints:TestPoint_Keystone_5000-5004_MiniatureTP3
1Outputproject_footprints:PinHeader_2x08_P2.54mm_VerticalJ2
1SH1106 Screenproject_footprints:PinHeader_1x04_P2.54mm_VerticalJ1
1Teensy4.1project_footprints:Teensy41U1
1USB_HOSTproject_footprints:PinHeader_1x05_P2.54mm_VerticalJ3

More from dwmorrin/teensy-step-sequencer

1
  • 2 layers340 × 100 mmSwitchplate, the printed circuit board in 3D

    Switchplate

    dwmorrin/teensy-step-sequencer

    hardware-based step sequencer using the Teensy 4.1 microcontroller

    9 parts

Similar boards

  • 2 layers102.9 × 69.9 mmController T41 rev0.2, the printed circuit board in 3D

    Controller T41 rev0.2

    brianamos1/DuotrigesimalWS2811

    A board for driving 32 strings of pixels from a Teensy 4.1. Similar to the OctoWS2811, but with 32 outputs.

    58 parts14GPL-3.0
  • 2 layers112.3 × 136.7 mmPCB 2, the printed circuit board in 3D

    PCB 2

    KomplexKapharnaum/LEDcurtain_hardware

    LEDcurtain_hardware

    117 parts1GPL-3.0
  • 2 layers138 × 96.9 mmISA Card, the printed circuit board in 3D

    ISA Card

    AkBKukU/CM153-Repro

    A reproduction of the Philips CM-153 LMSI controller

    161 parts145
  • 2 layers249.4 × 122 mmPCB Controller, the printed circuit board in 3D

    PCB Controller

    Sutthiphong-H/project-flip-disc

    FlipDisc Project was made for education of Project. Chadsadakorn Piriyasiriphan Jadesalit Suriyanimitsuk Sutthiphong Hongkham

    159 parts
  • 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 layers297.2 × 180.3 mm8bit computer, the printed circuit board in 3D

    8bit computer

    vascofazza/8bit-cpu

    Schematics & code for my 74LS-based 8-bit MK1 CPU

    377 parts317MIT
  • 4 layers304.8 × 330.2 mm2000ATX, the printed circuit board in 3D

    2000ATX

    jasonsbeer/Amiga-2000-EATX

    An Amiga 2000 PCB in the EATX form factor.

    614 parts200GPL-3.0
  • 2 layers237.7 × 146.1 mmTipi peb, the printed circuit board in 3D

    Tipi peb

    jedimatt42/tipi

    TI-99/4A to Raspberry PI messaging through console sideport

    51 parts77

Questions

How big is the Teensy step sequencer PCB?

It measures 340 × 100 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Teensy step sequencer use?

151 parts, built around the 74HCT245, TEENSY 4.1 and 74HC595. 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 Teensy step sequencer KiCad files?

From the dwmorrin/teensy-step-sequencer repository on GitHub, at the commit this page was made from: the board is hardware/teensy-step-sequencer.kicad_pcb and its schematic hardware/teensy-step-sequencer.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Teensy step sequencer design in my own project?

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