summaryrefslogtreecommitdiff
path: root/os2eindopdracht/FilterWorker.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'os2eindopdracht/FilterWorker.cpp')
-rw-r--r--os2eindopdracht/FilterWorker.cpp59
1 files changed, 32 insertions, 27 deletions
diff --git a/os2eindopdracht/FilterWorker.cpp b/os2eindopdracht/FilterWorker.cpp
index 7d2f315..495d3d1 100644
--- a/os2eindopdracht/FilterWorker.cpp
+++ b/os2eindopdracht/FilterWorker.cpp
@@ -1,30 +1,35 @@
+#include "FilterWorker.h"
+#include "SampleBlock.h"
-/*
- std::vector<int16_t> original;
- original = std::vector<int16_t>(stream._stream);
- for (unsigned long i = 0; i < original.size(); i++) {
- double x_pp = i < 2 ? 0 : original[i-2];
- double x_p = i < 1 ? 0 : original[i-1];
- double x_ = i < 0 ? 0 : original[i-0];
- double y_pp = i < 2 ? 0 : stream._stream[i-2];
- double y_p = i < 1 ? 0 : stream._stream[i-1];
- stream._stream[i] = args.bass.b0 * x_ +
- args.bass.b1 * x_p +
- args.bass.b2 * x_pp +
- args.bass.a1 * y_p +
- args.bass.a2 * y_pp;
+FilterWorker::FilterWorker(SampleBlock& input, SampleBlock& output) {
+ _input = &input;
+ _output = &output;
+}
+
+void FilterWorker::filter(Coefficients bass, Coefficients treble) {
+ for (size_t i = 0; i < _output->size; i++) {
+ double x_pp = i < 2 ? 0 : *(_input->begin + i - 2);
+ double x_p = i < 1 ? 0 : *(_input->begin + i - 1);
+ double x_ = i < 0 ? 0 : *(_input->begin + i - 0);
+ double y_pp = i < 2 ? 0 : *(_output->begin + i - 2);
+ double y_p = i < 1 ? 0 : *(_output->begin + i - 1);
+ *(_output->begin + i) = bass.b0 * x_ +
+ bass.b1 * x_p +
+ bass.b2 * x_pp +
+ bass.a1 * y_p +
+ bass.a2 * y_pp;
}
- original = std::vector<int16_t>(stream._stream);
- for (unsigned long i = 0; i < original.size(); i++) {
- double x_pp = i < 2 ? 0 : original[i-2];
- double x_p = i < 1 ? 0 : original[i-1];
- double x_ = i < 0 ? 0 : original[i-0];
- double y_pp = i < 2 ? 0 : stream._stream[i-2];
- double y_p = i < 1 ? 0 : stream._stream[i-1];
- stream._stream[i] = args.treble.b0 * x_ +
- args.treble.b1 * x_p +
- args.treble.b2 * x_pp +
- args.treble.a1 * y_p +
- args.treble.a2 * y_pp;
+ for (size_t i = 0; i < _output->size; i++) {
+ double x_pp = i < 2 ? 0 : *(_input->begin + i - 2);
+ double x_p = i < 1 ? 0 : *(_input->begin + i - 1);
+ double x_ = i < 0 ? 0 : *(_input->begin + i - 0);
+ double y_pp = i < 2 ? 0 : *(_output->begin + i - 2);
+ double y_p = i < 1 ? 0 : *(_output->begin + i - 1);
+ *(_output->begin + i) = treble.b0 * x_ +
+ treble.b1 * x_p +
+ treble.b2 * x_pp +
+ treble.a1 * y_p +
+ treble.a2 * y_pp;
}
-*/
+}
+