|
Sound Byte Libs 29c5ff3
C++ firmware library for audio applications on 32-bit ARM Cortex-M processors
|
#include <frame.hpp>
Public Member Functions | |
| uint16_t | begin (uint16_t requested) |
| void | end (int32_t *tx, uint16_t n) const |
| void | scale (float gain, uint16_t n) |
| void | apply (const float *mod, uint16_t n) |
| void | mix_mono (const float *src, float gain, uint16_t n) |
| void | mix (const Frame &other, float gain, uint16_t n) |
| void | mix_stereo (const float *src_l, const float *src_r, float gain, uint16_t n) |
| void | tap (float *dst_l, float *dst_r, uint16_t n) const |
| void | clear (uint16_t n) |
Public Attributes | |
| float | left [MaxFrames] |
| float | right [MaxFrames] |
|
inline |
Apply per-sample modulation to both channels (stereo VCA).
Multiplies both L and R by a control signal — typically an envelope output [0.0, 1.0].
| mod | Control signal buffer (e.g., envelope output) |
| n | Frame count |
Definition at line 90 of file frame.hpp.
References sbl::signal::Frame< MaxFrames >::left, and sbl::signal::Frame< MaxFrames >::right.
|
inline |
Begin a processing block: clamp frame count and zero buffers.
Call this at the top of every audio callback. Returns the actual frame count to use (clamped to MaxFrames).
| requested | Frame count from DMA callback |
Definition at line 50 of file frame.hpp.
References sbl::signal::Frame< MaxFrames >::left, and sbl::signal::Frame< MaxFrames >::right.
|
inline |
Zero both channels.
| n | Frame count |
Definition at line 158 of file frame.hpp.
References sbl::signal::Frame< MaxFrames >::left, and sbl::signal::Frame< MaxFrames >::right.
|
inline |
Finalize block: float → int32 stereo interleave to DMA tx buffer.
This is the DMA boundary — NaN guard, clamp to [-1.0, 1.0], and 24-bit scaling all happen inside interleave_from_float().
| tx | DMA transmit buffer (interleaved stereo int32) |
| n | Frame count |
Definition at line 66 of file frame.hpp.
References sbl::dsp::interleave_from_float(), sbl::signal::Frame< MaxFrames >::left, and sbl::signal::Frame< MaxFrames >::right.
|
inline |
Mix another stereo frame into this one at a given gain.
| other | Source frame |
| gain | Mix gain |
| n | Frame count |
Definition at line 118 of file frame.hpp.
References sbl::signal::Frame< MaxFrames >::left, and sbl::signal::Frame< MaxFrames >::right.
|
inline |
Mix a mono source into both channels at a given gain.
Adds src * gain to both L and R. Use for mixing a mono sub-voice into a stereo frame (e.g., bass at -6 dB = gain 0.5).
| src | Mono source buffer |
| gain | Mix gain (e.g., 0.5 for -6 dB) |
| n | Frame count |
Definition at line 105 of file frame.hpp.
References sbl::signal::Frame< MaxFrames >::left, and sbl::signal::Frame< MaxFrames >::right.
|
inline |
Mix separate stereo buffers into this frame at a given gain.
| src_l | Left source buffer |
| src_r | Right source buffer |
| gain | Mix gain |
| n | Frame count |
Definition at line 131 of file frame.hpp.
References sbl::signal::Frame< MaxFrames >::left, and sbl::signal::Frame< MaxFrames >::right.
|
inline |
Scale both channels by a constant gain.
Use for headroom management (e.g., 1/sqrt(N) for N summed voices).
| gain | Gain factor |
| n | Frame count |
Definition at line 76 of file frame.hpp.
References sbl::signal::Frame< MaxFrames >::left, and sbl::signal::Frame< MaxFrames >::right.
|
inline |
Snapshot current buffer state into separate L/R buffers.
Use for explicit feedback paths: tap the signal before effects, then mix the tapped (and possibly processed) signal back in on the next block.
| dst_l | Destination left buffer |
| dst_r | Destination right buffer |
| n | Frame count |
Definition at line 148 of file frame.hpp.
References sbl::signal::Frame< MaxFrames >::left, and sbl::signal::Frame< MaxFrames >::right.
| float sbl::signal::Frame< MaxFrames >::left[MaxFrames] |
Definition at line 40 of file frame.hpp.
Referenced by sbl::signal::Frame< MaxFrames >::apply(), sbl::signal::Frame< MaxFrames >::begin(), sbl::signal::Frame< MaxFrames >::clear(), sbl::signal::Frame< MaxFrames >::end(), sbl::signal::Frame< MaxFrames >::mix(), sbl::signal::Frame< MaxFrames >::mix_mono(), sbl::signal::Frame< MaxFrames >::mix_stereo(), sbl::signal::Frame< MaxFrames >::scale(), and sbl::signal::Frame< MaxFrames >::tap().
| float sbl::signal::Frame< MaxFrames >::right[MaxFrames] |
Definition at line 41 of file frame.hpp.
Referenced by sbl::signal::Frame< MaxFrames >::apply(), sbl::signal::Frame< MaxFrames >::begin(), sbl::signal::Frame< MaxFrames >::clear(), sbl::signal::Frame< MaxFrames >::end(), sbl::signal::Frame< MaxFrames >::mix(), sbl::signal::Frame< MaxFrames >::mix_mono(), sbl::signal::Frame< MaxFrames >::mix_stereo(), sbl::signal::Frame< MaxFrames >::scale(), and sbl::signal::Frame< MaxFrames >::tap().