Ein Audio-Synthesizer mit PIC32: Musik digital erzeugen ist eines der spannendsten Projekte im Embedded-Bereich, weil es Elektronik, Signalverarbeitung und kreatives Sounddesign in einem Gerät vereint. Anders als bei einfachen Piezo-Beep-Anwendungen geht es hier um echte digitale Klangerzeugung: Oszillatoren, Hüllkurven, Filter, Effekte und eine Ausgabe, die am Kopfhörer oder Line-In sauber klingt. Der PIC32 ist dafür eine sehr gute Basis, weil er im Vergleich zu 8-Bit-Mikrocontrollern deutlich mehr Rechenleistung, schnelle Timer, DMA-Optionen (je nach Familie) und flexible Peripherie für serielle Audioausgabe (z. B. I²S bei passenden PIC32-Varianten) mitbringt. Gleichzeitig bleibt das System überschaubar: Sie müssen keinen kompletten Linux-SBC betreiben, sondern können ein kompaktes, deterministisches Instrument entwickeln, das sofort startet und sich in Hardware wie ein klassischer Synth anfühlt. In diesem Artikel erfahren Sie, welche Architektur sich bewährt, wie Sie digitale Wellenformen erzeugen, welche Samplingrate sinnvoll ist, wie Sie mit DAC oder PWM zu gutem Klang kommen und wie Sie Bedienung (Potis, Encoder, MIDI) und Audio-Engine sauber voneinander trennen.
Grundidee: Was macht einen digitalen Synthesizer aus?
Ein digitaler Synthesizer erzeugt Audiosignale als Zahlenfolge. Diese Zahlen repräsentieren Abtastwerte (Samples) einer Wellenform. Aus einer Folge von Samples entsteht nach der Wandlung in eine analoge Spannung ein hörbarer Ton. Entscheidend ist, dass die Audio-Engine in festen Zeitabständen neue Samples liefert, typischerweise 44,1 kHz oder 48 kHz. Die Klangformung entsteht dann durch Bausteine, die Sie aus der Synthese kennen:
- Oszillator(en): erzeugen Grundwellenformen (Sinus, Sägezahn, Rechteck, Dreieck, Wavetables)
- Mischer: kombiniert mehrere Stimmen oder Oszillatoren
- Hüllkurven (ADSR): steuern Lautstärke oder Filterverlauf über die Zeit
- Filter: formen das Spektrum (Lowpass/Highpass/Bandpass)
- Effekte: z. B. Delay, Chorus, Distortion (je nach Rechenbudget)
- Steuerung: Potis, Encoder, Taster, MIDI oder USB
Der PIC32 übernimmt dabei zwei Hauptaufgaben: Er berechnet in Echtzeit neue Samples und gibt diese über eine geeignete Audioausgabe (DAC/I²S/PWM) aus. Parallel dazu liest er Eingaben ein und aktualisiert Parameter – idealerweise ohne die Audiorate zu stören.
PIC32 auswählen: Welche Eigenschaften zählen wirklich?
PIC32 ist eine Familie mit verschiedenen Ausprägungen. Für Audio ist nicht nur „MHz“ wichtig, sondern auch die Frage, wie Sie das Signal ausgeben und wie stabil Sie die Sample-Clock erzeugen können.
- Genügend CPU-Headroom: für mehrere Stimmen, Filter und ggf. Effekte
- Timer/Interrupt-Latenz: stabile Sampleerzeugung ohne Jitter
- DMA/Peripherie: hilfreich, wenn Sie I²S oder schnelle DAC-Ansteuerung entlasten möchten
- Speicher: für Wavetables, Presets und Effektpuffer (Delay benötigt RAM)
- Entwicklungsumgebung: MPLAB X und XC32, optional Harmony/Beispielprojekte
Als offizieller Einstieg in Toolchain und IDE sind die Microchip-Seiten nützlich: MPLAB X IDE und MPLAB XC Compiler (XC32). Für umfassendere Frameworks und Treiberbibliotheken lohnt sich ein Blick auf MPLAB Harmony.
Audio-Ausgabe: DAC, I²S oder PWM?
Die Audioqualität Ihres Synths hängt stark von der Ausgangsstufe ab. Drei gängige Wege sind realistisch, jeweils mit Vor- und Nachteilen.
Externer DAC über I²S oder SPI
Das professionellste Setup ist ein externer Audio-DAC, idealerweise über I²S (falls Ihr PIC32 das unterstützt) oder alternativ über SPI mit geeigneter Update-Rate. Ein DAC liefert saubere, reproduzierbare Qualität, und Sie können mit Standard-Samplingraten arbeiten. Viele Audio-DACs erwarten I²S und bieten Line-Level-Ausgänge. Für Grundlagen zum I²S-Bus eignet sich ein neutraler Einstieg: I²S (Inter-IC Sound) Überblick.
Interner DAC (falls verfügbar)
Einige Mikrocontroller-Varianten besitzen interne DACs. Falls Ihr PIC32-Modell einen DAC hat, kann das die Hardware vereinfachen. Trotzdem brauchen Sie ein analoges Rekonstruktionsfilter (mindestens ein Tiefpass) und eine saubere Referenz/Versorgung, sonst koppeln Digitalschaltspitzen in den Ton ein.
PWM als „DAC-Ersatz“
PWM ist für einfache Projekte attraktiv, weil Sie nur einen Pin benötigen. Allerdings müssen Sie das PWM-Signal tiefpassfiltern, um Audio zu erhalten. Die PWM-Frequenz muss deutlich höher als die Audiofrequenz sein, damit das Filter praktikabel bleibt. PWM kann für Lo-Fi- oder Chiptune-Sounds ausreichen, für sauberes Line-Audio ist ein echter DAC meist die bessere Wahl.
Samplingrate und Nyquist: Warum 44,1 kHz nicht „irgendeine Zahl“ ist
Damit ein digitaler Synth natürlich klingt, muss die Samplingrate hoch genug sein. Das Nyquist-Shannon-Theorem besagt vereinfacht: Um Frequenzen bis
Bei 44,1 kHz liegt die Nyquist-Frequenz bei 22,05 kHz – knapp über dem typischen Hörbereich. In der Praxis ist das trotzdem nicht das ganze Bild: Viele Wellenformen (Sägezahn, Rechteck) haben starke Oberwellen, die oberhalb der Nyquist-Frequenz liegen würden und dann als Aliasing zurück in den hörbaren Bereich „spiegeln“. Deshalb sind Anti-Aliasing-Strategien in der Synthese wichtig (mehr dazu später).
Oszillatoren: Wellenformen effizient erzeugen
Der Kern eines Synths ist der Oszillator. Auf dem PIC32 stehen Ihnen verschiedene Methoden zur Verfügung, die sich in Klangqualität und Rechenaufwand unterscheiden.
Lookup-Table (Wavetable) für Sinus und Co.
Eine Wavetable ist ein Array mit z. B. 256, 512 oder 1024 Samples einer Wellenform (z. B. Sinus). Der Oszillator läuft durch die Tabelle und liest Werte aus. Das ist sehr schnell und gut kontrollierbar. Für Sinus ist das ideal, weil die direkte Sinusberechnung teuer wäre.
DDS mit Phasenakkumulator
Direct Digital Synthesis (DDS) ist ein Standardverfahren: Ein Phasenakkumulator erhöht sich pro Sample um ein Phaseninkrement. Aus der Phase wird der Tabellenindex abgeleitet. Die Tonhöhe wird dadurch extrem fein einstellbar.
Das Phaseninkrement hängt von gewünschter Frequenz und Samplingrate ab. Bei einer N-Bit-Phase gilt als gängige Beziehung:
Damit können Sie sehr genau stimmen, auch wenn Sie mehrere Stimmen gleichzeitig spielen.
Direkte Berechnung einfacher Wellenformen
Dreieck oder Sägezahn lassen sich ohne Tabelle erzeugen, indem Sie den Phasenwert linear abbilden. Das spart Speicher, erzeugt aber starke Oberwellen und damit Aliasing, wenn Sie nicht gegensteuern.
Anti-Aliasing: Der Unterschied zwischen „klingt digital“ und „klingt gut“
Aliasing ist die häufigste Klangfalle bei digitalen Synthesizern auf Mikrocontrollern. Besonders Rechteck und Sägezahn haben theoretisch unendlich viele Oberwellen. In der digitalen Welt müssen Sie diese begrenzen.
- Bandlimitierte Wavetables: mehrere Tabellen je Tonhöhenbereich, deren Oberwellen passend gekappt sind
- Oversampling: intern mit höherer Samplingrate rechnen und anschließend tiefpassfiltern und decimieren
- BLEP/PolyBLEP: Korrekturverfahren für diskontinuierliche Wellenformen (sehr effektiv, moderater Aufwand)
Für einen PIC32 ist bandlimitierte Wavetable-Synthese oft der pragmatische Sweet-Spot: Sie erzeugen z. B. pro Oktave eine optimierte Tabelle. So bleibt die Rechenlast niedrig, während der Klang deutlich sauberer wird als bei „roher“ Sägezahn-Generierung.
Mehrstimmigkeit: Polyphonie, Stimmenverwaltung und Mischen
Ein Synth wird musikalisch interessant, wenn er mehrere Stimmen gleichzeitig spielen kann. Polyphonie bedeutet: Jede Stimme hat ihren eigenen Oszillatorstatus (Phase), ihre Hüllkurve und ggf. Filterzustand.
- Voice-Struct: Phase, Inkrement, Amplitude, ADSR-Zustand, Filterzustand
- Voice Allocation: freie Stimme wählen oder „Voice Stealing“ bei vollem Pool
- Mixer: Summierung aller Stimmen mit Headroom, um Clipping zu vermeiden
Beim Mischen ist Skalierung wichtig. Wenn Sie mehrere 16-Bit-Samples addieren, benötigen Sie mehr Bitbreite im Akkumulator, um Überläufe zu vermeiden. Ein typischer Ansatz ist 32-Bit-Akkumulation und anschließendes Skalieren oder Soft-Clipping.
ADSR-Hüllkurven: Dynamik und Spielgefühl
Hüllkurven bestimmen, ob ein Sound „plucky“, „pad“ oder „percussive“ wirkt. Eine ADSR-Hüllkurve besteht aus Attack, Decay, Sustain, Release. In digitaler Form implementieren Sie sie als Zustandsautomat, der pro Sample oder pro Kontrolltick einen Pegel aktualisiert.
Linear oder exponentiell?
Für Lautstärke wirken exponentielle Verläufe oft natürlicher, weil das menschliche Gehör logarithmisch empfindet. Linear ist einfacher und kann trotzdem musikalisch sein. Ein effizienter Kompromiss ist ein IIR-ähnliches Verhalten in den Segmenten.
Filter: Vom einfachen Tiefpass bis zum resonanten Klang
Filter machen aus einem Oszillator ein Instrument. Schon ein einfacher 1-Pol-Tiefpass kann harsche Höhen glätten. Für charakteristischen Synth-Sound sind resonante Filter interessant, allerdings rechenintensiver.
- 1-Pol IIR: sehr effizient, gut für Grundglättung
- Biquad (2. Ordnung): flexibel (LP/HP/BP), kann Resonanz, erfordert mehr Multiplikationen
- Zustandsvariablenfilter: musikalisch, aber sorgfältige Stabilitätsprüfung nötig
Die digitale Filtertheorie kann schnell tief werden. Ein solider Einstieg in IIR-Filter (inklusive Biquad-Grundlagen) ist hier zu finden: Digitaler Biquad-Filter (Überblick).
Audio-Engine und Control-Rate: Parameter ändern, ohne Knackser zu erzeugen
Eine typische Fehlerquelle sind hörbare Knackser, wenn Parameter abrupt springen (z. B. Filtercutoff oder Lautstärke). Deshalb trennt man in vielen Synths:
- Audio-Rate: läuft bei 44,1/48 kHz und erzeugt Samples
- Control-Rate: läuft z. B. bei 200–1000 Hz für Potis, Modulationen und UI
Parameteränderungen glätten Sie per „Slew Limiter“ oder kleinen Interpolationsschritten. So bleibt die Bedienung flüssig, ohne dass harte Sprünge in der Audiosumme entstehen.
Bedienung: Potentiometer, Encoder, Taster und Presets
Ein guter DIY-Synth fühlt sich wie ein Instrument an. Dafür lohnt es sich, die Bedienung von Beginn an sauber zu planen.
- Potis (ADC): ideal für Cutoff, Resonanz, Attack/Decay etc.; mit Mittelwert/Deadband gegen Flattern
- Encoder: gut für Menü, Preset-Auswahl, Tempo; braucht Entprellung und saubere Auswertung
- Taster: Play/Stop, Oktave, Shift-Funktionen; ebenfalls entprellen
- Preset-Speicher: Parameterblöcke in Flash/EEPROM oder externem Speicher ablegen
ADC-Messwerte sollten nicht 1:1 in Audio-Parameter gehen. Nutzen Sie Skalierung, Kurven (logarithmische Map für Filter) und Glättung, damit der Reglerweg musikalisch wirkt.
MIDI-Integration: Noten, Velocity und Controller
Wenn Ihr Synth mit einem Keyboard oder DAW spielen soll, ist MIDI sehr naheliegend. Klassisches MIDI läuft seriell mit 31.250 Baud. Ein PIC32 kann das problemlos. Wichtig ist eine robuste Parserlogik, weil MIDI Running Status und unterschiedliche Message-Längen verwendet.
- Note On/Off: triggert Voice Allocation und Hüllkurven
- Velocity: beeinflusst Lautstärke oder Filter (musikalischer Ausdruck)
- CC (Controller): Modwheel, Filtercutoff, Resonanz, Expression
Für MIDI-Grundlagen ist die MIDI Association ein seriöser Einstieg: MIDI Association.
Timing und Jitter: Warum ein stabiler Sample-Takt entscheidend ist
Audio ist gnadenlos: Wenn Ihre Sampleausgabe nicht exakt periodisch ist, entstehen Verzerrungen oder hörbares Rauschen. Deshalb sollte die Sampleerzeugung an einen Timer gekoppelt sein oder – bei I²S – über die Audio-Peripherie getaktet werden. Zwei Prinzipien sind verbreitet:
- Interrupt-getriebene Audio-ISR: Timer löst alle 1/
f s Sekunden aus und fordert das nächste Sample - Buffer + DMA (wenn möglich): Audio wird blockweise berechnet, DMA schiebt Daten zum DAC/I²S
Buffering reduziert die CPU-Lastspitzen und macht das System stabiler, erfordert aber etwas mehr Planung (Double Buffer, Underflow-Schutz).
Analoges Ausgangsfilter und Verstärkung: Damit es am Line-In gut klingt
Nach dem DAC oder PWM-Ausgang benötigen Sie praktisch immer eine analoge Aufbereitung:
- Rekonstruktionsfilter: Tiefpass, um Images und PWM-Reste zu dämpfen
- DC-Block (Koppelkondensator): falls ein DC-Offset im Signal liegt
- Op-Amp-Stufe: Pufferung und ggf. Gain, damit Line-Pegel stimmt
- Saubere Masseführung: analoges und digitales GND-Konzept, um Störspitzen fernzuhalten
Gerade bei Mikrocontroller-Projekten ist die Trennung von Analog- und Digitalmasse ein entscheidender Hebel für hörbar weniger „Digitalzirpen“.
Effekte auf dem PIC32: Was realistisch ist
Effekte machen Spaß, können aber Ressourcen fressen. Realistische, gut klingende Effekte auf einem PIC32 sind:
- Delay/Echo: benötigt einen Ringbuffer (RAM) und eine Mischlogik
- Chorus: Delay mit moduliertem Leseindex (Interpolation erforderlich)
- Distortion: Soft-Clipping oder Waveshaping, wenig Rechenlast
- Reverb: möglich, aber je nach Qualität deutlich aufwendiger
Für Delay ist die benötigte Puffergröße einfach abschätzbar. Bei Samplingrate
Bei 48 kHz und 0,5 s Delay benötigen Sie 24.000 Samples. Bei 16-Bit-Mono sind das rund 48 kB – das ist für manche PIC32-Varianten machbar, aber nicht „gratis“. Das zeigt, warum Architektur und Speicherauswahl früh geplant werden sollten.
Testen und Debuggen: So finden Sie Audiofehler schneller
Audiofehler sind oft systemisch. Mit einer strukturierten Teststrategie sparen Sie viel Zeit:
- Sinus-Testton: zuerst ein sauberer Sinus bei 440 Hz erzeugen und am Oszilloskop/Audiointerface prüfen
- Störgeräusche identifizieren: klingt es nach PWM-Resten, nach Jitter, nach Masseproblem?
- CPU-Last messen: Debug-Pin toggeln und Duty-Cycle beobachten
- Parameteränderungen glätten: Knackser entstehen oft durch Sprünge in Gain oder Cutoff
- Spektrum prüfen: mit FFT am PC sehen Sie Aliasing und Images sehr schnell
Ein günstiges USB-Audiointerface und eine Spektrumanalyse-Software sind in der Praxis oft wertvoller als „noch mehr Codeoptimierung“ ohne Messung.
Bewährte Lernpfade: Von „ein Ton“ zum spielbaren Instrument
- Phase 1: Timer-taktete Sampleausgabe, Sinus über DAC/I²S
- Phase 2: DDS + mehrere Wellenformen, Lautstärkeregelung
- Phase 3: ADSR-Hüllkurve und einfacher Tiefpass
- Phase 4: Polyphonie, Voice Allocation, MIDI Note On/Off
- Phase 5: bandlimitierte Wavetables oder PolyBLEP gegen Aliasing
- Phase 6: Effekte, Presets, UI-Feinschliff
Mit diesem Vorgehen wächst Ihr Projekt kontrolliert, und Sie behalten jederzeit einen „guten Klangzustand“, auf dem Sie aufbauen können.
Outbound-Links für Grundlagen, Toolchain und Audio-Interfaces
- MPLAB X IDE (Microchip)
- MPLAB XC Compiler (XC32) (Microchip)
- MPLAB Harmony (Framework/Beispiele)
- I²S (Inter-IC Sound) Überblick
- Nyquist-Shannon-Abtasttheorem (Grundlagen)
- Digitaler Biquad-Filter (IIR-Grundlagen)
- MIDI Association (MIDI-Grundlagen und Spezifikationen)
IoT-PCB-Design, Mikrocontroller-Programmierung & Firmware-Entwicklung
PCB Design • Arduino • Embedded Systems • Firmware
Ich biete professionelle Entwicklung von IoT-Hardware, einschließlich PCB-Design, Arduino- und Mikrocontroller-Programmierung sowie Firmware-Entwicklung. Die Lösungen werden zuverlässig, effizient und anwendungsorientiert umgesetzt – von der Konzeptphase bis zum funktionsfähigen Prototyp.
Diese Dienstleistung richtet sich an Unternehmen, Start-ups, Entwickler und Produktteams, die maßgeschneiderte Embedded- und IoT-Lösungen benötigen. Finden Sie mich auf Fiverr.
Leistungsumfang:
-
IoT-PCB-Design & Schaltplanerstellung
-
Leiterplattenlayout (mehrlagig, produktionstauglich)
-
Arduino- & Mikrocontroller-Programmierung (z. B. ESP32, STM32, ATmega)
-
Firmware-Entwicklung für Embedded Systems
-
Sensor- & Aktor-Integration
-
Kommunikation: Wi-Fi, Bluetooth, MQTT, I²C, SPI, UART
-
Optimierung für Leistung, Stabilität & Energieeffizienz
Lieferumfang:
-
Schaltpläne & PCB-Layouts
-
Gerber- & Produktionsdaten
-
Quellcode & Firmware
-
Dokumentation & Support zur Integration
Arbeitsweise:Strukturiert • Zuverlässig • Hardware-nah • Produktorientiert
CTA:
Planen Sie ein IoT- oder Embedded-System-Projekt?
Kontaktieren Sie mich gerne für eine technische Abstimmung oder ein unverbindliches Angebot. Finden Sie mich auf Fiverr.

