Trio - Softsynth im Eigenbau

mpue

Unsichtbar
Hallo Forum,

seit einigen Wochen bin ich damit beschäftigt, mir einen lang ersehnten Wunsch zu erfüllen : Einen selbstgeschriebenen Softsynth.

Ich bin schon relativ weit, mir fehlen noch ein paar Sachen und einiges läuft noch nicht so rund. Logic crasht noch häufig,
man kann noch keine Patches speichern, es gibt im Augenblick nur Sägezähne und die Modulationsmatrix ist noch nicht fertig.

Geschrieben ist das ganze in C++, am DSP Code habe ich mir übrigens besonders die Zähne ausgebissen. :selfhammer:

Sei's drum, hier die Features wenn er fertig ist:

3 Oszillatoren : Sägezahn, Sinus, Rechteck
2 LFOs mit 3 Wellenformen
12/24 dB Moog Tiefpass Emulation
2 ADSR (Filter/Amp)
2 Fach Modulatiosmatrix mit LFO->Osc Pitch, LFO->Filter Cutoff, LFO -> Filter Resonanz

Zur Zeit sieht er so aus, das UI wird aber noch angepasst:



Hier ein erstes Soundbeispiel, auf die Schnelle zusammengezimmert:



Grob ist die Sache im Kasten, am meisten Zeit wird das natürlich Finetuning verschlingen.

Im Moment gibt es den Synth nur als AU, geplant sind noch VST und evtl. LADSPA für Linux. Wer Lust hat, ist herzlich eingeladen zu testen. In etwa 2 Wochen sollte eine testfähige Version zur Verfügung stehen.

Feedback ist dann natürlich sehr willkommen. Ich werde mir Mühe geben, daß er musikalisch klingt und seinen eigenen Charakter bekommt. Mit großer Wahrscheinlichkeit wird der Synth kostenfrei zu Verfügung stehen.

Ich halte euch auf dem Laufenden.

Gruß
MP
 

Anhänge

  • triotest_multi_lq.mp3
    4,2 MB · Aufrufe: 35
  • trio.jpg
    trio.jpg
    235,8 KB · Aufrufe: 288
Interessant, interessant... Da ich selber mal anfangen wollte zu coden mir aber die Zeit fehlt, finde ich das noch mehr als interessant! :D
Programmiert habe ich zuletzt auf dem C64, lange her, hat aber trotzdem immer spa´gemacht, aber einige Plugins coden wäre schon was... Bisher habe ich mich auf scripten für Kontakt beschränkt...

Frank
 
Sehr schön! Respekt für deine Arbeit!

Hast du schon drüber nachgedacht, das Ding als OpenSource freizugeben?
 
Toll weiter so, auch ich wollte mal anfangen einen Synth zu bauen, aber mehr als das VST SDK zu installieren und ein Beispiel zu kompilieren ist es dann doch nicht geworden. Die ganze DSP-Theorie ist wirklich heftig.

Ich bin sehr gespannt auf das Endresultat. Hast du ein Framework wie JUCE genutzt?
 
Echt klasse - vor allem, dass Du das auch bis zum Ende durchziehst. Hänge selber seit 2 Jahren an so einem Vorhaben fest und hab eigentlich gar keine Motivation mehr... . Insofern auch von mir großen Respekt und gutes Gelingen weiterhin!
 
Schön, das ich damit hier auf Interesse stosse. :)

Hast du ein Framework wie JUCE genutzt?

Ja, ich benutze JUCE, ohne wäre ich gar nicht soweit gekommen. Ist wirklich genial und man kann weitestgehend platformunabhängig arbeiten.

Die ganze DSP-Theorie ist wirklich heftig

Allerdings. Aber ich habe mich erstmal auf das Wesentliche beschränkt. Der Filter war am heftigsten und so richtig habe ich das noch nicht verstanden.
Der ganze ADSR, Modulations und Mixerkram ist relativ straightforward, da man da nur ein wenig addieren und multiplizieren muss.

Lustig wird's dann bei Effekten wie Faltungshall, Echo, Chorus etc. Aber das lasse ich bei dieser Version mal aussen vor. Sonst komme ich nie ans Ziel.
 
mpue schrieb:
Lustig wird's dann bei Effekten wie Faltungshall, Echo, Chorus etc. Aber das lasse ich bei dieser Version mal aussen vor. Sonst komme ich nie ans Ziel.
Schönes Projekt...
und...
ganz genau. Einmal den Rahmen festlegen, den durchziehen und minimale Anpassungen. Dann wird's auch fertig. Effekte kannst Du danach immer noch machen...
Bin schon gespannt auf's Resultat... :nihao:
 
So, es geht weiter:

- Parameter lassen sich alle voll automatisieren und per MIDI-Learn ansprechen
- Patches können gespeichert und geladen werden
- Mehrere Instanzen kommen sich nicht mehr ins Gehege

Als nächstes steht an:

- Sinus und Rechteck Oszillator
- Die restlichen LFOS
- Verdrahten der Modulationsmatrix

Als Schmankerl zum Schluss werde ich dann noch einen schönen Patch Browser bauen.

Ein paar Glitches habe ich noch:

- Tiefe Töne erzeugen noch Aliasing Artefakte
- Die Wertebereiche der Envelopes sind noch nicht handlich genug
- Memory leaks

Ich werde nächste Woche die erste Version auf Github zur Verfügung stellen. Klangbeispiele folgen.
 

Anhänge

  • trio2.jpg
    trio2.jpg
    378,1 KB · Aufrufe: 193
So, weiter geht's.

Ich befinde mich inzwischen auf der Zielgeraden.

Neu hinzugekommen sind nun die Oberfläche für die Modulationsmatrix, ein Patchbrowser, sowie ein Konfigurationspanel. Es funktioniert auch alles, ich stolpere nur immer wieder über unangenehme Bugs. Die ScopedPointer vom JUCE Framework bereiten mir immer mal wieder Kopfschmerzen.



DIe Modulationsmatrix ist echt praktisch und die Architektur erlaubt es nun prinzipiell alles überallhin zu routen. So kann man beispielsweise den Filter Cutoff mt einem LFO modulieren und dessen Frequenz wiederum durch einen weiteren LFO. Ausserdem habe ich es jetzt so angelegt, daß sich theoretisch beliebig viele LFOs und Hüllkurven anlegen lassen. Das UI gibt das allerdings im Moment nicht her. Natürlich kann man auch alle Modulationsziele mit dem Sequenzer modulieren. EIn programmiertes Sample und Hold ist also auch machbar.



Die aktualisierte Feature Liste:

3 Oszillatoren : Sägezahn, Sinus, Rechteck und Rauschen mit Hard-Sync
2 LFOs mit 3 Wellenformen, freilaufend und Host-Sync
12/24 dB Moog Tiefpass Emulation
4 Hüllkurvengeneratoren
16-Step Sequenzer (auch als Modulator) freilaufend oder Host-Sync
6-Fach Modulationsmatrix
- Quellen : LFO1, LFO2, Hüllkurven 1-4, Sequenzer
- Ziele : Filter Cutoff, Oszillator 1-3 Pitch, LFO1+2 Rate
Flexibles MIDI Controller Routing
Einfacher Faltungshall
Stereo Delay, freilaufend und Host-Sync

Zur Fertigstellung fehlen mir noch:
-Stereo Chorus
-Sample und Hold für die LFOs
-Die Implementierung des Controller Routings

Gerne würde ich auch das Routing der Effekte grafisch verändern können, derzeit ist es fix verdrahtet.

Leider bin ich immer noch nicht dazu gekommen, ein paar Klangbeispiele zu bauen.

Wen es interessiert, hier noch das (derzeit fix verdrahtete) interne Routing der Module:
 

Anhänge

  • modmatrix.jpg
    modmatrix.jpg
    95,7 KB · Aufrufe: 144
  • trio_settings.jpg
    trio_settings.jpg
    68,5 KB · Aufrufe: 144
  • trio_routing.jpg
    trio_routing.jpg
    70,6 KB · Aufrufe: 142
Ja, in der Tat.

Ich hab schonmal parallel angefangen einen passenden Audio Host für den Synth zu bauen. Bis jetzt gehen nur Wave Spuren, aber ich arbeite daran. ;-)
 

Anhänge

  • wavex.jpg
    wavex.jpg
    438,3 KB · Aufrufe: 128
Heiliger Bimbam, wieviel Arbeit hast Du bis jetzt da reingesteckt? :shock:
Machst Du das immer nach Feierabend oder arbeitest Du zur Zeit länger als nur zwei Stunden pro Tag daran?

Aber erst einmal: Respekt! :supi:
 
Hmm, was ist denn dieses JUCE? Und wie schafft es das, die GUI-Konzepte verschiedener OS unter einen Hut zu bringen?
Ich mein', z.B. (das GUI-Toolkit) Qt gäb's wohl auch für Windows, ist dort aber nicht sehr beliebt.
Gibt es bei JUCE auch spezielle Audio-Widgets, also Drehregler, usw.?
Wenn man es nutzt, ist man doch auf das beschränkt, was es einem bietet, also so ähnlich wie bei Synthedit!?
 
Mr. Roboto schrieb:
Heiliger Bimbam, wieviel Arbeit hast Du bis jetzt da reingesteckt? :shock:
Machst Du das immer nach Feierabend oder arbeitest Du zur Zeit länger als nur zwei Stunden pro Tag daran?

Aber erst einmal: Respekt! :supi:

Der Synth hat etwa 3 Monate reiner Arbeitszeit beansprucht, mit dem Host bin ich jetzt etwa 2-3 Wochen beschäftigt. Ich investiere etwa 3-4 Stunden am Tag,
am Wochenende auch gerne mal mehr. Trio ist jetzt mittlerweile auf über 20000 Zeilen Code angewachsen. WaveX ist noch ganz am Anfang, da lohnt es sich
noch nichtz zu zählen.

Da ich weder Kind, Haus, noch Hund habe und dazu eine sehr tolerante Frau, ist das durchaus machbar. :)

Gibt es bei JUCE auch spezielle Audio-Widgets, also Drehregler, usw.?
Wenn man es nutzt, ist man doch auf das beschränkt, was es einem bietet, also so ähnlich wie bei Synthedit!?

Juce ist ein plattformübergreifendes Framework, daß für Multimedia ausgelegt ist. Die zugrundeliegende Sprache ist C++. Und man ist dadurch keineswegs beschränkt.
Eher im Gegenteil. Es ist alles machbar von einfachen Filter Plugins, bis hin zur ausgewachsenen Audio-Applikation.

So einfach wie SynthEdit oder Reaktor ist es allerdings nicht. Man muss halt C++ beherrschen und ein wenig theoretischen Hintergrund zu DSPs besitzen.
Da ich das beruflich ausübe, ist das eher kein Problem für mich.
 
mpue schrieb:
Die ScopedPointer vom JUCE Framework bereiten mir immer mal wieder Kopfschmerzen.
Warum benutzt du nicht einfach die Standard Smart Pointer std::unique_ptr/shared_ptr/weak_ptr? Seit C++11 gibt es doch wirklich keinen Grund mehr, für die Speicherverwaltung exotische Lösungen zu nutzen...
 
Läuft einfach wie geschnitten Brot mit JUCE.

Inzwischen ist die ganze Sache ein wenig aus dem Ruder gelaufen, da ich ja eigentlich nur einen Synth bauen wollte. Der ist soweit fertig, ich schraube gerade fleissig an den Presets.

Jedenfalls kann ich in meinem Host jetzt auch schon Plugins laden und per MIDI ansteuern, ich bin gleich mal aufs Ganze gegangen und hab den Reaktor gestartet:



Im Grunde muss ich jetzt noch MIDI Funktionalität implementieren, dann kann damit Musik gemacht werden. :kaffee:
 

Anhänge

  • wavex_plugins.jpg
    wavex_plugins.jpg
    208,3 KB · Aufrufe: 64
Wow, klasse Arbeit. Mit was hast du den VST-Host entwickelt?
 
So, hat sich ja gut 3 Jahre nichts mehr getan. Was aber nicht bedeutet, daß ich nicht vorangekommen bin.

Ich musste wegen des neuen JUCE Frameworks und der VST2 Abkündigung durch Steinberg die Sache auf neue Füsse stellen und den Code migrieren.
Ausserdem sind Scoped Pointer rausgeflogen und durch auto und smart Ponter ersetzt worden.

Die ganze Sache ist auch jetzt wesentlich musikalischer. Ich habe viel Zeit mit den Envelopes und LFOs verbracht.

Release Termin ist der 18. Juli und die offene Beta Phase beginnt im April. Derzeit bin ich noch mit Bugfixing, dem UI und dem Programmieren von Patches beschäftigt.
Hierbei fallen mir immer wieder Probleme auf, die behoben werden wollen.

Hier das aktuelle UI, was sich noch ändern wird:

trio_main.png

trio_fx.png

trio_mod.png

trio_settings.png

Audio Demos bleibe ich euch schuldig, bis die Patches soweit sind.
 
So hat jede Krise etwas Gutes.

Ich habe mir die Mühe gemacht und den Synth von Grund auf renoviert. Große Teile der AudioEngine habe ich neu geschrieben und das UI habe ich komplett neu aufgebaut.

So schaut's derzeit aus:

lupo_ui.jpg

Ich werde jetzt den Code für die Oszillatoren auf den neuen DSP Kern von JUCE umrüsten, dann bin ich eigentlich fertig.

Soundbeispiele gibt's leider erst nach der DSP-Umstellung.
 
Es geht weiter:

Ich habe das UI noch weiter überarbeitet und an der Sound Engine gearbeitet. Ich benutze jetzt, wem es etwas sagt, BLIT Oszillatoren, die klingen wesentlich sauberer und fetter.

Derzeit kämpfe ich noch mit der Modulation. Hier das aktuelle UI:

lupo.jpg

Und anbei ein erster Soundschnipsel, nichts dolles aber alles aus dem Lupo ohne externe Effekte. Wie man hört, habe ich noch Parametersprünge. Die sind aber bald Geschichte.
 

Anhänge

  • lupotest.wav
    7,2 MB · Aufrufe: 12
Es geht natürlich munter weiter, da ich wahrscheinlich nie mehr Zeit dafür haben werde als jetzt.

Neu hinzugekommen sind FM-Modulation, Distortion und eine brandneue Modulationsmatrix mit 12 Slots.
Ausserdem habe ich noch einen Arpeggiator spendiert.

Die Soundengine ist fast fertig, als da fehlen noch

PWM,
Hypersaw,
Oszillator sync
Multimode Filter

Den Reverb Teil werde ich auch noch gegen einen Faltunghall austauschen, da kann man dann eigene Impulsantworten reinladen.

Bald gibt es eine erste Demo Version zum Testen. Und natürlich mehr Sounddemos, ein Handbuch, Patches etc.

Der aktuelle Stand der GUI:

lupo.jpg
 
So, hier sind 2 neue Sounddemos:

1.) ARP,LFO und Sync Test
2.) ModMatrix mit Pad
 

Anhänge

  • lupodemo2.mp3
    2,7 MB · Aufrufe: 9
  • lupodemo3.mp3
    4,9 MB · Aufrufe: 6
Awesome! wie ist der Stand jetzt :)? Wie heißt der Synth jetzt finally?

Beste Grüße
 


Neueste Beiträge

Zurück
Oben