Optimierung
der Funktionsweise
Sleep
Mode
Wenn ein
Modul nicht gebraucht wird, schaltet es automatisch in den Sleep Mode
= verwendet keine Rechenleistung. Bei 3rd-Party-Modulen ist dies nicht
immer der Fall, weswegen hier ein Anzeigeinstrument gut ist, das den aktuellen
Zustand des Moduls verrät:
1. Über
"Special -> Monitor" verrät eine Anzeige, ob
das jeweilige Modul gerade etwas sendet oder nicht
Monitor, in den Signalweg eines einfachen Synthesizers eingebaut
sleepMode-Monitor1.se1
2.
über das 3rd-Party-Modul "BookExamples -> sc:status"
und einen davorgeschalteten Inverter (Modifiers -> Inverter) wird ein
Signal (10 V) ausgegeben, sobald ein daran angeschlossenes Modul arbeitet
(sonst 0 V; ohne Inverter wäre es umgekehrt). Damit kann man z.B.
eine LED-Anzeige koppeln:
LED-Anzeige,
in den Signalweg eines einfachen Synthesizers eingebaut
sleepMode-Monitor2.se1
Flow
Control
Wenn
es geht: lieber "1->Many"-Schalter verwenden und so wenig
wie möglich "Many->1"-Schalter
links: ressourcensparend: "1->Many"
rechts: ressourcenverschwendend: "Many->1"
Schalter
und Slider immer vor den Einsatz eines Moduls schalten (da, sobald der
Regler oder Schalter auf 0 steht, das Modul in den Sleep Modus geht),
nicht dahinter:
Beispiel für einen Bypass-Switch
immer: Effekt ist nachgeschaltet
Beispiel für eine Bypass-Schaltung mit Slider (Bypass, wenn Slider=0)
immer: Effekt ist nachgeschaltet
Special/Denormal
Detector/Cleaner: Sehr hilfreich bei Modulen mit internen Feedbackschleifen
wie z.B. Nachhallschaltungen, Filter o.ä. am Audioausgang zwar noch
Werte anliegen, diese jedoch unhörbar klein sind und stärkere
Rechenleistung verbrauchen (da, je geringer die Werte, desto größer
die Präzision der Verarbeitung). Bei den normalen SynthEdit-Modulen
sind diese Dinge schon eingebaut, bei 3rd-Party-Modulen hingegen können
diese äußerst kleinen Werte auftauchen und zu einem enormen
Ressourcenverbrauch führen
Denormal Detector und Cleaner im Signalweg
Bei Effekten: Über das 3rd-Party-Modul "Autosleeper"
kann Rechenleistung gespart werden, indem es direkt an den Eingang angelegt
wird und denn Effektweg nur freigibt, sobald die Spannung über einen
bestimmt Wert steigt.
Stereo-Autosleeper-Modul
Bei
Synthesizern:
Polyphonie:
je mehr Stimmen ein Synthesizer hat, desto stärker der Ressourcenverbrauch.
Deswegen: Polyphonie so weit es geht einschränken. Am besten: Polyphonie
direkt im äußersten Container festlegen
Polyphonie am besten im äußersten Container einstellen, nicht
zu viele Stimmen zulassen
Ressourcensparend
ist es auf jeden Fall auch, einen Mono-Mode-Switch an den "MIDI
to CV" anzulegen, so dass der User den Synthesizer monophon benutzen
kann.
Mono-Mode-Schalter am VCO
Envelope:
Ausschwingzeiten (im ADSR) sollten möglichst kurz gehalten werden:
je länger die Ausschwingzeit, desto größer die Gefahr,
dass viele Stimmen (auch unhörbar) übereinander liegen und je
mehr Stimmen übereinander liegen, desto größer der Ressourcenverbrauch.
Lineare
und nichtlineare Module: Bei "linearen" Modulen ist es egal,
an welcher Position im Signalfluss sie stehen, sie verbrauchen immer die
gleiche Rechenleistung. Lineare Module sind z.B. Delay2, Pan, Level Adj.
Bei "nichtlinearen" Modulen ist es entscheidend, wo sie im Signalverlauf
stehen, da in ihnen meist davon ausgegangen wird, dass sie polyphon oder
in mehreren Kanälen arbeiten. Nichtlineare Module sind z.B. VCA,
VCO oder Waveshaper.
Daumenregel für ressourcensparendes Programmieren: Nichtlineare Module
im Signalfluß möglichst weit hinten halten, so dass möglichst
viel linear verarbeitet wird.
Special/Voice
Combiner: Mehrere Quellen lassen sich in einem Voice Combiner zusammenführen
und dann gemeinsam weiterverarbeiten (= ressourcensparend)
Voice Combiner im Signalfluss
Weniger
ist mehr: Wenn mehrere Lösungswege möglich sind: möglichst
den wählen, bei dem die wenigsten Module verwendet werden, da jedes
Modul ein wenig Rechenleistung benötigt.
Waveshaper2:
gut zum Umrechnen von Volt in Hz (oder andere rechenintensive Gegebenheiten,
in denen eine Variable verändert wird): Waveshaper arbeitet mit Werten
von -5 bis +5 Volt (Bereich lässt sich mit sc:Rescaler
beliebig erweitern; zurückskalieren kann man dann in Waveshaper selbst,
indem der Wert mit einem beliebigen Faktor multipliziert und/oder mit
einer Konstante addiert wird). Sollen z.B. nur positive Zahlen verwendet
werden: immer (x + 5) einsetzen.
Volt in Hz umrechnen mit dem Waveshaper2 (1 Hz=13,75 * 2 hoch x Volts)
waveschaper2_umrechnen.se1
Bei
identischen oder synchron verlaufenden Stereo-Einstellungen: Wenn
mit Frequenzen gearbeitet wird: diese immer vorher aus den Spannungswerten
ausrechnen und dann gleichzeitig an beide Module verschicken (da die Umrechnung
immer etwas aufwendig ist, s.o.), wie z.B. bei Stereofiltern:
Bei identischen Einstellungen: "Volt nach Hz"-Rechnung immer
zuerst ausführen
(hier via KDL Volts2Hz-Modul), danach das Ergebnis durch 0,001 teilen
Gleiches
gilt, wenn Werte synchron verändert werden, wie z.B. bei einem "detuned-Filter",
in dem die eine Filtergrenzfrequenz in einer Oktave (hoch 2; oder einem
anderen Intervall mit einem anderen Wert) parallel zur anderen verläuft.
Über den Waveshaper2 kann der entsprechende Intervallwert eingestellt
werden
Bei synchronen
Einstellungen: "Volt nach Hz"-Rechnung immer zuerst ausführen
(hier via KDL Volts2Hz-Modul), danach das Ergebnis durch 0,001 teilen
Bei
Filtern ist dies eine gute Methode, um mit Frequenzen umzugehen. Bei Oszillatoren
lieber intern auf 1 Volt/kHz umschalten.
Als
VST(i) bzw. dll abspeichern
bevor
das VST erzeugt werden kann, müssen alle Elemente (bis auf die Audio-
und MIDI-Ein- und Ausgänge) via "Edit -> Containerize Selection"
in einen Container verpackt werden. Über die Properties des Containers
sollte eingestellt werden, dass alle Bedienelemente sichtbar sind ("Controls
on Module" und "Controls on Parent" = true).
Via
File -> Save as VST öffnet sich ein Dialogfenster, in dem die
Eigenschaften des VSTs eingestellt werden können, wie z.B. Produkt-
und Dateiname oder eine ID, damit der spätere VST-Host anhand der
ID das VST erkennen kann (hier einen beliebigen Code mit 4 Ziffern/Buchstaben
eingeben).
Dialogbox, um den Quellcode als VST(i)-dll abzuspeichern
Wenn
im Programmcode ein MIDItoCV-Modul enthalten ist, so wird das VST als
MIDI-steuerbares Instrument abgespeichert ("Plugin is Synth"
= VSTi), sonst wird es als VST-Effektgerät abgespeichert.
Man
kann noch weiter einstellen, ob man einen Nag-Screen einbauen möchte
(der immer wieder auftritt, um einem User zu sagen, dass man die Vollversion
des gerade erstellten Synthesizers kaufen soll) und ob man das VST als
mono- oder stereo-PlugIn verwenden möchte.
Unter
"Embedded Files" kann man noch Grafiken, Sounds etc auswählen,
die in das Modul mit eingebettet werden sollen.
Mit
einem Klick auf OK wird das VST erzeugt und unter dem Pfad zum VST-Ordner
abgespeichert. (Der Pfad zum VST-Ordner befindet sich unter "Edit
-> Preferences -> File Locations")
|