Thanks for taking the time to help out. This is a small project and I try to keep it approachable — bug reports, docs fixes and new palette voices are all welcome.
sonoscript targets Python 3.9+ and depends only on NumPy at runtime.
git clone https://github.com/fayevans/sonoscript
cd sonoscript
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
pre-commit installRun the same checks CI does:
ruff check .
ruff format --check .
mypy
pytest --cov=sonoscriptpre-commit runs the ruff hooks automatically on every commit, so most style
issues are fixed for you.
- Keep it dependency-light. New runtime dependencies are a hard sell; the point of the project is to stay small and offline.
- Determinism matters. Anything that generates audio must be a pure function of its inputs (seed your randomness). Tests rely on it.
- Add a test for any behaviour change, and a
CHANGELOG.mdentry underUnreleasedfor anything user-visible. - Keep commits focused and write a clear message.
Open an issue with a minimal script that reproduces the problem and what you expected to happen instead. A short WAV or a snippet that synthesises the input is ideal.