dxd - dynax driver framework 3.0.0d222
cross platform open source driver development framework
Loading...
Searching...
No Matches
dx::test::device< super_device_t, _engine_t >::impulse Struct Reference

one impulse test: what an analog loop keeps is its timing alone More...

#include <dx_test_device.h>

Collaboration diagram for dx::test::device< super_device_t, _engine_t >::impulse:

Public Attributes

int32_t deviation {}
 dB the loop stands off its target where the level's range cannot take it up: 0 right, below too quiet
double energy {}
 this period's summed input power
uint32_t latency {}
 the last period's round trip, 0 while none was found - a loop never has 0
double level {ceiling}
 the impulse's peak, full scale 1
mask mask
uint64_t peak {}
 this period's loudest input magnitude
uint32_t period
 samples from impulse to impulse: longer than the round trip, which it measures modulo
struct { 
   double   angle {} 
 the last period's phase More...
   int32_t   deviation {} 
 as the impulse's, the sine's loop More...
   double   iq [2] {} 
 this period's input against the reference More...
   double   level {ceiling} 
 the sine's peak, full scale 1 More...
   double   phasor [2] {1., 0.} 
 the reference, turned a sample at a time: cos, sin More...
   double   step [2] {1., 0.} 
 one sample's turn, none without a sine More...
   double   tolerance {} 
 half a sample's turn More...
} phase
uint32_t position {}
 its phase in the period
uint64_t sample {}
 the running sample count out and in alike: an impulse leaves at every multiple of period

Static Public Attributes

static constexpr double ceiling {.9}
 the loop's peak wanted, the level's range - ceiling the clip limit in as well - full scale 1
static constexpr double floor {.001}
static constexpr double full {2147483648.}
 full scale of io_t
static constexpr double margin {100.}
 the power the loudest sample stands above the period's mean to count: 20dB
static constexpr double target {.25}

Detailed Description

template<typename super_device_t, typename _engine_t = typename super_device_t::group_t>
struct dx::test::device< super_device_t, _engine_t >::impulse

one impulse test: what an analog loop keeps is its timing alone

A band limited impulse every period on the lowest masked out channel, the loudest sample of each period on the lowest masked in channel against the rest's noise gives the round trip, a step beyond a sample a slip. The level calibrates itself: each period takes the loop's peak to target, and where the level's range cannot, deviation names the dB the loop stands off it - 0 right, below too quiet, above too loud - the physical gain to change by that much. Optionally a sine in parallel on the next masked pair, its level calibrated the same way on its own: its phase against the reference over each period, a step beyond half a sample's turn a slip - it sees a lost or doubled sample the impulse's tolerance lets pass; a sine off its target has no phase to trust and counts as a slip.

Member Data Documentation

◆ angle

template<typename super_device_t, typename _engine_t = typename super_device_t::group_t>
double dx::test::device< super_device_t, _engine_t >::impulse::angle {}

the last period's phase

◆ ceiling

template<typename super_device_t, typename _engine_t = typename super_device_t::group_t>
double dx::test::device< super_device_t, _engine_t >::impulse::ceiling {.9}
static

the loop's peak wanted, the level's range - ceiling the clip limit in as well - full scale 1

◆ deviation

template<typename super_device_t, typename _engine_t = typename super_device_t::group_t>
int32_t dx::test::device< super_device_t, _engine_t >::impulse::deviation {}

dB the loop stands off its target where the level's range cannot take it up: 0 right, below too quiet

as the impulse's, the sine's loop

◆ energy

template<typename super_device_t, typename _engine_t = typename super_device_t::group_t>
double dx::test::device< super_device_t, _engine_t >::impulse::energy {}

this period's summed input power

◆ floor

template<typename super_device_t, typename _engine_t = typename super_device_t::group_t>
double dx::test::device< super_device_t, _engine_t >::impulse::floor {.001}
static

◆ full

template<typename super_device_t, typename _engine_t = typename super_device_t::group_t>
double dx::test::device< super_device_t, _engine_t >::impulse::full {2147483648.}
staticconstexpr

full scale of io_t

◆ iq

template<typename super_device_t, typename _engine_t = typename super_device_t::group_t>
double dx::test::device< super_device_t, _engine_t >::impulse::iq[2] {}

this period's input against the reference

◆ latency

template<typename super_device_t, typename _engine_t = typename super_device_t::group_t>
uint32_t dx::test::device< super_device_t, _engine_t >::impulse::latency {}

the last period's round trip, 0 while none was found - a loop never has 0

◆ level

template<typename super_device_t, typename _engine_t = typename super_device_t::group_t>
double dx::test::device< super_device_t, _engine_t >::impulse::level {ceiling}

the impulse's peak, full scale 1

the sine's peak, full scale 1

◆ margin

template<typename super_device_t, typename _engine_t = typename super_device_t::group_t>
double dx::test::device< super_device_t, _engine_t >::impulse::margin {100.}
staticconstexpr

the power the loudest sample stands above the period's mean to count: 20dB

◆ mask

template<typename super_device_t, typename _engine_t = typename super_device_t::group_t>
mask dx::test::device< super_device_t, _engine_t >::impulse::mask

◆ peak

template<typename super_device_t, typename _engine_t = typename super_device_t::group_t>
uint64_t dx::test::device< super_device_t, _engine_t >::impulse::peak {}

this period's loudest input magnitude

◆ period

template<typename super_device_t, typename _engine_t = typename super_device_t::group_t>
uint32_t dx::test::device< super_device_t, _engine_t >::impulse::period

samples from impulse to impulse: longer than the round trip, which it measures modulo

◆ [struct]

struct { ... } dx::test::device< super_device_t, _engine_t >::impulse::phase

◆ phasor

template<typename super_device_t, typename _engine_t = typename super_device_t::group_t>
double dx::test::device< super_device_t, _engine_t >::impulse::phasor[2] {1., 0.}

the reference, turned a sample at a time: cos, sin

◆ position

template<typename super_device_t, typename _engine_t = typename super_device_t::group_t>
uint32_t dx::test::device< super_device_t, _engine_t >::impulse::position {}

its phase in the period

◆ sample

template<typename super_device_t, typename _engine_t = typename super_device_t::group_t>
uint64_t dx::test::device< super_device_t, _engine_t >::impulse::sample {}

the running sample count out and in alike: an impulse leaves at every multiple of period

◆ step

template<typename super_device_t, typename _engine_t = typename super_device_t::group_t>
double dx::test::device< super_device_t, _engine_t >::impulse::step[2] {1., 0.}

one sample's turn, none without a sine

◆ target

template<typename super_device_t, typename _engine_t = typename super_device_t::group_t>
double dx::test::device< super_device_t, _engine_t >::impulse::target {.25}
staticconstexpr

◆ tolerance

template<typename super_device_t, typename _engine_t = typename super_device_t::group_t>
double dx::test::device< super_device_t, _engine_t >::impulse::tolerance {}

half a sample's turn


The documentation for this struct was generated from the following file:

(c) copyright 2009 dynamic acoustics e.U. generated on

a closed source license may be obtained by requesting a written permission from dynamic acoustics e.U.
however - governmental use generally and military use especially is strictly prohibited though.