add scope widget

This commit is contained in:
2025-12-26 20:30:41 -06:00
parent cc11cfe63a
commit 6b52f8fa4f
10 changed files with 194 additions and 13 deletions

19
src/synth/ScopeBuffer.cpp Normal file
View File

@@ -0,0 +1,19 @@
#include "ScopeBuffer.h"
ScopeBuffer::ScopeBuffer(size_t size) : buffer_(size) {
}
void ScopeBuffer::push(float sample) {
size_t w = writeIndex_.fetch_add(1, std::memory_order_relaxed);
buffer_[w % buffer_.size()] = sample;
}
void ScopeBuffer::read(std::vector<float>& out) const {
size_t w = writeIndex_.load(std::memory_order_relaxed);
for (size_t i = 0; i < out.size(); i++) {
size_t idx = (w + trigger_ + i * wavelength_ / out.size()) % buffer_.size();
out[i] = buffer_[idx];
}
}