Client Library
PotatoslicerPlayer and PotatoslicerEngine — embed audio synthesis in any Python project.
Architecture
text +
PotatoslicerPlayer
PotatoslicerEngine
Sequencer -- advances row-by-row, dispatches note events
Synth -- 20-voice pool, delegates to SoundProviders
Mixer -- master volume + tanh soft-clip
Activity -- real-time metrics (RMS, peak, beat pulse)
BufferedDevice -- ring buffer, background render thread PotatoslicerPlayer
Recommended for most use cases. Self-contained with threaded audio output.
python +
from potatoslicer.player import PotatoslicerPlayer
player = PotatoslicerPlayer(sample_rate=48000, num_voices=20, buffered=True)
player.start()
# Load and play
player.load_file("songs/chrome.json")
player.play(loop=True)
player.set_volume(0.3)
# Play from specific position
player.play_from(order_pos=2, row_pos=0)
# Export
player.export_wav("output.wav")
player.export_midi("output.mid")
# Playback position (synced to audio output)
order_pos, row_pos = player.playback_position
# Sound effects
player.enable_sfx()
player.play_sfx("confirm")
# MIDI output to external devices
player.enable_midi_output() # virtual port "Potatoslicer"
player.shutdown() PotatoslicerEngine
Lower-level — bring your own audio output.
python +
from potatoslicer.engine import PotatoslicerEngine
engine = PotatoslicerEngine(sample_rate=48000, num_voices=20)
engine.set_song(song_dict)
engine.play()
# Render audio frames yourself
samples = engine.render(2048) # float32 numpy array
# Direct note control
engine.note_on(channel=0, note="C-5", instrument_id="lead")
engine.note_off(channel=0, note="C-5") Debug Stats
python +
player.enable_debug()
stats = player.get_debug_stats()
# {'avg_render_ms': 4.5, 'max_render_ms': 22.7,
# 'avg_buf_depth_ms': 299, 'min_buf_depth_ms': 171,
# 'underruns': 0, 'callbacks': 115} Module Reference
| Module | Purpose |
|---|---|
| potatoslicer.player | Consumer API (PotatoslicerPlayer) |
| potatoslicer.engine | Engine coordinator |
| potatoslicer.sequencer | Pattern sequencer + Song data |
| potatoslicer.synth | Voice pool + instrument registry |
| potatoslicer.providers | Sound provider plugin system |
| potatoslicer.midi | MIDI export, import, real-time I/O |
| potatoslicer.oscillators | Waveform generators |
| potatoslicer.envelope | ADSR envelope |
| potatoslicer.mixer | Volume + soft-clip |
| potatoslicer.recorder | Microphone recording |
| potatoslicer.note_utils | Note/MIDI/frequency conversion |
| potatoslicer.scale_utils | Musical scale definitions |
| potatoslicer.buffered_device | Threaded ring buffer audio |
| potatoslicer.activity | Real-time audio activity metrics |