修复mixer音量不正确
This commit is contained in:
parent
84e6bd7b58
commit
9b018b3363
@ -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() {
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user