Bouncen und Prozessorkerne

Logic Studio 9

Moderatoren: d/flt prod., MarkDVC, Mods

Benutzeravatar
Tiefton
Routinier
Beiträge: 350
Registriert: 08 Dez 2003 - 19:30
Logic Version: 0
Wohnort: Stuttgart
Kontaktdaten:

Re: Bouncen und Prozessorkerne

Beitrag von Tiefton »

Kann mir nicht vorstellen, dass das technisch nicht machbar ist. Wahrscheinlich eher viel Aufwand. Prinzipiell wäre es doch möglich pro Kern mehrere Spuren zu bouncen und diese am Ende "zusammenzufügen".. und dies ist sicherlich nicht trivial...

Werden gefreezte Spuren eigentlich schneller (offline) gebounced?
Benutzeravatar
Lolo
Kaiser
Beiträge: 1132
Registriert: 07 Aug 2005 - 18:55
Logic Version: 10
Wohnort: Darmstadt

Re: Bouncen und Prozessorkerne

Beitrag von Lolo »

wenn mfritze sagt, daß es nicht geht, oder zumindest sehr, sehr schwer, dann glaub ich ihm das. der programmiert das zeug doch...
vielleicht würde in dem von dir genannten beispiel auch die prozessorbelastung gesenkt, bzw. auf andere verteilt, aber nicht die geschindigkeit beim bouncen erhöht. insofern wäre das dann sinnlos. da hat man doch lieber 1 prozessor 100% ausgelastet und die anderen frei, als alle prozessoren mit 20% voll aber nicht (wesentlich) schneller.
Mac Mini M1 16GB RAM, OS12.5.1, LP 10.7.7, zuhause: MacBook Pro 13" 2016, 2,9GHz Core i5, 8 GB RAM, http://www.facebook.com/IronBarStudios
www.ironbar-studios.de
Benutzeravatar
maiermueller
Forengott
Beiträge: 2365
Registriert: 01 Mär 2006 - 12:28
Logic Version: 0
Wohnort: Düsseldorf

Re: Bouncen und Prozessorkerne

Beitrag von maiermueller »

Tiefton hat geschrieben:Kann mir nicht vorstellen, dass das technisch nicht machbar ist. Wahrscheinlich eher viel Aufwand. Prinzipiell wäre es doch möglich pro Kern mehrere Spuren zu bouncen und diese am Ende "zusammenzufügen".. und dies ist sicherlich nicht trivial...
Schöne Vorstellung, aber leider nicht umsetzbar. Denn was machst Du, wenn z.B. alle Spuren einen Send auf einen Reverb haben? Nach Deiner Methode müßte der Reverb dann ja für jede Spur extra berechnet werden, denn Spur 1 enthält vielleicht nur einen ES-1, der ganz schnell berechnet ist, Spur 2 jedoch einen Nexus, der 50x solange braucht. Ansonsten müßte Spur 1 auf Spur 2 warten, damit der Reverb die Sends gleichzeitig bekommt, und dann wären wir wieder da, wo wir jetzt auch sind.

Und wenn man nun den Reverb-Send für jede Spur extra berechnen würde? Das hätte klanglich vielleicht noch gar keinen so großen Einfluss auf das spätere Zusammenmischen - nicht aber z.B. bei GitarrenAmps oder anderen Verzerrern, oder gar Kompressoren, denn da ist das klangliche Resultat immens abhängig vom jeweiligen Eingangsignal.

Man kann also nicht ohne weiteres den Offline Bounce auf mehrere Threads verteilen.

Möglichkeit #1:
Logic analysiert, wie viele unabhängige Signalflüsse in einem Song vorhanden sind und berechnet diese in mehreren Threads. Ob dies allerdings so einfach ist, kann ich nicht sagen. Und auch dann ist nicht garantiert, dass alle Kerne voll ausgelastet sind, das ist dann eben extrem projektabhängig.

Möglichkeit#2:
Logic spielt den Song einfach mit variabler Geschwindigkeit, und zwar immer mit der höchstmöglichen, ab. Das heißt, mindestens ein Kern läuft immer bei 100%, die anderen richten sich nach diesem. Auch das wäre sehr projektabhängig...

Immerhin, ganz utopisch ist es meiner Meinung nach nicht, die Offline-Bouncegeschwindigkeit zu steigern. Aber dass alle Kerne voll ausgelastet sind, das geht schlicht und ergreifend nicht!
Tiefton hat geschrieben: Werden gefreezte Spuren eigentlich schneller (offline) gebounced?
Klar! Das sind ja nur banale Audiofiles!
MacPro 8x3.0GHz, 16GB RAM, Apogee Symphony mit AD16x und DA16x, UAD-2 Quad, Logic Pro 9.1.1, OS 10.6.4 / MBP i7 mit 10.6.4
stef
Foren As
Beiträge: 86
Registriert: 10 Nov 2004 - 15:05
Logic Version: 0

Re: Bouncen und Prozessorkerne

Beitrag von stef »

maiermueller hat geschrieben:
Schöne Vorstellung, aber leider nicht umsetzbar. Denn was machst Du, wenn z.B. alle Spuren einen Send auf einen Reverb haben? Nach Deiner Methode müßte der Reverb dann ja für jede Spur extra berechnet werden, denn Spur 1 enthält vielleicht nur einen ES-1, der ganz schnell berechnet ist, Spur 2 jedoch einen Nexus, der 50x solange braucht. Ansonsten müßte Spur 1 auf Spur 2 warten, damit der Reverb die Sends gleichzeitig bekommt, und dann wären wir wieder da, wo wir jetzt auch sind.
Schlechtes Beispiel! Ich sehe überhaupt kein Problem darin z.B. 16KB-Puffer zu nehmen, drei Spuren auf drei Kernen zu berechnen, diese drei Puffer den Sendlevels entsprechend zu mischen und die Additionsergebnisse in den Hall zu schicken. Bei einem Faltungshall ist ein 16 KB-Puffer natürlich ruckzuck zu klein; da müsste Logic dann gucken wie lang ist der Hall (z.B 10 s), wie ist die Samplerate (z.B. 44100 Hz), macht bei 32Bit dann ca. 1,8 MB.
Wenn man jetzt Wert auf einen 1000 s Send-Hall auf 200 Spuren legt wäre eine 64Bit-Version on Logic schon wünschenswert :-)
Kniffliger finde ich da Sidechains; damit die funktionieren braucht man kleine Puffer. Wenn das Projekt den Rechner eh schon an die Wand drückt, bringt das dann nix mehr, aber wenn man noch Luft hat, könnte das bouncen trotzdem schneller gehen.

Stef
Benutzeravatar
Tiefton
Routinier
Beiträge: 350
Registriert: 08 Dez 2003 - 19:30
Logic Version: 0
Wohnort: Stuttgart
Kontaktdaten:

Re: Bouncen und Prozessorkerne

Beitrag von Tiefton »

Wieso dann nicht mehrere Spuren einzeln parallel gleichzeitig bouncen (jeweils auf verschiedenen Kernen bzw. auch Threads) und danach einen Gesamtbounce auf einem Prozessor? Wäre mit Sicherheit auch schneller... (zumindest bei Audioinstrumenten ohne Effekte...)

Oder irgendwie sowas:
Zuerst wird analysiert welche Kanäle von welchen Abhängen und von welchen nicht.. Diese werden zu einem "Block" zusammengefasst und jeweils von einem Prozessor gebounced (dürfte ja kein Problem sein).

Summen, die nicht voneinander abhängig sind, können am Ende doch "einfach" addiert werden - was natürlich sequenziell ist und am Ende durchgeführt werden muss, da sonst die "Ergebnisse" der einzelnen Spuren/Busse nicht zur Verfügung stehen...

Bin selbst Informatiker, wenn auch in einer anderen Ecke (Datenbanken, WebServices, ...).
stef
Foren As
Beiträge: 86
Registriert: 10 Nov 2004 - 15:05
Logic Version: 0

Re: Bouncen und Prozessorkerne

Beitrag von stef »

Tiefton hat geschrieben:Wieso dann nicht mehrere Spuren einzeln parallel gleichzeitig bouncen (jeweils auf verschiedenen Kernen bzw. auch Threads) und danach einen Gesamtbounce auf einem Prozessor? Wäre mit Sicherheit auch schneller... (zumindest bei Audioinstrumenten ohne Effekte...)

Oder irgendwie sowas:
Zuerst wird analysiert welche Kanäle von welchen Abhängen und von welchen nicht.. Diese werden zu einem "Block" zusammengefasst und jeweils von einem Prozessor gebounced (dürfte ja kein Problem sein).

Summen, die nicht voneinander abhängig sind, können am Ende doch "einfach" addiert werden - was natürlich sequenziell ist und am Ende durchgeführt werden muss, da sonst die "Ergebnisse" der einzelnen Spuren/Busse nicht zur Verfügung stehen...

Bin selbst Informatiker, wenn auch in einer anderen Ecke (Datenbanken, WebServices, ...).
Ich denke auch, dass das Problem lösbar ist. In der Regel werden die meisten Spuren mit ein paar Inserts direkt auf den Ausgang gehen. Nur muss die Puffergröße bei Verwendung von Seitensträngen klein sein, damit dieser schnell genug regelnd eingreifen kann.
Benutzeravatar
KellerKnabe
Postingminister
Beiträge: 2695
Registriert: 13 Mär 2004 - 18:01
Logic Version: 0
Wohnort: Bodensee
Kontaktdaten:

Re: Bouncen und Prozessorkerne

Beitrag von KellerKnabe »

Also meine Sicht der Dinge ist die Folgende:
Bouncen ist mal prinzipiell immer dass Selbe, egal ob offline oder online.
Irgendwo her kommt eine Clock, die den "Takt" für das Bouncen vorgibt - bei Online zB CoreAudio, bei Offine der Host (Logic).
Nur wird die Bearbeitung im Online-Fall dem OS (CA) übergeben und im Offline-Fall kümmert sich der Host darum. D.h. alles was in Richtung Multithreading geht, muss vom Host selbst verwaltet werden, was einen immensen Aufwand bedeuten kann.
Vielleicht "wartet" Apple mit der Multithreading-Unterstützung noch auf SchneeLeo, der das ja "von Haus aus" anbietet ... ich bin immer noch guter Hoffnung, dass ich meine Wette nicht verliere ... 8) :wink:
iMac 2019 8x3.6GHz/72GB/MB 2x2GHz/Mojave/LpX.4.8/dfh C&V/Motu 828 MKII/UM-3/Neubauer Tiger/DMStrat/JazzBass/Ukulele/Brunetti mc2/LMK 4+/SCT800/ST-1000/MXL-603/D-112/TD3/SM57/SM58 /E604/MD441/K271/K55/HA4700/Alesis One MKII ...
Benutzeravatar
maiermueller
Forengott
Beiträge: 2365
Registriert: 01 Mär 2006 - 12:28
Logic Version: 0
Wohnort: Düsseldorf

Re: Bouncen und Prozessorkerne

Beitrag von maiermueller »

stef hat geschrieben: Schlechtes Beispiel! Ich sehe überhaupt kein Problem darin z.B. 16KB-Puffer zu nehmen, drei Spuren auf drei Kernen zu berechnen, diese drei Puffer den Sendlevels entsprechend zu mischen und die Additionsergebnisse in den Hall zu schicken. Bei einem Faltungshall ist ein 16 KB-Puffer natürlich ruckzuck zu klein; da müsste Logic dann gucken wie lang ist der Hall (z.B 10 s), wie ist die Samplerate (z.B. 44100 Hz), macht bei 32Bit dann ca. 1,8 MB.
Wenn man jetzt Wert auf einen 1000 s Send-Hall auf 200 Spuren legt wäre eine 64Bit-Version on Logic schon wünschenswert :-)
Kniffliger finde ich da Sidechains; damit die funktionieren braucht man kleine Puffer. Wenn das Projekt den Rechner eh schon an die Wand drückt, bringt das dann nix mehr, aber wenn man noch Luft hat, könnte das bouncen trotzdem schneller gehen.

Stef
Denkfehler! ;-)

Du gehst davon aus, dass die drei Spuren in der gleichen Zeit berechnet werden. Das ist aber falsch. Eine Spur kann z.B. in 0.001 ms berechnet sein, während die andere 2 min braucht. Muss man also mit dem Weiterrechnen des Halls in jedem Fall 2 min warten. Mit Puffern an sich hat das nichts zu tun, allein mit der Rechenzeit pro Sample...
stef hat geschrieben: Ich denke auch, dass das Problem lösbar ist. In der Regel werden die meisten Spuren mit ein paar Inserts direkt auf den Ausgang gehen. Nur muss die Puffergröße bei Verwendung von Seitensträngen klein sein, damit dieser schnell genug regelnd eingreifen kann.
Mehrere Denkfehler! ;) ;)

"In der Regel" ist jedes Projekt komplett anders und man kann von nichts ausgehen!
Die Puffergröße hat beim Offline-Bounce keine Auswirkung auf irgendetwas. Jedes Sample findet seinen weg durch den Algorithmusdschungel, ganz gleich, wie groß der Puffer ist, in dem es schwimmt. Da es beim Offline-Bounce nicht auf die Berechnung innerhalb einer festgelegten Zeit (Echtzeit) ankommt, können die Puffer vielmehr beliebig gewählt werden.
MacPro 8x3.0GHz, 16GB RAM, Apogee Symphony mit AD16x und DA16x, UAD-2 Quad, Logic Pro 9.1.1, OS 10.6.4 / MBP i7 mit 10.6.4
Benutzeravatar
maiermueller
Forengott
Beiträge: 2365
Registriert: 01 Mär 2006 - 12:28
Logic Version: 0
Wohnort: Düsseldorf

Re: Bouncen und Prozessorkerne

Beitrag von maiermueller »

Tiefton hat geschrieben:Wieso dann nicht mehrere Spuren einzeln parallel gleichzeitig bouncen (jeweils auf verschiedenen Kernen bzw. auch Threads) und danach einen Gesamtbounce auf einem Prozessor? Wäre mit Sicherheit auch schneller... (zumindest bei Audioinstrumenten ohne Effekte...)

Oder irgendwie sowas:
Zuerst wird analysiert welche Kanäle von welchen Abhängen und von welchen nicht.. Diese werden zu einem "Block" zusammengefasst und jeweils von einem Prozessor gebounced (dürfte ja kein Problem sein).

Summen, die nicht voneinander abhängig sind, können am Ende doch "einfach" addiert werden - was natürlich sequenziell ist und am Ende durchgeführt werden muss, da sonst die "Ergebnisse" der einzelnen Spuren/Busse nicht zur Verfügung stehen...

Bin selbst Informatiker, wenn auch in einer anderen Ecke (Datenbanken, WebServices, ...).
Das würde meiner Möglichkeit #1 entsprechen...

Bin zwar kein Informatiker, habe aber längere Zeit Audioalgorithmen programmiert... :)
MacPro 8x3.0GHz, 16GB RAM, Apogee Symphony mit AD16x und DA16x, UAD-2 Quad, Logic Pro 9.1.1, OS 10.6.4 / MBP i7 mit 10.6.4
Benutzeravatar
maiermueller
Forengott
Beiträge: 2365
Registriert: 01 Mär 2006 - 12:28
Logic Version: 0
Wohnort: Düsseldorf

Re: Bouncen und Prozessorkerne

Beitrag von maiermueller »

KellerKnabe hat geschrieben:Also meine Sicht der Dinge ist die Folgende:
Bouncen ist mal prinzipiell immer dass Selbe, egal ob offline oder online.
Irgendwo her kommt eine Clock, die den "Takt" für das Bouncen vorgibt - bei Online zB CoreAudio, bei Offine der Host (Logic).
Nur wird die Bearbeitung im Online-Fall dem OS (CA) übergeben und im Offline-Fall kümmert sich der Host darum. D.h. alles was in Richtung Multithreading geht, muss vom Host selbst verwaltet werden, was einen immensen Aufwand bedeuten kann.
Vielleicht "wartet" Apple mit der Multithreading-Unterstützung noch auf SchneeLeo, der das ja "von Haus aus" anbietet ... ich bin immer noch guter Hoffnung, dass ich meine Wette nicht verliere ... 8) :wink:
Nein, das stimmt so nicht. Das Gegenteil ist der Fall: offline bouncen wird eben genau ohne Clock gemacht, nämlich so schnell, wie es geht. Das ist ein fundamentaler Unterschied. Und deshalb funktioniert es auch nur in einem Thread, da dann alle Samples nacheinander berechnet werden müssen.

Vielleicht kann man es so darstellen:
- Beim Onlinebounce kümmern sich die Channels um die Produktion der Audiodaten und werfen sie auf den Output. Das Ergebnis hört man dann direkt in Echtzeit.
- Beim Offlinebounce zieht man das Pferd von hinten auf: man sagt, "ok, wo kommt Outputsample #1 her?", und rechnet den ganzen Quatsch durch. Dann ist Sample #2 dran usw.

Wie gesagt, prinzipiell müßte es schon machbar sein, ein Projekt in voneinander unabhängige Aufgaben zu unterteilen und diese dann ein separate Threads zu packen, die jeweils auf die Kerne verteilt werden, um das ganze dann am Schluss zu summieren. Trotzdem wird man es auch damit nicht schaffen, ein Projekt mit Volldampf unter 100%iger Auslastung aller Kerne zu berechnen. Eher wird es so ne Art "beschleunigter Bounce" sein...
MacPro 8x3.0GHz, 16GB RAM, Apogee Symphony mit AD16x und DA16x, UAD-2 Quad, Logic Pro 9.1.1, OS 10.6.4 / MBP i7 mit 10.6.4
Benutzeravatar
hugoderwolf
Moderator
Beiträge: 6650
Registriert: 22 Feb 2003 - 14:10
Logic Version: 0
Wohnort: Hannover
Kontaktdaten:

Re: Bouncen und Prozessorkerne

Beitrag von hugoderwolf »

maiermueller hat geschrieben: Nein, das stimmt so nicht. Das Gegenteil ist der Fall: offline bouncen wird eben genau ohne Clock gemacht, nämlich so schnell, wie es geht. Das ist ein fundamentaler Unterschied. Und deshalb funktioniert es auch nur in einem Thread, da dann alle Samples nacheinander berechnet werden müssen.
Ist ja nicht gesagt, dass das so sein muss. Udo meinte mit Clocking nicht die Synchronisation mit der Echtzeit sondern das Anstoßen eines Berechnungszyklus.

In Echtzeit läufts folgendermaßen:
Core Audio sagt Logic "bitte gib mir mal die nächsten x Samples", wobei x der eingestellten Puffegröße entspricht. Logic schmeißt dann die Audioengine an, die irgendwie alle Cores in Bewegung setzt um die nächsten x Samples liefern zu können. Core Audio bekommt die dann und spielt das Ganze übers Interface raus. Wenn Online gebouncet wird wandern die Sampleblöcke dann gleichzeitig noch auf die Festplatte.

Im Offlinemodus *könnte* es dann mit dem gleichen Mechanismus laufen, nur dass die "nächsten x Samples" nicht von Core Audio sondern von irgendeiner Offline-Bounce-Methode angefordert werden.

Von daher könnte man schon behaupten, dass das ohne Probleme zu schaffen wäre. Aber aus meiner eigenen Erfahrung als Softwareentwickler weiß ich, dass es längst umgesetzt wäre, wenn es tatsächlich so trivial wäre. Mit Sicherheit liegt da irgendwo ein dicker Klops im Wege, den wir ohne Einsicht in den Code hier sicher nicht finden werden.

(Man soll nicht meinen, da wären völlige Idioten am Werk. Da sitzen Profis, und mit Profis meine ich nicht x-beliebige Informatiker sondern Spezialisten mit zig Jahren Erfahrung in *genau* diesen Dingen. Das sind keine Probleme, die für Ferndiagnose geeignet wären... ;))
Djordji
Lebende Forenlegende
Beiträge: 1674
Registriert: 01 Feb 2003 - 13:28

Re: Bouncen und Prozessorkerne

Beitrag von Djordji »

Aber es könnte so funktionieren.
Der ertse Prozessor checkt was gemacht werden muss und die anderen helfen ihm bei der anstehenden Arbeit.

Also nicht gleich von Anfang an die Arbeit auf alle verteilen. Sondern gleich nachdem der erste die Informationen gesammlt hat was gemacht werden muss.

Das geht auf sicher. :mrgreen:
Benutzeravatar
Saxer
Mega User
Beiträge: 6703
Registriert: 16 Nov 2007 - 0:35
Wohnort: Rhein Main Gebiet

Re: Bouncen und Prozessorkerne

Beitrag von Saxer »

ok, so machen wir´s!
Sammeln Sie Playback-Punkte?
Benutzeravatar
Dr.Wu
Routinier
Beiträge: 417
Registriert: 17 Mai 2005 - 10:47

Re: Bouncen und Prozessorkerne

Beitrag von Dr.Wu »

ich bounce immer realtime weil ich zuviele streaming plugs verwende, die beim offline bouncen gerne mal artefakte produzieren....... :roll:
aber da meine stücke meistens unter der 4 minuten grenze liegen isses mir egal
:wink:
Der Unterschied zwischen Theorie und Praxis ist das es theoretisch keinen gibt.
Benutzeravatar
maiermueller
Forengott
Beiträge: 2365
Registriert: 01 Mär 2006 - 12:28
Logic Version: 0
Wohnort: Düsseldorf

Re: Bouncen und Prozessorkerne

Beitrag von maiermueller »

hugoderwolf hat geschrieben: Ist ja nicht gesagt, dass das so sein muss. Udo meinte mit Clocking nicht die Synchronisation mit der Echtzeit sondern das Anstoßen eines Berechnungszyklus.
Naja, aber ne Clock hat ja schon immer eher was periodisches, zumindest im eigentlichen Sinne des Wortes. Und das bedeutet dann: X Samples pro Zeit. Genau das macht der jetzige Offline-Bounce aber nicht. Der rechnet einfach, wie's kommt, indem genau die taktgebende Clock weggelassen wird. Weil dann die Threads einfach drauf los rennen, müssen sie in einen einzigen Thread gepackt werden, da sie sonst "auseinanderlaufen" würden.

hugoderwolf hat geschrieben: Von daher könnte man schon behaupten, dass das ohne Probleme zu schaffen wäre.
Was wäre denn nun genau zu schaffen? Einen "Speed-Bounce" oder das Auslasten aller Kerne auf 100%? Darum ging's mir ja... ;)
MacPro 8x3.0GHz, 16GB RAM, Apogee Symphony mit AD16x und DA16x, UAD-2 Quad, Logic Pro 9.1.1, OS 10.6.4 / MBP i7 mit 10.6.4
Antworten