Sound Byte Libs 0.5.1-121-g3358a44
C++ firmware library for audio applications on 32-bit ARM Cortex-M processors
Loading...
Searching...
No Matches
sbl::dsp::pm Namespace Reference

Physical modeling: laws, bows, junctions, loads, resonators, strings (docs/conventions/physical-modeling.md). More...

Detailed Description

Physical modeling: laws, bows, junctions, loads, resonators, strings (docs/conventions/physical-modeling.md).

Namespaces

namespace  detail
 

Classes

class  Bow
 
class  BowedString
 
class  BowSet
 A bow over a set of tables: velocity, pressure and select, all smoothed. More...
 
struct  BowTable
 One bow: a lute-solved family and the shape of its arrays. More...
 
class  HybridFriction
 
struct  is_described
 
struct  is_described< T, std::void_t< std::enable_if_t< std::is_same< decltype(std::declval< const T & >().describe(std::declval< diagram::Graph & >(), uint8_t{})), diagram::Ports >::value > > >
 
struct  is_exciter
 
struct  is_exciter< T, std::void_t< std::enable_if_t< detail::returns_float< decltype(std::declval< T & >().excite(std::declval< const JunctionState & >()))>::value >, decltype(std::declval< T & >().advance(uint16_t{})), std::enable_if_t< detail::has_energy_reset< T >::value > > >
 
struct  is_friction_law
 
struct  is_friction_law< T, std::void_t< decltype(std::declval< T & >().set_force_su(0.0f)), std::enable_if_t< detail::returns_float< decltype(std::declval< T & >().process(0.0f))>::value >, std::enable_if_t< std::is_same< decltype(std::declval< const T & >().sticking()), bool >::value >, std::enable_if_t< detail::returns_float< decltype(std::declval< const T & >().limit())>::value >, decltype(std::declval< T & >().reset())> >
 
struct  is_load
 
struct  is_load< T, std::void_t< std::enable_if_t< detail::returns_float< decltype(std::declval< const T & >().admittance())>::value >, std::enable_if_t< detail::returns_float< decltype(std::declval< const T & >().history())>::value >, std::enable_if_t< detail::returns_float< decltype(std::declval< T & >().commit(0.0f))>::value >, std::enable_if_t< detail::has_energy_reset< T >::value > > >
 
struct  is_termination
 
struct  is_termination< T, std::void_t< std::enable_if_t< detail::returns_float< decltype(std::declval< T & >().reflect(0.0f))>::value >, std::enable_if_t< detail::has_energy_reset< T >::value > > >
 
struct  JunctionState
 What the guide reports at an excitation point, each sample. More...
 
class  LoadJunction
 The scattering junction between a waveguide and a lumped load. More...
 
class  MassSpringDamper
 
class  ModalResonator
 
struct  Mode
 One resonance as a string feels it, its shape at the bridge, and its shape where it is heard. More...
 
class  StringBase
 
class  StringLoop
 
class  SwitchedExciter
 
class  TableFriction
 
class  TableSet
 
class  ThermalFriction
 

Variables

constexpr uint8_t BOW_SLICES = 8
 
constexpr uint16_t BOW_SIZE = 256
 
constexpr uint16_t BOW_STRIDE = BOW_SIZE + 1
 
constexpr BowTable BOW_STK = {lut::bow_stk_256, lut::bow_stk_limits, BOW_SLICES, BOW_SIZE, BOW_STRIDE, 1.0f}
 STK's exponential family — the bow Davis Jr. plays.
 
constexpr BowTable BOW_STRIBECK = {lut::bow_stribeck_256, lut::bow_stribeck_limits, BOW_SLICES, BOW_SIZE, BOW_STRIDE, 1.0f}
 The Stribeck family.
 
constexpr BowTable BOWS [2] = {BOW_STRIBECK, BOW_STK}
 Both, in the order a bow-select port crossfades them.
 
template<typename T >
constexpr bool is_load_v = is_load<T>::value
 
template<typename T >
constexpr bool is_exciter_v = is_exciter<T>::value
 
template<typename T >
constexpr bool is_termination_v = is_termination<T>::value
 
template<typename T >
constexpr bool is_friction_law_v = is_friction_law<T>::value
 
template<typename T >
constexpr bool is_described_v = is_described<T>::value
 
template<typename F >
constexpr bool is_wave_callable_v = std::is_invocable_r_v<float, F, float>
 

Variable Documentation

◆ BOW_SLICES

constexpr uint8_t sbl::dsp::pm::BOW_SLICES = 8
inlineconstexpr

Definition at line 18 of file bow_tables.hpp.

◆ BOW_SIZE

constexpr uint16_t sbl::dsp::pm::BOW_SIZE = 256
inlineconstexpr

Definition at line 19 of file bow_tables.hpp.

◆ BOW_STRIDE

constexpr uint16_t sbl::dsp::pm::BOW_STRIDE = BOW_SIZE + 1
inlineconstexpr

Definition at line 20 of file bow_tables.hpp.

◆ BOW_STK

constexpr BowTable sbl::dsp::pm::BOW_STK = {lut::bow_stk_256, lut::bow_stk_limits, BOW_SLICES, BOW_SIZE, BOW_STRIDE, 1.0f}
inlineconstexpr

STK's exponential family — the bow Davis Jr. plays.

Definition at line 23 of file bow_tables.hpp.

◆ BOW_STRIBECK

constexpr BowTable sbl::dsp::pm::BOW_STRIBECK = {lut::bow_stribeck_256, lut::bow_stribeck_limits, BOW_SLICES, BOW_SIZE, BOW_STRIDE, 1.0f}
inlineconstexpr

The Stribeck family.

Definition at line 26 of file bow_tables.hpp.

◆ BOWS

constexpr BowTable sbl::dsp::pm::BOWS[2] = {BOW_STRIBECK, BOW_STK}
inlineconstexpr

Both, in the order a bow-select port crossfades them.

Definition at line 29 of file bow_tables.hpp.

◆ is_load_v

template<typename T >
constexpr bool sbl::dsp::pm::is_load_v = is_load<T>::value
inlineconstexpr

Definition at line 74 of file contracts.hpp.

◆ is_exciter_v

template<typename T >
constexpr bool sbl::dsp::pm::is_exciter_v = is_exciter<T>::value
inlineconstexpr

Definition at line 86 of file contracts.hpp.

◆ is_termination_v

template<typename T >
constexpr bool sbl::dsp::pm::is_termination_v = is_termination<T>::value
inlineconstexpr

Definition at line 97 of file contracts.hpp.

◆ is_friction_law_v

template<typename T >
constexpr bool sbl::dsp::pm::is_friction_law_v = is_friction_law<T>::value
inlineconstexpr

Definition at line 111 of file contracts.hpp.

◆ is_described_v

template<typename T >
constexpr bool sbl::dsp::pm::is_described_v = is_described<T>::value
inlineconstexpr

Definition at line 123 of file contracts.hpp.

◆ is_wave_callable_v

template<typename F >
constexpr bool sbl::dsp::pm::is_wave_callable_v = std::is_invocable_r_v<float, F, float>
inlineconstexpr

Definition at line 128 of file contracts.hpp.