Use
This video goes over the basics of how to use the fader demo.
CircuitPython will automount the eMMC storage via USB on host computers by default as long as the eMMC has a FAT filesystem on it. The stock firmware, and the 3rd party firmwares that I found do not use a FAT filesystem, so nothing will be mounted by default.
To create the filesystem use the format_emmc.py script that is included in the project code.
Connect to the REPL on the SP-1 device and run import format_emmc.
The script will prompt you to confirm by typing "delete" and pressing enter. After you input delete, it will print out the first few bytes that were found on the eMMC which can be used to determine what format the data on it was in. Then it will format the storage and create the FAT filesystem.
After it completes: un-plug the device, power it off by holding the function button, then plug it back in. When it boots up it will automatically connect the eMMC as an additional mass storage device on the host computer.
The 4 tracks that make up a stem are stored as individual .wav files on the devices eMMC storage. The wave format known to work is: 16bit PCM at 48.00 kHz. The stem files inside their own song_name/ director inside of songs/ which sits at the root of the eMMC storage.
Playlist JSON
The fader demo looks for a playlist.json file at the root of the eMMC storage. The file contains a list of songs to play. There is an optional repeat value that can be used to make the playlist repeat after it reaches the end instead of stopping.
Here is an example of a playlist JSON file with a few songs in it.
{
"repeat": false,
"songs": [
{
"path": "songs/adafruit_loop",
"title": "Ada Loop"
},
{
"path": "songs/real_existence",
"title": "Real Existence"
},
{
"path": "songs/the_sin_and_the_sentence",
"title": "The Sin And The Sentence"
},
{
"path": "songs/test_song",
"title": "Test Tones"
}
]
}
Controls
- Function button - Press and hold 5 sec to power off. Press to power on.
- Volume buttons - Left volume button lowers the volume, right button raises it.
- Rocker buttons - Up rocker moves to the next song in the playlist, down rocker moves to the previous.
- Track faders - Slide them up and down to control the level of each respective track.
Maximizing Playback Performance
Playing 4 tracks at once with fader controls, playlist, and volume controls under CircuitPython is pushing the device to its limits. If you find that the audio does not play cleanly, you can use the following steps to improve performance.
Un-mount the eMMC and CIRCUITPY drives from the host PC. Any active traffic to those drives during playback will degrade the audio.
Use .mpy files instead of plain text .py for sp1_wavplayer and sp1_controls.
Copy the .mpy versions of these modules into the lib/ directory on the CIRCUITPY drive and make sure to delete the .py versions.
Page last edited September 03, 2026
Text editor powered by tinymce.