Wie entsteht ein VST(i) ?

KMDR

KMDR

Registriert
13.04.10
Beiträge
1.212
Reaktionen
527
Ort
Berlin
Punkte
2.857
Kann mir vielleicht jemand auf halbwegs verständliche Weise erklären, wie VST(i)s gebaut werden oder mir eine Quelle nennen, die den gesamten Entwicklungsprozess beschreibt?

Besonders interessiert mich die Phase, in der das GUI-Design mit Befehlen belegt wird. Ich bin von Beruf Grafiker für Printmedien und habe (bis auf ein wenig Action Script vor vielen Jahren) noch nie irgendwas programmiert. Allerdings würde ich gern mal eine Photoshop-Datei klanglich zum Laufen bringen. Es gab früher bei Reason eine Photoshop-Maske mit Einzelebenen für den Combinator. So in etwa würde ich mein Dokument auch anlegen. Alle Bedienelemente auf Einzelebenen packen und dann? Kommt kein Ton, haha.

Wo und wie findet die Verknüpfung von Skript und optischer Oberfläche statt?
Mit welchen Programmen, in welcher Sprache?

Und abgesehen von VSTs:
Wie entstehen so kleine Online-Musikprogramme zum Draufrumdaddeln (keine Apps)?
Macht man das mit Flash? Das wäre doof.

Gibt es vielleicht eine Möglichkeit, so etwas mit minimalem Programmieraufwand einfach mal zu machen? Gibt es so etwas wie Preset-Skripte für z.B. Cutoff, Resonanz usw.? Oder Oszillatoren mit den Standardwellenformen? Simple Hall-Effekte und sowas?

Ich frage mich manchmal, wie komplex die VST-Contests von KVR Audio so sind; ob da ein Haufen Nerds wirklich krasses Zeug ausheckt (das GUI-Design lässt dies vermuten), oder ob sich das alles auf einem Level bewegt, an das man sich ruhig selbst mal ranwagen könnte, ohne gleich Kopfschmerzen zu kriegen.

Ich will es wirklich so simpel wie möglich halten, wenn das überhaupt geht.
Und Alternativprogramme, die eher fürs gestalterische Auge gedacht sind (so wie Adobe Muse Vs. Dreamweaver) wären mir natürlich erstmal am allerliebsten.


Fragen über Fragen ...
Antworten wären toll.
 
Synthedit könnte für dich interessant sein. http://www.synthedit.com/

Damit sind auch Einige der bekannten kostenlosen VSTs entstanden. Ein Editor mit Baukastenprinzip, ganz ohne Programmieren gehts auch nicht, aber eventuell ohne Kopfschmerzen.
 
Von VST habe ich keine Ahnung, aber AU erstellt man in Objective C. Dafür benötigt man XCode, das gibt es aber kostenlos im AppStore.

Hier ein paar Infos, zwar schon älter, aber bestimmt noch mehr oder weniger gültig:

https://developer.apple.com/library...ogrammingGuide/Introduction/Introduction.html

Das GUI für AU ist generell Cocoa.


Ob man generell auch in C++ oder etwas vergleichbarem programmieren kann, weiß ich nicht. Dafür stecke ich zu wenig in der Materie.
 
@KoolKolle
Geil! Daran werde ich viel Spaß haben, glaube ich :)
Vielen Dank.


@Steffi_Weigelt
Ah, ok. Wusste gar nicht, daß AUs so stark mit Apps verwandt sind, aber logisch eigentlich.
Danke, auch für den Link :)
 
Synthedit gibts nur für PC :(
 
Ich bin von Beruf Grafiker für Printmedien und habe (bis auf ein wenig Action Script vor vielen Jahren) noch nie irgendwas programmiert.

Nu ja, dann wirds auch nicht mal eben so gehen ... selbst erfahrene Programmierer müssen erstmal die Systemschnittstellen und Signalverarbeitung verstehen, usw. Außer bei einem Lego-like Baukastensystem und selbst bei Synthedit muss man sich tief einarbeiten.

ob da ein Haufen Nerds wirklich krasses Zeug ausheckt (das GUI-Design lässt dies vermuten)

ja! Mathe ist Pflicht.
 
VST-Plugins sind i.d.R. in C++ programmiert (obwohl das in jeder anderen höheren Programmiersprache auch ginge). Wer sich das mal anschauen will, kann sich das VST-SDK Developmentkit von Steinberg herunterladen. Die Sourcen sind in C++ geschrieben, weshalb sich eben auch der Einsatz dieser Sprache empfiehlt.

Bitmaps für Regler, Knöpfe und andere grafische Elemente werden wie bei allen ausführbaren Dateien als Ressourcen in die DLL eingebunden, müssen dann aber vom Programmcode natürlich bedient werden. Wie das gemacht wird, bestimmst du als der Entwickler. Dafür gab es früher noch als Hilfestellung eine Bibliothek von Steinberg, die VSTGUI - wobei ich im Moment nicht weiß, ob die noch existiert, da ich mich zuletzt zu VST 2.3 Zeiten mit der Sache beschäftigt habe und das ist ja inzwischen von Steinberg eingestellt worden. VSTGUI war auch eher eine Krücke, von kommerziellen Entwicklern weiß ich, dass sie eigene Bibliotheken mit eigenen Funktionen benutzen.

Im Grunde ist VST aber "nur" eine Schnittstelle zwischen Host und Plugin, innerhalb derer das Plugin einen Puffer bekommt, aus dem es die Daten liest, die es bearbeiten soll und einen weiteren Puffer, wo es die bearbeiteten Daten hineinschreiben kann. Dazu kommen dann noch Dinge wie Automation und Presetverwaltung, aber im Grund ist alles, was zwischen den Puffern passiert alleine Sache des Plugins und die Einbindung von grafischen Elementen gehört eben auch dazu.

Insofern ist deine Frage eigentlich falsch gestellt. Man baut nicht erst ein paar grafische Elemente und weist denen dann eine Funktion zu. Man programmiert erst einmal die Funktion und deren Parameter/Variablen und sucht sich dann ein hübsches Bildchen, das die Werteingabe grafisch darstellt. Und man muss selbstverständlich selbst programmieren, was wann wo und wie zu passieren hat. Du wirst Mouse-Events bei Windows oder OS X erfragen müssen und dann Programmcode schreiben, der auf diese Events reagiert und anschließend auch dein Bildchen dreht (wenn es ein Knopf ist) oder verschiebt, wenn's ein Faderbutton ist.

Wenn du das selbst machen willst, führt kein Weg daran vorbei, drei Dinge zu lernen:

1. Digitale Signalverarbeitung
Das brauchst du, um zu wissen, wie z.B. ein Oszillator mathematisch/algorithmisch dargestellt wird.

2. Objektorientierte Programmierung und C++
Das brauchst du, damit du es auch konkret programmieren kannst und am Ende des Tages eine DLL-Datei hast, die Cubase als Plugin laden und ausführen kann.

3. Schnittstellen der Betriebssysteme
Je nachdem, ob du für Mac oder PC oder gar beide programmieren willst, wirst du unterschiedliche Bibliotheken brauchen, haben die Funktionen des Betriebssystems, die du brauchst, andere Namen (z.B. die Abfrage der Maus oder die Speicherzuweisung oder Festplattenzugriffe, wenn dein Plugin auch noch etwas laden können soll).

Um dir mal einen Anhaltspunkt zu geben:
Ich habe mich vor Jahren mal im Selbstversuch drangesetzt und in vier Wochen Urlaub genug C++ lernen können, um ein Phaser-Plugin zu programmieren. Allerdings hatte ich vorher einige Programmiererfahrung in einfacheren Sprachen, grundsätzliche Programmierstrukturen waren mir bereits bekannt. Und ein Phaser ist ein recht einfacher Algorithmus, den man sich ergoogeln und dann recht schnell verstehen kann.

Dann ist C++ einfach nur eine weitere Sprache, deren Syntax und abstrakte Konstrukte (eben die Objektorientierung, Klassen, Vererbung) man eben lernen muss.

Wenn du aber noch nie eine Zeile Code geschrieben hast, wird es sehr schwierig, weil dir dann alle Grundlagen komplett fehlen. Und wenn du keine Ahnung von digitaler Signalverarbeitung hast, dann würde ich es gar nicht erst versuchen.
 
Ok, so wie es aussieht, führt also kaum ein Weg an der Auseinandersetzung mit C++, Objective C und XCode vorbei, wie Steffi_Weigelt schon sagte. Und das sind erst die Sprachen. Hinzu kommt die Beschäftigung mit Systemschnittstellen, digitaler Signalverarbeitung und noch 'ner ganze Menge mehr ...

@j_pirazzi:
JUCE klingt sehr interessant, auch wenn's mich gleichzeitig erstmal abschreckt.
Dabei scheint das schon mit zu den leichter begreifbaren Dingen zu gehören.

@synthpark:
Meinen Beruf und meine nicht vorhandenen Programmierkünste habe ich vor allem deshalb erwähnt, um möglichst verständliche Antworten zu bekommen. Ich bin nicht davon ausgegangen, daß das Gestalten eines schicken Buttons nur wenige Schritte von der Entwicklung einer funktionierenden GUI entfernt ist ;)

@Rainer_Hain:
Klasse, vielen Dank für den ausführlichen Post!
Ich habe tatsächlich nicht den geringsten Schimmer von digitaler Signalverarbeitung und Programmiersprachen - es sei denn, man zählt mein virtuos-dilletantisches MySpace-HTML-Gehacke von 2006 zu den Grundkenntnissen ;) Du hast mir mit den drei Punkten jedenfalls sehr geholfen, das Ganze wenigstens theoretisch besser zu begreifen und die verschiedenen Baustellen nachzuvollziehen.

Insgesamt bin ich durch Eure Antworten nun etwas desillusioniert. Zwar war mir klar, daß der klassische Weg für solche Sachen die Programmierung ist. Allerdings hatte ich die Hoffnung, daß es mittlerweile Programme gibt, die einem zunächst mal einen großen Teil der Skriptarbeit abnehmen und aus der grafischen Oberfläche automatisch Codes generieren, nachdem man den verschiedenen Objekten ihre Funktionen zugeteilt hat. Für Websites gibt es ja solche Programme, und natürlich sind die in den Augen waschechter Programmierer total verpönt. Trotzdem wäre so etwas ein super Einstieg für mich, weil sich erste Erfolgserlebnisse schnell einstellen und mich motivieren würden, mich intensiver mit der Materie zu befassen.

Hardwaremäßig finde ich Arduino übrigens sehr interessant - das Ding bietet einem nach einer gewissen Einarbeitungszeit ja auch die Möglichkeit, ganz coole Geräte zu bauen, ohne über jahrelange Programmierkenntnisse verfügen zu müssen. So ein Ansatz auf reiner Softwarebasis wäre glaube ich das Richtige für mich. Deshalb gefiel mir auch Synthedit spontan sehr gut. Schade, daß es keine Mac-Version gibt.

---

Mal ein anderer Ansatz: Reaktor von Native Instruments ...
Ließe sich damit vielleicht erstmal einiges über digitale Signalverarbeitung lernen, was die Programmierung später vereinfacht bzw. den Programmierprozess und die Befehle plausibler macht?


Auf jeden Fall vielen Dank Euch allen!
 
guck dir native insruments reaktor an.. du erstellst da zwar keine vsts aber synths für reaktor die auch mächtiger sein können als irgendwelche vsti synths
 

Ähnliche Themen

Can
    • Danke
  • Artikel
Antworten
11
Aufrufe
51K
oove
oove

Neue Antworten


Oft gelesene Themen

Zurück
Oben