2#ifndef __ASE_SIGNALUTILS_HH__ 
    3#define __ASE_SIGNALUTILS_HH__ 
   10template<
typename Float> Float 
hz_changed (Float a, Float b);
 
   13template<
typename Float> Float 
voltage2hz (Float x);
 
   19template<
typename Float> Float 
hz2voltage (Float x);
 
   25template<
typename Float> Float 
db_changed (Float a, Float b);
 
   28template<
typename Float> Float 
voltage2db (Float x);
 
   34template<
typename Float> Float 
db2voltage (Float x);
 
   45  double r2 = 1, ir = 1; 
 
   51    auto range = ::log2l (max) - b2;
 
 
   59    return ::exp2 (b2 + normalized * r2);
 
 
   65    return (::log2 (mmvalue) - b2) * ir;
 
 
 
   70static constexpr const long double c3_hertz = 261.6255653005986346778499935233; 
 
   71static constexpr const long double c3_hertz_inv = 0.0038222564329714297410505703465146; 
 
   73template<
typename Float> 
extern inline ASE_CONST Float
 
   76  return std::exp2 (x * Float (10.0)) * Float (c3_hertz);
 
 
   79extern inline ASE_CONST 
float 
   85template<
typename Float> 
extern inline ASE_CONST Float
 
   88  return std::log2 (x * Float (c3_hertz_inv)) * Float (0.1);
 
 
   91extern inline ASE_CONST 
float 
   94  return fast_log2 (x * 
float (c3_hertz_inv)) * 0.1f;
 
 
   97template<
typename Float> 
extern inline ASE_CONST Float
 
  100  return std::log10 (std::abs (x)) * Float (20);
 
 
  103extern inline ASE_CONST 
float 
  106  return fast_log2 (__builtin_fabsf (x)) * 6.02059991327962390427477789448986f;
 
 
  109template<
typename Float> 
extern inline ASE_CONST Float
 
  112  return std::pow (10, x * Float (0.05));
 
 
  115extern inline ASE_CONST 
float 
  118  return fast_exp2 (x * 0.1660964047443681173935159714744695f);
 
 
  121template<
typename Float> 
extern inline ASE_CONST Float
 
  124  return __builtin_fabsf (a - b) > 1e-3;
 
 
  127template<
typename Float> 
extern inline ASE_CONST Float
 
  130  return __builtin_fabsf (a - b) > 1e-3;
 
 
  133template<
typename Float> 
extern inline ASE_CONST Float
 
  136  return __builtin_fabsf (a - b) > 1e-7;
 
 
The Anklang C++ API namespace.
 
float fast_voltage2hz(float x)
Float precision variant of voltage2hz using fast_exp2().
 
Float voltage2hz(Float x)
Convert synthesizer value (Voltage) to Hertz.
 
float fast_hz2voltage(float x)
Float precision variant of hz2voltage using fast_log2().
 
Float db_changed(Float a, Float b)
Determine a significant Decibel change.
 
Float hz2voltage(Float x)
Convert Hertz to synthesizer value (Voltage).
 
float fast_db2voltage(float x)
Float precision variant of db2voltage using fast_exp2().
 
float fast_voltage2db(float x)
Float precision variant of voltage2db using fast_log2().
 
Float voltage_changed(Float a, Float b)
Determine a significant synthesizer value (Voltage) change.
 
Float hz_changed(Float a, Float b)
Determine a significant frequency change (audible Hertz).
 
Float voltage2db(Float x)
Convert synthesizer value (Voltage) to Decibel.
 
Float db2voltage(Float x)
Convert Decibel to synthesizer value (Voltage).
 
Logarithmically map (and invert) a range onto 0…+1.
 
double iscale(double mmvalue) const
Calculate normalized from a scale() result within [min … max].
 
double scale(double normalized) const
Calculate scale value within [min … max] from normalized x.
 
void setup(double min, double max)
Provide minimum and maximum values to be mapped.