potatoslicer

an audio library that ships with a sequencer.

Potatoslicer is two pieces shipped together: a Python audio engine you can import into anything, and a pygame sequencer that drives it. Open source, pip-installable, songs are plain JSON.

why

Most music-software stacks are walled gardens. You can write a track in a DAW, but you can't easily import the engine into a game, a generative-art piece, a livecoding REPL, or a long-running server that renders audio on demand.

Potatoslicer flips that. The engine is a library (pip install potatoslicer-client) with a small, boring API: load a song JSON, get sample arrays back. The sequencer (pip install potatoslicer) is one consumer of that library, not the point of it.

If you'd rather skip the GUI and embed the engine in your own program, that's the supported path — in either language. The engine exists twice: a Python library, and a C++ port that renders into a buffer you supply and never opens an audio device, so it can be called from a game's audio callback. Neither is generated from the other; they are held to the same song-format spec by golden renders both must reproduce sample for sample.

what's in the box

the library

  • · PotatoslicerPlayer — load, play, mix, render
  • · threaded ring buffer for glitch-free playback
  • · 6 sound providers: Cadenza, Famiwave, SuperGaussKit, NightFM, Meridian, WavSampler
  • · songs are plain JSON files you can write by hand
  • · one instrument per channel; no DAW project format
  • · runs anywhere CPython runs

the c++ engine

  • · a peer port of the same engine, not a binding
  • · renders into a buffer you supply; opens no audio device
  • · Render() is real-time safe, and a test fails if that changes
  • · plays the same song JSON, sample for sample
  • · one dependency: nlohmann/json, header-only
  • · not published yet — it ships with the project

the sequencer

  • · pygame-ce tracker UI
  • · XY pad layouts you edit live
  • · per-provider parameter automation
  • · depends on the library — not the other way around
  • · optional: skip it and use the library directly

is and isn't

is

  • · an Apache-2.0 open-source project
  • · an audio engine you import — from Python or from C++
  • · a sequencer for procedural / chip-style audio
  • · file-based — songs and layouts are plain JSON
  • · embeddable in games, art, livecoding, servers
  • · small. the codebase reads in an afternoon

isn't

  • · a DAW replacement
  • · a VST / plugin host
  • · an online service you log into
  • · proprietary, ad-supported, or telemetry-laden
  • · promising forwards-compatibility before 1.0
  • · done. it's still in active development

status

potatoslicer-client: the audio engine library. Public on PyPI. The consumer API in player.py is what we plan to keep stable; everything below it (providers, internals) is still moving.

potatoslicer: the sequencer app. Public on PyPI. UI is iterating fast; the on-disk song format is the contract we care about most.

song format: plain JSON, one file per song, designed to be hand-editable. Backward-compatibility is best-effort pre-1.0; we'll write migrators where it matters.

hear what it sounds like

A few tracks rendered straight from JSON song files using the bundled providers.