Die Effekte und die Algorithmen auf dem Target zu testen, ist aufwändig. Aus dem Grund ist eine Simulationsumgebung entstanden, um die Algorithmen in Windows Umgebung effizient zu testen.
Das Programm kann als ein Wrapper für die Hauptroutine vorgestellt werden. Es wird hauptsächlich eine Audio-Datei eingelesen und serialisiert. Dann wird der Inhalt der Audio-Datei serialisiert und in die DSP-Hauptroutine gespeist. Das Ergebnis wird dann wiederum deserialisiert und als eine Ergebnisdatei abgelegt.
Main-Routine
Der Ablauf der Main-Routine ist im oberen Diagramm gezeigt. Die Implementierung ist folgendermaßen:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
int main(void) { //Create the instances ser_deser inst_ser; //Initialize printf("Initializing\n"); inst_ser.init(); //Set the input&output files inst_ser.inst_wav.input_file= "samples/Guitar_Rythm_dry_16bit_mono.wav"; inst_ser.inst_wav.output_file= "samples/Guitar_Rythm_16bit_processed.wav"; //Read wave file inst_ser.inst_wav.read_wav(); //Process printf("Processing\n"); inst_ser.process(); //Finish and write the output file printf("Processed successfully\n"); inst_ser.finish(); return 0; } |
Der Rest ist gleich wie im Target code.
Konfiguration / Updates
Auf dem Target werden die Benutzerinteraktionen interpretiert, um die DSP-Einstellungen zu aktualisieren. Bei der Simulation gibt es keine Echtzeit Interaktionen. Daher werden die Module mit erwünschten Einstellungen „initialisiert„. Dann laufen die Module mit diesen festen Einstellungen.
Ausnahme hierzu ist die Aktivierung der Module. Auf dem Target wird ein Wort gesendet, wo jedes Bit auf den Status eines Moduls hinweist. Hierbei muss dieser Hash aktuell manuell modifiziert werden, um die Module zu aktivieren:
1 2 3 |
/*Here comes the update hash */ //Dummy hash unsigned banks=0b100000100010001; |
Ressourcen
Der Code samt Eclipse-Projekt ist auf Github verfügbar:
Die DSP-Simulation Quellcode vom herunterladen.
Schreibe einen Kommentar