Sound Byte Libs 29c5ff3
C++ firmware library for audio applications on 32-bit ARM Cortex-M processors
Loading...
Searching...
No Matches
param.hpp
Go to the documentation of this file.
1// sbl/dsp/param.hpp — Float-domain parameter mapping utilities
2//
3// Standalone functions for normalizing inputs and mapping to parameter
4// ranges with optional curve shaping. Complements the uint16-domain
5// scaled()/scaled_curved() on Pot and CvInput.
6//
7// Usage:
8// float t = sbl::dsp::cc_to_float(cc_value); // 0-127 → [0, 1]
9// float cutoff = sbl::dsp::map_quadratic(t, 100.0f, 15000.0f);
10
11#pragma once
12
13#include <cstdint>
14
15namespace sbl::dsp {
16
17// ─── Normalize to [0.0, 1.0] ────────────────────────────────────
18
19/// Normalize MIDI CC (0-127) to [0.0, 1.0]
20inline constexpr float cc_to_float(uint8_t val) {
21 return static_cast<float>(val) * (1.0f / 127.0f);
22}
23
24/// Normalize 16-bit unsigned (0-65535) to [0.0, 1.0]
25inline constexpr float u16_to_float(uint16_t val) {
26 return static_cast<float>(val) * (1.0f / 65535.0f);
27}
28
29/// Normalize 14-bit MIDI (0-16383) to [0.0, 1.0] (pitch bend, NRPN)
30inline constexpr float u14_to_float(uint16_t val) {
31 return static_cast<float>(val) * (1.0f / 16383.0f);
32}
33
34// ─── Map [0,1] → [min, max] with curve shaping ─────────────────
35
36/// Linear mapping: t → min + (max - min) * t
37inline constexpr float map_linear(float t, float min, float max) {
38 return min + (max - min) * t;
39}
40
41/// Quadratic mapping: t² curve. Good for frequency, cutoff, LFO rate.
42/// More resolution at low values, fast rise at high values.
43inline constexpr float map_quadratic(float t, float min, float max) {
44 return min + (max - min) * t * t;
45}
46
47/// S-curve mapping via Hermite smooth step: t²(3 - 2t).
48/// Slow start, fast middle, slow finish. Good for crossfade morphs.
49inline constexpr float map_scurve(float t, float min, float max) {
50 float s = t * t * (3.0f - 2.0f * t);
51 return min + (max - min) * s;
52}
53
54} // namespace sbl::dsp
DSP atoms for audio signal processing.
Definition allpass.hpp:22
constexpr float map_scurve(float t, float min, float max)
Definition param.hpp:49
constexpr float u14_to_float(uint16_t val)
Normalize 14-bit MIDI (0-16383) to [0.0, 1.0] (pitch bend, NRPN)
Definition param.hpp:30
constexpr float map_quadratic(float t, float min, float max)
Definition param.hpp:43
constexpr float map_linear(float t, float min, float max)
Linear mapping: t → min + (max - min) * t.
Definition param.hpp:37
constexpr float cc_to_float(uint8_t val)
Normalize MIDI CC (0-127) to [0.0, 1.0].
Definition param.hpp:20
constexpr float u16_to_float(uint16_t val)
Normalize 16-bit unsigned (0-65535) to [0.0, 1.0].
Definition param.hpp:25