修复mixer音量不正确

This commit is contained in:
Nanako 2024-05-26 17:32:29 +08:00
parent 84e6bd7b58
commit 9b018b3363
3 changed files with 9 additions and 6 deletions

View File

@ -129,8 +129,6 @@ void mixer::process(uint32_t in_frames) {
return;
e->run(taskflow_).wait();
post_process(in_frames);
// dummy_track* master = get_master();
// master->buffer.multiple(master->volume);
}
void mixer::reset() {

View File

@ -50,13 +50,15 @@ void mixer_track::remove_child(mixer_track* in_child) {
void mixer_track::process(uint32_t in_frames) {
for (auto effect : effects)
effect->process(in_frames);
buffer.multiple(volume);
// buffer.multiple(volume);
on_processed.broadcast(this);
}
void mixer_track::post_process(uint32_t in_frames) {
buffer.multiple(get_volume());
for (int i = 0; i < buffer.get_num_channels(); ++i) {
(*ui_buffers)[i].Push(buffer.get_headers()[i], in_frames);
ui_buffer_type& ui_buffer = (*ui_buffers)[i];
ui_buffer.Push(buffer.get_headers()[i], in_frames);
}
}

View File

@ -20,8 +20,11 @@ struct mixer_track_link {
class mixer_track {
public:
using ui_buffer_type = circular_audio_buffer<float>;
using ui_buffer_vector_type = std::vector<ui_buffer_type>;
explicit mixer_track(mixer_track_type in_type) : type_(in_type) {
ui_buffers = std::make_shared<std::vector<circular_audio_buffer<float>>>();
ui_buffers = std::make_shared<ui_buffer_vector_type>();
}
virtual ~mixer_track();
@ -47,7 +50,7 @@ public:
[[nodiscard]] float get_volume() const { return volume; }
audio_buffer buffer;
std::shared_ptr<std::vector<circular_audio_buffer<float>>> ui_buffers;
std::shared_ptr<ui_buffer_vector_type> ui_buffers;
std::vector<plugin_host*> effects{};
std::vector<mixer_track_link> children{};
multicast_delegate<mixer_track*> on_processed;