Project 01 · Live demo

Sonify

A desktop app for exploring math curves with sound. The original app lets you type an expression and scrub through it; the browser demo below keeps that interaction on one fixed curve.

What’s real here: browser port

What you can play with here is a reimplementation of the project’s core idea in browser technology. The real codebase differs. The real Sonify is a Python desktop app with PySide6, sympy, and the pyo synthesis engine. This page keeps one fixed curve and re-creates the scrub-to-pitch interaction with the Web Audio API.

The real thing lives on GitHub.

A browser port of the real engine’s interaction: the tone follows your position in real time. Arrow keys step, Space sweeps, Escape silences. y → pitch · x → position.

How it works

The interaction is direct: move along the curve and the pitch follows the curve's height at that point. In the browser demo, you can drag the plot, step the slider with arrow keys, or let the sweep run. The height range is normalised to about two octaves, and undefined values are treated as silence instead of clipped into extreme pitches.

The desktop app is broader than this page: it parses expressions with sympy, lets the user set the domain and pitch range, and has keyboard shortcuts for loading, sweeping, and stopping audio. This version is smaller on purpose, so the basic idea can run in the site without the Python audio stack.

Demo vs. the real thing

The browser demo keeps the central interaction: move along a curve and hear the pitch change with the curve’s height. It is not the desktop app. The real project lets the user type expressions that sympy can parse, set the x-domain, choose a timbre, adjust the pitch range, and use keyboard shortcuts for loading, sweeping, and stopping audio. This page uses Canvas and Web Audio on one fixed damped sine curve so the idea can run in a browser.

Stack
Python · PySide6 · pyo · sympy
Status
Desktop app: the demo above is a browser port
View on GitHub