2016-05-07 15:10:57 -07:00
|
|
|
#include "amuse/Submix.hpp"
|
|
|
|
|
2018-12-07 21:20:09 -08:00
|
|
|
namespace amuse {
|
2016-05-07 15:10:57 -07:00
|
|
|
|
2016-07-13 21:54:46 -07:00
|
|
|
Submix::Submix(Engine& engine) : m_root(engine) {}
|
2016-05-07 15:10:57 -07:00
|
|
|
|
2018-12-07 21:20:09 -08:00
|
|
|
EffectChorus& Submix::makeChorus(uint32_t baseDelay, uint32_t variation, uint32_t period) {
|
|
|
|
return makeEffect<EffectChorus>(baseDelay, variation, period);
|
2016-05-09 00:22:58 -07:00
|
|
|
}
|
|
|
|
|
2018-12-07 21:20:09 -08:00
|
|
|
EffectChorus& Submix::makeChorus(const EffectChorusInfo& info) { return makeEffect<EffectChorus>(info); }
|
2017-01-22 23:21:50 -08:00
|
|
|
|
2018-12-07 21:20:09 -08:00
|
|
|
EffectDelay& Submix::makeDelay(uint32_t initDelay, uint32_t initFeedback, uint32_t initOutput) {
|
|
|
|
return makeEffect<EffectDelay>(initDelay, initFeedback, initOutput);
|
2016-05-09 00:22:58 -07:00
|
|
|
}
|
|
|
|
|
2018-12-07 21:20:09 -08:00
|
|
|
EffectDelay& Submix::makeDelay(const EffectDelayInfo& info) { return makeEffect<EffectDelay>(info); }
|
2017-01-22 23:21:50 -08:00
|
|
|
|
2018-12-07 21:20:09 -08:00
|
|
|
EffectReverbStd& Submix::makeReverbStd(float coloration, float mix, float time, float damping, float preDelay) {
|
|
|
|
return makeEffect<EffectReverbStd>(coloration, mix, time, damping, preDelay);
|
2016-05-09 00:22:58 -07:00
|
|
|
}
|
|
|
|
|
2018-12-07 21:20:09 -08:00
|
|
|
EffectReverbStd& Submix::makeReverbStd(const EffectReverbStdInfo& info) { return makeEffect<EffectReverbStd>(info); }
|
2017-01-22 23:21:50 -08:00
|
|
|
|
2016-07-13 21:54:46 -07:00
|
|
|
EffectReverbHi& Submix::makeReverbHi(float coloration, float mix, float time, float damping, float preDelay,
|
2018-12-07 21:20:09 -08:00
|
|
|
float crosstalk) {
|
|
|
|
return makeEffect<EffectReverbHi>(coloration, mix, time, damping, preDelay, crosstalk);
|
2016-05-13 21:46:39 -07:00
|
|
|
}
|
|
|
|
|
2018-12-07 21:20:09 -08:00
|
|
|
EffectReverbHi& Submix::makeReverbHi(const EffectReverbHiInfo& info) { return makeEffect<EffectReverbHi>(info); }
|
2017-01-22 23:21:50 -08:00
|
|
|
|
2018-12-07 21:20:09 -08:00
|
|
|
void Submix::applyEffect(int16_t* audio, size_t frameCount, const ChannelMap& chanMap) const {
|
|
|
|
for (const std::unique_ptr<EffectBaseTypeless>& effect : m_effectStack)
|
|
|
|
((EffectBase<int16_t>&)*effect).applyEffect(audio, frameCount, chanMap);
|
2016-05-13 21:46:39 -07:00
|
|
|
}
|
|
|
|
|
2018-12-07 21:20:09 -08:00
|
|
|
void Submix::applyEffect(int32_t* audio, size_t frameCount, const ChannelMap& chanMap) const {
|
|
|
|
for (const std::unique_ptr<EffectBaseTypeless>& effect : m_effectStack)
|
|
|
|
((EffectBase<int32_t>&)*effect).applyEffect(audio, frameCount, chanMap);
|
2016-05-13 21:46:39 -07:00
|
|
|
}
|
|
|
|
|
2018-12-07 21:20:09 -08:00
|
|
|
void Submix::applyEffect(float* audio, size_t frameCount, const ChannelMap& chanMap) const {
|
|
|
|
for (const std::unique_ptr<EffectBaseTypeless>& effect : m_effectStack)
|
|
|
|
((EffectBase<float>&)*effect).applyEffect(audio, frameCount, chanMap);
|
2016-05-09 00:22:58 -07:00
|
|
|
}
|
|
|
|
|
2018-12-07 21:20:09 -08:00
|
|
|
void Submix::resetOutputSampleRate(double sampleRate) {
|
|
|
|
for (const std::unique_ptr<EffectBaseTypeless>& effect : m_effectStack)
|
|
|
|
effect->resetOutputSampleRate(sampleRate);
|
2016-05-07 15:10:57 -07:00
|
|
|
}
|
2018-12-07 21:20:09 -08:00
|
|
|
} // namespace amuse
|