Tool

sp1-midi

Hype41/100

sp1-midi is a tool for the Teenage Engineering / KANO Stem Player (SP-1), by @ericlewis. Open source under MIT, 8 stars on GitHub.

forTeenage Engineering / KANO Stem Player (SP-1)·by@ericlewis

Unclaimed. Is this yours? Sign in with GitHub as @ericlewis to claim it.

Downloads
0
Stars
8
Fork
1
Commit
1
Last commit
Get the source

No release files yet. Build from source.

MIT· ericlewis/sp1-midi·downloads come from the creator’s GitHub releases

1
Commits
0
Releases
1 commit and 0 releases in the last year
Activity · last 12 months

Stem Player BSP

Board Support Package for the Stem Player SP-1 hardware (nRF52840 + CS42L42 + TAS2505 + BQ24232 + eMMC).

Fork this repo to build new firmware for the Stem Player hardware — synths, MIDI controllers, audio effects, or custom Stem Player variants.

Quick Start

# Configure (one-time)
PATH="/path/to/zephyr-venv/bin:$PATH" \
ZEPHYR_BASE=/path/to/zephyrproject/zephyr \
ZEPHYR_SDK_INSTALL_DIR=/path/to/zephyr-sdk \
cmake -B build -GNinja -DBOARD=stem_player -DSNIPPET=cdc-acm-console

# Build
ninja -C build

# Flash
ninja -C build flash

What's Included

DirectoryContents
boards/Full board definition (DTS, pinctrl, defconfig)
drivers/audio/CS42L42 headphone codec + TAS2505 speaker amp drivers
drivers/charger/BQ24232 charger driver (GPIO-based)
include/SMF C++ facade, utility headers
subsys/system/Watchdog + reset breadcrumbs
subsys/power/Battery/charger/USB monitor
app/Minimal 2-state HSM skeleton

Hardware Map

Audio (I2C0)

DeviceAddressFunction
CS42L420x48Headphone DAC/ADC codec
TAS25050x18Speaker amplifier

I2S0 (48kHz, 24-bit, master)

SignalPin
BCLKP0.12
LRCKP0.11
SDOUTP1.09

Bluetooth UART (CYBT-353027-02)

SignalPin
TXP1.02
RXP1.04
RTSP1.01
CTSP1.03
ResetP0.10

ADC Channels

ChannelAINPinFunction
0AIN4P0.28Battery voltage (divider)
1AIN3P0.05Fader 1
2AIN6P0.30Fader 2
3AIN2P0.04Fader 3
4AIN7P0.31Fader 4
5AIN0P0.02Track button ladder
6AIN1P0.03Volume/transport ladder

PWM LEDs

PWMOutputsFunction
PWM2P0.29, P0.26, P1.15, P1.14Track LEDs (1-4)
PWM3P0.01, P1.12, P0.00, P1.13Play LEDs (1-4)

GPIO

PinFunction
P0.27Function button (active high)
P1.10Button common rail (regulator)
P0.13Oscillator enable
P0.14eMMC VccQ enable
P1.08eMMC reset
P0.09TAS2505 reset
P0.15CS42L42 reset

Charger (BQ24232)

PinFunction
P0.24nPGOOD (power good, active low)
P0.22nCHG (charging active, active low)
P0.21CE (charge enable)
P0.19ISET override

Adding Your Code

  1. Add source files to APP_SOURCES in CMakeLists.txt
  2. Extend AppMachine in AppStateMachine.hpp with your subsystem pointers
  3. Add new states to the AppState enum and state table
  4. Initialize your subsystems in main.cpp before app::run()

The HSM uses Zephyr's SMF (State Machine Framework) with a C++ facade in include/stem_player/Smf.hpp.

Memory Budget

Bare BSP: ~168 KB FLASH (18%), ~43 KB RAM (17%). Full Stem Player firmware uses ~264 KB FLASH, ~219 KB RAM. You have plenty of room.