VST vs. DirectX

  • Ersteller projekt-unique
  • Erstellt am
projekt-unique

projekt-unique

Registriert
22.10.03
Beiträge
216
Reaktionen
0
Punkte
250
hallöchen!

Viele PlugIns liegen als VST und als DirectX Versionen vor! Wie steht es um die Performance, wieso sollte man eine Schnittstelle bevorzugen? Sollte man, oder ist es egal?

Gruß, Alex
 
Ich hab die Erfahrung gemacht, daß VST Plugins in der Regel weniger Ressourcen verbrauchen. Warum das so ist kann ich aber nicht sagen.
 
Also die Antwort auf diese Frage, findet sich schon in der Bezeichnung DirectX.

Sicherlich gibt es qualitativ hochwertig Arbeitende Plugins, aber das eigentliche Manko ist DirectX selber.

DirectX ist wie eigentlich jeder weis, Microsofts Antwort auf alles multimedial bezogene von Windows.
Und hierbei darf man die Tatsache nicht ausser Acht lassen, dass DirectX nicht für Musiker oder deren Technik konzipiert wurde und wird, sondern eben für gewöhnliche multimediale Ansprüche.
hinzu kommt noch, und das wirkt sich meiner Meinung nach sehr negativ aus, ist das DirectX eine reine Softwareschnittstelle ist.
Sprich die Signale gehen wie fast alles von Microsoft durchs ganze System.
Dies hat dann unweigerlich zur Folge, dass die CPU starken Rechenvorgängen ausgesetzt ist und somit stark belastet wird.
Im Gegensatz zu VST, was ja direkt an die Audioschnittstelle gekoppelt ist.
Somit ergibt sich in Verbindung von ASIO Treibern eine Ressourcen freundliche Lösung

Sicherlich hat sich Directx zu einer starken und teils zuverlässigen Lösung für Multimediale Anwendungen entwickelt, jedoch bin ich mir nicht wirklich sicher ob die Ansprüche auch Professionellen Musiksystemen gerecht werden.
Auch wenn es 1000 von Plugins im Profi Bereich gibt, bin ich der Meinung dass gerade VST wesentlich sicherer und sparsamer läuft als DirectX
 
Nun, hier kann man wohl vergleichen und diskutieren bis der Arzt kommt. :)

Ich geb mal dann gleich etwas Computergeschichte. :)

Es ist natürlich, wie vieles in der EDV, alles abhängig vom System, von Treibern, von der entsprechenden Host-Software (Cubase, Sonar, Logic etc.) und ganz sicher auch vom Plugin selber.

Hier wirklich gut zu vergleichen ist schwer.
Ich habe bei mir unter dem Hostsystem Sonar Plugin sowohl in VST als auch in DX vorliegen und kann auch beide nutzen.
Dabei hat sich bei meiner bisherigen Arbeit ergeben, dass ich DX Plugins den Vorzug gebe.
Man muss aber auch dazu sagen, dass Sonar bislang kein echtes VST-Hostsystem ist, sondern die VST's mit einem entsprechenden Wrapper zu quasi DX Plugins gemacht werden.

Wer behauptet, dass DirectX keine hochperfomante Schnittstelle ist, dem muss ich leider sagen, dass er nicht sehr viel Ahnung davon hat.
Warum hat gerade im ressourcenfressenden Bereich der Spieleindustrie die DirectX Schnittstelle letztendlich gewonnen? Weil sie einfach besser ins Betriebssystem integriert ist und somit besser war.
Microsoft kennt natürlich das Betriebssystem "Windows" am besten und kann daher eine Multimediaschnittstelle so gut einbetten wie kein anderer Third-Party Hersteller.

Der Vorteil von vielen DirectX Routinen ist eben, dass nicht so sehr das Betriebssystem belastet wird.
Früher zu DOS und Windows-95 Zeiten, konnte man mit Programmen direkt die Hardware programmieren. So entstanden dann aber auch leider viele Programme, die nur auf bestimmten Karten liefen.
Mit Windows-NT 3.5 ist eigentlich das erste Windows Betriebssystem entstanden, wo Programmierer mit Applikationen nicht mehr hardwarenah programmieren konnten. Einzig Gerätetreiber waren noch hardwarenah programmiert.
Der Nachteil davon war aber, dass spezielle Dinge wie Multimedia, Grafik und Spiele nicht mehr schnell genug waren, da das Betriebssystem einfach im Weg stand.
Windows-NT 3.5 und 4 waren daher auch überhaupt nicht großartig für Multimedia-Anwendungen und speziell Spielen geeignet. Mit ein Grund wieso das noch schlankere Windows-98 mit drunter liegendem DOS-Kern weiterhin im Home Sektor stark war.

Microsoft entwickelte daher DirectX als Schnittstelle zwischen Applikation durch das Betriebssystem hindurch zur Hardware.
Herstellern von Hardware wie Grafikkarten und Soundkarten mussten natürlich ihre Treiber DirectX konform machen. Die Treiber mussten also die DirectX Befehle verstehen und umsetzen.
Auf der anderen Seite wurde den Applikationsentwicklern spezielle Befehle an die Hand gegeben, mit denen man die Hardware wieder direkter und effizienter ansprechen konnte. Das DirectX System ist daher wie eine Art Tunnel durch das Betriebssystem hindurch. Befehle auf Applikationsebene werden in kurzen Wegen direkt zu den Treibern und damit der Hardware geschickt.

Die Weiterentwicklung von DirectX brachte damit auch neue Perspektiven mit sich. Was Anfangs mehr für Grafik ausgelegt war hat sich inzwischen auch für andere multimediale Inhalte entwickelt und ist inzwischen auch sehr ausgereift.

VST ist ja eigentlich noch nicht einmal eine Windows Entwicklung, sondern wurde auf dem MAC entworfen. Durch die Portierung von Cubase auf den Windows-PC wurde diese Schnittstelle natürlich mit übernommen, weil man hätte sonst zuviel umprogrammieren müssen.
Inzwischen wurde auch VST natürlich auf dem PC weiter entwickelt und sehr gut optimiert.
Der größte Vorteil von VST sehe ich aber nur in der Verbreitung und Plattform übergreifenden Verwendung.
Ist ein VST Plugin entwickelt, lässt es sich leicht zwischen MAC und PC portieren, die gilt für DirectX Plugins nicht, da das MAC-OS verständlicherweise keine DirectX Schnittstelle hat.

Was letztendlich schneller und besser funktioniert kann man nicht genau sagen. Oftmals ist ein von VST nach DirectX umgeschriebenes Plugin nicht so gut und anders rum genauso.

Ich persönlich bin einfach offen für beides, kann auch beides benutzen und nehme halt was kommt. Eigentlich alle Hersteller, welche ihre Plugins als VST und DX anbieten, bundeln die zusammen, man muss sie also nicht getrennt erwerben. Somit habe ich beim Kauf beides und kann dann aussuchen was mir besser gefällt.

Schöne Grüße,
Organix
 
Warum hat gerade im ressourcenfressenden Bereich der Spieleindustrie die DirectX Schnittstelle letztendlich gewonnen?

weil es schwierig ist, spiele in VST zu schreiben...?
:)
 
astroboy schrieb:
Warum hat gerade im ressourcenfressenden Bereich der Spieleindustrie die DirectX Schnittstelle letztendlich gewonnen?

weil es schwierig ist, spiele in VST zu schreiben...?
:)

:)
Nein, eigentlich weil andere Schnittstellen wie beispielsweise das damals sehr populäre "Glide" einfach nur mit bestimmter Hardware, wie im Falle von Glide nur mit Voodoo Karten, funktionierte. Wenn denn jeder Grafikkartenhersteller sein eigenes Süppchen gekocht hätte, wäre dies für die Spieleentwickler echt grausam gewesen.
Von daher war DirectX wahrlich ein Segen.

Gruß,
Organix
 
:)

Danke für eure zuschriften. Ist alles wirklich sehr interressant. Ich denke mal, ich kann bei meiner subjektiven meinung bleiben, es ist egal ob directx oder vst! ;-) Allerdings sind die VST´s einfacher in der verwaltung, die Directx müssen sich ja in die Registrierung reinsetzen. Hmm, fällt mir gerade so ein!

Gruß, Alex
 
Ja stimmt Alex, DirectX Plugins müssen in der Registry eingetragen werden.
Ein Grund dafür ist, dass es für diese Plugins kein vordefiniertes Verzeichnis wie bei VST's gibt und daher beliebig im Dateisystem verstreut sein können. Ausserdem fungiert das Betriebssystem selbst als DirectX Host und die Registry ist ja eine Art Betriebsdatenbank für das OS.

Ich denke aber mal, dass sich da in mittelfristiger Zukunft einiges ändern wird. Mit .NET wurde im Prinzip der erste Stein gesetzt zu einer ganz anderen Art von Systemverwaltung. Das hier aber jetzt auszuführen würde wohl doch zu weit gehen und hat mit Musik und Homerecording schon recht wenig zu tun.
:)

Grüße,
Organix
 
weil es schwierig ist, spiele in VST zu schreiben...?

--------------------------------------------------------------------------------



Nein, eigentlich weil andere Schnittstellen wie beispielsweise das damals sehr populäre "Glide" einfach nur mit bestimmter Hardware, wie im Falle von Glide nur mit Voodoo Karten, funktionierte. Wenn denn jeder Grafikkartenhersteller sein eigenes Süppchen gekocht hätte, wäre dies für die Spieleentwickler echt grausam gewesen.
Von daher war DirectX wahrlich ein Segen.

Also. VST ist eine Schnittstelle. VST PlugIns sind keine eigenständigen Programme, sondern laufen nur auf einem VST Host, wie Cubase, V-Stack usw.
Deshalb wird man auch kein Spiel "mit Vst" programmieren können.
DirectX ist bereits schon ziemlich ausgereift (seit Version 8.1) und wird wahrscheinlich auch noch länger weiterentwickelt werden, als VST. Von daher kann man in Zukunft durchaus erwarten, dass DirectX PlugIns im Hinblick auf Performance den Unterschied zu VST wettmachen werden.
Wie gesagt, laufen VST Plugins nur auf VST Hosts, damit man aber die Plugins in Programmen verwenden kann, die den VST Standard nicht unterstützen, hat man auch eine DirectX Version gemacht.
Man denke nur an den Roland Canvas, den es dank DirectX auch als ohne VST Host lauffähige version gibt.
So macht das ganze auch wieder mehr sinn, nicht wahr?

LG, Mike
 
Hi Alex,
wenn es um windows geht, würde ich verallgemeinert grundsätzlich sagen,
sofern es um die Host-Application und VSTi + DXi, also nur die
Instrumente geht:
Logic kommt eher mit DXi zurecht!
Steinberg mit VSTi!
Tracktion mit DXi!
Cakewalk mit DXi!

(Cakewalk ist ein Sonderfall, da es selbst auf "billigsten" Systemen
"beste" Ergebnisse erreicht: Auch ohne Asio-Treiber,
schafft Cakewalk niedrige Latenz, da es auf den WDM Kernel von windows hin
wohl am besten optimiert ist!? Wer nur DXi und "SoundOnBoard" nutzen kann,
der ist wohl mit Cakewalk am besten bedient :)

(Der Wrapper, der verwendet wird, um VSTi für DXi-Apps kompatibel zu machen,
spielt dabei keine "untergeordnete" Rolle!)

Einschränkungen und bedenkenswertes, ob es "egal" ist, welche
Schnittstelle du verwendest, gibt es aber zuhauf:

Schlechte Erfahrungen habe ich z.B. mit NativeInstrument-Produkten
(VSTi) im Zusammenspiel mit Cubase sammeln dürfen! Da läuft dann
die DXi-Variante wieder besser.

Ich habe auch den Eindruck, das seit dem Update auf directX 9b,
einige DXi-Plugins mir "schlechter" auffallen :-(

directX-Sachen lassen sich ungern wieder deinstallieren, geht jedoch gut
mit dem DX-uninstaller (Erase Direct-X Plug-in from the registry),
Freeware, download über http://www.vb-audio.com/

Und je nach dem wieviele und welche Instanzen ich z.B. in Cubase verwende,
kommt es schonmal vor, das ein VSTi, das "alleine" top läuft, plötzlich im
Zusammenspiel mit einem DXi "sich aufhängt". Zusammen vertragen sich DXi und
VSTi manchmal eben nicht, darum also besser doch versuchen, einer
"Schnittstelle" irgendwie treu zu bleiben ;-)
 
Man brauch nicht unbedingt einen VST Host um VST Plugins ausführen zu können.
Davon gleich mehr, aber vorher sei auch gesagt, dass man für DirectX ebenfalls einen Host benötigt. Allerdings stellt diesen das Betriebssystem selbst schon zum größten Teil bereit.

Nun aber wie auch VST ohne VST-Host ausführen kann?
Nun, so paradox es auch klingen mag, dies geht wiederum mit DirectX. :-D
Nicht direkt, aber indirekt. Dazu benötigt man einen sogenannten Wrapper. Hat nichts mit in Teig eingewickelten Speisen zu tun, sondern stellt eine Art Übersetzer für Funktionen dar.
Solche Wrapper wie beispielsweise Directxier übersetzen DirectX Befehle zu ihren VST pendants und umgekehrt. Also eine Schnittstelle in der Schnittstelle. :)
Somit sind VST's auch ohne Änderung des VST's selbst unter DirectX Hosts lauffähig. Es ist zwar vielleicht dabei ein kleiner Perfomanceverlust, aber mit modernen Computersystemen dürfte der kaum mehr messbar sein.

Gruß,
Organix
 
@organix

Ein Wrapper ermöglicht den Gebrauch von VST-PlugIns in Host-Applikationen,
die nur Direct-X unterstützen.
Meines Wissens ist "umgekehrt" mit dem Wrapper unsinn! Welcher VST-Host kann
denn DX nicht direkt nutzen??? Ein Wrapper wäre hierfür also völlig unnötig!
Gibt es auch garnicht - oder?

Ein Nachteil der "Wrapper-Not-Lösung" ist beispielsweise, das manche
"Presets" einfach nicht laufen bzw. auch "anders" klingen!
Bsp. klingt der B4 von Native Instruments (als "gewrapptes" VSTi) unter Logic "schlechter"
als das VSTi B4 unter Cubase! Und manche "Sende-effekte" gehen auch nicht!
Der "prozessor"- oder "arbeitsspeicher"-verbrauchende Effekt eines Wrappers
ist bei "großen" Rechner tatsächlich eher unerheblich, entscheidender sind vielmehr
die "verlorengehenden" Möglichkeiten eines VST-Plugins, wenn es "gewrappt" ist!
 
@Organix

Es streitet ja auch keiner ab, das DirectX eine starke Schnittstelle ist zumindest im Multimedialen Sektor.
Nur kannst du DirectDraw oder Direct3D nicht mit dem Plugin Host vergleichen.
Das sind direkten Schnittstellen zur Hardware.
Der DirectX Plugin Host liegt dazwischen.
Sprich er ermöglicht ein eingreifen in die Kommunikation von Software und Hardware.
Was vom Prinzip her noch nicht mal so schlimm ist.
Problematisch ist nur, dass die Effektberechnung dieser Plugins nicht vom Plugin selber geschieht,
sondern das Windows diese Berechnung verwaltet.
Sprich das Plugin ist in dem Moment nur die Steuerung der Parameter


Was ein Musiker benötigt um virtuell Musik machen zu können, ist eine Zuverlässige, schnelle und zugleich Ressourcen schonende Schnittstelle.

Sicherlich, wenn du mal 4 oder 5 Plugins gleichzeitig verwendest möge DirectX da recht gut laufen.
Aber mach das mal mit einem wirklich Komplexen Track von mehr als 40 Spuren.
Wirst dich wundern, wie schnell der Ärger losgeht.
Was wenn du überlegst auf Grund deiner Worte logisch ist.
Du hast genau das bestätigt was ich geschrieben habe.
Problem ist einfach das DirectX durchs ganze Windows System geht.
Und auch das die eigentliche, Effektberechnung nicht vom Plugin ausgeführt wird wie schon geschrieben, sondern von Windows.
Im Gegensatz zum VST.
Und wenn du hier mit mal eben mit 20 Plugins gleichzeitig Arbeitest, schafft Windows den Ausgleich nicht mehr.
Was zum einen daran liegt, dass die Registry völlig zu gepappt wird, und zum anderen das Windows eine mehr als fragwürdiges Speicherhandling hat.
Was zur Folge hat, das Windows eben anfängt die Festplatte zu nutzen.
Und dadurch hast du dann erst die Performance Verluste.
Wenn du zudem noch VST, TDM oder andere Systeme verwendest ist es ganz vorbei.

Den besten Vergleich hast du auch, wenn du statt ASIO, DirectSound als Audiotreiber wählst.
Da siehst du dann den unterschied was es ausmacht, wenn die Signale erst durchs ganze System gehen.
Min 10 ms Latenzzeit.
 
@Beatbreaker

Sorry, da muss ich Dich doch an einigen Stellen berichtigen.

Es gibt keine wirklichen DirectX Plugin Host wie das bei VST der Fall ist. Das Hostprogramm, also der Sequencer hat Schnittstellen zum DirectX Host unter Windows und ansprechen tut er da speziell wohl die Komponenten von Direct-Media.
Was Direct3D für Grafik ist, ist Direct-Media für Audio und stellt eine Teilkomponente von DirectX dar. Diese Direct-Media API stellt Spezial-Funktionen bereit um Audiodaten zu verarbeiten und auszugeben ohne dabei das Betriebssystem unnötig zu belasten.

Das Betriebssystem wird dabei natürlich immer belastet, denn ohne Betriebssystem geht gar nichts.

Die Effektberechnung wird dabei sehr wohl vom Plugin mit Unterstützung der Direct-Audio API gemacht. Das ist da nicht anders als bei VST's, nur das bei VST die Applikation das API bereitstellen muss und sich dann die Applikation auch um alles kümmern muss.

Windows aber macht ganz sicher nicht die Effektberechnung in dem Sinne wie Du jetzt meinst und verwaltet sie auch nicht. Die allgemeinen Windows API's stellen auch überhaupt keine Funktionen dafür bereit.

Natürlich spielt das Windows Betriebssystem immer mit, denn sämtliche Applikationen laufen ja schliesslich unter dem Windows Kernel und sämtliche IO Routinen werden von Windows bereitgestellt und die Prozessverwaltung wird von Windows getätigt und vieles anderes mehr, da macht auch VST absolut keine Ausnahme.

Ich habe nun schon wirklich einige komplexe Tracks mit mehreren dutzend Spuren gemacht und DirectX Effekte waren dabei nie ein Problem.

Wenn ich meine, dass DirectX durch Windows geht, dann meinte ich damit wirklich hindurch. So wie ich nämlich auch schon geschrieben habe, kann man sich das wie ein Tunnel durch Windows hindurch direkt zur HAL (Hardware Abstraction Layer) vorstellen, also ohne das Betriebssystem zu belasten.
Glaubst Du etwa, dass VST nicht das Betriebssystem belastet? VST ist da kein bisschen anders, es benötigt genauso IO Prozesse des Betriebssystems.

Hast Du schon mal DirectX Applikationen entwickelt? Wenn ja, müsstest Du das alles eigentlich wissen. Ich zumindest tu es, denn ich habe schon einiges mithilfe von DirectX entwickelt.

Und zur Registry. Diese wird wenn das Plugin mal läuft überhaupt nicht mehr speziell für das Plugin verwendet. Die Registry wird lediglich zum größten Teil für die Initialisierung der Plugins verwendet, also Pfad zu DLL, eventuelle Parameter für den Start werden ausgelesen. Ist die DLL aber mal im Speicher wird die Registry für das Plugin nicht mehr unbedingt benötigt, es sei denn die Entwickler des Plugins benutzen die Registry noch für irgendwelche anderen Dinge.

Natürlich findet ein stetiger Zugriff auf die Registry vom Betriebssystem statt, aber das ist nicht auf ein Plugin zurück zu führen.

Das Speicherhandling von Windows wird durch ein DirectX Plugin nicht beeinflusst. Du rutschst hier wohl mehr in eine Diskussion ab um negative Punkte von Windows an sich aufzuzählen. Es ist keine Diskussion Windows vs. Mac-OS oder Linux etc. !


Wenn Windows anfängt die Festplatte zu benutzen, dann meinst Du damit wohl das Pagefilesystem. Wenn der Speicher ausgeht lagert das Betriebssystem diverse nicht aktuelle benötigte Teile auf Festplatte aus. Aber auch das hat überhaupt nichts mit einem DirectX oder VST Plugin zu tun.
Dieses Auslagern von Speicher machen andere Betriebssysteme auch und da finden dann ebenfalls Festplattenzugriffe statt.

Wenn man übrigens TDM benutzt ist es überhaupt nicht vorbei, denn dann geht es erst richtig los. Bei TDM wird nämlich endlich mal wirklich das Betriebssystem und sogar die Rechnerhardware nur noch minimal belastet, denn TDM Plugins laufen auf DSP Karten!

Den besten Vergleich habe ich wenn ich statt ASIO mal DirectSound benutze? Nun, dieser Vergleich hinkt, da DirectSound kein wirklicher Audiotreiber ist sondern auch nur ein API.
Wenn dann müsste man einen Vergleich von ASIO Treiber zu den sogenannten WDM Treibern machen und dabei hat bei meinen Vergleichen der ASIO Treiber schon einige mal den kürzeren gezogen.
Ausserdem kommt es hier natürlich sehr stark auf den Hersteller des Treibers an. Was kann denn ein Betriebssystem oder eine Technologie dafür wenn ein Gerätehersteller nicht in der Lage ist anständige WDM oder ASIO Treiber zu programmieren?
Zum Beispiel finde ich bei Terratec die WDM Treiber aus Erfahrung besser als deren ASIO Treiber. Im übrigen gehen auch diese WDM Treiber genauso wie ASIO nicht durch das Betriebssystem, sondern setzen wie die meisten Gerätetreiber direkt auf der Hardware auf. Natürlich werden die Treiber von Windows verwaltet, aber auch da ist kein Unterschied zwischen ASIO und WDM.
Einzig sogenannte MME Treiber sind da eine kleine Ausnahme und daher wirklich grauenhaft in der Perfomance. Aber hier wird ja wohl keiner MME Treiber benutzen wenn es auch WDM oder ASIO von den Herstellern gibt.

Aber auch diese Treibersache hat nun eigentlich überhaupt nichts mit DirectX oder der VST Schnittstelle zu tun und ist wieder eine ganz andere Diskussion.

Man darf DirectX nicht als unbedingten Teil des Betriebssystems sehen, denn Windows würde auch ohne DirectX einwandfrei laufen. (Windows-NT4 hatte beispielsweise von Haus aus kein DirectX)
Allerdings greifen einige mutimedialen Zusatzkomponenten von Windows und auch Teiler der Windows-GUI auf DirectX Komponenten zu und somit ist DirectX inzwischen mit fest im Umfang von Windows enthalten. Man könnte aber mittels diverser Buster, das DirectX komplett aus dem System schmeissen und Windows würde trotzdem noch funktionieren.
Einer der Unterschiede von DirectX und VST ist halt, dass es eine stetig vorhandene Komponente ist und nicht extra durch eine Applikation geladen wird. DirectX läuft also dauerhaft mit. Der VST Host aber wird erst mit einer Anwendung wie zum Beispiel Cubase geladen und steht auch erst dann im Speicher bereit. Letztendlich aber stehen beide irgendwie im Speicher bereit und stellen spezialisierte Funktionen zur Verfügung.
Vorteil von VST sehe ich darin, dass VST einige wirklich speziell auf Audioanwendungen ausgerichtete optimierte Funktionen hat, welche DirectX nicht bietet.

Nun, diese Frage aus diesem Thread habe ich mir in der Vergangenheit auch schon öfters gestellt, nur anstatt in einem Forum zu fragen habe ich einfach probiert und verglichen.
Lade ich beispielsweise Trueverb von Waves als VST zeigt er eine zusätzlich Last von 6% an und als DirectX nur 4%. Bei anderen Plugins war es anders rum.
Das Spiel geht also mal so und mal so aus, je nach Plugin und Hersteller anders und das zeigt mir einfach, dass nicht die Technologie so sehr massgebend ist, sondern das Plugin selbst.

Hätte Steinberg von Anfang an auf Windows entwickelt, hätten sie vielleicht nie VST entworfen und auch DirectX verwendet, wer weiß.
DirectX ist zumindest die für Windows mehr spezialisierte Schnittstelle und ist näher am Betriebssystem als VST. Je näher am Betriebssystemkernel programmiert, desto besser oftmals was die Perfomance angeht, aber dafür auch viel schwieriger auf andere Systeme zu portieren.

So, jetzt aber genug...

Gruß,
Organix
 
@Organix
Ich zumindest tu es, denn ich habe schon einiges mithilfe von DirectX entwickelt.
Klingt interessant! Lese gerade "The Zen of Direct3D Game Programming" von Peter Walsh.
Was programmierst Du denn?

Gruss, Mike
 
26_DAEMONS schrieb:
@Organix
Ich zumindest tu es, denn ich habe schon einiges mithilfe von DirectX entwickelt.
Klingt interessant! Lese gerade "The Zen of Direct3D Game Programming" von Peter Walsh.
Was programmierst Du denn?

Gruss, Mike

Aktuell programmiere ich eigentlich nichts mit Hilfe von DirectX, sondern Applikationen für den Elektronischen Datenaustausch (EDI) von VDA Daten für Zulieferer der Automobilindustrie.
Im privaten Umfeld, also Hobbymäßig, habe ich das Programmieren weitehenst an den Nagel gehängt und widme mich da nun mehr der Musik. Wenn man halt etwas beruflich macht hat man manchmal zuhause keinen Bock mehr darauf.

Früher aber habe ich in der sogenannten Demoscene kleinere Demos mit einem Team zusammen programmiert. Nicht sehr erfolgreich und auch nicht besonders gut, aber hat Spass gemacht und man hat eine Menge gelernt.

Gruß,
Organix
 
Hmm ne Organix du hast mich falsch verstanden.
Evtl. hab ich mich auch ein wenig falsch ausgedrückt.
Es ging hier nicht um das Plugin selber, sondern um den Weg den die Daten nehmen.
Bezogen auf die Audio Treiber.

Der VST Host ist direkt an den z.B. Asio Treiber gebunden, im Gegensatz zum DirectX.
Verwendest du ein DirectX Plugin, so musst du schematisch gesehen hin und zurück.

Und das Problem habe ich hier z.B. auch.
Lege ich auf ein Audioinstrument eine DirectX Plugin, steigt die Latenzzeit ins unermessliche.
Sprich das Instrument wird asynchron.
Und das einfach nur, weil DirectX nicht direkt mit dem Asio Treiber Kommuniziert sondern eben via. DirectSound und der Audioapplikation.
Also ein Hin und Her, das frist Leistung und geht zudem es auf die Latenz.
 
@Beatbreaker

Der VST Host ist für VST Plugins genauso wenig direkt mit einem ASIO Treiber gebunden wie bei DirectX Plugins. Der Datenfluss ist bei beiden ähnlich.

Bei VST werden die Daten zum VST Host geschickt, dort quasi verarbeitet, dann zurück zur Audioengine und von dieser an den Audiotreiber.
Bei DirectX werden die Daten zum DirectX Host geschickt dort quasi verarbeitet, dann ebenfalls zur Audioengine geschickt und von dieser zum Audiotreiber.

Jetzt wirst Du warscheinlich sagen wollen, dass der Weg zum VST Host für zum Beispiel Cubase irgendwie kürzer ist. Auch das wäre quatsch, denn man kann sowas nicht in Entfernungen messen. Ausserdem muss man sich Vorstellen, dass Cubase selbst nicht der VST-Host ist sondern einen solchen bereitstellt, also auch nur eine Teilkomponente des Gesamtsystems ist, genauso wie DirectX eine Teilkomponente darstellt.

Das manche DirectX Plugins manchmal schlechtere Perfomance aufweisen, liegt oftmals einfach daran, dass die Plugins schlecht programmiert sind oder am System irgendwas nicht stimmt. Was DirectX Plugins ebenfalls beeinflussen kann sind eventuell andere Applikationen, die im Hintergrund ebenfalls zur gleichen Zeit das DirectX Interface benutzen. Hier hat VST den Vorteil, dass der VST Host nur vom bereitgestelltem Hostprogramm verwaltet wird und nicht von anderen Applikationen auch.
DirectX wird vom Betriebssystem verwaltet und wird das Betriebssystem in die Knie gezwungen funktioniert auch DirectX nicht mehr gut. Alllerdings, ist das Betriebssystem am Ende funktioniert eigentlich gar nichts mehr auch kein VST Host, denn ohne OS geht nix.

Hat man aber beispielsweise den Windows-Media Player auf und dessen tolle Visualisierungen und darin noch ein Plugin wie dieses Wow, dann ist der DirectX Host natürlich schon mal beschäftigt und somit steht für andere DirectX Applikationen nicht mehr genügend Rechenleistung zur Verfügung.
Man sollte also darauf achten, dass man nicht im Hintergrund noch irgendwas laufen hat.

Der Datenfluß vom Vergleich VST Plugin vs. DX Plugin ist ähnlich. Beides mal müssen die Daten zu einem Host und irgendwie dann zur Audioengine gelangen und nur die Audioengine hat direkte Verbindung mit dem Audiotreiber.

ASIO im übrigen ist nur eine für Audio IN- und OUTPUT optimierte Treibervariante mit hervorragendem Timingverhalten und synchronisiertem Playback/Recording. Es ist aber trotzdem nur ein Gerätetreiber und muss wie andere Treiber auch im Betriebssystem angemeldet sein.
Zudem kommen die ASIO Treiber ja nicht vom Hostprogramm wie Cubase, sondern vom Soundkartenhersteller und haben daher erstmal gar nichts direkt mit dem Audiosequencer zu tun.

Kleiner Tip noch so am Rande. Unter Windows 2000/XP sollte man die Prozessorzeitplanung auf "Hintergrunddienste" stellen und nicht wie voreingestellt auf "Programme". Zu finden ist dies unter Systemsteuerung/System/Einstellungen/Erweitert.
Grund ist, dass zum Beispiel ASIO und der VST-Host im Hintergrund läuft, das Programm (Cubase) oder ein momentan aktiver Subtask dessen selbst aber im Vordergrund. Somit klaut zum Beispiel unter anderem die Grafikoberfläche von Cubase der Audioengine und dem ASIO System unnötig Rechenleistung.
DirectX ist von diesem Prozessorzeitverhalten nicht so sehr betroffen, weil DirectX direkt vom Betriebssystem verwaltet wird und ich glaube sowieso eine etwas höhere Priorität bekommt.

Fakt ist, dass der wohl größte Faktor das Plugin selbst ist. So ist ein gut programmiertes und optimiertes DirectX Plugin mit Sicherheit besser als ein nicht so gut programmiertes VST Teil. Natürlich anders herum genauso.
Problem sind oft Portierungen. Wird ein VST Plugin einfach mal geschwind nach DirectX portiert, wird es nicht die Perfomance erreichen wie sein VST Pendant, weil es einfach nicht richtig optimiert wurde.

Wir bewegen uns hier also schon ein wenig im Kreis.

Gruß,
Organix
 

Ähnliche Themen

Cliff-Benz
Antworten
14
Aufrufe
1K
psinnovation
P
L
Antworten
46
Aufrufe
3K
savameta
savameta
L
Antworten
3
Aufrufe
851
djdeveloper
djdeveloper
moonbooter
    • Danke
    • Gute Antwort
  • Artikel
Antworten
7
Aufrufe
4K
moonbooter
moonbooter
F
Antworten
46
Aufrufe
4K
SteinHal
SteinHal

Oft gelesene Themen

Zurück
Oben