Synthesizer Selbstbau im Xilinx-FPGA mit MIDI-Ansteuerung

Ich verstehe gerade nur nicht: Wozu diese ganze Diskussion? Warum nicht einfach Rechteck mit Filter dahinter? Ach so, die Frage ging in die Richtung "Was ist das?".

Dieses Beispiel zeigt vor allem eines: Bau deinen Synthesizer mit mindestens 2 hintereinander (und meinetwegen auch anders routebaren) Filtern.

Ja, gib mir mehr Filter ;-) (siehe auch meine ursprünglichen Kommentare zu den Einschränkungen der Plattform und den begrenzten Ressourcen :P ).

Außerdem: additive Synthese kommt im Idealfall ganz ohne Filter aus. Das war hier u.a. auch der Hintergrund.
 
Naja, man liest ja nicht immer den ganzen Thread und nach X Jahren hat man auch nicht zwingenderweise noch alles im Kopf, was in einem Thread steht: wäre es meiner, würde ich den Titel jetzt in "Additiver Synthesizer Selbstbau ..." ändern.
 
Naja, man liest ja nicht immer den ganzen Thread und nach X Jahren hat man auch nicht zwingenderweise noch alles im Kopf, was in einem Thread steht: wäre es meiner, würde ich den Titel jetzt in "Additiver Synthesizer Selbstbau ..." ändern.

Was ja nicht zutrifft, denn er ist ja auch subtraktiv. Sampler kann er auch (nicht mehr implementiert wegen Ressourcenknappheit). "Hybrider Synthesizer" ? ;-) Ich weiß selbst auch gar nicht was ich noch alles damit anstelle.
 
So, mal wieder was auf die Ohren...
Unison-Multichannel-Modus mit SuperSaw d.h. im Detail: alle 12 Oszillatoren synchron, gegeneinander verstimmt und abwechselnd auf die beiden Stereo-Kanäle verteilt, jeder Oszillator mit je 16 Partials, alle auf Wellenform Sägezahn eingestellt und gegeneinander verstimmt
D.h. insgesamt 12*16 = 192 verstimmte Sägezähne. [Korrektur] Nur ein Sägezahn pro Oszillator. [/Korrektur]
Das ganze geht noch durch Notch-Filters, deren Filterfrequenz per anschlaggetriggerter Envelope bewegt wird.
 

Anhänge

  • capture-samples-037-Unison-SuperSaw.mp3
    675 KB
Zuletzt bearbeitet:
Das klingt nicht schlecht, aber ich glaube nicht, dass man da die 192 Sägezähne wirklich heraus hört. Ein Sägezahn ist ein Sägezahn, zwei gegeneinander verstimmte erzeugen auch nur eine bestimmt "Art der Bewegung im Obertonspektrum". Für mehr Bewegung hilft vermutlich mehr Bewegung im Obertonspektrum, was du ja zum Teil durch den Notch erreichst.

Auf den Rest gespannt bin ich trotzdem.
 
Ein Silvester-Schreck....
Ich hatte gerade über Nacht ein neues FPGA-Image gebaut um etwas Neues zu testen (mit ILA = "Integrierter Logic Analyzer") und schaltete meine Synthesizer-Station ein, aber nichts tat sich! :connect:
Das Board startete nicht, kein Ton und kein Licht (auf der LED-Matrix ist normalerweise eine Boot-Animation zu sehen), und auch keine Ausgabe auf der Terminal-Schnittstelle. Auch ließ sich das Board gar nicht mehr über den Debugger programmieren.
Das war schon ein großer Schreck, und nichts half! Wiederholte Versuche, Aus- und Wiedereinschalten.... Treten und Fluchen.... Es war frustrierend, denn ich musste annehmen, daß das Board den seligen Hardware-Tod gestorben ist. Nunja, es ist schon alt und verdient wäre es ja. Jedoch, es ist kein adäquater Ersatz in Sicht. Eine CF-Karte (*) hatte sich schon mal vor ein paar Jahren verabschiedet, aber ich hatte zum Glück noch Ersatz. Aber nun das Board?
Es bauten sich Fragen in mir auf: Was tun in meiner Freizeit? Hatte sich mein Rücken beim FPGA-Board beschwert, daß ich zuviel sitze?? Wohin nun mit meiner kreativen Energie? Hat das Leben noch einen Sinn?? Der Traum meiner schlaflosen Nächte.... er ist zerplatzt! 😉


Gestern nun dachte ich mir, schau ich mir doch mal die Hardware an. Vielleicht ist ja was mit der Stromversorgung, oder nur ein Elko ist kaputt. Also alles abgebaut, Kabelei entwirrt, Rückplatte abgeschraubt, alle Einstellungen dokumentiert, Mess-Equipment bereitgelegt. Stromversorgung ist 1A, alle Spannungen messbar im Normbereich. Keine Hardware-Schäden sichtbar. An den Programmier-Schaltern (*) rumgespielt und siehe da, es tat sich was. Alte Images wurden geladen und es gab auch Ausgaben auf dem Terminal. Es lebt also noch irgendwie 🤗
Nachdem ich probeweise den Debugger wieder angeschlossen hatte, ließ es sich auch wieder ein Synthesizer-Image programmieren und es war auch wieder die Boot-Animation sichtbar... Was also.... ? 😵‍💫

Letztendlich stellte sich heraus, daß offenbar der Platform-Flash (*) defekt ist und das Board nicht mehr von diesem booten wollte. Die anderen Boot-Optionen (*) funktionierten aber noch. Also: umgestellt auf eine andere Boot-Option, alles wieder aufgebaut und angeschlossen, läuft wieder :huepfling:

Also, soviel zu meiner Silvester-Neujahr-Aufregung.... ich wünsche euch auch ein Frohes Neues Jahr.


(*) BTW zum Thema Programmier-Optionen: Da es sich um ein FPGA-Evaluation-Board handelt, sind alle möglichen Programmier-Optionen auf der Hardware vorgesehen und nutzbar. Eine davon ist der Platform-Flash, ein Flashbaustein, der vier Images enthält, von denen per DIP-Switch eins ausgewählt werden kann, das beim Einschalten gebootet wird. Dies funktionierte offenbar nicht mehr, sodaß das Board beim Einschalten keinen Mucks mehr von sich gab. Eine weitere Programmier-Option ist "System ACE" mit einer eingesteckten CompactFlash-Karte, die auch mehrere Images enthält, die ebenso bootfähig sind. Das hat dann funktioniert.

Grüße,
Dirk
 
Zuletzt bearbeitet:
Ist der Flashspeicher ersetzbar?
Im Prinzip schon, jedoch für einen Hobbybastler mit Hobby-Equipment wie mich wäre das m.E. ziemlich aufwändig, denn die Bauteildichte auf dem Board ist sehr hoch und der Pinabstand des Gehäuses ist winzig. Ist für mich kein Thema, denn die praktikabelste und somit meistgenutzte Programmierart per CF-Karte funktioniert ja noch. Bisher wurde vom Flash eh nur ein "Pre-Loader" gebootet, der eine Auswahl des zu ladenden Images per IR-Fernbedienung anbot und dieses dann von der CF-Karte nachlud.
 
Mal ne Frage an diejenigen von euch, die an DIY-Projekten interessiert sind und auch selber Synthesizer benutzen/spielen:
Werden heute i.A. noch Pedale benutzt und, wenn ja, wie? Mit "wie" meine ich, was stellt sich der Spieler vor oder was wünscht er sich? Sollen die Pedale reine Schalter sein, die nur eine Funktion auslösen (Portamento-Switch, Sostenuto zum Halten der gespielten Noten, Sustain zum Umschalten der Dämpfung) oder könnt ihr euch auch mehr vorstellen, z.B. daß mit dem Pedalwert analog bestimmte Parameter beeinflußt werden können.
Ich hatte mir da schon etliche Gedanken gemacht, wodurch mein Synthesizer zur Zeit z.B. Expression- und Sustain-Pedal mehrfach auswertet:

Expression
Hauptfunktion:
- analog: Verstellung der Suboszillator-Lautstärke bzw. der Partialton-Anteile (bspw. für Orgel-Klänge)
optional/konfigurierbar:
- analog:Oszillator-Mix, Delay-Lautstärke (Dry/Wet), Feedback-Anteil, Tremolo-Stärke, Waveforming-Stärke

Sostenuto
- Switch: Halten der aktuell gespielten Noten

Legato
- 2-Stufen-Schalter:
1. Stufe (ab Wert 32): Ausschalten der Oszillator-Synchronisation
2. Stufe (ab Wert 64): Einschalten des Legato/Glissando-Effekts (verbundene Töne), optional in Verbindung mit Portamento-Effekt

Soft-Pedal
- Schalter: senkt die Lautstärke auf die Hälfte (durch Halbieren des Envelope-Ziellevels, die Dynamik der Envelope bleibt dabei erhalten)
optional:
- analoges Absenken der Lautstärke

Sustain-Pedal
Einfluß auf Sustain-Phase:
1. analog: Wertebereich 0 bis 64: Sustain-Abklingzeit verlängern
2. ab Wert 64: Sustain-Timer anhalten (dadurch wird der Ton auf dem aktuellen Level gehalten)
3. analog: Wertebereich 100 (konfigurierbar) bis 127: Sustain-Level erhöhen
Einfluß auf Release-Phase:
1. analog: Wertebereich 64..127: Release-Abklingzeit verlängern
2. ein lange ausklingender Ton kann "eingefangen" und beendet werden

Was halten die Spieler unter euch von derartigen Möglichkeiten? Ist das sinnvoll? Oder reicht vielleicht die Feinfühligkeit der Füße gar nicht aus um Parameter derartig zu steuern? Oder wäre gar noch mehr machbar? Ideen?

Für meinen Spieltrieb ergeben sich mit den o.g. zur Zeit implementierten Funktionen diverse (machbare) Einflußmöglichkeiten.

Grüße,
Dirk
 
Zuletzt bearbeitet:
Mittlerweile habe ich wieder ein paar Ideen umgesetzt, die hauptsächlich auf dem neuen "16 Partials per Oscillator"-Feature aufbauen:
  • (optional) strikte Synchronisierung des Partials zum Hauptoszillator durch Verwendung desselben Phasenincrement-Zählers, z.B. für SuperSaw oder Suboszillator-Modus (in diesem Fall jedoch nur Zweierpotenz-Teiler möglich)
  • "MPPE" -> "multi phase partials expression" d.h. man kann mit dem Expression-Regler oder -Pedal dynamisch zwischen mehreren Partials überblendend "durchfaden", wobei jeder dieser Partials unterschiedliche Einstellungen haben kann (Waveform, Frequenzverhältnis, DeTune, Suboszillator-Modus, Shepard-Modus), dabei aber immer in Relation zum Haupt-Ton des zugehörigen Oszillators bleibt
    • in Verbindung mit verschiedenen Sample-Tabellen (z.Z. maximal vier) geht dies schon etwas in Richtung Wavetable-Synthese, wobei hier nur ganz simpel interpoliert wird.
  • "partials volume shaping": da die Partials keine eigene Envelope haben, war bisher eine dynamische Steuerung des Volumenanteils nicht möglich. Das "Shaping" stellt hier eine einfache Möglichkeit zur Verfügung, indem die Geschwindigkeit des Einblendens jedes Partials individuell eingestellt werden kann. Möglicher Einsatzzweck z.B. für die Simulation von langsamer einsetzenden tiefen Orgel-Pfeifen (je tiefer umso langsamer).
  • Shepard-Modus: 12 Partials im automatischen "Shepard-Scale"-Modus, mit automatischer Transponierung und Ein- und Ausblendung. Dies kann normal auf der Tastatur gespielt werden oder per Pitchrad in einem weiten Bereich durchgefahren werden. DeTune ist hier auch möglich, was sich interessant anhören kann ;-)
  • DeTune-Modulation per Envelope oder LFO
  • optional Filter-Glide in der Sustain-Phase, dynamisch steuerbar durch Aftertouch ("glide on sustain-ready"); die direkte Steuerung des Filters per Aftertouch ist meiner Erfahrung nach sehr "grobschlächtig", da bei meinem MIDI-Controller der aktive Aftertouch-Stellweg sehr klein und dadurch nicht feinfühlig steuerbar ist. Filter-Glide schafft hier Abhilfe.
  • schaltbarer Antialiasing-Filter mit maximal 15 Koeffizienten (z.B. im "Gauss-Stil") in FPGA-Logik; vormals war dieser mit 9 Koeffizienten in der Software realisiert. Die Implementierung in Logik spart eine Menge Speicher und Rechenzeit in der Software. Detail am Rande: hierfür wird der eh schon vorhandene Mixer-Akkumulator mitbenutzt, der hatte noch etwas Rechenzeit frei :)
  • "Release-Fänger" per Sustain-Pedal (oben schon erwähnt): Ein lange ausklingender Ton (lange Release-Zeit oder sehr langsame NoteOff-Velocity) kann ja nicht mehr kontrolliert werden, da man ja die zugehörige Taste schon losgelassen hat. Dies ist nun mit dem Sustain-Pedal möglich: treten bis über den Velocity-Wert der aktiven Stimme(n) triggert den "Fänger", danach erfolgt das Ausfaden der "eingefangenen Stimme" per Loslassen des Pedals.
  • sechs Delay-Units (vormals vier): dies ermöglicht mehr Flexibilität beim Reverb (mehr Schallreflexionen)
  • "running pitch": Die Verarbeitung des Pitchrad-Inputs kann auf akkumulierenden Modus geschaltet werden d.h. die Pitch-Abweichung ist nicht absolut, sondern fortlaufend. Interessant in Kombination mit Shepard-Modus ;-)

Grüße,
Dirk
 


Zurück
Oben