LabVIEWForum.de - Problem mit Synchronisation zweier Wave-Dateien

LabVIEWForum.de

Normale Version: Problem mit Synchronisation zweier Wave-Dateien
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo LabVIEW Profis,
ich bin auf dem Gebiet der Programmierung ein Neuling und bräuchte ein paar Tips.
Meine Idee ist im Folgenden beschrieben:

Beschreibung schrieb:Entwicklung eines Softwaretools in LabVIEW um es einer Band (speziell Sänger) auf einfache Art und Weise zu ermöglichen, die Lead-Stimme eines Cover-Songs zu erlernen, ggf. zu verbessern.

Vorüberlegung:

- Einlesen einer beliebigen CD mit enthaltener Gesangsspur
- Gesangsspur aus dem Song herausfiltern (nicht 100% möglich?)
- Song rein Instrumental ausgeben
- Lead-Stimme über Mikrofoneingang einlesen
- Synchronisation und Vergleich der Lead-Stimme mit der Referenzstimme der CD.
- Eingesungene Stimme mit der Instrumentalspur der CD mischen und ausgeben.
- FFT-Analyse von Referenz und Lead-Stimme in einem bestimmten Frequenzband
- Grafische Balkenanzeige um Abweichungen zur Referenz anzuzeigen.
- Grafische Oberfläche
* Songauswahl
* Play/Stop/Pause
* aus Datei lesen/ in Datei schreiben
* Lautstärkeregelung
* Beenden


Meine Fragen:
Wenn ich zwei Wave-Dateien einlese werden diese bei Programmstart nicht korrekt wiedergegeben (nicht Synchron)?
Warum ist der Abgleich (Pfeilanzeige) langsam?

Im Anhang ist das Vi
(geschrieben in LV 8.0 Student)
Moin Moin!

Deine Aufgabe klingt spannend, ich wäre sehr interessiert, wie Du die Dinge löst (z.B. - Gesangsspur aus dem Song herausfiltern (nicht 100% möglich?)). Ich finde das nämlich alles andere als einfach. Tippen

Hast Du das Problem, dass die .wav-Dateien an sich nicht synchron zu einander sind, oder starten die beiden while-Schleifen asynchron zu einander? Im zweiten Fall gibt es - wenn ich mich nicht irre - sowas ähnliches wie timed-while-loops. Ich hab damit noch nie gearbeitet, aber ich glaub dazu war auch schon mal was hier im Forum. Im ersten Fall wäre ja de KKR gefragt, mit deren Hilfe dann das eine oder das andere Stück entsprechend beschnitten würde.
' schrieb:Moin Moin!

Deine Aufgabe klingt spannend, ich wäre sehr interessiert, wie Du die Dinge löst (z.B. - Gesangsspur aus dem Song herausfiltern (nicht 100% möglich?)). Ich finde das nämlich alles andere als einfach. Tippen

Hast Du das Problem, dass die .wav-Dateien an sich nicht synchron zu einander sind, oder starten die beiden while-Schleifen asynchron zu einander? Im zweiten Fall gibt es - wenn ich mich nicht irre - sowas ähnliches wie timed-while-loops. Ich hab damit noch nie gearbeitet, aber ich glaub dazu war auch schon mal was hier im Forum. Im ersten Fall wäre ja de KKR gefragt, mit deren Hilfe dann das eine oder das andere Stück entsprechend beschnitten würde.


Danke für Deine Antwort,
Wenn ich die Wave-Dateien abspiele dann hingt das eine File dem anderen hinterher.
interessant ist, dass wenn in einer Schleife die Task ID geändert wird auf z.B. 1 anstelle 0 dann laufen beide Schleifen parallel ab.
D.h, dass jeweilige Soundfile wird nicht mehr über die Soundkarte wiedergegeben.

Kann es sein das LabVIEW mit der Verwaltung der Soundkarte Probleme hat wenn mehrere Files gleichzeitig Abgespielt werden?

Das mit den Time-loops probiere ich gerade aber, ich glaube eher das die Soundkarte das Problem darstellt.

Die Stimme aus einem Song filtern geht nicht zu 100% (liegt an der weise wie Abgemischt wurde im Studio). Ich greife hier (untere schleife) auf eine einfache Subtraktion zurück ,mit dem hintergedankten, alles was nicht null ist wird an der Soundkarte ausgegeben .


Was meinst du mit KKR? (Kreuzkorrelation ^_^ )
' schrieb:Kann es sein das LabVIEW mit der Verwaltung der Soundkarte Probleme hat wenn mehrere Files gleichzeitig Abgespielt werden?
...
Was meinst du mit KKR? (Kreuzkorrelation ^_^ )

Hmmm, es könnte sein (Achtung: Ich rate!!), dass die Musik blockweise der Soundkarte übergeben wird, das würde das "Hinken" erklären. In dem Fall könntest Du versuchen, nicht zwei parallele Schleifen zu verwenden, sondern nur eine in der die Musikdaten zusammenaddiert werden.

Jop, mit KKR meinte ich die gute alte Kreuzkorrelation.
' schrieb:In dem Fall könntest Du versuchen, nicht zwei parallele Schleifen zu verwenden, sondern nur eine in der die Musikdaten zusammenaddiert werden.

So ähnlich habe ich es gelöst. Ich hatte einen Geistesblitz, die Wave-Datei die nur die Stimme enthält muss ich eigentlich nicht zusätzlich zur original Wave ausgeben brauche Sie nur als Referenz zu der ich Singe.
Das ganze habe ich mit einem einfachen Schalter gelöst Stimme An/aus. Jetzt läuft soweit alles Synchron und schneller.
Wer mal vorab die verbesserte Version testen will bitte.( Achtung :Abbruch Bediengungen sind aber noch nicht fertig Programmiert!!!! und optisch noch ein Caos aber ich Arbeite daran).

Wichtig beim Ausprobieren:
- nur Wave Dateien 44.1khz 16bit Stereo verwenden
- die Gesangsstimme muss mit einem "Separaten Programm" aus dem Audiofile extrahiert werden (Keep Vocal!!)
- Mikrofon am Rechner Anschließen
- Stimmen-file und original Song laden

Lv80_img
Referenz-URLs