Requirements Plugin Programmierung

  • Ersteller synthpark
  • Erstellt am
synthpark

synthpark

Registriert
11.11.09
Beiträge
27.401
Reaktionen
10.883
Punkte
61.070
Der Thread wäre vermutlich bei KVR besser aufgehoben,
aber vielleicht weiss der eine oder andere hier bestens bescheid.

Ich möchte früher oder später ein Kompressor Plugin programmieren.
In letzter Zeit habe ich mir aus verschiedenen Gründen C++ reingezogen (1000 Seiten).

Jetzt muss ich zum Beispiel feststellen, dass auf der Mac Plattform die Carbon C++ orientierte Entwicklungsumgebung langfristig eingestampft wird zugunsten von Cocoa, eine auf Objective C ausgerichtete Plattform.

Das soll nicht heissen, dass C++ nicht mehr unterstützt wird, aber man braucht, so wie ich verstanden habe, Objectice C oder Objective C++ als GUI Interface Sprache.

Auf der Windows Platform wird das ganze auch nicht leicht.

Steinberg unterstützt VST2 nicht mehr, nur noch VST3.

Dann existieren noch Sprachen wie C#, aber das ist langsamer.

Synthpmaker ist jetzt in Flowstone eingeflossen, kein Plan.

Wer hat Ahnung davon, wie man vorgehen würde, wenn man ein Plugin programmieren wollte und vorerst nur die reine Sprache sowie umfangreiche DSP Kenntnisse hätte (so wie ich). Also welche Teile schreibt man in C++, was muss man beachten für die GUI etc. Auf welcher Basis macht man die Grafik (OpenGL oder DirectX, etc.), waas muss man alles lernen? Ich steh noch am Anfang.

Der Code soll halt möglichst portabel sein und trotzdem effizient bleiben.
 
Ich würde auf externe C++ - Frameworks zurückgreifen, beliebt scheint hierfür JUCE zu sein:
http://www.juce.com/
 
danke für den Tip! Ich hatte mal Synthmaker gekauft, aber das war echt eine Art Geldverbrennungsaktion, da ich das nie benutzt habe und der Code schien mir nicht mehr zeitgerecht.

Aber Juce scheint da mehr zu versprechen. Ausserdem kann man da erstmal entwickeln und erst hinterher die Lizenz kaufen.

Mal sehen, ob es VST3 kann ...

http://www.kvraudio.com/forum/viewtopic.php?p=5645866

Hier faengt der Mist schon wieder an ...

Software ist ne endlose Kloake. :D

Ich seh schon, man muss das ganze KVR Forum studieren, bevor man loslegt.
 
Hast du mal in das Steinberg-Developer-Kit geschaut?

Da sind Beispiele für Plugins drin.

Meines Erachtens ist das Thema GUI sicher das geringste Problem. Wüßte nicht, dass die Plugins 3D-Anfordeungen in Richtung OpenGL/DX haben. Das sind meist "normale" 2D-Bitmaps, ansonsten hast du ja schon ein Kompatibilitätsproblem.
 
ich hatte das Developerkit mal runtergeladen, aber noch nicht intensiv studiert.

Du meinst, dass da eventuell alles an 2D Grafikunterstützung und Buttons/Regler-Management mitgeliefert wird? Und dann stellt sich die Frage, ob das Kit dann auch für Mac zu gebrauchen ist, ohne dass man was ändern muss (natürlich bei Verzicht auf AU).
 
Also eigentlich musst du das alles selbst erstellen, wenn du eine eigene Grafik haben willst. Das kann nerven. Ansonsten kannst du das dann nur so aussehen lassen wie Standard-VSTs.
 
Also eigentlich musst du das alles selbst erstellen, wenn du eine eigene Grafik haben willst. Das kann nerven. Ansonsten kannst du das dann nur so aussehen lassen wie Standard-VSTs.

also du meinst, man nutzt die API und die Ergebnisse sehen aus wie die Standard Cubase Plugins?
Oder wie kann man sich das vorstellen?
Vor allem, wie sehen die Plugins unter Reaper dann aus? :)
 
Neben JUCE gibt es noch IPlug und VSTGUI. IPlug ist auch als closed-source kostenlos verwendbar. VSTGUI wird z.B. von den Beispielen der SDKs verwendet. Sofern du nichts abstraktes an der GUI machen willst wirst du nicht mit Objective-C in Kontakt kommen. Das ist bereits alles von den genannten Frameworks abgedeckt.

Falls noch nicht getan lade dir einfach den SDK runter und schau dir die Beispiele an. IPlug kenne ich nicht aber bei JUCE kannst du nach Bauen des Introjucers sehr einfach ein leeres Plugin erstellen. Entgegen anders lautenden Gerüchten kann der VST3 SDK auch für VST2 Plugins verwendet werden. Im Introjucer einfach den VST3 SDK Pfad statt des VST2 SDK Pfades als VST Folder in den Exporter-Einstellungen angeben.
 
Neben JUCE gibt es noch IPlug und VSTGUI. IPlug ist auch als closed-source kostenlos verwendbar. VSTGUI wird z.B. von den Beispielen der SDKs verwendet. Sofern du nichts abstraktes an der GUI machen willst wirst du nicht mit Objective-C in Kontakt kommen. Das ist bereits alles von den genannten Frameworks abgedeckt.

Falls noch nicht getan lade dir einfach den SDK runter und schau dir die Beispiele an. IPlug kenne ich nicht aber bei JUCE kannst du nach Bauen des Introjucers sehr einfach ein leeres Plugin erstellen. Entgegen anders lautenden Gerüchten kann der VST3 SDK auch für VST2 Plugins verwendet werden. Im Introjucer einfach den VST3 SDK Pfad statt des VST2 SDK Pfades als VST Folder in den Exporter-Einstellungen angeben.

coole Infos, danke !!
 
danke für den Tip! Ich hatte mal Synthmaker gekauft, aber das war echt eine Art Geldverbrennungsaktion, da ich das nie benutzt habe und der Code schien mir nicht mehr zeitgerecht.

Aber Juce scheint da mehr zu versprechen. Ausserdem kann man da erstmal entwickeln und erst hinterher die Lizenz kaufen.

Mal sehen, ob es VST3 kann ...

http://www.kvraudio.com/forum/viewtopic.php?p=5645866

Hier faengt der Mist schon wieder an ...

Software ist ne endlose Kloake. :D

Ich seh schon, man muss das ganze KVR Forum studieren, bevor man loslegt.

Frag doch mal den Herbert (Bootsie) wie er seine Plugins programmiert. Oder auch das Projekt um den TDR feedback compressor, die haben das Teil auch in 64-bit geschrieben.

Möglicherweise ist auch noch etwas Assembler mit dabei für gewisse low-level routinen. Zumindest hat man das früher gemacht, Assembler Code in zeitkritische Anwendungen mit zu integrieren, um auf speed zu kommen. Beispiele hierfür sind auch in der standard C library (libc) unter BSD (zB FreeBSD) zu finden, sicherlich auch in Linux.

Vielleicht kannst Du in dem Bereich mal schnuppern und schauen, wie man Assembler in C integriert, um erstmal den Mechanismus kennenzulernnen.

Irgendwo bin ich auch mal über Beispiel Code für VSTs gestolpert, weiss aber nicht mehr genau wo.

Ich hoffe Du wagst Dich auch an 64-bit ran ;)
 
ich hatte das Developerkit mal runtergeladen, aber noch nicht intensiv studiert.

Du meinst, dass da eventuell alles an 2D Grafikunterstützung und Buttons/Regler-Management mitgeliefert wird? Und dann stellt sich die Frage, ob das Kit dann auch für Mac zu gebrauchen ist, ohne dass man was ändern muss (natürlich bei Verzicht auf AU).

Herbert / Bootsie hat sich irgendwo mal drüber geräuspert, dass jemand für ihn den GUI part macht und ich glaube die GUI Library wurde auch erwähnt... Da würde ich ihn mal fragen, der hat ja schon ein paar ansprechende Sachen gemacht.
 
Hier der Link zu vstgui

http://sourceforge.net/projects/vstgui/

Die verweisen weiter auf folgende Projekte

JUICE - JUCE is a C++ toolkit for building cross-platform applications on PC/Mac/Linux/iOS/Android. Particularly good for complex, customised GUIs and audio/midi processing, it also includes a vast range of classes to help with all your day-to-day programming tasks.
http://sourceforge.net/projects/juce/?source=recommended

jVSTwRapper - allows you to develop VST (2.4), Audio Unit (AU) and LADSPA compatible audio plugins and virtual instruments plus user interfaces (Swing) with the Java programming language on Windows, Linux and Mac OSX. 5 demo plugins (+src) are included.
http://sourceforge.net/projects/jvstwrapper/?source=recommended

mda VST plug-ins - Source code for "mda" audio processing plug-ins in VST format.
Available for many years as closed-source freeware from mda-vst.com
http://sourceforge.net/projects/mda-vst/?source=recommended

Create custom control surfaces for MIDI hardware
http://sourceforge.net/projects/ctrlrv4/?source=recommended

Juno 6 - is an VST based virtual Analogue Synthesizer for Windows written in C++, that emulates the sound technics of the original Roland Juno 6/60 Synthesizer.
the project itself is based on the ultramaster juno 6 linux sources
http://sourceforge.net/projects/juno6/?source=recommended

Viel Erfolg !

LG
Andreas
 
Bootsy hat alle Plugins mit Sythmaker gemacht, deshalb waren die ja alle VST 2 und 32Bit.
Jetzt hat er mit TokyoDawn wohl zusammengearbeitet und damit auch sein Framework benutzt.
Damit kann er dann demnächst wohl auch 64Bit Plugins machen.
Sie wollen demnächst kommerzielle Plugins anbieten.


Steinberg unterstützt VST2 nicht mehr, nur noch VST3.
Stimmt nicht!
Steinberg achtet nur penibel auf die VST 2 Spezifikation.
Dinge die damals noch Pluginhersteller ausserhalb der VST 2 Spezifikation gemacht (meist alte VST 2 32Bit Plugins) haben, funktionieren teilweise unter der 64Bit Bitbridge von Cubase nicht mehr.

Native Instruments Plugins sind alle nach der VST2 Spezifikation geschrieben, keins hat VST 3 .... nur mal by the way...
 
juce finde ich sehr mächtig & ist verhältnismäßig einfach. ich habe unter mac noch nicht kompiliert, sollte aber auch klappen.
bootsy hat nur mit synthmaker entwickelt (& der ouput ist erstaunlich!). welches framework tokyo dawn verwendet, weiss ich nicht.
 
Juce unter Mac ist prinizpiell kein Problem - Tutorials gibt's meistens aber nur für Windows.
 
TDR verwendet JUCE.
JUCE hat ein gutes Support-Forum und eine gute Dokumentation, Unterschiede für Windows und OS X sind nur die IDE. Sonst kommt man bei JUCE normalerweise mit den Betriebssystem nicht in Berührung.

Zum Einsteigen ist es daher wohl am wenigsten frustrierend. Andererseits aber auch für ein Hobby recht teuer, sofern open source keine Option ist.
 
danke erstmal @all für den Input.

Frag doch mal den Herbert (Bootsie) wie er seine Plugins programmiert. Oder auch das Projekt um den TDR feedback compressor, die haben das Teil auch in 64-bit geschrieben.

Möglicherweise ist auch noch etwas Assembler mit dabei für gewisse low-level routinen. Zumindest hat man das früher gemacht, Assembler Code in zeitkritische Anwendungen mit zu integrieren, um auf speed zu kommen. Beispiele hierfür sind auch in der standard C library (libc) unter BSD (zB FreeBSD) zu finden, sicherlich auch in Linux.

Vielleicht kannst Du in dem Bereich mal schnuppern und schauen, wie man Assembler in C integriert, um erstmal den Mechanismus kennenzulernnen.

Irgendwo bin ich auch mal über Beispiel Code für VSTs gestolpert, weiss aber nicht mehr genau wo.

Ich hoffe Du wagst Dich auch an 64-bit ran ;)

Also Assembler ist keine ernste Option.

Ja über Bootsies Ansatz steht ja schon hier was. Ich meine auch, dass er die Grafik jemand anders überlassen hatte. 64 Bit sind heutzutage Pflicht.

Oftmals frage ich mich, woran es scheiterte, wenn bestimmte Firmen 64 Bit nicht angeboten haben. Manchmal eben an der Cross Plattform ;)

Also ich versuchs erstmal mit JUCE.
 
Stimmt nicht!
Steinberg achtet nur penibel auf die VST 2 Spezifikation.

Ich meine auf der Steinberg Seite gelesen zu haben, dass VST2 in Zukunft nicht mehr SDK maessig unterstützt wird.

Zum Einsteigen ist es daher wohl am wenigsten frustrierend. Andererseits aber auch für ein Hobby recht teuer, sofern open source keine Option ist.

Ich mache kein Hobbyplugin, dafür ist die Zeit zu schade, sondern gleich ein Produkt (ähnlich Klanghelm, Cytomic und anderen). Mal sehen, ob Gewerbesteuer anfällt.
 
Habe das auch gelesen. Die Entwicklung des SDK für VST2 ist beendet und wird nicht mehr supported.
 

Oft gelesene Themen

Zurück
Oben