dxd - dynax driver framework 3.0.1d223
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:

Classes

struct  [struct].phase

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  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

◆ 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

◆ 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

◆ 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

◆ 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

◆ phase

struct dx::test::device::impulse::[struct].phase dx::test::device< super_device_t, _engine_t >::impulse::phase

◆ 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

◆ 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

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.