|
Sound Byte Libs 0.5.1-121-g3358a44
C++ firmware library for audio applications on 32-bit ARM Cortex-M processors
|
Definition at line 90 of file thermal_friction.hpp.
#include <thermal_friction.hpp>
Public Member Functions | |
| void | set_limits (const float *limits, uint8_t slices) |
The cold static limit per force slice — the friction-curve bow's limits | |
| void | set_force_su (float su) |
| Bow force across the slices [0, 1]; the cold limit interpolates between them. | |
| void | set_rosin (float heat, float tau_ms, float convect, float mu_ratio, float cold_gain=DEFAULT_COLD_GAIN) |
| The rosin: how it heats, cools and softens (configuration, not signals) | |
| void | set_fast_cooling (float fast_ms, float fast_share) |
| The fast cooling component: its time constant and the share of the heat it takes. | |
| float | mu_rel () const |
| Friction relative to cold, from the temperature: 1 cold down to mu_ratio hot. | |
| void | advance (float force, float v_slip) |
| Advance the contact one sample from a force and sliding speed found elsewhere. | |
| float | process (float dv_free) |
| One sample: relative velocity in, injection force out. | |
| bool | sticking () const |
| True while the string travels with the bow. | |
| float | limit () const |
| The static limit right now, warmed: where the string would release. | |
| float | temperature () const |
| Contact temperature as a fraction of the range over which the rosin softens. | |
| void | reset () |
| Cold and stuck. | |
| diagram::Ports | describe (diagram::Graph &g, uint8_t group, const char *name="bow (thermal)") const |
| One Junction node: the friction nonlinearity. Never called from audio code (AP-037). | |
Static Public Attributes | |
| static constexpr float | DEFAULT_MU_RATIO = 0.35f / 1.2f |
| Rosin, as Woodhouse measured it: friction at full heat is this fraction of cold. | |
| static constexpr float | DEFAULT_HEAT = 2000.0f |
| static constexpr float | DEFAULT_TAU_MS = 10.0f |
| Conduction into the string and the bow: the slow component's time to cool by 1/e. | |
| static constexpr float | DEFAULT_CONVECT = 0.0f |
| Convection: cold rosin flowing into the contact, per unit sliding speed per second. | |
| static constexpr float | DEFAULT_COLD_GAIN = 1.0f |
| static constexpr float | DEFAULT_FAST_MS = 0.5f |
| The fast cooling component: time constant and the share of heat it takes. | |
| static constexpr float | DEFAULT_FAST_SHARE = 0.6f |
|
inline |
The cold static limit per force slice — the friction-curve bow's limits
| limits | one static-friction limit per slice, light bow first |
| slices | number of slices |
Definition at line 118 of file thermal_friction.hpp.
References set_force_su().
Referenced by sbl::dsp::pm::HybridFriction::set_bow().
|
inline |
Bow force across the slices [0, 1]; the cold limit interpolates between them.
Definition at line 125 of file thermal_friction.hpp.
Referenced by sbl::dsp::pm::HybridFriction::set_force_su(), set_limits(), and set_rosin().
|
inline |
The rosin: how it heats, cools and softens (configuration, not signals)
| heat | temperature fraction per unit of force·speed per second |
| tau_ms | conduction time constant |
| convect | convection coefficient per unit sliding speed per second |
| mu_ratio | friction at full heat relative to cold, in (0, 1] |
| cold_gain | the cold limit as a multiple of the table's limit |
Definition at line 147 of file thermal_friction.hpp.
References DEFAULT_COLD_GAIN, DEFAULT_MU_RATIO, and set_force_su().
|
inline |
The fast cooling component: its time constant and the share of the heat it takes.
Definition at line 158 of file thermal_friction.hpp.
|
inline |
Friction relative to cold, from the temperature: 1 cold down to mu_ratio hot.
Definition at line 164 of file thermal_friction.hpp.
References temperature().
Referenced by limit(), process(), and sbl::dsp::pm::HybridFriction::set_force_su().
|
inline |
Advance the contact one sample from a force and sliding speed found elsewhere.
For the hybrid bow: the friction curve finds the force; this keeps the temperature. Sliding speed 0 while stuck.
Definition at line 172 of file thermal_friction.hpp.
References sbl::dsp::math::clamp01().
Referenced by sbl::dsp::pm::HybridFriction::process(), and process().
|
inline |
One sample: relative velocity in, injection force out.
| dv_free | v_bow - v_incoming, in wave variables |
Definition at line 187 of file thermal_friction.hpp.
|
inline |
True while the string travels with the bow.
Definition at line 212 of file thermal_friction.hpp.
|
inline |
The static limit right now, warmed: where the string would release.
Definition at line 215 of file thermal_friction.hpp.
References mu_rel().
Referenced by process().
|
inline |
Contact temperature as a fraction of the range over which the rosin softens.
Definition at line 218 of file thermal_friction.hpp.
Referenced by mu_rel(), and sbl::dsp::pm::HybridFriction::temperature().
|
inline |
Cold and stuck.
Definition at line 224 of file thermal_friction.hpp.
References sbl::dsp::types::SAMPLE_RATE_F.
Referenced by sbl::dsp::pm::HybridFriction::reset().
|
inline |
One Junction node: the friction nonlinearity. Never called from audio code (AP-037).
Definition at line 232 of file thermal_friction.hpp.
References sbl::dsp::diagram::Graph::add_node(), sbl::dsp::diagram::Ports::group, sbl::dsp::diagram::Ports::in, sbl::dsp::diagram::Junction, and sbl::dsp::diagram::Ports::out.
|
staticconstexpr |
Rosin, as Woodhouse measured it: friction at full heat is this fraction of cold.
Definition at line 95 of file thermal_friction.hpp.
Referenced by set_rosin().
|
staticconstexpr |
Fraction of the range per unit of (force · sliding speed) per second. Calibrated 2026-09-15 on the Davis Jr. string: Helmholtz at C3 with the body, C3–C5 bare (AP-040 Phase 4 addenda).
Definition at line 99 of file thermal_friction.hpp.
|
staticconstexpr |
Conduction into the string and the bow: the slow component's time to cool by 1/e.
Definition at line 101 of file thermal_friction.hpp.
|
staticconstexpr |
Convection: cold rosin flowing into the contact, per unit sliding speed per second.
Definition at line 103 of file thermal_friction.hpp.
|
staticconstexpr |
The cold limit over the table's. 1: cold equals the table's limit. (Any more and this waveguide's stuck force, capped by loop loss at a few bow speeds, never reaches it.)
Definition at line 107 of file thermal_friction.hpp.
Referenced by set_rosin().
|
staticconstexpr |
The fast cooling component: time constant and the share of heat it takes.
Definition at line 109 of file thermal_friction.hpp.
|
staticconstexpr |
Definition at line 110 of file thermal_friction.hpp.