Bug: GetFFT

  • Hallo Ihr,

    ich wollte gestern für meine nächste Lichtshow mal versuchen, die Musik gleich per DMXControl 3 mit laufen zu lassen.

    Leider empfing mich sofort dieser Fehler:


    Code
    08:25:22 ERROR AudioTools - Error in GetFFT
    System.OutOfMemoryException: Eine Ausnahme vom Typ "System.OutOfMemoryException" wurde ausgelöst.
    bei LumosLIB.Tools.AudioTools.GetFFT(WaveFileReader reader, String savePath, CIDelegate onGetChannelInformations, IProgress`1 progress) in D:\Jenkins\workspace\Lumos
    _Pipeline_3.2_2\LumosLIB\src\Tools\AudioTools.cs:Zeile 396.
    bei LumosLIB.Tools.AudioTools.GetFFT(Mp3FileReader reader, String savePath, CIDelegate onGetChannelInformations, IProgress`1 progress) in D:\Jenkins\workspace\Lumos_
    Pipeline_3.2_2\LumosLIB\src\Tools\AudioTools.cs:Zeile 430.
    bei LumosLIB.Tools.AudioTools.GetFFT(Byte[] buffer, String extention, String savePath, CIDelegate onGetChannelInformations, IProgress`1 progress) in D:\Jenkins\works
    pace\Lumos_Pipeline_3.2_2\LumosLIB\src\Tools\AudioTools.cs:Zeile 316.

    Habt ihr eine Idee, woran das liegt - oder ist das ein echter Bug? (Anbei mal die betroffende Audiodatei Mix Judith.zip)

    Danke für eure Hilfe,
    Lars

  • Nein, das ist kein Bug. Das ist schlicht die harte Meldung von DMXControl 3, dass dein Projekt + Audiodatei so groß ist, dass DMXControl 3 bei der Analyse der Datei der Speicher aus geht ;) (genauer, DMXC 3 versucht noch mehr Speicher zu belegen und kann es nicht, weshalb dann dieser Fehler auftritt). Leider ist dieser Fehler so gravierend, weil das Projekt danach in einem undefinierten Zustand ist, dass man dann eigentlich nur DMXC schließen und neustarten kann (und sollte). Der Grund dafür: DMXControl 3 kann in der aktuellen Form nur etwa 1,2 bis 1,6GB Arbeitsspeicher nutzen. Das hängt damit zusammen, dass DMXC 3 aktuell noch eine 32bit-Anwendung ist (hat verschiedene Gründe dafür). Dieser Speicher wird beim laden eines Projekts jedoch für das gesamte Projekt (und noch ein paar Dinge mehr) benötigt. Bei der Analyse fallen auch einige Daten an, die leider während der Analyse vorgehalten werden müssen.


    Der erste Punkt sollte sein, mal zu schauen, ob man nicht Dinge aus dem Projekt werfen kann. Wie groß ist denn dein Projekt sonst so also die Zip-Datei? Wie viel Speicher stecken denn in deinem System?

    Viele Grüße

    JP

    im Falle eines Falles klebt Gaffa einfach alles, denn Gaffa ist dein Freund und Helfer :thumbup:

    Edited once, last by JPK ().

  • Das Projekt hat ein knappes Gigabyte und besteht aus 5 Cuelists, und knapp 30 Audiodateien. Am Arbeitsspeicher sollte es bei 128GB eigentlich nicht mangeln, oder?

    Komischerweise, klappt nur diese Datei nicht - alle anderen davor gehen und die danach auch wieder...

  • Das Projekt hat ein knappes Gigabyte und besteht aus 5 Cuelists, und knapp 30 Audiodateien.

    Da haben wir das Problem. Dein Projekt ist zu groß ;)


    Am Arbeitsspeicher sollte es bei 128GB eigentlich nicht mangeln, oder?

    Doch ;) Das ist ja das Problem. Es geht nicht der Platz im Arbeitsspeicher an sich aus, sondern DMXControl 3 kann nicht mehr ansteuern. Das ist ein prinzipielles Problem von 32bit-Anwendungen, denn diese können einfach nur etwa 1,7GB adressieren, egal wie groß der Arbeitsspeicher ist. Da DMXControl 3 für sich noch ein paar 100MB braucht, kommen eben so etwa 1GB nutzbarer Speicher für ein Projekt raus. Das ist grundlegend bei normalen Programmen ohne großen Speicherbedarf kein Problem. Hier wird es eben leider zum Problem, weil in DMXC 3 alles rund um die Audiodateien viel Speicher belegt. Im Hintergrund läuft auch schon in DMXControl 3.2.3 eine Analyse der Audiodateien ab (die dann besonders relevant ab der 3.3 wird). Das Problem, dass der Speicher bei großen Projekten aus geht wird sich erst dann lösen, wenn wir DMXControl 3 zu einer 64bit-Anwendung umbauen können (also vor allem der Kernel, der diese Dateien im Arbeitsspeicher halten muss). Das geht aber erst, wenn wir wiederum die Ansteuerung der DMX-Interfaces gelöst haben. Die Plugins dafür sind nämlich teilweise auch 32bit-Plugins und können von einem 64bit-Kernel nicht angesteuert werden. Sprich würden wir jetzt den Kernel auf 64bit umstellen, könnten wir 70-80% der unterstützten Interfaces nicht mehr ansteuern. Da sind wir dran, aber das ist eben auch nur eine der Baustellen, die wir haben.


    Komischerweise, klappt nur diese Datei nicht - alle anderen davor gehen und die danach auch wieder...

    Das scheint nur so ;) Tatsächlich werden die nachfolgenden Audiodateien nur noch teilweise importiert, weil die betreffende Stelle in der Software nach dem Fehler nicht mehr weiter ausgeführt wird. Das Problem ist, dass dein Projekt nun wie gesagt in einem undefinierten Zustand ist. Der Speicher für DMXControl 3 ist voll. Je nachdem, ob interne Aufräumprozesse ein bisschen Speicher wieder freiräumen können, kann etwas Platz sein, hier ein bisschen was zu machen oder nicht. Es kann also in diesem Zustand zu ganz komischen Reaktionen kommen, weil DMXControl nicht mehr so arbeiten kann wie vorgesehen! Du solltest DMXC so nicht betreiben, weil es jederzeit zu einem ganz komischen Verhalten kommen kann und du dir dadurch auch dein Projekt zerschießen kannst! Da können dir auch wir als Entwickler nicht sagen, was dann genau passiert, weil die Reaktionen der Software nun teilweise zufällig sein können!


    Das einzige, was in dem Fall hilft ist, unbenötigte Audiodateien aus dem Projekt zu schmeißen oder wenn du für alle eine Lightshow bauen möchtest, dann das Projekt aufzuteilen. So große Projekte gehen wie gesagt dann erst, wenn wir den Kernel auf 64bit umstellen können, wofür wir aber eben noch Vorarbeit leisten müssen.

    im Falle eines Falles klebt Gaffa einfach alles, denn Gaffa ist dein Freund und Helfer :thumbup:

    Edited 2 times, last by JPK ().

  • Newly created posts will remain inaccessible for others until approved by a moderator.

    The last reply was more than 365 days ago, this thread is most likely obsolete. It is recommended to create a new thread instead.