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
contracts.hpp File Reference

What a load, an exciter, a termination and a friction law provide (Physical modeling — cross-cutting) More...

Detailed Description

What a load, an exciter, a termination and a friction law provide (Physical modeling — cross-cutting)

Definition in file contracts.hpp.

#include <cstdint>
#include <type_traits>
#include <utility>
#include <sbl/dsp/diagram/graph.hpp>

Go to the source code of this file.

Classes

struct  sbl::dsp::pm::JunctionState
 What the guide reports at an excitation point, each sample. More...
 
struct  sbl::dsp::pm::detail::has_energy_reset< T, typename >
 
struct  sbl::dsp::pm::detail::has_energy_reset< T, std::void_t< std::enable_if_t< returns_float< decltype(std::declval< const T & >().energy())>::value >, decltype(std::declval< T & >().reset())> >
 
struct  sbl::dsp::pm::is_load< T, typename >
 
struct  sbl::dsp::pm::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  sbl::dsp::pm::is_exciter< T, typename >
 
struct  sbl::dsp::pm::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  sbl::dsp::pm::is_termination< T, typename >
 
struct  sbl::dsp::pm::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  sbl::dsp::pm::is_friction_law< T, typename >
 
struct  sbl::dsp::pm::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  sbl::dsp::pm::is_described< T, typename >
 
struct  sbl::dsp::pm::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 > > >
 

Namespaces

namespace  sbl
 Root namespace for all Sound Byte Libs code.
 
namespace  sbl::dsp
 
namespace  sbl::dsp::pm
 Physical modeling: laws, bows, junctions, loads, resonators, strings (docs/conventions/physical-modeling.md).
 
namespace  sbl::dsp::pm::detail
 

Typedefs

template<typename T >
using sbl::dsp::pm::detail::returns_float = std::is_same< std::decay_t< T >, float >
 

Variables

template<typename T >
constexpr bool sbl::dsp::pm::is_load_v = is_load<T>::value
 
template<typename T >
constexpr bool sbl::dsp::pm::is_exciter_v = is_exciter<T>::value
 
template<typename T >
constexpr bool sbl::dsp::pm::is_termination_v = is_termination<T>::value
 
template<typename T >
constexpr bool sbl::dsp::pm::is_friction_law_v = is_friction_law<T>::value
 
template<typename T >
constexpr bool sbl::dsp::pm::is_described_v = is_described<T>::value
 
template<typename F >
constexpr bool sbl::dsp::pm::is_wave_callable_v = std::is_invocable_r_v<float, F, float>