LabVIEWForum.de
Soundausgabe über Queues verzögert - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Grafik & Sound (/Forum-Grafik-Sound)
+---- Thema: Soundausgabe über Queues verzögert (/Thread-Soundausgabe-ueber-Queues-verzoegert)



Soundausgabe über Queues verzögert - YYYs - 29.08.2013 12:15

Hallo,

mein Programm soll zwei csv-Dateien einlesen und diese über den Lautsprecher ausgeben können.

Ich habe zwei Producer-Schleifen, in der jeweils eine State-Machine läuft, die die Dateien einliest und in eine Queue schiebt.

In einer Consumer-Schleife wird der Inhalt der beiden Queues überlagert und in eine weitere Queue geschoben. Die zweite Consumer-Schleife entnimmt dann die Überlagerten Queue-Elemente und gibt sie an die Soundkarte ab.

Man kann beide Soundinputs hinzuschalten und abschalten. Sobald ein zweiter Soundinput aktiviert wird, ist dieser sehr verzögert zu hören, obwohl Queue-Größe des Überlagerns gleich 1. Damit müsste doch eigentlich gewährleistet werden, dass spätestens bei der nächsten Iteration in der Queue sich das Element befindet, wo beide Inputs überlagert worden sind.

Das Aktivieren und Deaktivieren des Inputs (wenn nur eins aktiv ist) verläuft ja sehr zeitnah. Um genau zu sein um eine Queue-Element. Nur hapert es halt, wenn zwei Inputs aktiv sind.

Ich hoffe ihr könnt mein Problem nachvollziehen. Nimmt am besten Advent.csv (liegt im Ordner "Other Files") als Input 1 und schaltet White Noise.csv als Input 2 hinzu.

Vielen Grüße,
YYYs


RE: Soundausgabe über Queues verzögert - GerdW - 29.08.2013 12:43

Hallo YYY,

ist schon etwas unübersichtlich, was du da so machst (dein top-VI passt nicht auf meinen FullHD-Bildschirm)...

Allgemeiner Tipp: Wenn du die Queue-Größen limitierst, könntest du auch mit LossyEnqueue arbeiten. Dies würde dir die ständigen QueueStatus/QueueFlush erübrigen.

Außerdem: du hast zwei separate Input-Queues, die durchaus mehr als nur ein Element aufnehmen. Ist wirklich sichergestellt, dass deine Mixer-Schleife die passenden Inputs synchron aus den Queues holt?

Zum ConvertCmplString-subVI:
[attachment=46074]
So sollte das auch funktionieren. Das InitArray/ReplaceArraySubset ist nur nötig, wenn sich "SamplingRate" ggü. der gelesenen Zahl Zeilen ändern sollte...


RE: Soundausgabe über Queues verzögert - YYYs - 29.08.2013 12:57

(29.08.2013 12:43 )GerdW schrieb:  Außerdem: du hast zwei separate Input-Queues, die durchaus mehr als nur ein Element aufnehmen. Ist wirklich sichergestellt, dass deine Mixer-Schleife die passenden Inputs synchron aus den Queues holt?

Hallo GerdW,

ich denke schon, dass es die passenden Inputs synchron rausholt. Denn wenn ich die maximale Queue-Größe der Inputs ebenfalls auf "1" stelle, habe ich gewährleistet, dass bei der nächsten Iteration definitiv ein Element anliegt, welches sich aus beiden Inputs ergibt.

Vielen Dank für die schnelle Antwort!