Files
jak-project/game/sound/common/synth.cpp
Tyler Wilding 60db0e5ef9 deps: update fmt to latest version (#3403)
This updates `fmt` to the latest version and moves to just being a copy
of their repo to make updating easier (no editing their cmake / figuring
out which files to minimally include).

The motivation for this is now that we switched to C++ 20, there were a
ton of deprecated function usages that is going away in future compiler
versions. This gets rid of all those warnings.
2024-03-05 22:11:52 -05:00

38 lines
742 B
C++

// Copyright: 2021 - 2024, Ziemas
// SPDX-License-Identifier: ISC
#include "synth.h"
#include <stdexcept>
namespace snd {
static s16 ApplyVolume(s16 sample, s32 volume) {
return (sample * volume) >> 15;
}
s16Output Synth::Tick() {
s16Output out{};
mVoices.remove_if([](std::shared_ptr<Voice>& v) { return v->Dead(); });
for (auto& v : mVoices) {
out += v->Run();
}
out.left = ApplyVolume(out.left, mVolume.left.Get());
out.right = ApplyVolume(out.right, mVolume.right.Get());
mVolume.Run();
return out;
}
void Synth::AddVoice(std::shared_ptr<Voice> voice) {
mVoices.emplace_front(voice);
}
void Synth::SetMasterVol(u32 volume) {
mVolume.left.Set(volume);
mVolume.right.Set(volume);
}
} // namespace snd