6 measured workloads · Node.js · Apple M4 Pro
Typical processing
0.313 ms
Busier blocks
0.338 ms
Share of the test budget
12.7%
64 voices · With low-pass filter · 48 kHz · 2.667 ms available per block in this test.
Processing time in ms · lower means less work
| Voices | Workload | Typical · ms | Busier blocks · ms | Test budget used | Observations |
|---|---|---|---|---|---|
| 1 voice | 0.024 | 0.027 | 1.0% | Timing varies | |
| 1 voice | 0.025 | 0.027 | 1.0% | Timing varies · Some blocks exceeded the budget | |
| 16 voices | 0.074 | 0.081 | 3.0% | — | |
| 16 voices | 0.096 | 0.102 | 3.8% | — | |
| 64 voices | 0.228 | 0.240 | 9.0% | — | |
| 64 voices | 0.313 | 0.338 | 12.7% | — |
Times are per 128-frame audio block. Test budget used divides the p95 time by the block period at that case’s sample rate. Machine and runtime are shared.
Node.js · Apple M4 Pro · 48 kHz · 128 frames per block · 3 repeated tests ·
Typical summarizes the middle measured block times. Busier blocks summarizes the time that 95% of blocks completed within in each repeat. These figures measure DSP processing; application scheduling, loading samples and device output require separate checks. Memory and signal probes run separately from the timing loop.
Lean 4 checks algorithm properties and candidate optimization rewrites within stated assumptions. A model proof does not establish that an optimization is enabled in this node or on any target. Performance measurements establish speed.
22 Lean 4 results: 10 proofs in their stated domains; 9 proofs in exact arithmetic; 3 counterexamples.
Move the controls to explore a theorem’s behavior and assumptions. These browser calculations use floating-point numbers to illustrate the mathematical model. They do not run Lean or the audio engine. Lean checks the general statement; a plotted example does not prove it.
wrap(i) = start + (i − start) mod length, once i ≥ end
Natural-number indices, a positive loop length and a cursor at or after the loop start. Before the start, the cursor is unchanged and the loop-range theorem does not apply.
Within theorem assumptions
The lower bound is inclusive and the end is exclusive. The plot includes pre-roll before the start, where the loop-range guarantee does not apply.