From 33613a85afc4b1481367fbe92a17ee59c240250b Mon Sep 17 00:00:00 2001 From: Sven Eisenhauer Date: Fri, 10 Nov 2023 15:11:48 +0100 Subject: add new repo --- .../Superposition/src/WavefileSuperposition.cpp | 77 ++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 Master/Modellbildung_und_Simulation/Aufgabenblatt1/Superposition/src/WavefileSuperposition.cpp (limited to 'Master/Modellbildung_und_Simulation/Aufgabenblatt1/Superposition/src/WavefileSuperposition.cpp') diff --git a/Master/Modellbildung_und_Simulation/Aufgabenblatt1/Superposition/src/WavefileSuperposition.cpp b/Master/Modellbildung_und_Simulation/Aufgabenblatt1/Superposition/src/WavefileSuperposition.cpp new file mode 100644 index 0000000..91e16a2 --- /dev/null +++ b/Master/Modellbildung_und_Simulation/Aufgabenblatt1/Superposition/src/WavefileSuperposition.cpp @@ -0,0 +1,77 @@ +/* + * WavefileSuperposition.cpp + * + * Created on: 01.04.2011 + * Author: sven + */ + +#ifndef WAVEFILESUPERPOSITION_H_ + #include "WavefileSuperposition.h" +#endif +#ifndef _GLIBCXX_IOSTREAM + #include +#endif + +#ifndef _GLIBCXX_FSTREAM + #include +#endif + +#ifndef _GLIBCXX_NUMERIC_LIMITS + #include +#endif + +WavefileSuperposition::WavefileSuperposition(SuperpositionParameters& params) +{ + std::cout << "superposing " << params.getSourceFileOne() << " and " << params.getSourceFileTwo() + << " to " << params.getDestinationFile() << std::endl; + std::ofstream supFile; + std::ifstream srcFile1; + std::ifstream srcFile2; + srcFile1.open(params.getSourceFileOne().c_str(), std::ios::in | std::ios::binary); + srcFile2.open(params.getSourceFileTwo().c_str(), std::ios::in | std::ios::binary); + supFile.open(params.getDestinationFile().c_str(), std::ios::out | std::ios::binary); + int dataStartOffset = 0x28; + char header[dataStartOffset]; + srcFile1.read(&header[0],dataStartOffset); + supFile.write(&header[0],dataStartOffset); + int numSamples; + srcFile1.read((char*) &numSamples,sizeof(numSamples)); + std::cout<<"Processing "<< numSamples << " samples" << std::endl; + srcFile2.seekg(srcFile1.tellg()); + supFile.write((char*) &numSamples,sizeof(numSamples)); + if (!(srcFile1.tellg() == srcFile2.tellg()) || !(srcFile1.tellg() == supFile.tellp()) ) { + std::cout << "file positions not in sync" << std::endl; + return; + } + short data1; + short data2; + int result; + short shortResult; + for (int i=0;i std::numeric_limits::max()) + { + shortResult = std::numeric_limits::max(); + } + else if (result < std::numeric_limits::min()) + { + shortResult = std::numeric_limits::min(); + } else + { + shortResult = static_cast(result); + } + supFile.write((char*) &shortResult,sizeof(shortResult)); + i += sizeof(short); + } + supFile.close(); + srcFile1.close(); + srcFile2.close(); + std::cout<<"done" << std::endl; +} + +WavefileSuperposition::~WavefileSuperposition() { + // TODO Auto-generated destructor stub +} -- cgit v1.2.3