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.

SetupQualityMean callbackMedian callbackp99 callbackMedian process maximumOver budget / 10,240One-core CPUProcess RSS growthAU-reported latency
BypassedEco1.30 µs1.33 µs1.42 µs8.65 µs00.05%11.05 MiB0 ms
BypassedUltra1.35 µs1.33 µs1.56 µs4.65 µs00.05%11.06 MiB0 ms
One band · one voice · ChorusEco7.73 µs7.67 µs9.60 µs15.15 µs00.29%11.14 MiB0 ms
One band · one voice · ChorusUltra8.78 µs8.69 µs12.02 µs18.77 µs00.33%11.13 MiB0 ms
Silence · dense hybrid configuredEco122.94 µs121.25 µs138.10 µs154.00 µs04.61%11.14 MiB0 ms
Silence · dense hybrid configuredUltra138.68 µs137.35 µs153.90 µs166.69 µs05.20%11.14 MiB0 ms
Four bands · six voices · Texture → ChorusEco176.43 µs174.98 µs193.92 µs211.88 µs06.62%11.13 MiB0 ms
Four bands · six voices · Texture → ChorusUltra200.72 µs199.44 µs219.94 µs243.62 µs07.53%11.12 MiB0 ms
Four bands · direct Texture · TapeEco67.74 µs67.25 µs76.83 µs84.23 µs02.54%11.14 MiB0 ms
Four bands · direct Texture · TapeUltra68.08 µs67.50 µs77.85 µs85.40 µs02.55%11.12 MiB0 ms
Four bands · direct Texture · Preserve PitchEco66.96 µs66.27 µs76.25 µs86.27 µs02.51%11.13 MiB0 ms
Four bands · direct Texture · Preserve PitchUltra67.09 µs66.38 µs76.54 µs82.69 µs02.52%11.14 MiB0 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.

SetupQualityMean callbackMedian callbackp99 callbackOne-core CPUProcess RSS growthAU-reported latency
BypassedEco3.13 µs2.00 µs9.85 µs0.12%6.73 MiB0 ms
BypassedUltra2.93 µs2.00 µs5.69 µs0.11%6.73 MiB0 ms
One band · one voiceEco19.99 µs17.27 µs100.62 µs0.75%6.80 MiB0 ms
One band · one voiceUltra22.34 µs19.04 µs112.69 µs0.84%6.77 MiB0 ms
Four bands · six voices per band · textures + MIDIEco601.74 µs555.85 µs1574.98 µs22.57%7.13 MiB0 ms
Four bands · six voices per band · textures + MIDIUltra772.88 µs636.67 µs2843.98 µs28.98%7.11 MiB0 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.

CaseModeFramesMedian µsp99 µsMax µsOver budget / 1,000
IdleEco1280.0030.0040.0050
IdleUltra1280.0030.0050.0080
Basic, additions OffEco1285.12521.79250.8750
Basic, additions OffUltra1286.83317.45942.9160
Dense, additions OffEco12864.500114.667202.7920
Dense, additions OffUltra128124.583230.250316.0830
SpectralEco128140.166328.917434.4160
SpectralUltra128160.333450.375601.9160
Extreme, 16 instancesEco1284,659.25011,192.37513,506.4171,000
Extreme, 16 instancesUltra1284,689.666114,155.375296,387.6671,000
IdleEco1,0240.0030.0040.0050
IdleUltra1,0240.0030.0050.0810
Basic, additions OffEco1,02440.62584.375147.3340
Basic, additions OffUltra1,02454.292215.458721.6250
Dense, additions OffEco1,024535.1661,858.4592,603.0830
Dense, additions OffUltra1,024698.16711,372.16746,996.2083
SpectralEco1,024946.6672,114.8343,355.5830
SpectralUltra1,0241,116.9582,604.9169,057.1660
Extreme, 16 instancesEco1,02437,034.00070,989.458210,221.2501,000
Extreme, 16 instancesUltra1,02439,375.000453,351.4581,880,762.2921,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.

Distribution of measured extreme sixteen-instance offline block times, with a 48 kHz 128-frame budget marker
Extreme Eco 128-frame distribution. Open full-size SVG; download all 1,000 block timings.

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.

CaseModeMedian µsp99 µsMax µsMedian core share
Idle, bypassedEco1.0421.1671.2080.039%
One band, one voiceEco26.95835.25049.0831.011%
Four bands, six voices eachEco257.166312.917338.2929.644%
Sixteen instances, serial totalEco3,950.1254,484.4186,504.917148.130%
Idle, bypassedUltra1.0421.1671.2500.039%
One band, one voiceUltra29.33438.41743.5001.100%
Four bands, six voices eachUltra323.000365.250439.37512.113%
Sixteen instances, serial totalUltra4,622.6665,158.7505,274.458173.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.