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!
Ich möchte gerne per Mic-Eingang der Soundkarte .wav Dateien aufnehmen. Ich habe im Examples-Explorer auch das entsprechende Beispiel gefunden und ein bisschen für meine Bedürfnisse modifiziert. Allerdings habe ich ein Problem damit, entsprechend lange Audio-Files aufzunehmen. Zur Zeit wäre ich mit 90 - 120 Sekunden zufrieden, allerdings schaffe ich keine so langen Aufnahmen. Es wird so nach ca 45 Sekunden ein Fehler geworfen, dass er nicht schnell genung neue Daten aufnehmen könne. Wenn ich mir die CPU-Auslastung ansehe, steigt diese recht fix an, bis sie dann bei 100% ankommt und der Fehler auftritt. Ich denke, dass das Problem das immer wiederkehrende Anhängen der neuen Daten an die vorherigen ist. Wie kann man das Problem lösen? Direkt speichern geht auch nicht, da dies noch langsamer ist.
ich habe Dein vi mal geladen, leider fehlt zum Ausführen ein vi ("Schreibe Wave File.vi"), daher kann ich es auf die Schnelle nicht probieren.
Was mir auffällt: In der while-Schleife ist keine Wartezeit. Setze doch einfach mal ein wait (1ms?) hinein. Hilft das gegen die Prozessorauslastung?
ich habe Dein vi mal geladen, leider fehlt zum Ausführen ein vi ("Schreibe Wave File.vi"), daher kann ich es auf die Schnelle nicht probieren.
Was mir auffällt: In der while-Schleife ist keine Wartezeit. Setze doch einfach mal ein wait (1ms?) hinein. Hilft das gegen die Prozessorauslastung?
Flamme
*ups* Stimmt, hatte ich vergessen, anzuhängen...
Eine Wartezeit macht es leider eher noch schlimmer (ich hatt mit 100ms (viel zu lang, da ging gar nix mehr) 10ms experimentiert - leider hilft auch 1ms nicht weiter)
Wie du schon selber erkannt hast, dürften deine "Unmenge" von Build-Array-Aufrufen ein Hauptteil des Problems sein. Neben CPU-Auslastung könntest du auch mal auf Speicher schauen, steigt der auch schnell an?
Weisst du vorab die Größe der Arrays? Dann kannst du sie vor deiner Schleife initialisieren und dann immer an der richtigen Stelle per "Replace Array Subset" schreiben.
Vielleicht hilft das.
MfG, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
' schrieb:Wie du schon selber erkannt hast, dürften deine "Unmenge" von Build-Array-Aufrufen ein Hauptteil des Problems sein. Neben CPU-Auslastung könntest du auch mal auf Speicher schauen, steigt der auch schnell an?
Weisst du vorab die Größe der Arrays? Dann kannst du sie vor deiner Schleife initialisieren und dann immer an der richtigen Stelle per "Replace Array Subset" schreiben.
Der Anstieg der Speicherausnutzung gehr eigentlich in Ordnung. Ganz so, als würde erst alles in den Speicher reingeschrieben werden, bevor es dann gespeichert wird. (So hatte ich das eigentlich auch gedacht, und da dürften ja auch 120 Sekunden als .Wav File kein Problem darstellen.
Wenn ich die Größe der Arrays vorher festlege, bestimme ich doch damit auch die Länge der Aufnahme (oder?) und da wollte/müsste ich eigentlich schon eine gewisse Flexibilität erhalten.
Wieso erstellt NI nur so ein doch recht unbrauchbares Beispiel?! *grml*
So, ich habe es geschafft, einen halbwegs brauchbaren .wav-Recorder zu erstellen. Er müsste noch evtl ein bisschen erweitert werden und mit einigen Details bin ich noch nicht zufrieden (wie ich finde z.T. etwas umständlich/unschön von mit programmiert), aber immerhin tut er schon so ziemlich das, was ich möchte :-)
Vielleicht mag ihn ja sich der ein oder andere mal anschaunen und (hoffentlich) noch ein paar Verbesserungsvorschläge nennen.