diff --git a/src/ra/generator/GlideSweep.cpp b/src/ra/generator/GlideSweep.cpp index fd08eef..e50ca58 100644 --- a/src/ra/generator/GlideSweep.cpp +++ b/src/ra/generator/GlideSweep.cpp @@ -25,8 +25,6 @@ namespace ra { // - n2 is the ending sample index of the sweep. auto generate(GlideSweep const& spec) -> std::vector { - using Seconds = std::chrono::duration; - auto scaleFrequency = [curve = spec.curve](auto f1, auto f2, auto t) { if (curve == GlideSweep::Curve::Logarithmic) { return std::pow(f1 * (f2 / f1), t); @@ -37,10 +35,10 @@ auto generate(GlideSweep const& spec) -> std::vector auto const fs = spec.sampleRate; auto const f1 = spec.from.numerical_value_in(si::hertz); auto const f2 = spec.to.numerical_value_in(si::hertz); - auto const numSamples = static_cast(std::chrono::duration_cast(spec.duration).count() * fs); + auto const numSamples = static_cast((spec.duration * fs).numerical_value_in(one)); auto buffer = std::vector(numSamples, 0.0F); - auto osc = SineOscillator{fs}; + auto osc = SineOscillator{fs.numerical_value_in(si::hertz)}; for (auto i{0UL}; i < numSamples; ++i) { auto const t = static_cast(i) / static_cast(numSamples - 1); diff --git a/src/ra/generator/GlideSweep.hpp b/src/ra/generator/GlideSweep.hpp index 92e1802..81d1c85 100644 --- a/src/ra/generator/GlideSweep.hpp +++ b/src/ra/generator/GlideSweep.hpp @@ -23,8 +23,8 @@ struct GlideSweep quantity from{20.0 * si::hertz}; quantity to{20'000.0 * si::hertz}; Curve curve{Curve::Linear}; - std::chrono::milliseconds duration{1'000}; - double sampleRate{44'100.0}; + quantity duration{1.0 * si::second}; + quantity sampleRate{44'100.0 * si::hertz}; }; [[nodiscard]] auto generate(GlideSweep const& spec) -> std::vector; diff --git a/tool/RaumAkustik/tool/measurement_recorder.cpp b/tool/RaumAkustik/tool/measurement_recorder.cpp index 9f21604..c3d3f09 100644 --- a/tool/RaumAkustik/tool/measurement_recorder.cpp +++ b/tool/RaumAkustik/tool/measurement_recorder.cpp @@ -82,7 +82,7 @@ void MeasurementRecorder::audioDeviceAboutToStart(juce::AudioIODevice* device) .to = 20'000.0 * si::hertz, .curve = GlideSweep::Curve::Logarithmic, .duration = std::chrono::milliseconds{10'000}, - .sampleRate = _sampleRate, + .sampleRate = _sampleRate * si::hertz, }); }