Turing's Slow Progress: Auf dem Weg zum eigenen Softsynth

T

Turing

Thou shalt not loop
Wie ja verschiedentlich schon erwähnt, schreibe ich an einem eigenen Softsynth.
Realisiert wird das Plugin in C++ mit JUCE, so dass es für Windows, Mac und Linux verfügbar sein wird.
Der Thread steht im Bereich "Nerdiges", weil ich das "Softsynth"-Unterforum nicht mit Posts zu einem unfertigen Plugin zumüllen möchte, das es möglicherweise nie von meinem PC in die Welt hinaus schafft.
"Slow Progress", weil das Plugin selbst im positiven Fall noch eine ziemlich lange Zeit für seine Fertigstellung brauchen wird.
Grundsätzlich funktionsfähig ist der PoC allerdings schon. Die ersten Töne waren im Film Score Battle zu hören (3 Spuren, Hall aus Eventide Blackhole):



Und inzwischen ist das Plugin natürlich weiter gediehen und wird beständig erweitert und verbessert.
Was das eigentlich Besondere an diesem Softsynth werden soll, verrate ich an dieser Stelle noch nicht, weil es auch noch nicht umgesetzt ist.
Hier aber ein paar Infos, die eine Vorstellung von den zu erwartenden Merkmalen des Plugins geben:

MODERN

Ziel ist ein moderner Synth, der Funktionalitäten umsetzt, die nur mit digitaler Signalverarbeitung möglich sind.
Die bereits realisierten Oszillatoren nähern sich dem mathematischen Ideal, sie schneiden an der Nyquist-Frequenz scharf ab, sind phasentreu, weitgehend aliasing-frei und zudem effizient implementierbar. Genutzt werden sie als ein erstklassiger Wavetable-Player.
Zur Klangformung dienen spektrale Transformationen, wie man sie z.B. aus Vital kennt. Bereits jetzt gibt es 5 Regler, mit denen das Spektrum eines Oszillators geformt werden kann. Weitere Spectral-Warp-Arten werden im Laufe dieses Jahres hinzukommen.
Daneben gibt es eine Unison-Engine, die aktuell durch 7 Regler gesteuert wird und ein bis zu 8000-faches Unisono pro Oszillator erzeugen kann.
Die Oszillatoren sollen später durch Operatoren flexibel verknüpft werden können.
Das stelle ich mir grob wie beim opsix vor, der ja neben FM z.B. auch die Anwendung von Ringmodulation, eines Filters oder eines Effekts als Operator darstellt. Ich denke, ein solcher Operator-basierter Ansatz ist potenziell leichter zu nutzen als ein Aufbau wie ein Modular-System mit komplett freier Verdrahtung.
Im Moment gibt es aber nur einen Oszillator pro Stimme und noch keine Operator-Matrix.

EIN ECHTES MPE-INSTRUMENT

Der Softsynth ist als ein "echtes", live und per MPE spielbares Instrument ausgelegt. Der Synth soll "musikalisch" auf Änderungen der MPE-Dimensionen wie MPE-Timbre ansprechen und sich dadurch wie ein reales Instrument anfühlen.
Da es noch kein Modulationssystem gibt, ist die direkte Formung jeder Note mit den Fingern über einen MPE-Controller auch bisher die einzige Möglichkeit, die Töne zu beleben.
Im Moment reagiert jede Stimme auf die Anschlagstärke und auf Bewegungen in X-Richtung (Bend/Vibrato). Durch die Y-Dimension (Slide CC74) wird die Wavetable-Position gesteuert. Die Z-Dimension für Per-Note Aftertouch wird im Moment nicht genutzt, weil mich die gleichzeitige Kontrolle von Vibrato/seitlicher Bewegung und Anpressdruck motorisch überfordert.
Andere Modulationen sind derzeit nicht möglich.
Natürlich werden diese Dinge später frei konfigurierbar sein und ein Modulationssystem einschließlich Envelope Gates, LFOs usw. ist in Planung.

Da ich MPE bei "Extinction" noch nicht zum Laufen gekriegt hatte und es daher noch ein paar störende Artefakte des Controllers enthält, hier eine neue spontane Demo, wie das Plugin mit MPE-Nutzung klingen kann (1 Spur mit Joué Scaler, Absolute Y Control, Hall aus 7th Heaven Professional):

Anhang anzeigen MPE-Demo-2023-07-25.mp3

Im Sinne der Live-Spielbarkeit würde ich gerne mehr Zeit in Play Modes und diverse Spielhilfen stecken, leider fehlen mir dazu einfach die Ressourcen. So gibt es aktuell nur zwei Play Modes: den normalen polyphonen Mode und einen dem Trident Mode 2 nachempfundenen Hybrid-Mode.

EIN SOFT-SYNTH ZUM "SCHRAUBEN"

Der Synth soll sich zum spontanen Erstellen von Patches eignen und zum "Schrauben" an den Knöpfen einladen.
Hierzu soll es für alle wichtigen Einstellmöglichkeiten ein GUI-Element geben, jedoch auch insgesamt eine Beschränkung der Freiheitsgrade. Jedes GUI-Element muss eine klare Aufgabe und hörbaren Effekt haben und es soll nicht zu viele Wege geben, dasselbe Ziel zu erreichen. Es soll also nicht ein eklektischer "Alleskönner" entstehen, solche Plugins empfinde ich persönlich als Kreativitäts-Killer.

KEINE BELIEBIGKEIT

Als Entwickler möchte ich natürlich, dass die besonderen Merkmale dieses Softsynths zur Geltung kommen und intensiv genutzt werden - und nicht Standard-Features, für die man dieses Plugin gar nicht bräuchte.
Deshalb gibt es kein subtraktives Filter, obwohl es ein leichtes wäre, ein Ladder-Filter oder State-Variable-Filter einzubauen. Es gibt nur die vorgegebenen (aktuell 5) synthetischen Factory-Wavetables und es ist nicht möglich, eigene Wavetables oder Samples zu laden und Wellenformen oder Spektren zu zeichnen. Auch gibt es vorerst keine Builtin-Effekte.
Ich hadere aber noch mit dieser puristischen Haltung, denn bei FM-Synths z.B. freue ich mich ja auch über ein subtraktives Filter, selbst wenn es technisch eigentlich unnötig ist.

KEIN PRODUKT

Mein Anspruch ist es nicht, ein fertiges kommerzielles Produkt zu entwickeln.
Zwar bemühe ich mich immer um rechnerische Effizienz, aber dies wird kein Rundum-Sorglos-Plugin, das einen die Grenzen der Hardware nicht spüren lässt. Es zielt kompromisslos auf die bestmögliche Audio-Qualität, selbst wenn potenzielle Nutzer mit älteren oder schwächeren Rechnern dadurch über die Kante fallen. Zudem enthält es experimentelle Features, die jede CPU an die Wand fahren können, und mit denen man erst etwas Erfahrung sammeln muss.
Mehr als eine primitive, funktionale GUI ist nicht zu erwarten, ich konzentriere mich lieber auf die "inneren Werte".
Das Thema Preset-Verwaltung wird aktuell der DAW überlassen.
Und es gibt vorerst keinerlei Visualisierung - für die Hörer eines Tracks entscheidet ja auch nur das klangliche Ergebnis.
Das schränkt den Benutzerkreis vermutlich auf einige wenige Enthusiasten ein, die bereit sind, sich auf diese Dinge einzulassen.
So lange ich das ganze in der Freizeit oder evtl. im Rahmen einer Nebentätigkeit entwickle, kann ich auch keinen Produkt-Support leisten.
Deshalb plane ich, das Plugin - sobald es einen entsprechenden Entwicklungsstand erreicht hat - als Donationware herauszubringen. So können es alle Interessierten frei nutzen und ggf. durch eine Spende die weitere Entwicklung unterstützen.

WIE ES WEITER GEHT

Bis zum Ende des Jahres werde ich den bestehenden Ansatz weiter ausbauen (z.B. Erweiterung auf Stereo-Unisono), die geplanten spektralen Transformationen umsetzen und Performance-Optimierungen vornehmen.
In 2024 möchte ich das Modulationssystem ergänzen und es ermöglichen, Oszillatoren in Form verschiedener Operatoren zu verknüpfen.
Wenn dies alles gut klappt, könnte im Anschluss eine erste Version an ausgesuchte Pilotbenutzer herausgehen.
Bis dahin werde ich Euch hier über den Stand der Entwicklung auf dem Laufenden halten und immer mal kleine Audio-Demos zu neuen Features einstellen. Auch freue ich mich über allgemeine Rückmeldungen und habe auch vor, gelegentlich Feedback von Euch einzuholen.
 
Zuletzt bearbeitet:
Am Wochenende habe ich noch das normale "brute force" Unisono ergänzt, bei dem jede Unisono-Stimme einzeln gerendert wird.
(Vorher gab es nur Multi-Unisono-Varianten, die nicht "naiv" implementiert sind und deren Rechenzeitbedarf nicht von der Stimmenzahl abhängt).
Aber es ist gut, auch die einfache Implementierung als Baseline zu haben.
Hier ein phasiges Beispiel mit dem 7-fachen brute force Unisono, Hall 7th Heaven Professional:

Anhang anzeigen 2023-08-06-BruteForce-Mode-Test.mp3
 
Hier ein kleines Update:
Seit dem letzten Beitrag war ich nicht untätig, sondern habe eine Idee verfolgt, wie man eines der Multi-Unisono-Verfahren verallgemeinern und dadurch mit zusätzlichen Klangformungs-Möglichkeiten ausstatten könnte. Das ganze war kompliziert und ich habe eine Menge Lehrgeld bezahlt, so dass die Fertigstellung mehr als einen Monat gebraucht hat.
Wie dem auch sei, hier eine kleine Demo:

Anhang anzeigen 2023-09-12-Gloria.mp3

(wie üblich ein improvisierter 1-Take, eine Spur, nur das Plugin und dazu Hall aus Seventh Heaven Professional).
Genutzt wird dieselbe Wavetable wie bei der vorigen Demo, nur durch die neuen Gestaltungsmöglichkeiten etwas anders in Szene gesetzt.

Weitere Planung: Aller Voraussicht nach werde ich mich bis Ende des Jahres ausschließlich auf Multi-Unisono konzentrieren.
Das zentrale Thema ist die Schaffung organischer und in sich texturierter Klänge.
Inzwischen hatte ich noch zwei neue Ideen für Crossover-Varianten aus bestehenden Ansätzen, dazu kommen die vorher bereits geplanten Features wie z.B. Stereo-Unisono.
Der nächste Themen-Schwerpunkt (Spectral Warp) verschiebt sich daher ins kommende Jahr.
 
Zuletzt bearbeitet:
Danke, freut mich!

Die Demo vom August hatte nur gezeigt, was sowieso praktisch jedes Plugin kann - 7 einzeln generierte Unisono-Stimmen, die dann summiert werden. Von daher war hier nichts aufregendes zu erwarten. Ich brauche diese Baseline-Methode zum Vergleich mit den Multi-Unisono-Ansätzen, die bei der Unisono-Umsetzung anders (mit der DSP-Trickkiste) vorgehen. Da möchte ich dann für geringe Zahlen von Unisono-Stimmen einen A/B-Vergleich mit der Baseline durchführen können. D.h. das komplexe Verfahren soll für niedrige Stimmenzahlen das gleiche oder ein ähnliches Ergebnis bringen können, wie man es bei der direkten Generierung und Summierung jeder einzelnen Unisono-Stimme erhalten würde.

In der Demo von gestern dagegen kam wieder ein Patch mit 8.000 Unisono-Stimmen zum Einsatz. Da ergibt sich ein deutlich komplexeres Klangbild.
 
Mal wieder ein Lebenszeichen.
Nach dem letzten Beitrag hatte ich zuerst die Konzeption für das angekündigte Hybrid-Verfahren zur Multi-Unisono-Erzeugung erstellt.
Als es dann an die Umsetzung ging, stand eine Menge Refactoring an - eine Tätigkeit, bei der eine IDE sehr viel und gut unterstützen kann - oder eben nicht.
Ich mochte Visual Studio noch nie, aber diesmal hat es mich so dermaßen genervt, dass ich beschlossen habe, mir das nicht länger zuzumuten.
Also habe ich einen Schlussstrich gezogen und bin zu CLion gewechselt, einer vernünftigen IDE, mit der das Entwickeln wieder Spaß macht.
Für Visual Studio hatte eigentlich nur gesprochen, dass es (in der Community Edition) für Privatanwender kostenlos ist und außerdem, dass es vom Projucer, dem Projektkonfigurations- und -generierungstool von JUCE, nativ unterstützt wird. D.h. man kann sich aus dem Projucer per Mausklick eine fertige Projektkonfiguration für Visual Studio erzeugen lassen, und das Projekt lässt sich dann über die erzeugte .sln-Datei in Visual Studio direkt laden und bauen. Das senkt die Einstiegshürde doch enorm.
Diesen Komfort gibt es nun für CLion nicht mehr. Der Projucer enthält keinen Exporter für CLion, und man muss stattdessen über die CMake-API von JUCE gehen.
CMake ist ein komplexes Thema und den Umgang damit hatte ich bisher immer gescheut. Nun aber führte kein Weg mehr daran vorbei.
Während die Anpassung von CLion nach meinen Vorstellungen nur einen Tag gebraucht hatte, dauerte der komplette Wechsel wegen der benötigten CMake-Konfiguration jetzt fast eine Woche.
Mit Hilfe eines Plugin-Beispiels zur CMake-Nutzung, das als Bestandteil von JUCE mit ausgeliefert wird, und auch mit dem Pamplemuse-Template auf github als Vorbild, hat der Umstieg aber letztlich geklappt.
Es war lästig, doch mit dem Wechsel zu CLion und CMake ist mein Projekt für die Zukunft viel besser aufgestellt.
Zum einen ist CLion eben m.E. eine um Klassen bessere IDE, mit der es sich angenehmer entwickeln lässt. Außerdem ist CLion für alle 3 Zielplattformen (Windows, Linux, Mac) verfügbar und eine einzelne persönliche Lizenz genügt, um die IDE auf den 3 Plattformen zu betreiben. So kann ich (sobald das relevant wird) auf allen drei Plattformen dieselbe IDE benutzen, um zu entwickeln oder zu debuggen.
Durch CMake habe ich jetzt alle Freiheiten, um Unit-Tests oder Benchmarks über gesonderte Targets zu behandeln und diese später auch für Continuous Integration zu nutzen.
Vor allem kann ich über CMake jetzt leichter externe Libraries einbinden.
Es ärgert mich schon lange, dass JUCE von Haus aus nur eine Single-Precision FFT mitbringt. Das Plugin könnte aber bei diversen Vorverarbeitungsschritten von einer FFT in höherer Genauigkeit profitieren.
Mit CMake sollte ich jetzt pffft, von dem es einen Double-Precision-Fork gibt, recht leicht einbinden können, weil auch pffft selbst bereits über CMake gebaut wird.
Es gibt also Fortschritte... wenn auch keine direkt hörbaren... und neue Möglichkeiten.
Mehr dann in ca. 2 Wochen, bis dahin sollte ich dann mit der eigentlich geplanten Implementierung weiter sein und wieder eine Demo erstellen können.
 
Zuletzt bearbeitet:
Dank guter IDE, guter Vorbereitung und dem Feiertag heute ist es mit dem geplanten nächsten Multi-Unisono-Verfahren doch schneller gegangen und ich habe es heute in einer Rohfassung umsetzen können.

Es ist ein Abkömmling des Verfahrens aus der letzten Demo und kann auch sehr ähnlich klingen:

Anhang anzeigen 2023-10-03-Gloria-Var2-0.91.mp3

(identische MIDI/MPE-Daten wie beim letzten Mal. Ich habe versucht, den Sound aus der letzten Demo zu reproduzieren und dieses leicht Mandolinenorchester-artige noch ein wenig mehr zu betonen).

Und hier noch eine "glattere" Variante ganz ohne die Mandolinen-/Tremolo-Textur:

Anhang anzeigen 2023-10-04-Gloria-Var3.mp3

Mit dem neuen Verfahren wird es jetzt möglich, noch ein paar weitere Parameter zur Beeinflussung des Klangcharakters und der Textur umzusetzen, was ich für die nächsten Tage auf dem Plan habe.
Meine Hoffnung war, dass es natürlicher und unauffälliger klingen würde als das vorherige Verfahren. Dafür ist aber noch einiges an Feinschliff erforderlich, bzw. ich muss auch an die Konzeption noch mal ran.
 
Zuletzt bearbeitet:
In den letzten Wochen habe ich mich weiter mit dem neuen Multi-Unisono- und Textur-Generierungs-Verfahren beschäftigt.
Es hatte mich erst einmal etwas enttäuscht, weil es zwar eine starke Erweiterung der Möglichkeiten gebracht hatte, darunter aber irgendwie fast keine Sweet-Spots. Deshalb bin ich dann noch einmal in mich gegangen und habe überlegt, wie ich zum einen noch weitere Möglichkeiten erschließen könnte, vor allem aber, woran es liegt, dass viele der neuen Sounds nicht gut geklungen haben und welche Gegenmaßnahmen man ergreifen könnte, um diese Probleme zu fixen.
Auf diese Weise sind jetzt 16 neue Parameter zur Klanggestaltung dazugekommen, 11 habe ich fertig umgesetzt, 3 sind aktiv, aber noch nicht über die GUI steuerbar, 2 sind in in Arbeit. Ich schätze, dass ich diese Arbeiten in der kommenden Woche abschließen kann, dann gibt es auch eine neue Demo.
Bisher ist eine Besonderheit dieses Softsynths somit, dass er ein komplexes Modell (mit aktuell 30 Parametern) besitzt, mit dem die statischen Wellenformen der Wavetables „animiert“ werden können. Dabei ist eine genaue Kontrolle über die Belebung im zeitlichen Bereich und in Bezug auf die Obertöne möglich.

An einem anderen Punkt war ich auch tätig: Bisher habe ich alle Demos mit dem Joué eingespielt, die meisten davon mit dem „Scaler“-Overlay, das in etwa wie ein Glockenspiel aussieht (unten im Foto der Scaler für den Joué Pro, oben das entsprechende Keys-Modul für den Joué Play):

Joue-Scaler.jpg

Das Scaler-Pad bietet einen absolute Y-Modus, bei dem das initiale Timbre (MPE Timbre bzw. "Slide" CC74) durch die Y-Position bestimmt wird, an der man die Taste trifft. Für mich ist der absolute Modus die bei weitem beste Methode, einen MPE-Klangerzeuger zu steuern.
Die anderen Joué-Overlays (wie das Grand Clavier/Piano-Modul) bieten diese Möglichkeit nicht und erlauben nur eine relative Y-Steuerung von einem festen Startwert für das Timbre aus.

Der Haken an der Sache: Der Scaler hat keine „schwarzen Tasten“ und ich habe ihn diatonisch (in C Dur) gestimmt. Auf Dauer wird es aber etwas langweilig, immer nur in C Dur oder in den entsprechenden Kirchentonarten (D Dorisch usw.) spielen zu können.
Zwar kann man den Scaler im Joué Editor umkonfigurieren, aber das ist umständlich. Ich wollte ad hoc in beliebigen anderen Skalen spielen können. Daher gibt es nun auch direkt im Synth-Plugin eine Möglichkeit, von einem diatonischen Controller aus andere Skalen anzusprechen. 175 Skalen sind auswählbar, da sollte nicht so schnell Langeweile aufkommen. Zudem sind die Skalen jetzt frei transponierbar.
 
Zuletzt bearbeitet:
Wegen eines beruflichen Erfolgs (dicken Auftrag an Land gezogen) muss ich das Softsynth-Thema ruhen lassen.
Wäre nicht sehr nachhaltig, sich in der knappen Freizeit auch wieder mit Software-Design und -Entwicklung zu beschäftigen.
Daher stelle ich das Softsynth-Projekt erst einmal ein, mit etwas Glück geht es in einem halben Jahr weiter.
Stattdessen werde ich mich (was ein besserer Ausgleich ist) eher in dem Skalen-Thread betätigen.
Die oben beschriebene Funktionalität (Multi-Unisono-Hybridverfahren) habe ich fertiggestellt, die versprochenen Demos kommen noch, sobald ich etwas Zeit finde.
 
Interessant, ich hab dass garnicht mitbekommen, hättest du dass mal im Softsynth Bereich geposted.

Eigene low-budget Softsynths haben es meiner Beobachtung nach, immer etwas schwer. Hast du mal überlegt, dass als VCV Rack Modul anzubieten?
 
Bisher nicht, es entspricht aber auch nicht meinem Konzept.
Die noch fehlenden logischen Einheiten können nicht einfach durch bestehende Module aus Modular-Synths ersetzt werden.
Ich habe bisher den Fehler gemacht, mich an einem Thema (Multi-Unisono-Erzeugung) festzubeißen und da immer mehr in die Tiefe zu gehen.
Eine spiralförmige Entwicklung wäre aber sinnvoller.
D.h. bzgl. Unisono-Modellierung erst einmal gar nichts mehr zu machen und stattdessen beim Spectral Warp, den geplanten Operatoren und dem Modulationssystem ein paar Pflöcke einzuschlagen.
 
Zuletzt bearbeitet:
Bisher nicht, es entspricht aber auch nicht meinem Konzept.
Die noch fehlenden logischen Einheiten können nicht einfach durch bestehende Module aus Modular-Synths ersetzt werden.
Ich habe bisher den Fehler gemacht, mich an einem Thema (Multi-Unisono-Erzeugung) festzubeißen und da immer mehr in die Tiefe zu gehen.
Eine spiralförmige Entwicklung wäre aber sinnvoller.
D.h. bzgl. Unisono-Modellierung erst einmal gar nichts mehr zu machen und stattdessen beim Spectral Warp, den geplanten Operatoren und dem Modulationssystem ein paar Pflöcke einzuschlagen.
Was ich meine, du könntest dass als komplette Stimme/Voice anbieten. Du hättest eine riesige Reichweite und müsstest dich nicht um das drumherum kümmern....

 
Ah verstehe. Im Moment denke ich ja noch gar nicht über eine Vermarktung nach. Das Ganze ist ein PoC für verschiedene Ideen, die ich ausprobieren möchte und die z.T. aufeinander aufbauen.
Wenn erst mal klar ist, was tatsächlich funktioniert und wenn ich eine Beispiel-Implementierung dazu habe, könnte ich Teile später auch auf ein anderes Gesamtkonzept übertragen.
 
Ich habe bisher den Fehler gemacht, mich an einem Thema (Multi-Unisono-Erzeugung) festzubeißen und da immer mehr in die Tiefe zu gehen.
Eine spiralförmige Entwicklung wäre aber sinnvoller.
D.h. bzgl. Unisono-Modellierung erst einmal gar nichts mehr zu machen und stattdessen beim Spectral Warp, den geplanten Operatoren und dem Modulationssystem ein paar Pflöcke einzuschlagen.
Ach, ich weiß nicht. Mir gehts schon auch so, dass ich mich erst in einen Aspekt vergrabe, und erst danach in die Breite schaue. Hat schon Vorteile.

Ich bin jedenfalls völliger Fan Deines Projektes und freu mich drauf wenn es wieder weitergeht. Und natürlich herzlichen Glückwunsch zum gewonnenen Projekt
 
Ach, ich weiß nicht. Mir gehts schon auch so, dass ich mich erst in einen Aspekt vergrabe, und erst danach in die Breite schaue. Hat schon Vorteile.
Ich bin jedenfalls völliger Fan Deines Projektes und freu mich drauf wenn es wieder weitergeht.
Danke für die Ermutigung!
Mit dem Projekt mache ich auf jeden Fall weiter, sobald es wieder sinnvoll möglich ist.
Bezüglich "tief vergraben": Wenn ich alles umsetze, was ich bezüglich Multi-Unisono und Texturgenerierung schon designed habe oder als Idee in Jira erfasst habe und gerne ausprobieren würde, dann bin damit noch einmal ein halbes oder sogar ein ganzes Jahr beschäftigt. Der Softsynth insgesamt wäre damit aber nicht sehr viel weiter. Sobald ich das Projekt reaktiviere, muss ich an der Stelle abwägen, ob mir die Neugier/das Ausprobieren wichtiger ist oder das "Produkt".
Wobei die Spezialisierung auch das sein könnte, was den Softsynth am Ende für andere interessant macht. Im Moment gibt es in dem Plugin mindestens 25 Unisono- oder Textur-bezogene Regler, die man von keinem anderen Synthesizer her kennt, die aber eine definierte Funktion und nachvollziehbare Wirkung auf das klangliche Ergebnis haben. So etwas könnte durchaus einen Reiz haben und zum Ausprobieren einladen. Es könnte aber auch in einem "Expert Panel" verstauben.
Vor allem, wenn ich ein schon fertiges Design tatsächlich umsetze und noch einmal ca. 30 weitere Unisono-Parameter dazukommen.
 
Zuletzt bearbeitet:
Habe ein wenig weitergemacht.
Bei einem Wavetable-Player kommt es gerne mal zu Phasenauslöschungen, wenn man zwischen Wavetable-Positionen überblendet - es sei denn, man unternimmt etwas dagegen.
Mich hat der "phasige" Klang beim Ändern der WT-Position manchmal gestört, besonders beim Überblenden zwischen Klängen, die natürlich wirken sollen und die dadurch etwas Künstliches erhalten.
In Serum z.B. gibt es die "spektrale Interpolation", um den Effekt zu vermeiden.
Für mein Projekt habe ich nun auch eine Lösung umgesetzt.
 
Ich finde du hast deutlich merkbare Denkprozesse gehabt und daraus was gemacht. Wenn du quasi bei einem Prototypen bist, empfehle ich in Softsynth was zu posten und hier her zu verlinken. Es gab hier mal einen User (Resofreak), der eine sehr gut klingende Engine gebaut hatte - damals war VA das Ding, war zuerst Reaktor, dann C/C++ und später hat er analoge Modular gebaut. Durfte das alles mal hören. Also sehr vielen Danke für das Teilhabenlassen an deinen Erkenntnissen.

Mal sehen (hören) was diese Überblendungen machen.
Vorstellen kann ich mir das schon, weil ich viel mit WT und Waves und Interpolation gebastelt habe. Bis dann!

Und das hier ist nichts anderes als ein JAAA - Go Go Go!
 
Daher gibt es nun auch direkt im Synth-Plugin eine Möglichkeit, von einem diatonischen Controller aus andere Skalen anzusprechen.

das ist nur konsequent, ich mache das auch gerne so.

für die ganz schrägen skalen und die mit != 12 töne pro oktave darf ich aber anregen, nicht nur chromatik als input zu erlauben, sondern besser noch einen zusätzlichen modus zu haben, der nur die weissen tasten in #sonstwas übersetzt.

die schwarzen kann man sich beim spielen dann mit einem tuch abdecken und dann hat man eine uniforme ansammlung von tasten vor sich und kommt nicht dauernd mit den vermeintlichen "oktaven" durcheinander.
 
Die noch fehlenden logischen Einheiten können nicht einfach durch bestehende Module aus Modular-Synths ersetzt werden.
Ich habe bisher den Fehler gemacht, mich an einem Thema (Multi-Unisono-Erzeugung) festzubeißen und da immer mehr in die Tiefe zu gehen.

vorsicht, das thema "anspiel logik" eines generators ist ein fass ohne boden. :)

man findet immer wieder noch eine neue möglichkeit, was man auch noch machen könnte, und was dann aber auch erst mal gemacht werden muss.

ich sage nur "mute groups" (saiteninstrumente!). und dann am besten noch dynamisch, so dass man die während dem spielen anders einstellen kann. wenn du das jetzt noch zusätzlich mit polyphonie kombinierst bist du schon kurz vor der zwangseinweisung, und der notenverarbeitungspart deines codes überholt dann bald die filterberechung in der komplexität.
 
das ist nur konsequent, ich mache das auch gerne so.

für die ganz schrägen skalen und die mit != 12 töne pro oktave darf ich aber anregen, nicht nur chromatik als input zu erlauben, sondern besser noch einen zusätzlichen modus zu haben, der nur die weissen tasten in #sonstwas übersetzt.

die schwarzen kann man sich beim spielen dann mit einem tuch abdecken und dann hat man eine uniforme ansammlung von tasten vor sich und kommt nicht dauernd mit den vermeintlichen "oktaven" durcheinander.
Im Moment gibt es in dem Plugin nur siebentönige Skalen, da werden die weißen Tasten entsprechend gemappt und die schwarzen Tasten duplizieren den Ton der nächsttieferen weißen Taste. Die Oktaven auf der Tastatur passen dadurch mit den Oktavierungen der Skala noch zusammen.
Was Du anregst, wäre für Skalen mit einer von 7 abweichenden Zahl von Tönen sinnvoll. (Wenn man da einfach fortlaufend die weißen Tasten nimmt, dann passen die Oktavierungen der Skala nicht mehr mit den Oktaven auf der Klaviertastatur zusammen. Insofern wäre dann auch das "Abdecken" der schwarzen Tasten hilfreich, damit man nicht mehr die (hier irreführenden, scheinbaren "Oktaven" sieht).
vorsicht, das thema "anspiel logik" eines generators ist ein fass ohne boden. :)

man findet immer wieder noch eine neue möglichkeit, was man auch noch machen könnte, und was dann aber auch erst mal gemacht werden muss.

ich sage nur "mute groups" (saiteninstrumente!). und dann am besten noch dynamisch, so dass man die während dem spielen anders einstellen kann. wenn du das jetzt noch zusätzlich mit polyphonie kombinierst bist du schon kurz vor der zwangseinweisung, und der notenverarbeitungspart deines codes überholt dann bald die filterberechung in der komplexität.
Tatsächlich hatte ich auch schon darüber nachgedacht, wie man das Plugin mit einer Drum Map ausstatten könnte, wobei die MIDI-Noten dann auf unterschiedliche Sounds in konfigurierter Tonhöhe gemappt würden und wobei es dann auch "mute groups" geben müsste (z.B. für Hi-hat, Ride...).
Die Umsetzung ist aber jenseits meiner Möglichkeiten.
Ich bin froh, wenn ich die im Eingangspost angekündigte Kernfunktionalität realisiert kriege. Da ist es auch schon schwer genug, sich nicht zu verzetteln.
 
Wenn du quasi bei einem Prototypen bist, empfehle ich in Softsynth was zu posten und hier her zu verlinken. Es gab hier mal einen User (Resofreak), der eine sehr gut klingende Engine gebaut hatte - damals war VA das Ding, war zuerst Reaktor, dann C/C++ und später hat er analoge Modular gebaut. Durfte das alles mal hören. Also sehr vielen Danke für das Teilhabenlassen an deinen Erkenntnissen.
Werde ich so machen, danke für die Anregung.
Einen "Prototyp" habe ich gefühlt aber noch nicht, dazu fehlt mindestens noch das Modulationssystem.

Mal sehen (hören) was diese Überblendungen machen.
Vorstellen kann ich mir das schon, weil ich viel mit WT und Waves und Interpolation gebastelt habe.
So spektakulär ist das Ergebnis nicht. Im Vergleich zu Serum habe ich es mir einfach gemacht.
Es wird nicht spektral zwischen den Frames interpoliert, sondern man kann ein Phasen-Template aussuchen, an das dann alle Frames der Wavetable angepasst werden.
(D.h. die Magnitude jedes Partials bleibt unverändert, aber Vorzeichen bzw. Phase des Partials wird aus dem Template übernommen).
Da intern sowieso nur die aus den Wavetables ermittelten Fourier-Koeffizienten verwendet werden und nicht die Wavetable selbst, ist das leicht zu realisieren.
Im Moment stehen 8 Templates zur Auswahl, ein paar weitere sollen noch dazukommen.
Das Ohr ist ja nicht sensitiv für die Phase der Teiltöne innerhalb einer statischen Wellenform, insofern klingen die Frames selbst unabhängig von der Einstellung immer gleich.
Bei den Zwischenpositionen kann es nun keine Phasenauslöschungen mehr geben, weil ein Partial in allen Frames dieselbe Phase hat. Es gibt also einen fließenden Übergang von der einen Magnitude zur anderen, ohne dass zwischendrin ein Nulldurchgang (durch eine Phasenauslöschung) auftreten könnte.
Bei Wavetables, die schon in feine Zwischenstufen aufgelöst sind, ist der Effekt sehr gering.
Z.B. wenn man eine Wavetable hat, die in einer feinen Abstufung eine PWM nachbildet.
Da ist das "Phasige" schon in den Frames selbst mit drin und kann auch durch die Interpolation nicht beseitigt werden.
Am stärksten ist der Effekt, wenn man zwischen Wellenformen wie z.B. Rechteck und Sägezahn interpoliert, bei denen die Partials ein deutlich abweichendes Vorzeichenmuster aufweisen.
Vielleicht schaffe ich es ja, noch ein paar Demo-Aufnahmen zu machen. Weil es keine Modulation gibt, klingen diese leider immer recht ähnlich.
Im Moment bastele ich (wenn ich überhaupt Zeit habe) an Feinheiten. Das ist zum Anhören vermutlich nicht mehr so spannend.
 
Zuletzt bearbeitet:
Ein moderner interessanter Softsynth ist bei mir einer der abgefahrene OSCs hat mit Wavetables u.s.w und wo das Filter Analog emuliert ist. Aber in einer Softube oder U-HE Qualität. Ein Hybrid sozusagen. Ein Peak als Software. Der Arturia Pigments macht das ganz gut.
Rein Digital klingt zu steril.
Deshalb Dogitale OSCs und das Filter und Amp Analog Emuliert. Warm, schwankend und trotzdem flexibel. Und dann noch eine einfache Art alles zu modelieren.

Ein Serum mit Analogem Filter und Amp wäre da klasse. Oder halt der Sylenth 1 kriegt Flexibele OSCs.
 
Ja klar gibt es weiter Bedarf nach guten VAs und guten Emulationen analoger Hardware, auch gerne im Mix mit Dingen, die nur digital machbar sind.
Das ist aber nicht mein Weg. Subtraktive Synthesizer sind für mein Projekt kein Vorbild.
Ich habe eigene Ideen, die es sonst nirgends gibt, und möchte sie ausprobieren können - das ist der Antrieb bei der Sache, nur deshalb gibt es dieses Plugin überhaupt und deshalb bin ich gezwungen, selbst etwas zu programmieren.
Von meinem Konzept habe ich bisher nur vielleicht 5% umgesetzt und ich konzentriere mich darauf, damit weiterzukommen.
 
Zuletzt bearbeitet:
Ein moderner interessanter Softsynth ist bei mir einer der abgefahrene OSCs hat mit Wavetables u.s.w und wo das Filter Analog emuliert ist. Aber in einer Softube oder U-HE Qualität. Ein Hybrid sozusagen. Ein Peak als Software. Der Arturia Pigments macht das ganz gut.
Rein Digital klingt zu steril.
Deshalb Dogitale OSCs und das Filter und Amp Analog Emuliert. Warm, schwankend und trotzdem flexibel. Und dann noch eine einfache Art alles zu modelieren.
Ich kann mich für analog Emulationen div. Filter nicht all zu sehr begeistern, mit zwei flexibel verschaltbaren Multimode Filtern div. LFO/Random Funktionen und Waveshaper komme ich meinen persönlichen Vorlieben des jeweils abhängig vom Sound gesuchten Filterklangs deutlich näher. Analog Emulationen sind für mich eher sowas wie ein Preset, ich mag mir sowas lieber aus div. Funktionen selbst zusammenbasteln und von der Intensität abhängig vom Einsatzgebiet/angepeilten Sound und z.B. im Parameter Morphing per Macro regeln zu können.
 
Zuletzt bearbeitet:
Cooles Projekt, ein eigenen Softsynth schiebe ich schon seit 2 Jahren vor mir her. Mein erster Softsynth war ohne jegliches Pluginformat oder Framework geschrieben, aber ich möchte beim nächsten Anlauf auch auf JUCE zu setzen.
 
Schönes Demo, klingt "teuer" und könnte so direkt als Filmmusik durchgehen.
Danke! Ich finde auch, dass sich das Plugin bisher (zusammen mit dem MPE-Controller) für Filmmusik-artiges besonders eignet.
Und ich bin kein Sound-Designer und auch kein Keyboarder. In fähigen Händen geht da bestimmt mehr.

Cooles Projekt, ein eigenen Softsynth schiebe ich schon seit 2 Jahren vor mir her. Mein erster Softsynth war ohne jegliches Pluginformat oder Framework geschrieben, aber ich möchte beim nächsten Anlauf auch auf JUCE zu setzen.
JUCE ist auf jeden Fall eine große Erleichterung. Die gängigen Plugin-Formate werden unterstützt, MIDI-Input (auch MPE) wird sauber aufgedröselt und in einer gut zu verarbeitenden Weise weitergegeben, Parameter mit Automatisierung und Kopplung an die Kontroll-Elemente sind leicht zu realisieren, Speichern und Wiederherstellen des Plugin-States in der DAW kriegt man praktisch geschenkt, man kann eine Cross-Plattform taugliche GUI aufbauen usw.
Ich denke, wenn Du schon Erfahrung mit einer eigenen Lösung hast, dann wirst Du zu schätzen wissen, wie viel das Framework bereits mitbringt und wie klar vieles dadurch strukturiert ist.
 
Zuletzt bearbeitet:
in gewisser hinsicht ist es sehr bedauerlich, dass man im endeffekt mehr über die sprache selbst und die gewählte umgebung lernen muss als den eigentlichen synth zu bauen.

einen synthesizer zu bauen sollte normalerweise nicht länger als 2-3 tage dauern. machine model hab ich im kopf, bischen logik hier, bischen DSP da.
was die theorie angeht, da kann man bei einem kreativen projekt ja einfach nur das machen, was man sowieso schon kann und muss dann auch nichts recherchieren, neu lernen und verstehen.

aber erst mal da hin zu kommen wie man sich etwas am besten strukturiert und designed, das dauert dann schon eine weile. ich persönlich dreh schon am rad wenn sich irgendwo ein tastaturbefehl geändert hat oder die ASCII eingabe zwischen mac und windows keyboards unterschiedlich ist. deswegen benutze ich seit 20 jahren die gleiche plattform, weil ich da einfach irrsinnig schnell damit bin und alles da ist, wo es hingehört.
 
Zuletzt bearbeitet:


Neueste Beiträge

News

Zurück
Oben