Skip to content

Commit

Permalink
Improve units in GlideSweep
Browse files Browse the repository at this point in the history
  • Loading branch information
tobiashienzsch committed May 23, 2024
1 parent d32923d commit ee79670
Show file tree
Hide file tree
Showing 3 changed files with 5 additions and 7 deletions.
6 changes: 2 additions & 4 deletions src/ra/generator/GlideSweep.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,6 @@ namespace ra {
// - n2 is the ending sample index of the sweep.
auto generate(GlideSweep const& spec) -> std::vector<float>
{
using Seconds = std::chrono::duration<double>;

auto scaleFrequency = [curve = spec.curve](auto f1, auto f2, auto t) {
if (curve == GlideSweep::Curve::Logarithmic) {
return std::pow(f1 * (f2 / f1), t);
Expand All @@ -37,10 +35,10 @@ auto generate(GlideSweep const& spec) -> std::vector<float>
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<size_t>(std::chrono::duration_cast<Seconds>(spec.duration).count() * fs);
auto const numSamples = static_cast<size_t>((spec.duration * fs).numerical_value_in(one));

auto buffer = std::vector<float>(numSamples, 0.0F);
auto osc = SineOscillator<double>{fs};
auto osc = SineOscillator<double>{fs.numerical_value_in(si::hertz)};

for (auto i{0UL}; i < numSamples; ++i) {
auto const t = static_cast<double>(i) / static_cast<double>(numSamples - 1);
Expand Down
4 changes: 2 additions & 2 deletions src/ra/generator/GlideSweep.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@ struct GlideSweep
quantity<isq::frequency[si::hertz]> from{20.0 * si::hertz};
quantity<isq::frequency[si::hertz]> to{20'000.0 * si::hertz};
Curve curve{Curve::Linear};
std::chrono::milliseconds duration{1'000};
double sampleRate{44'100.0};
quantity<isq::duration[si::second]> duration{1.0 * si::second};
quantity<isq::frequency[si::hertz]> sampleRate{44'100.0 * si::hertz};
};

[[nodiscard]] auto generate(GlideSweep const& spec) -> std::vector<float>;
Expand Down
2 changes: 1 addition & 1 deletion tool/RaumAkustik/tool/measurement_recorder.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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,
});
}

Expand Down

0 comments on commit ee79670

Please sign in to comment.