Performance reports

Sync 1080p60: discrete multichannel audio modulation qualification

21 September 2026 · Research report · 32-channel physical mapping, zero-crosstalk verification, and pipeline modulator routing

Decision: Retain the 32-channel planar float32 audio capture architecture in native/src/server.cpp, the eager initial buffer slice push in native/test/audio_test_server.cpp, the 1-to-32 discrete channel mapping in shaders/src/runtime/external-input.js, and the multi-channel AudioWorklet bridge in noisedeck. In empirical evaluations with orthogonal multi-tone and stepped pulse fixtures across 32 discrete channels, unmodulated channels exhibited zero digital crosstalk (strictly 0.000000 amplitude, -144 dB digital isolation floor), monotonic channel ordering without channel inversion across full scale, and 3.75 ms median end-to-end modulator latency. E1

This report fulfills Priority 1 of the 21 September research plan and establishes qualification for physical multi-channel audio interfaces up to 32 discrete physical inputs.

1. Question and design

Can the Noisedeck Sync native audio capture architecture transport and route 32 discrete physical audio channels simultaneously to independent shader modulation uniforms without inter-channel crosstalk, channel inversion, or buffer starvation?

Professional multi-channel audio interfaces (such as the Arturia AudioFuse 8Pre, Behringer X32, or MOTU 24Ao) present 16 to 32 discrete hardware inputs over USB or ADAT. In generative visual synthesis, performers map separate physical inputs to independent visual parameters (e.g. modular synth control voltages, discrete percussion triggers, and acoustic microphones). Prior to this qualification, multi-channel capture paths lacked verified digital isolation benchmarks under sustained multi-channel load, and synthetic test fixtures were limited to 8 channels. This study introduces orthogonal multi-channel sine fixtures and rotating pulse test fixtures in the native test server, verifies unmixed loopback transport over WebSocket binary framing, qualifies multi-channel modulator evaluation in Noisemaker pipelines, and measures channel isolation across the full 32-channel matrix. E1

Table 1. Experimental configuration and system parameters

ParameterSpecification
Host hardwareApple M4 (10 cores: 4 performance, 6 efficiency), Unified Memory Architecture
Operating systemmacOS 26.5 (build 25F71, Darwin kernel 25.5.0)
Daemon binarysyncd / sync_audio_test_server compiled with Apple Clang 17.0.0 (-O3)
Audio stream contract48 kHz sampling rate, 32-bit float, 5 ms buffer slices (240 frames/packet)
Wire protocol framing32-byte binary NAUD header followed by 32 planar channel slices (30,720 bytes payload)
Client worklet bridgeNoisedeckAudioBridgeProcessor (ring capacity 4096 frames, prefill 128 frames)
Shader automation runtimeNoisemaker Pipeline.resolveUniformValue() with 1-based channel addressing
Verification scopeCTest suite (22 tests), Sync loopback suite (37 tests), Noisemaker shader suite (206 effects, 32 audio tests), Noisedeck node suite (1100 tests), and Playwright browser suite (10 tests)

2. Measurement contract as applied

Channel isolation and crosstalk attenuation: When a single channel $c_i$ is driven with peak full-scale signal ($s_i = 1.0$) and all other channels $c_j$ ($j \neq i$) remain silent ($s_j = 0.0$), the observed amplitude on inactive channels must remain below the floating-point digital noise floor ($|s_j| = 0.000000$, crosstalk attenuation $\geq 144\text{ dB}$).

Channel order monotonicity and inversion check: Driving channels $1 \dots 32$ with monotonically stepped values $v_k = k / 32$ must yield resolved uniform values satisfying $v_{k+1} > v_k$ for all $k \in [1..31]$. No channel swap, byte-order inversion, or off-by-one index shifts are permitted.

Modulator band independence: Frequency band decomposition (low, mid, high, vol) and raw bipolar DC sampling on channel $k$ must resolve strictly from channel $k$'s state without consuming or corrupting adjacent channel state.

Transport latency and buffer stability: 32-channel packets delivered at 5 ms intervals must show zero buffer drops, zero ring-buffer overflow, and median end-to-end modulator delivery latency below 10 ms. E2

3. Discrete multichannel routing implementation

The native audio transport in native/src/server.cpp serializes multi-channel frames using planar layout: [channel_0_samples][channel_1_samples]...[channel_31_samples]. This layout eliminates interleaving de-stride operations in Web Audio worklets. E3

The following enhancements were qualified:

4. Crosstalk matrix and isolation results

Table 2. Channel isolation and inter-channel crosstalk evaluation across 32 discrete channels

Source channelExcitation signalPeak active levelAdjacent channel $c \pm 1$Distant channelsCrosstalk floorVerdict
Channel 1100 Hz Sine / Pulse 1.01.0000000.0000000.000000< -144 dBPASS
Channel 8800 Hz Sine / Pulse 1.01.0000000.0000000.000000< -144 dBPASS
Channel 161600 Hz Sine / Pulse 1.01.0000000.0000000.000000< -144 dBPASS
Channel 171700 Hz Sine / Pulse 1.01.0000000.0000000.000000< -144 dBPASS
Channel 242400 Hz Sine / Pulse 1.01.0000000.0000000.000000< -144 dBPASS
Channel 323200 Hz Sine / Pulse 1.01.0000000.0000000.000000< -144 dBPASS

Across all 32 tested channels, excitation of any single channel produced zero digital leakage on adjacent or distant channels. When perturbing channel 17 from nominal ramp value ($17/32$) to $+1.0$, uniform 17 resolved to $1.0$ while all 31 other uniforms maintained their exact nominal values with $\Delta \equiv 0.000000$. Monotonicity checks confirmed strict ordering from channel 1 ($0.03125$) through channel 32 ($1.000000$) with zero channel inversions. E1

5. Current product verification

Table 3. Comprehensive test suite verification outcomes

Test suiteRepositoryPassedFailedExecution timeVerdict
Native CTest audio suiteplatform/sync2201.1 sPASS
Loopback integration testsplatform/sync3704.8 sPASS
Daemon soak testsplatform/sync4012.2 sPASS
Daemon unit testsplatform/sync25102.3 sPASS
Packaging contract testsplatform/sync1500.8 sPASS
Noisemaker audio testsplatform/noisemaker3200.1 sPASS
Noisemaker complete shader suiteplatform/noisemaker206042.0 sPASS
Noisedeck Node testsplatform/noisedeck110004.2 sPASS
Noisedeck Playwright browser suiteplatform/noisedeck1005.2 sPASS

All test suites pass completely across the entire product stack. In automated Playwright testing under Chromium, selecting 32 channels on the native pulse fixture confirms that the active channel registers $>0.8$ while all 31 unmodulated channels report strictly $0.0000$, verifying zero crosstalk through the browser AudioWorklet and automation pipeline. E2 E3

6. Latency and modulation dynamics

Transport timing measurements show packet delivery at 5.002 ms mean interval with p95 jitter of 0.012 ms. Inside the browser, NoisedeckAudioBridgeProcessor renders 128-frame quanta (2.667 ms) directly from planar ring storage without re-allocation. Total end-to-end modulator latency from native buffer generation to shader uniform resolution measured 3.75 ms median (p95: 6.14 ms, p99: 8.21 ms), well within the 16.67 ms frame budget of 60 FPS visual rendering. E1

Table 4. Diagnostic findings and implementation disposition

Cycle and mechanismFinding and disposition
A: Planar buffer transportContiguous planar float32 serialization avoids interleaving overhead and guarantees memory isolation between channels. Retained.
B: Eager initial slice emissionEmitting the initial slice on server startup eliminates 0-frame race conditions on immediate client WebSocket reads. Retained.
C: Exact device selector matchingRequiring both id and name in automation uniform selectors ensures unambiguous channel binding without default fallback pollution. Retained.
D: Web Audio ChannelSplitter fan-out32-channel splitter nodes correctly deliver discrete audio streams to independent AnalyserNodes without CPU throttling. Retained.

8. Decision

Retain the 32-channel planar audio transport in native/src/server.cpp, the multi-channel test fixtures in native/test/audio_test_server.cpp, the discrete uniform modulator mapping in shaders/src/runtime/external-input.js, and the multi-channel worklet processing in noisedeck. Priority 1 qualification criteria are fully satisfied. E1 E4

9. Limits

10. Reproducibility

All test fixtures, shader unit tests, and Playwright specifications are committed to the respective default branches. The complete qualification can be reproduced by building the native test server and executing node --test test/integration/loopback.test.js in sync, node shaders/tests/test_audio.js in noisemaker, and npx playwright test tests/sync-audio-input.spec.js --project=chromium in noisedeck.

Evidence references

  1. E1. Measurements and crosstalk matrix, crosstalkSummary, channelOrdering, and timingPercentiles. Quantitative isolation and timing data.
  2. E2. Verification suite outcomes, verificationSuites. Complete test pass counts across all product components.
  3. E3. Source identity and environment specification. Delivered revisions, test execution environment, and host specifications.
  4. E4. Diagnostic findings and architectural disposition. Planar layout, eager slice emission, and selector validation mechanics.
  5. E5. Sync 1080p60: next research plan, 21 September 2026. Priority 1 specification and qualification criteria.