Preset generator for the 10K Gyro synth plugin. Queries a Sononym analysis database to intelligently select samples and assemble complete, playable instrument presets.
- Multi-library support — auto-detects all Sononym libraries from settings and lets you pick which one to use via arrow-key selector
- Cascading sample search — tries preferred categories first, then broadens to the full Tone/Perc/FX family, then drops length/brightness constraints, then accepts anything in the library. Slots are never left empty.
- 9 slot types — Pad, Keys, Lead, Bass, Pluck, Synth, Vocal, Percussion, FX — each with tailored search filters and envelope/FX templates
- 10 instrument recipes — predefined multi-slot combinations (e.g. Pad+Pad+Keys+Vocal) that produce cohesive presets
- Deterministic naming — generates unique two-word preset names (
seldom_music,hollow_tide, etc.) using seeded hashing, collision-free across runs - Used-sample tracking — persistent state ensures no sample is reused across sessions; run
--resetto clear - Full preset scaffolding — writes complete Gyro instrument JSON including ADSR envelopes, filters, chorus, compressor, EQ, wavetable modulation, chord sets, pattern sequencer, FX chain, and modulation routing
- 5 chord progressions — rotating bank of 7-chord minor progressions (Am, Cm, Em, Fm, Dm) auto-assigned to presets
- Sample import pipeline — copies WAVs into Gyro's sample directory and generates matching metadata JSON with root key, zone mapping, and playback settings
- Directory deduplication — avoids picking multiple samples from the same source folder for variety
- Dry-run mode — preview sample selections without writing any files
- Python 3.8+
- DuckDB CLI (
brew install duckdb) - One or more Sononym libraries (the script reads
~/Library/Application Support/Sononym/1.6.4/settings.json) - 10K Gyro installed with its user directory at
~/Documents/10K/Gyro
python3 generate.py # Generate 10 instrument presets
python3 generate.py --count 5 # Generate 5 instrument presets
python3 generate.py --dry-run # Preview selections without writing files
python3 generate.py --reset # Clear used-sample tracking and regenerate
python3 generate.py --list-used # Show all previously used samples
python3 generate.py --clear # Delete all generated presets and imported samples
All generated presets are saved to ~/Documents/10K/Gyro/presets/instrument/CM/.
--clear removes everything the script has created:
- All preset JSON files in the
CMfolder - All imported WAV + metadata files in Gyro's
samplesdirectory - Resets
state.json(used-sample tracking)
Factory presets and other user-created presets outside CM are never touched.
- Presents a library selector if multiple Sononym libraries are configured (arrow keys + Enter)
- Copies the selected
sononym.dbto a temp file so it works even while Sononym is open - For each recipe slot, runs a cascading query: preferred categories → broad family → relaxed constraints → anything available
- Scores candidates by pitch confidence, category strength, and harmonicity
- Deduplicates by parent directory to ensure variety
- Copies selected WAVs into Gyro's sample directory with metadata
- Assembles a complete instrument preset JSON with 4 sound slots, envelope settings, FX chain, chord set, and modulation routing
- Tracks all used samples in
state.jsonto avoid repeats on subsequent runs