Schon seit meiner Jugend interessiere ich mich für Technik. Ich wollte immer genau wissen, wie etwas funktioniert. Zum Beispiel ein Elektromotor, ein Benzinmotor oder ein Radio. Ich lernte bereits in jungen Jahren, wie man elektronische Schaltungen aufbaut und lötet. Ich fand es immer spannend zu sehen, wie eine Schaltung eine bestimmte Funktion erfüllt, wenn sie fertig aufgebaut war. Natürlich lernte ich auch, was alles schief gehen kann und welche Fehler passieren können. Die Schaltungen waren anfangs einfache Analogschaltkreise mit Transistoren, Widerständen, Relais, Dioden. Schaltungen mit dem NE555 waren auch so ein Hobby, ein Experimentierbuch war meine tägliche Lektüre. Später kamen integrierte Schaltkreise zum Einsatz wie Operationsverstärker und Logik-ICs wie Gatter, Zähler, Schieberegister, BCD Decoder. Damit konnte man schon lustige Dinge anstellen wie ein LED Lauflicht oder eine Stoppuhr.
Ebenso interessierte ich mich schon früh für elektronische Musik in Form von Keyboards. Mit einer Gitarre wusste ich nicht viel anzufangen. Viel interessanter war da mein erstes eigenes Keyboard, ein Casio VL-Tone. Kenner wissen Bescheid! In den 80ern kam ich auch mit Computern in Berührung. Es war vielleicht 1984, da kam ein ZX81 ins Haus. Ich war sofort wahnsinnig neugierig, was man damit anstellen kann. Man konnte mit der Basic Programmiersprache Spiele programmieren und auf dem „Funkendrucker“ Schwarzweiß Grafiken drucken. Ich mochte computergenerierte Grafik, tippte seitenlange Programme aus Zeitschriften ab und machte selbst erste Programmierversuche.
Ein paar Jahre später kam der Amiga ins Haus. Ich erkannte recht schnell das Potential dieser Maschine. Natürlich konnte man tolle Spiele damit spielen. Das eigentlich interessante war aber, wie das Gerät Sound und Grafik erzeugt hat. Zum ersten Mal gab es einen D/A Wandler. Dieser verband die digitale mit der analogen Welt und ermöglichte es, digital gespeicherte Klänge aus der realen Welt originalgetreu abzuspielen. Damals entstand mein erstes Synthesizer Programm. Es war in GFA Basic geschrieben und generierte FM Sounds, die man abspeichern konnte.
Bessere Performance als Basic versprach die C/C++ und Assembler Programmierung. Der MC68000 war richtig schön in Assembler zu programmieren, dabei entstanden einige Programme zur Ansteuerung der Grafikchip Hardware. Die C Programmierung war noch nicht so meins, eigentlich hätte ich gerne alle Referenzhandbücher des Amiga Betriebsystems gehabt (intuition, graphics etc), um richtige Anwendungen schreiben zu können. Die waren aber nur als Büchersammlung zu haben, welche ich mir leider nicht leisten konnte. Ich fing an, mich mit C++ zu befassen. Das Konzept der Objektorientierung gefiel mir, denn es führte zu intuitivem Code.
MIt dem Amiga hatte ich meinen ersten Kontakt zur Datenfernübertragung. Mit der seriellen Schnittstelle konnte man einen anderen Amiga verbinden oder ein Modem daran anschließen. Damals gab es noch kein Internet, aber bereits das sogenannte BTX (Bildschirmtext). Eine sehr schöne Geschichte waren auch die sogenannten Mailboxen. Ich betrieb selbst eine kleine Mailbox.
Während meines Studiums der Informatik hatte ich meinen ersten Kontakt mit der Java Programmierung. Objektorientierte Konzepte waren mir bereits von C++ bekannt, jedoch gefiel mir die Einfachheit und Mächtigkeit der Java Programmiersprache. Es fühlte sich an wie eine Kreuzung zwischen C++ und Basic.
In den folgenden Jahren befasste ich mich etwas intensiver mit elektronischer Musik. Ich probierte mehrere Synthesizer aus und experimentierte mit verschiedenen DAWs, um damit selbst Musik zu produzieren. Virtuell analoge Synthesizer fand ich besonders interessant, da sie ohne Samples auskamen und Sound wie aus dem „nichts“ generieren konnten mittels subtraktiver oder FM Synthese.
In der Pandemie 2020 fing ich wieder an, in meiner Freizeit Java Programme für die Sound Generierung zu entwickeln. Dabei habe ich mir die DSP Grundlagen für bandlimited Sound Synthese und digitale Filter angeeignet. Es entstand ein experimenteller Synthesizer mit Swing, später mit JavaFX Frontend. Seit 2024 befasse ich mich intensiver mit Mikrocontrollern und entdecke dabei meine Leidenschaft zur Elektronik neu. Als ersten Mikrocontroller wählte ich einen „Black Pill“, eine STM32 MCU mit 84MHZ mit FPU, um damit Sound mit DSP Algorithmen zu erzeugen, die ich bereits mit Java erforscht hatte. Als IDE habe ich erstmal mit der Arduino IDE experimentiert. Dabei stieß ich aber schnell an die Grenzen, daher kam die STM32 Cube IDE zum Einsatz, die sehr mächtig ist.
Die Leistung der STM32 MCU war aber irgendwie noch nicht gut genug und ich hatte so meine Kämpfe mit der IDE. Da habe ich vom Raspberry Pi Pico 2 erfahren, der letztes Jahr herauskam. Er war mit 150MHZ wesentlich schneller und hatte auch eine FPU an Bord. Die Programmierung erfolgt hier mit der Visual Code IDE von Microsoft. Was mir daran gut gefällt ist die Möglichkeit, komplexere Projekte aufzubauen mit CMake. Der Raspberry Pi Pico 2 ist ähnlich aber einfacher aufgebaut und hat einige Spezialitäten wie die frei programmierbare PIO State Machines. Natürlich war mein erstes Projekt, einen PCM5102 D/A Wandler anzuschließen und ihm einen Sinuston zu entlocken. Dazu musste ich erstmal das I2S Protokoll in der PIO SM zusammenschrauben (es gibt hier dazu einen Artikel). Das geniale am Raspberry Pi Pico (2) ist, dass er über 2 Kerne verfügt. Man kann also Realtime Audio ungestört auf einem Kern rendern, während man die anderen Sachen wie Regler und Display auf dem anderen Kern umsetzen kann.
