These diagrams summarize the pinned Treefall SDK architecture. They separate host policy and control-side preparation from the one non-reentrant audio consumer, and they show where bounded refusal or silence is intentional. The diagrams are explanatory views of the public contracts; they do not add an application scheduler, analyzer owner, or device backend.
Choose a diagram above, or use the left and right arrow keys when this gallery is focused.
SDK layer topology
Host applications and adapters consume the host-neutral SDK; platform providers sit below its stable contracts.
Rendering diagram…
flowchart LR
app[Host application] --> adapter[Optional adapter]
app --> sdk[Treefall SDK core]
adapter --> sdk
sdk --> files[Audio file provider]
sdk --> dummy[Dummy driver]
sdk --> coreaudio[CoreAudio on Apple]
sdk --> wasapi[WASAPI source and fake-test path]
classDef primary fill:#b8e986,stroke:#5c7f35,color:#101412
classDef secondary fill:#20382a,stroke:#8ca995,color:#edf4ee
classDef provider fill:#33453a,stroke:#b8e986,color:#edf4ee
class app,adapter primary
class sdk secondary
class files,dummy,coreaudio,wasapi provider
View Mermaid source
flowchart LR
app[Host application] --> adapter[Optional adapter]
app --> sdk[Treefall SDK core]
adapter --> sdk
sdk --> files[Audio file provider]
sdk --> dummy[Dummy driver]
sdk --> coreaudio[CoreAudio on Apple]
sdk --> wasapi[WASAPI source and fake-test path]
classDef primary fill:#b8e986,stroke:#5c7f35,color:#101412
classDef secondary fill:#20382a,stroke:#8ca995,color:#edf4ee
classDef provider fill:#33453a,stroke:#b8e986,color:#edf4ee
class app,adapter primary
class sdk secondary
class files,dummy,coreaudio,wasapi provider
Bounded control-to-audio flow
Concurrent control calls prepare state before bounded publication; one audio consumer processes commands and emits observations for the message thread.
Layer topology keeps host applications and optional adapters above the host-neutral SDK and platform providers below it.
Bounded command flow shows control producers publishing into the fixed ingress pool while the audio thread consumes without allocation, locks, or I/O. Message-thread code drains callback events.
Prepared-source streaming shows control-side preparation and worker-fed pages. A cache miss renders silence and reports BufferUnderrun; the callback never waits for file I/O.