// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md #pragma once #include "Profile.hpp" namespace audio { class ProfileRoutingLoudspeaker : public Profile { static constexpr uint32_t sampleRate = 16000; public: ProfileRoutingLoudspeaker(Volume volume, Gain gain) : Profile("Routing Speakerphone", Type::RoutingLoudspeaker, purefs::dir::getSystemDataDirPath() / "equalizer/loudspeaker_routing.json", audio::codec::Configuration{ .sampleRate_Hz = sampleRate, .bitWidth = 16, .flags = static_cast( audio::codec::Flags::InputLeft) | // microphone use left audio channel static_cast(audio::codec::Flags::OutputMono), .outputVolume = 1, .inputGain = 0, .playbackPathGain = 0, .playbackPathAtten = 2, .inputPath = audio::codec::InputPath::Microphone, .outputPath = audio::codec::OutputPath::Loudspeaker, .filterCoefficients = {qfilter_CalculateCoeffs( audio::equalizer::FilterType::HighPass, 501.8f, sampleRate, 0.701f, 0), qfilter_CalculateCoeffs( audio::equalizer::FilterType::Parametric, 2800.f, sampleRate, 3.f, -4), qfilter_CalculateCoeffs( audio::equalizer::FilterType::Parametric, 4500.f, sampleRate, 3.f, -6), qfilter_CalculateCoeffs( audio::equalizer::FilterType::Parametric, 7100.f, sampleRate, 3.f, -3), qfilter_CalculateCoeffs( audio::equalizer::FilterType::Parametric, 2000.f, sampleRate, 2.f, 6)}}, AudioDevice::Type::Audiocodec) { audioConfiguration.sampleRate_Hz = sampleRate; audioConfiguration.outputVolume = static_cast(volume); audioConfiguration.inputGain = static_cast(gain); } }; } // namespace audio