diff --git a/.DS_Store b/.DS_Store index cc4bbfb..9913514 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/Aufgabe1_2 b/Aufgabe1_2_3 similarity index 73% rename from Aufgabe1_2 rename to Aufgabe1_2_3 index 02dba33..d3c0b8c 100755 Binary files a/Aufgabe1_2 and b/Aufgabe1_2_3 differ diff --git a/Aufgabe1_2.cpp b/Aufgabe1_2_3.cpp similarity index 61% rename from Aufgabe1_2.cpp rename to Aufgabe1_2_3.cpp index a866de6..558e74e 100644 --- a/Aufgabe1_2.cpp +++ b/Aufgabe1_2_3.cpp @@ -1,5 +1,6 @@ #include +// Aufgabe 1 // Template für flexiblen Array Typ template class Container { @@ -33,7 +34,7 @@ public: data = new T[initial_arr_size]; } - // Destruktor + // Destruktor ? ~Container() { // Speicherfreigabe von Array Inhalt // delete[] data; @@ -55,7 +56,9 @@ public: } }; -Container readWavFile(){ +// Aufgabe 2 +// Liest "test.wav" im Projektordner ein und gibt ein char Array mit dem Inhalt zurück +Container wavFileToArr(){ // Erstellen der Klasseninstanz mit Konstruktor Container wavData(0); @@ -91,9 +94,50 @@ Container readWavFile(){ return wavData; }; +// Aufgabe 3 +// Transformiert "test.wav" im Projektordner zu einer Version mit 8000 Delay Echo +void wavFileEcho(){ + // FILE pointer output öffnet "output.wav" mit Schreibrechten + FILE* output = fopen("output.wav","w"); + // Erstellung Array Instanz mit Methode zum Einlesen von Wav Dateien + Container sound_samples = wavFileToArr(); + // Erstellung Array Instanz für Ringbuffer + Container ringbuffer(0); + // Übergangsvariable für später + char mem; + // Index für Ringbuffer + int index = 0; + + // Füllen des dynamischen Array vom Ringbuffer mit 0en + for(int i = 0; i<8000; i++){ + ringbuffer[i] = 0; + } + + // Anfang bei i=44, weil ab da die Headerdatei fertig ist + for(int i = 44; i 0 ist + sound_samples[i] = sound_samples[i] + ringbuffer[index]; + // Ringbuffer bekommt Übergangsvariable übergeben + ringbuffer[index] = mem; + // Index erhöhen bis alle 8000stel + index = (index+1)%8000; + + } + + // Schreiben der output.wav aus aktualisierten sound_samples.data + fwrite(sound_samples.data, sizeof(char), sound_samples.getArraySize(), output); + // Freigabe des FILE Pointer + fclose(output); +} + int main() { - std::cout << "wavData: " << readWavFile().getArraySize() << std::endl; + wavFileEcho(); + + std::cout << "wavFile Size: " << wavFileToArr().getArraySize() << std::endl; return 0; }; diff --git a/output.wav b/output.wav new file mode 100644 index 0000000..a064aad Binary files /dev/null and b/output.wav differ diff --git a/test.wav b/test.wav index 3179e0e..b05ec79 100644 Binary files a/test.wav and b/test.wav differ