Status and limits
Use this page to decide whether a target, device, or callback design is available for your application. The SDK version covered here is 0.9.0; source revision b8c8b87540fe585b5c7d5c8f25d193c1a1af93d5 is used for the source references below.
Platform support
Section titled “Platform support”Host-neutral and package surfaces
Section titled “Host-neutral and package surfaces”- Core, session, transport, routing, analysis, and audio I/O: supported on macOS, Windows, and Linux.
- Installed CMake package: supported with clean-prefix package validation on macOS and Linux; Windows is source/package validation only.
- Dummy driver: supported on all three platforms.
Device backends
Section titled “Device backends”- macOS: CoreAudio is supported.
- Windows: WASAPI is source/package validation only and is not release-supported. ASIO is an optional source-only integration that requires a separately supplied vendor SDK.
- Linux: no production device backend is shipped. ALSA, JACK, and PipeWire are not shipped; Dummy is the available device-free driver.
“Supported” means the surface is built, tested, and consumed through the documented package targets in the required matrix. Source compilation alone does not promote a device backend. Before opening hardware, confirm that the installed package exports the target and that the driver manager reports the capability.
Linux therefore has no production audio device backend in this SDK. Use the host-neutral APIs for offline processing or Dummy for device-free tests. Windows WASAPI is not a release-supported playback path; do not describe it as supported because its source or fake tests compile. ASIO is not part of install/export artifacts.
Package and ABI boundary
Section titled “Package and ABI boundary”CMake 3.22 is the package minimum and consumers need a C++20 compiler. TreefallSDK and OrpheusSDK discover the same installed target graph; they are compatibility package names, not separate binaries. Stable targets include:
Treefall::coreTreefall::diagnosticsTreefall::audio_utilsTreefall::audio_ioTreefall::audio_driver_managerTreefall::routingTreefall::transport
Optional platform targets appear only when their build feature and dependencies are enabled. Test the target with CMake instead of inferring availability from the operating system.
The stable C ABI is major 1, minor 0. Request the major version you were compiled for, inspect the returned table pointer and reported versions, and do not call table entries after a null result or major mismatch. A minor-version policy belongs to the consumer; the documented contract reports minor 0.
The audio-file evidence procedure requires a real SndFile::sndfile CMake target. That requirement proves the selected provider is available; it does not claim that every container, codec, or sample-format tuple has been run.
Realtime limits
Section titled “Realtime limits”TransportConfigfixessampleRate,outputChannels,maxBlockFrames, and other capacities for the controller lifetime.processAudio()must receive exactlyoutputChannelswritable planar buffers and no more thanmaxBlockFramesframes.- There is one non-reentrant audio consumer. The callback must not allocate, lock, block, perform file or network I/O, log, or call host code.
- Control-side preparation may allocate, lock, and perform file I/O. Publish prepared sources before callback use; a streaming cache miss renders silence and reports
BufferUnderruninstead of blocking. - The control-to-audio command pool has 255 usable nodes. Admission refusal is observable as
SessionGraphError::NotReady; inspect ingress telemetry on the control side when diagnosing queue refusal. - Stop and destruction require explicit coordination with the callback. Drain transport events and telemetry from exactly one control/message thread, never from
processAudio().
What the package evidence covers
Section titled “What the package evidence covers”The installed-package examples exercise a silent transport block, a WAV PCM16 file round trip through the required libsndfile provider, and C ABI 1.0 negotiation. Those checks demonstrate selected package and API behavior; they are not a substitute for platform or physical-device qualification.