Initial commit.
This commit is contained in:
commit
1d8f869b5b
39 changed files with 1671 additions and 0 deletions
27
docs/AUDIO_ENGINE.md
Normal file
27
docs/AUDIO_ENGINE.md
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
# Audio engine requirements
|
||||
|
||||
## Real-time callback rules
|
||||
|
||||
The callback must not allocate/free memory, lock blocking mutexes, perform
|
||||
filesystem/network/console I/O, log, load plugins or samples, call GUI APIs,
|
||||
or wait for another thread.
|
||||
|
||||
Use preallocated buffers and bounded work. Publish parameter and graph changes
|
||||
through a documented real-time-safe mechanism. Verify atomics are lock-free
|
||||
where required on the target platform.
|
||||
|
||||
## Processing model
|
||||
|
||||
Process a bounded number of frames per block. Do not assume a fixed block size
|
||||
unless the backend guarantees it. Define maximum frame and event counts and
|
||||
safe behavior when those limits are reached.
|
||||
|
||||
The initial milestone is offline processing, then a test oscillator -> gain ->
|
||||
meter/output graph, then a hardware backend.
|
||||
|
||||
## Clock and transport
|
||||
|
||||
Audio sample position is the authoritative playback clock. Use integer or
|
||||
rational timeline representations to avoid cumulative floating-point drift.
|
||||
Define tempo-map conversion and behavior at tempo changes before implementing
|
||||
tempo automation.
|
||||
Loading…
Add table
Add a link
Reference in a new issue