INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Sound Aufnahme stoppen und restarten



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

13.02.2025, 23:34 (Dieser Beitrag wurde zuletzt bearbeitet: 14.02.2025 00:12 von DropOut.)
Beitrag #1

DropOut Offline
LVF-Neueinsteiger


Beiträge: 3
Registriert seit: Dec 2024

20.0
-
DE



Sound Aufnahme stoppen und restarten
Hi Freaks!

Ganz kurz vorab: Ich habe als erstes Projekt ein recht umfangreiches NF-Messgerät (Filter, FM/FDM, Statistik, Soundcard als IO) realisiert. Learning by Doing hat Zeit gekostet (natürlich), aber ich konnte letztlich ALLE gewünschten Funktionen realisieren. Help und Examples sind vorbildlich und äußerst hilfreich. Andere professionelle Tools, mit denen ich beruflich arbeiten durfte, könnten sich davon diverse Scheiben abschneiden.

EIN Problem bleibt aber, das ich nicht lösen kann:
Ich importiere kontinuierlich Sound in einer While Loop.
Sporadisch ist ein User Dialog erforderlich. Während das Dialog Fenster offen ist, steht der Prozess in der aktuellen Loop und der Sound Buffer läuft in den Overflow, was den Prozess beendet. Um das abzufangen, habe ich mit Sound Input Stop/Start experimentiert. Mit dem bescheidenen Erfolg, dass Sound Input Read in den Timeout läuft. Hilft nicht wirklich.
Ausgerechnet für Sound Input Stop/Start konnte ich keine Beispiele finden. Wie sie in den Task ID Flow einzubinden sind, ist nicht dokumentiert. “MUP“ (Methode des unbekümmerten Probierens) hat leider keine Lösung gebracht. Hier einer meiner Versuche:
   
Die elegantere Lösung wäre ein User Dialog, der die aktuelle Loop nicht pausieren lässt. Für eine solche Lösung fehlt mir aber die Idee schon im Ansatz. Eine Variante, die den Sound Import während des User Dialogs unterbricht, wäre aber ausreichend.

Vielen Dank schon mal,
Frank


Angehängte Datei(en)
20.0 .vi  sound input.vi (Größe: 41,07 KB / Downloads: 6)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
14.02.2025, 07:52
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.489
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Sound Aufnahme stoppen und restarten

Akzeptierte Lösung

Hallo Frank,

dein Parallel-Thread ist gelöscht…

Zitat:EIN Problem bleibt aber, das ich nicht lösen kann:
Ich importiere kontinuierlich Sound in einer While Loop.
Sporadisch ist ein User Dialog erforderlich. Während das Dialog Fenster offen ist, steht der Prozess in der aktuellen Loop und der Sound Buffer läuft in den Overflow, was den Prozess beendet.
Eine einfache Lösung sollte das Auftrennen von SoundIO und UI-Handling sein.
Wenn Dinge parallel/unabhängig laufen sollen/müssen, dann musst du sie auch parallel/unabhängig programmieren!

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.02.2025, 15:28
Beitrag #3

Kiesch Offline
LVF-Stammgast
***


Beiträge: 425
Registriert seit: Mar 2009

2019, 2018, 2016
2009
DE

04519
Deutschland
RE: Sound Aufnahme stoppen und restarten

Akzeptierte Lösung

(13.02.2025 23:34 )DropOut schrieb:  Ausgerechnet für Sound Input Stop/Start konnte ich keine Beispiele finden. Wie sie in den Task ID Flow einzubinden sind, ist nicht dokumentiert. “MUP“ (Methode des unbekümmerten Probierens) hat leider keine Lösung gebracht. Hier einer meiner Versuche:

Die elegantere Lösung wäre ein User Dialog, der die aktuelle Loop nicht pausieren lässt. Für eine solche Lösung fehlt mir aber die Idee schon im Ansatz. Eine Variante, die den Sound Import während des User Dialogs unterbricht, wäre aber ausreichend.

Vielen Dank schon mal,
Frank

Dein Puffer läuft voll weil die Verarbeitung steht bis der Nutzer eingegeben hat. Daher: Eingabe von Verarbeitung trennen. Dafür brauchst du eine zweite While Schleife. Eine verarbeitet nur den Sound, die andere nur die Nutzereingaben. Kommunikation zwischen beiden Schleifen ggf. über eine Queue um die Nutzereingaben weiterzuleiten. Vorlagentechnisch könnte man sich dazu die Statemachine bzw. Queued State Machine anschauen.
Je nach konkretem Szenario kann dabei sogar die Nutzung lokaler Variablen ausreichend sein um das zu realisieren (vorher prüfen ob Racing Conditions zu relevantem Fehlerverhalten führen können!).

Gruß Kiesch

Zitat:Märchen und Geschichten werden erzählt am Lagerfeuer, technischen Fakten werden mitgeteilt (oder so). (Genauso wie Software nicht auf einem Server "herumliegt", die ist dort installiert.)
*Zitat: IchSelbst*
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
15.02.2025, 15:04 (Dieser Beitrag wurde zuletzt bearbeitet: 15.02.2025 15:08 von DropOut.)
Beitrag #4

DropOut Offline
LVF-Neueinsteiger


Beiträge: 3
Registriert seit: Dec 2024

20.0
-
DE



RE: Sound Aufnahme stoppen und restarten
Der Hinweis auf PARALLELE Programmierung war der wesentliche Tipp. Völlig klar, man muss nur drauf kommen. Vielen Dank dafür!

Die Kommunikation zwischen den Loops habe ich mittels Property Nodes realisiert. War für mich am einfachsten. Auch ein zusammengefasstes STOP geht damit. Der Restart war etwas tricky. Mit Auswertung beider Iterations Counter geht das aber nun auch.
   

Also alles bestens, nochmals vielen Dank!


Angehängte Datei(en)
20.0 .vi  sound IO with User Dialog.vi (Größe: 44,33 KB / Downloads: 6)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.02.2025, 17:24
Beitrag #5

GerdW Offline
______________
LVF-Team

Beiträge: 17.489
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Sound Aufnahme stoppen und restarten

Akzeptierte Lösung

Hallo Frank,

noch etwas Manöverkritik zu deinem VI:
- Warum "value"-PropertyNodes, wenn man auch lokale Variablen nutzen könnte? (Die brauchen weniger Ressourcen!)
- Warum so viele Coerciondots? Warum verwendest du unpassende Datentypen?
- Warum dieser Vergleich mit einer Konstanten "0"? Es gibt da spezielle Vergleichsoperatoren!
- Warum 2 Stopp-Buttons? Sollte dem User nicht ein Button ausreichen???
- Warum ein ExpressVI (FromDDT), um aus einem Array ein Element zu indizieren? Wozu gibt es eigentlich Array-Funktionen, z.B. IndexArray???
- Für mehrere boolsche Eingänge kann man auch die CompoundArithmetik verwenden, statt mehrere gleiche boolsche Operationen zu verketten…
- Warum eine Wartezteit parallel zu deiner Event-Struktur??? Wenn die Loop mit 100ms iterieren soll, kann dein Event auch 100ms auf den TimeOut warten…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
17.02.2025, 11:05 (Dieser Beitrag wurde zuletzt bearbeitet: 17.02.2025 11:11 von DropOut.)
Beitrag #6

DropOut Offline
LVF-Neueinsteiger


Beiträge: 3
Registriert seit: Dec 2024

20.0
-
DE



RE: Sound Aufnahme stoppen und restarten
Hallo Gerd,
Ich bin Autodidakt und Absolute Beginner. Da sind solche Hinweise und Kritiken eines Profis sehr hilfreich. Ich lerne auch mit 67 immer noch gern dazu, danke.

- Warum "value"-PropertyNodes, wenn man auch lokale Variablen nutzen könnte? (Die brauchen weniger Ressourcen!)
Weil es damit ging. Lokale Variablen hatte ich noch nicht entdeckt. Sehr wertvoller Tipp.
- Warum so viele Coerciondots?
Die kannte ich auch noch gar nicht. Habe aufgeräumt.
- Warum verwendest du unpassende Datentypen?
Wo, bei den Loop Countern? Ich wollte sicher die Interpretation als negative Zahl beim Vergleich verhindern. Aber originär scheint
[ i ] I32 zu verwenden, dann nehme ich das auch.
- Warum dieser Vergleich mit einer Konstanten "0"? Es gibt da spezielle Vergleichsoperatoren!
Musste ausprobieren, ob es ab 0 oder 1 funktioniert. Da 0 geht, kann man das jetzt vereinfachen.
- Warum 2 Stopp-Buttons? Sollte dem User nicht ein Button ausreichen???
Der folgte aus den Property Nodes als "Empfänger" für den STOP-Transfer von Loop1 nach Loop2. Sollte final "gehided" werden. Mit einer lokalen Variabel braucht es den natürlich nicht.
- Warum ein ExpressVI (FromDDT), um aus einem Array ein Element zu indizieren? Wozu gibt es eigentlich Array-Funktionen, z.B. IndexArray???
Habe ich aus einem Example abgeschrieben ohne zu wissen was da geschieht. Hat gepasst, Hurra!
Wenn ich ans Array und an die Waveform einen Indikator hänge, sehe ich, wie sie aufgebaut sind und wie man das raus-indizieren kann. Dann gerne so, man muss ja nicht mit Kanonen auf Spatzen schießen.
- Für mehrere boolsche Eingänge kann man auch die CompoundArithmetik verwenden, statt mehrere gleiche boolsche Operationen zu verketten…
Um ein paar pW und fs beim Kompilieren einzusparen ;-)
Hatte sich historisch so entwickelt. Kann man der Übersichtlichkeit wegen natürlich zusammenfassen.
- Warum eine Wartezteit parallel zu deiner Event-Struktur??? Wenn die Loop mit 100ms iterieren soll, kann dein Event auch 100ms auf den TimeOut warten…
Ei verbibscht (sagt der Sachse). Den Überblick habe ich (noch) nicht. Übernehme ich gerne.

Besser so?:
   

P.S.: Ich sehe gerade, am Sound Input Configure VI ist noch ein Coercion Dot! Schaue ich mir noch an.


Angehängte Datei(en)
20.0 .vi  sound IO with User Dialog V2.vi (Größe: 26,52 KB / Downloads: 2)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
17.02.2025, 11:24
Beitrag #7

GerdW Offline
______________
LVF-Team

Beiträge: 17.489
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Sound Aufnahme stoppen und restarten
Hallo Frank,

Zitat:P.S.: Ich sehe gerade, am Sound Input Configure VI ist noch ein Coercion Dot! Schaue ich mir noch an.
Aus dem Input bei dem subVI eine Konstante erzeugen, die hat dann automatisch den richtigen Datentyp. Und damit dann ein Bundle(ByName) füttern, das zeigt dann auch gleich die korrekten Label der Cluster-Elemente an…

Außerdem: die "0" am IndexArray kann weg.
IndexArray fängt per default mit dem ersten Element zu indizieren an - und kann natürlich auch mehr als ein Element indizieren, falls das nötig wird…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Gestern, 08:18
Beitrag #8

Kiesch Offline
LVF-Stammgast
***


Beiträge: 425
Registriert seit: Mar 2009

2019, 2018, 2016
2009
DE

04519
Deutschland
RE: Sound Aufnahme stoppen und restarten
(16.02.2025 17:24 )GerdW schrieb:  Hallo Frank,

noch etwas Manöverkritik zu deinem VI:
- Warum "value"-PropertyNodes, wenn man auch lokale Variablen nutzen könnte? (Die brauchen weniger Ressourcen!)

*hust* weil man im Umgang mit Eventstrukturen "value (signaling)" arbeiten sollte wenn man nicht wie hier nen timeout von 1ms hat. Achja - so wie jetzt aufgebaut wäre ein "value (signaling)" kontraindiziert, da dann mit jedem durchlauf der unteren Schleife das event oben auf das Stop event getriggert würde ^^ (das muss man sauber ausprogrammieren, so dass das nur bei Änderungen auch signalisiert)

Gruß Kiesch

Zitat:Märchen und Geschichten werden erzählt am Lagerfeuer, technischen Fakten werden mitgeteilt (oder so). (Genauso wie Software nicht auf einem Server "herumliegt", die ist dort installiert.)
*Zitat: IchSelbst*
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Array nach Sound R.Fuertig 4 7.784 31.03.2016 09:55
Letzter Beitrag: R.Fuertig
  sound zeitversetzt überlagern benny10 3 7.177 12.10.2015 17:12
Letzter Beitrag: benny10
  Sound-Player LABVIEW_NEU 12 13.668 17.10.2014 11:06
Letzter Beitrag: Trinitatis
Question Sound Aufnahme, Speichern und Wiedergabe Blackbird2k 4 8.574 20.05.2014 12:05
Letzter Beitrag: Blackbird2k
  Wiedergabe und Aufnahme gleichzeitig starten Dimitri 9 10.617 02.10.2013 08:37
Letzter Beitrag: Saffier
  midi sound vom e-piano molija 3 7.203 10.09.2012 08:48
Letzter Beitrag: Lucki

Who read this thread?
10 User(s) read this thread:
rolfk, GerdW, IchSelbst, TpunktN, DropOut, cordm, Kiesch, Woodeye, UliB, th13

Gehe zu: