Guten Abend, Ich habe mich in lezter Zeit ein wenig mit Matlab beschäftigt und bin nun dabei einen Chorus zu realisieren. Meiner meinung nach ist es am einfachsten Die Audiodatei in 2 Spuren aufzuteilen (1. Problem) die zweite mit einem delay ein wenig versetzen und dann mit merge (2. Problem) wieder zusammenzuführen. Nun zu meinen Fragen: 1.Wie kann ich den Audio Input splitten? Wenn ich einfach eine Verzweigung in die Leitung ziehe meckert Matlab. 2.Wie funktioniert merge in Matlab wenn ich 2 Signale an einen merge block schliese kommt immer nur eines heraus. Ist merge vll. der falsche Ansatz? Danke im voraus nightmarevs
Gast
#1086872
Zu 1. Was meinst du mit splitten? Links/rechts?
1 | |
2 | |
3 | |
Oder dasselbe Signal zweimal haben?
1 | |
Und du willst dasselbe Signal mit sich selbst überlappen?
1 | |
Erst mal danke für die Hilfe, Genau ich will das Signal das ich von einem Audio Codec einlese Zwei mal haben und das eine dann dem zweiten zeitversezt hinzufügen. Bisher habe ich nur ein wenig Erfahrung mit Simulink und da will er Summe nicht akzeptieren und wenn ich das ganze mit merge zusammenführen will kommt nur die mit delay verzögerte spur.
Gast
#1088075
Ach herje, Simulink. Ich kann mir vorstellen dass er die Addition deswegen nicht mag, weil die Arrays nach dem Delay unterschiedlich groß sind -> prüfen.
das könnte natürlich sein, ich werde das gleich morgen prüfen. Ich habe jezt versucht das ganze in C zu realisieren dabei ist meinem wirren Geist folgendes Entsprungen: delay ist ein Uint32 Array mit 15999 Stellen das am Anfang mit 0 Initialisiert wird sample ist der Wert der vor diesem Code Segment eingelesen und danach Ausgegeben wird
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
Wenn ich das allerdings laufen lasse habe ich die ganze Zeit Störgeräusche im Ton? Woran kann das liegen. Dieser Code wird jedesmal wenn ein sample eingelesen wird ausgeführt (16kHz)
Gast
#1089838
Das Verzögern realisiert man am besten mittels Ringpuffer, was viel effizienter als Deine Variante ist:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
@ besser so Danke für die Info, leider funktioniert dein Vorschlag nicht. Ich habe versucht ihn zum laufen zu bringen (einzige änderung ich Arbeite mit Uint32 da die BSL keine anderen datentypen unterstüzt). Wenn ich deinen Code abspiele wir gar nichts mehr ausgegeben (es sei denn die lezte Zeile ist ausgeklammert ;) ) Weiß irgendjemand was ich an dem Programm ändern muss damit es läuft?
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.