summaryrefslogtreecommitdiff
path: root/os2eindopdracht/SampleStream.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'os2eindopdracht/SampleStream.cpp')
-rw-r--r--os2eindopdracht/SampleStream.cpp28
1 files changed, 28 insertions, 0 deletions
diff --git a/os2eindopdracht/SampleStream.cpp b/os2eindopdracht/SampleStream.cpp
index e69de29..b9fd542 100644
--- a/os2eindopdracht/SampleStream.cpp
+++ b/os2eindopdracht/SampleStream.cpp
@@ -0,0 +1,28 @@
+#include <algorithm>
+
+#include "SampleStream.h"
+
+using std::string;
+
+SampleStream::SampleStream(string input_stream) {
+ load(input_stream);
+
+ // test direct sample editing:
+ // std::transform(_stream.begin(), _stream.end(), _stream.begin(), [](int16_t s) { return s/2; });
+}
+
+void SampleStream::load(string input) {
+ _stream.clear();
+ for (unsigned long i = 0; i < input.size(); i += 2)
+ _stream.push_back(((input[i] & 0xff) << 0) | ((input[i+1] & 0xff) << 8));
+}
+
+string SampleStream::save() {
+ string out;
+ for (int16_t sample : _stream) {
+ out.push_back((sample >> 0) & 0xff);
+ out.push_back((sample >> 8) & 0xff);
+ }
+ return out;
+}
+