Luanco Chorus · measured evidence
Benchmarks
Earlier Chorus 2.0 preview AU · 7 October 2026
Apple M4 · macOS 27 · 48 kHz stereo · 128-frame blocks · offline Release AU calls · editor hidden. 128 warmup blocks and 1,024 timed blocks in each of 10 fresh processes. Randomized twelve-case order in each of ten fresh-process repetitions; actual Release production AU, editor hidden, Activity telemetry off. Host timing is moving at 160 BPM; dense cases receive note 67 velocity 100 and channel pressure 96 before warmup.
| Setup | Quality | Mean callback | Median callback | p99 callback | Median process maximum | Over budget / 10,240 | One-core CPU | Process RSS growth | AU-reported latency |
|---|---|---|---|---|---|---|---|---|---|
| Bypassed | Eco | 1.30 µs | 1.33 µs | 1.42 µs | 8.65 µs | 0 | 0.05% | 11.05 MiB | 0 ms |
| Bypassed | Ultra | 1.35 µs | 1.33 µs | 1.56 µs | 4.65 µs | 0 | 0.05% | 11.06 MiB | 0 ms |
| One band · one voice · Chorus | Eco | 7.73 µs | 7.67 µs | 9.60 µs | 15.15 µs | 0 | 0.29% | 11.14 MiB | 0 ms |
| One band · one voice · Chorus | Ultra | 8.78 µs | 8.69 µs | 12.02 µs | 18.77 µs | 0 | 0.33% | 11.13 MiB | 0 ms |
| Silence · dense hybrid configured | Eco | 122.94 µs | 121.25 µs | 138.10 µs | 154.00 µs | 0 | 4.61% | 11.14 MiB | 0 ms |
| Silence · dense hybrid configured | Ultra | 138.68 µs | 137.35 µs | 153.90 µs | 166.69 µs | 0 | 5.20% | 11.14 MiB | 0 ms |
| Four bands · six voices · Texture → Chorus | Eco | 176.43 µs | 174.98 µs | 193.92 µs | 211.88 µs | 0 | 6.62% | 11.13 MiB | 0 ms |
| Four bands · six voices · Texture → Chorus | Ultra | 200.72 µs | 199.44 µs | 219.94 µs | 243.62 µs | 0 | 7.53% | 11.12 MiB | 0 ms |
| Four bands · direct Texture · Tape | Eco | 67.74 µs | 67.25 µs | 76.83 µs | 84.23 µs | 0 | 2.54% | 11.14 MiB | 0 ms |
| Four bands · direct Texture · Tape | Ultra | 68.08 µs | 67.50 µs | 77.85 µs | 85.40 µs | 0 | 2.55% | 11.12 MiB | 0 ms |
| Four bands · direct Texture · Preserve Pitch | Eco | 66.96 µs | 66.27 µs | 76.25 µs | 86.27 µs | 0 | 2.51% | 11.13 MiB | 0 ms |
| Four bands · direct Texture · Preserve Pitch | Ultra | 67.09 µs | 66.38 µs | 76.54 µs | 82.69 µs | 0 | 2.52% | 11.14 MiB | 0 ms |
Callback mean averages process means. Median, p99, per-process maximum, RSS growth and latency are medians of process measurements; p99 is not pooled. Over-budget counts sum all timed callbacks and are offline threshold crossings, not observed host dropouts. One-core CPU divides mean callback time by the 2,666.7 µs block interval. Process RSS growth includes host/framework pages and is not per-instance heap allocation. These macOS measurements do not estimate iPad performance. Offline wall time includes the native host input pull. CPU is mean callback time divided by one 128-frame interval, not total device CPU. RSS includes process/framework/allocator pages. These macOS results do not estimate iPad or third-party-host performance, and threshold crossings are not observed dropouts.
AU-reported fixed latency is zero. Enabled Spectral adds a 21.333 ms wet-path window at 48 kHz even at Amount zero; Dry remains immediate.
Download 2.0 results and provenance · binary SHA-256: 58324a89c49710d6e94c8c7d90e1c7a1c71a05a6d8cfe7912c32fbd3efc402e2.
Historical Chorus 1.8 Release AU
Apple M4 · macOS 27 · 48 kHz stereo · 128-frame blocks · offline Release AU calls · editor hidden. 128 warmup blocks and 1,024 timed blocks in each of 10 fresh processes. One signed Release AU per fresh process; editor hidden. Each of six public cases uses only the ten candidate-after observations from the randomized paired report. Each process measures 1,024 sequential 128-frame offline AU callbacks after 128 warmup callbacks at 48 kHz stereo. Callback time includes the real AU and host input pull; construction, parameter setup and event preparation are excluded. Mean callback time is the arithmetic mean of ten process means, each based on the same 1,024 calls. Median callback, p99 callback, RSS growth and AU-reported latency are medians of their ten process measurements; p99 is not a pooled percentile. One-core percent divides mean callback time by the 2666.666667 microsecond block budget; it is not whole-device usage. macOS mach_task_basic_info RSS growth from before AU construction to after warmup includes host/framework pages and is not isolated AU heap. Dense enables Reverse, Scatter, Spectral, Orbit, MIDI velocity/pressure expression, note-controlled feedback pitch, and host-beat rhythm across four six-voice bands; Freeze stays Off. It sustains MIDI note 67 velocity 100 and channel pressure 96 with moving 120 BPM host beat. These Apple M4/macOS 27 measurements do not estimate iPad performance. No perceptual claim.
| Setup | Quality | Mean callback | Median callback | p99 callback | One-core CPU | Process RSS growth | AU-reported latency |
|---|---|---|---|---|---|---|---|
| Bypassed | Eco | 3.13 µs | 2.00 µs | 9.85 µs | 0.12% | 6.73 MiB | 0 ms |
| Bypassed | Ultra | 2.93 µs | 2.00 µs | 5.69 µs | 0.11% | 6.73 MiB | 0 ms |
| One band · one voice | Eco | 19.99 µs | 17.27 µs | 100.62 µs | 0.75% | 6.80 MiB | 0 ms |
| One band · one voice | Ultra | 22.34 µs | 19.04 µs | 112.69 µs | 0.84% | 6.77 MiB | 0 ms |
| Four bands · six voices per band · textures + MIDI | Eco | 601.74 µs | 555.85 µs | 1574.98 µs | 22.57% | 7.13 MiB | 0 ms |
| Four bands · six voices per band · textures + MIDI | Ultra | 772.88 µs | 636.67 µs | 2843.98 µs | 28.98% | 7.11 MiB | 0 ms |
Callback mean averages process means. Median, p99, RSS growth and latency are medians of process measurements; p99 is not pooled. One-core CPU divides mean callback time by the 2,666.7 µs block interval. Process RSS growth includes host/framework pages and is not per-instance heap allocation. These macOS measurements do not estimate iPad performance. Historical data describes the earlier 1.8 AU and does not measure 2.0.
AU-reported fixed latency is zero. Enabled Spectral adds a 21.333 ms wet-path window at 48 kHz even at Amount zero; Dry remains immediate.
Download 1.8 results and provenance · binary SHA-256: d6e8d4e3a10c8b760a5188478d66d05bb19111b1820b076c8811129bbdbea93f.
The 2.0 results above describe the earlier preview recorded on 7 October 2026. They do not measure the final release binary. Current release performance has not been remeasured; release availability remains pending. Earlier datasets below remain historical evidence. Download the Chorus 1.8 measurements and their original provenance.
Historical Chorus 1.9 comparison
The sealed optimized macOS 1.9/build 2 campaign compared nine workloads in Eco and Ultra against the 1.8 binary, using 48 kHz stereo, 128-frame blocks and ten randomized fresh-process pairs per workload and quality. Independent baseline/baseline pairs recorded timing noise. Direct Texture was compared with the earlier dense chain and intentionally changed the sound; these results do not establish equivalent processing or universal CPU savings. They do not measure the current 2.0 source.
Download the original 1.9 paired measurements · Original source and binary provenance. These files are exact copies from the sealed 1.9 archive; its originals remain untouched.
Historical Chorus 1.7 measurements
Historical measurements: these datasets use the earlier Chorus 1.7 DSP, before the Grain Length control and stronger Reverse/Scatter and Spectral processing. They do not measure the updated DSP. The original data and media remain available for comparison.
Measured render cost depends on the host, buffer size, quality mode and active bands. These figures describe specific test fixtures, not a promise of dropout-free performance in every host.
Apple M4, macOS 27, 48 kHz stereo in the tables below. The Chorus 1.7 paired native DSP campaign used clang++ -std=c++20 -Os -DNDEBUG and Accelerate; each case has 1,000 timed blocks after warmup. It covered 44.1, 48, 96 and 192 kHz with 128 and 1,024 frames in Eco and Ultra. The table below selects 48 kHz; the full legacy CSV and full feature CSV retain all tested rates. Dataset versions and provenance identify each campaign separately.
“Over budget” counts blocks whose offline wall time exceeded the theoretical block duration. They are threshold crossings in a simulated callback budget, not observed host audio dropouts. The idle path averages repeated calls and should not be read as an isolated audio callback.
Offline DSP timing
At 48 kHz the budget is 2,666.7 µs for 128 frames and 21,333.3 µs for 1,024 frames. “Dense” means four bands with six voices each; “extreme” means sixteen such instances with Orbit, Barberpole, Reverse, Scatter, Spectral and Freeze Add active. The instances run serially against a precomputed input block.
| Case | Mode | Frames | Median µs | p99 µs | Max µs | Over budget / 1,000 |
|---|---|---|---|---|---|---|
| Idle | Eco | 128 | 0.003 | 0.004 | 0.005 | 0 |
| Idle | Ultra | 128 | 0.003 | 0.005 | 0.008 | 0 |
| Basic, additions Off | Eco | 128 | 5.125 | 21.792 | 50.875 | 0 |
| Basic, additions Off | Ultra | 128 | 6.833 | 17.459 | 42.916 | 0 |
| Dense, additions Off | Eco | 128 | 64.500 | 114.667 | 202.792 | 0 |
| Dense, additions Off | Ultra | 128 | 124.583 | 230.250 | 316.083 | 0 |
| Spectral | Eco | 128 | 140.166 | 328.917 | 434.416 | 0 |
| Spectral | Ultra | 128 | 160.333 | 450.375 | 601.916 | 0 |
| Extreme, 16 instances | Eco | 128 | 4,659.250 | 11,192.375 | 13,506.417 | 1,000 |
| Extreme, 16 instances | Ultra | 128 | 4,689.666 | 114,155.375 | 296,387.667 | 1,000 |
| Idle | Eco | 1,024 | 0.003 | 0.004 | 0.005 | 0 |
| Idle | Ultra | 1,024 | 0.003 | 0.005 | 0.081 | 0 |
| Basic, additions Off | Eco | 1,024 | 40.625 | 84.375 | 147.334 | 0 |
| Basic, additions Off | Ultra | 1,024 | 54.292 | 215.458 | 721.625 | 0 |
| Dense, additions Off | Eco | 1,024 | 535.166 | 1,858.459 | 2,603.083 | 0 |
| Dense, additions Off | Ultra | 1,024 | 698.167 | 11,372.167 | 46,996.208 | 3 |
| Spectral | Eco | 1,024 | 946.667 | 2,114.834 | 3,355.583 | 0 |
| Spectral | Ultra | 1,024 | 1,116.958 | 2,604.916 | 9,057.166 | 0 |
| Extreme, 16 instances | Eco | 1,024 | 37,034.000 | 70,989.458 | 210,221.250 | 1,000 |
| Extreme, 16 instances | Ultra | 1,024 | 39,375.000 | 453,351.458 | 1,880,762.292 | 1,000 |
At 48 kHz/128 frames, the pre-expansion Basic median was 4.250 µs in Eco and 6.458 µs in Ultra. The final medians rose to 5.125 and 6.833 µs. Sixteen all-feature instances exceeded the simulated budget on every measured block. The full CSV also retains difficult results at higher rates and other workloads.
Actual AU render callback
A separate historical in-process Chorus AU 1.7 run measured its whole render callback in arm64 Release at 48 kHz/128 frames: 128 warmup blocks, then 1,024 timed blocks per case. Analysis and editor telemetry were Off. The active fixture enabled Barberpole, Orbit, Reverse, Scatter and Spectral; Freeze was Off. This is AU integration cost, not the paired DSP change above. Its exact callback binary hash was not recorded with the CSV.
| Case | Mode | Median µs | p99 µs | Max µs | Median core share |
|---|---|---|---|---|---|
| Idle, bypassed | Eco | 1.042 | 1.167 | 1.208 | 0.039% |
| One band, one voice | Eco | 26.958 | 35.250 | 49.083 | 1.011% |
| Four bands, six voices each | Eco | 257.166 | 312.917 | 338.292 | 9.644% |
| Sixteen instances, serial total | Eco | 3,950.125 | 4,484.418 | 6,504.917 | 148.130% |
| Idle, bypassed | Ultra | 1.042 | 1.167 | 1.250 | 0.039% |
| One band, one voice | Ultra | 29.334 | 38.417 | 43.500 | 1.100% |
| Four bands, six voices each | Ultra | 323.000 | 365.250 | 439.375 | 12.113% |
| Sixteen instances, serial total | Ultra | 4,622.666 | 5,158.750 | 5,274.458 | 173.350% |
The downloadable AU callback CSV records time per instance; the sixteen-instance times above multiply those values by sixteen. Its core percentage already represents the whole workload. Both sixteen-instance medians exceed the 2,666.7 µs block budget. Per-block over-budget counts were not recorded for this AU run.
Memory, latency and editor
In the paired native test, prepared process RSS for one Basic instance increased from 0.422 MiB before the expansion to 2.141 MiB after it. Sixteen legacy instances increased from 6.250 to 31.766 MiB. RSS includes allocator pages and is not an exact per-instance heap count. The AU run recorded roughly 5.2–5.6 MiB process growth for one instance and 41.4–41.6 MiB for sixteen, including shared framework and parameter-tree costs.
The AU callback CSV reports zero latency for its fixture, which leaves Spectral's wet-path delay out of that readback. Spectral processing adds approximately 21–23 ms to the wet path while enabled, even at Amount zero; account for that when comparing wet and dry signals.
Whole-editor CPU was measured in an earlier, separately identified campaign on an Apple M4 with the editor visible or hidden, a 48 kHz stereo render worker and 256-frame blocks. In that combined two-plot layout, standalone process CPU was 4.14% visible / 0.97% hidden when disabled, 6.01% / 1.29% for Basic, and 9.44% / 5.81% for Dense. These are five-second process samples including SwiftUI and rendering, not callback timing. The CSV does not record its exact binary version. Download historical editor CPU data.
The offline campaign retains source hashes and benchmark binary hashes. Separate AU render provenance identifies the binary used for the product figures and listening clips; it does not identify the earlier callback benchmark binary. Source file modification dates are listed in the manifest; exact execution times were not independently recorded. Refresh measurements when the release binary changes materially.