Wayverb
pcs.h
1 #pragma once
2 
3 #include "core/filters_common.h"
4 
5 #include "utilities/aligned/vector.h"
6 
7 namespace wayverb {
8 namespace waveguide {
9 
14 
15 template <typename T>
16 constexpr auto factdbl(T t) {
17  double out{1};
18  for (auto i = t; i >= 1; i -= 2) {
19  out *= i;
20  }
21  return out;
22 }
23 
24 struct offset_signal final {
25  util::aligned::vector<double> signal;
26  size_t offset;
27 };
28 
35 offset_signal maxflat(double f0, uint32_t N, double A, uint32_t h_len);
36 
38 double compute_g0(double acoustic_impedance,
39  double speed_of_sound,
40  double sample_rate,
41  double radius);
42 
49 core::filter::biquad::coefficients mech_sphere(double M,
50  double f0,
51  double Q,
52  double T);
53 
74 offset_signal design_pcs_source(size_t length,
75  double acoustic_impedance,
76  double speed_of_sound,
77  double sample_rate,
78  double radius,
79  double sphere_mass,
80  double low_cutoff_hz,
81  double low_q);
82 
83 } // namespace waveguide
84 } // namespace wayverb
Definition: filters_common.h:94
Definition: capsule_base.h:9