Projektdokumentation Kai Aras Ss08
date post
13-Jul-2015Category
Documents
view
339download
2
Embed Size (px)
Transcript of Projektdokumentation Kai Aras Ss08
Projektdokumentation
Kai Aras - Matrikel Nr. 18464 Medieninformatik SS08
Projektdokumentation
AlgoRythm - Mikrocontroller basierter Audio Synthesizer
Inhaltsverzeichnis
31.Projektbeschreibung
42.Motivation / Ziele
53.Konzept
53.1.Synthesizer
53.2.Klangerzeuger (DDS)
73.3.Sequenzer
84.Hardware
84.1.Digitaler Schaltungsteil
84.1.1.Verwendete Hardware
94.1.2.Blockdiagramm
104.2.Analoger Schaltungsteil
105.Software
105.1.Klangerzeugung
105.1.1.Abstrakt
105.1.2.Direkt Digitale Synthese
105.1.3.Definitionen
115.1.4.Globale Variablen
125.1.5.Interrupt Service Routine (ISR)
135.1.6.Blockdiagramm
145.2.Sequenzer
145.2.1.Abstrakt
145.2.2.Definitionen
155.2.3.Globale Variablen
165.2.4.Intterupt Service Routine
175.2.5.Blockdiagramm
186.Probleme
187.Fazit
198.Quellen
199.Anhnge
1. ProjektbeschreibungEs soll ein hybrider Audio Synthesizer auf Basis eines einfachen "low-cost" Mikrocontrollers gebaut werden.
Zur Klangerzeugung soll das Verfahren der "Direkt digitalen Synthese" verwendet werden.
Als Hardware- Platform dienen zwei 8Bit- Atmel AVR Mikrocontroller, die mittels freiem C-Compiler "avr-gcc" komplett in "C" programmiert werden kann.
Das vom AVR digital erzeugte Signal soll anschlieend durch ein analoges "multimode" Filter geformt werden knnen.
Als kleines Highlight sollen verschiedene algorithmische kompositions hilfen implementiert werden, die es dem Benutzer ermglichen sollen auf "andere" art und Weise Musik zu kreieren als gewohnt.
Das Gert soll vom funktionalen Umfang her mit kleineren kommerziellen Synthesizern mithalten knnen, allerdings soll vor allem auf die Grundstze "low-cost" und "low-parts" groen wert gelegt werden. Unter anderem sollte das Instrument folgendes bieten:
zwei digitale Oszillatoren mit versch. Wellenformen ( Sinus, Square, Sawtooth + Userdefined ) ein analoges multimode Filter ein kleiner interner Sequencer einfache midi Implementierung verschiedene algorithmische Kompositionshilfen evtl. verschiedene digitale Effekte
Whrend der Entwicklung bekam ich jedoch schnell Lust auf mehr, so beschloss ich den analogen Schaltungsteil um einen spannungsgesteuerten Verstrker, sowie zwei 4- stufige Hllkurven zu erweitern. Der Digitalteil wurde um einen Niederfrequenzoszillator (LFO) erweitert, und das Sequenzermodul bekam eine 8x8 LED-Matrix zur Bedienung verpasst.Alles in allem bietet das Gert jetzt folgendes: zwei digitale Oszillatoren mit versch. Wellenformen ( Sinus, Square, Sawtooth + Noise )
ein digitaler LFO mit versch. Wellenformen ( Sinus, Square, Sawtooth + Noise )
ein analoges multimode Filter
ein analoger spannungsgesteuerter Verstrker (VCA)
zwei analoge 4-stufige Hllkurven (ADSR)
8x8 LED-Matrix-Sequenzer mit diversen algorithmischen Kompositionshilfen und modi2. Motivation / ZieleMotiviert einen Synthesizer zu bauen haben mich verschiedene Dinge, zum einen bin ich selbst begeisterter elektronischer Musiker, zum anderen liebe ich aber auch die Softwareentwicklung. Da dies ganz gut Hand- in Hand mit einander geht war schnell klar, dass ein Audioprojekt her muss. Zunchst wollte ich dies komplett in Software realisieren bis ich zufllig ber einen Podcast auf das Thema Mikrocontroller gestoen bin, was mich wiederum dazu bewegt hat mich intensiver mit dieser Materie auseinander zu setzen.Obwohl ich zu diesem Punkt kaum Verstndnis fr Elektrontechnik mitbrachte, fand ich schnell Spa am lten, basteln und experimentieren. Natrlich wollte ich auch hier meine Begeisterung fr Audiotechnik einbringen und so versuchte ich auf unterschiedlichen Wegen Klnge mit Hilfe eines Mikrocontrollers zu erzeugen. berraschender weise lieen erste Ergebnisse nicht lange auf sich warten und die Idee vom billig- selbstbau- Synthi war geboren.Damals motivierte mich vor allem die Herausforderung ein Instrument vom ersten IC bis hin zur Frontplattengestaltung selbst nach eigenen Vorstellen zu Entwickeln, bzw. die Kunst zu erlernen die einen erst befhigt dies zu tun.
Auf den Punkt gebracht waren meine Ziele also:
Verstehen und Realisieren der Direkt digitalen Synthese Wissen rund um Elektronik erweitern
Wissen im Bereich hardwarenahe Softwareentwicklung sammeln
Eigene Ideen umsetzen, bzw. Erfahrung sammeln um dies tun zu knnen
Erschaffen eines ernsthaften Instruments3. Konzept
3.1. SynthesizerFolgende Grafik soll den Aufbau des Synthesizers und das Zusammenspiel von Digital- und Analogtechnik verdeutlichen.
Wie man der oben Grafik entnehmen kann, besteht der digitale Teil des Gesammtsystems aus:
1. Der Klangerzeugung, realisiert in Form von 3 Oszillatoren die unabhngig von einander Sinus, Rechteck, Sgezahn und Rauschen erzeugen knnen.2. Dem Sequenzer, der Komposition von Sequenzen erlaubt, und ber eine 8x8 LED-Matrix bedien bar ist.Der analoge Teil des Systems leistet folgendes zur Formung des Signals:1. Ein aktives analoges multimode Filter
2. Ein analoger Verstrker, um Lautstrkeverlufe oder Tastenanschlge zu simulieren3. Zwei Hllkurven Generatoren, welche Steuerspannungen erzeugen, die wiederum Filter und VCA beeinflussen, bzw. steuern knnen
3.2. Klangerzeuger (DDS)Zur Klangerzeugung wurde hier das Verfahren der Direkt Digitalen Synthese implementiert. Im Folgenden mchte ich dieses Verfahren kurz erlutern.Ein Direkt Digitaler Synthesizer besteht mindestens aus den folgenden Bausteinen:
Einem festen Systemtakt, der Abtastfrequenz oder eng. Samplerate
Einer Tabelle welche eine Periode der zu erzeugenden Wellenform(en) enthlt, einem so genannten Look up Table (LuT) Einem Phasenakkumulator zur Adressierung des LuT Einem Digital-Analogwandler oder eng. DAC Einem Tiefpassfilter zur Glttung des Ausgangssignals Siehe nachfolgende Grafik.
1. TuningwordDas Tuningword ist ein Binrwort, welches dem Phasenakkumulator zugefhrt wird um ein Ausganssignal in einer bestimmten Frequenz zu erzeugen.
2. PhasenakkumulatorHier wird bei jedem Systemtakt der neue Phasenwert des zu erzeugenden Abtastwertes bestimmt. Wird der Phasenakkumulator getaktet luft die Funktion:
ab. 3. Phase TruncationDas Ergebnis des Phasenakkumulators, die neue Phase reprsentiert die Adresse des neuen Abtastwertes innerhalb des Look up Tables. Da der Phasenakkumulator in der Regel breiter ist als der Adressbereich des Look up Tables, ( hier z.b. 24bit, whrend der LuT nur einen Adressbereich von 8bit bietet) wird in der Phase Truncation die Bitbreite aus dem Phasenakkumulator auf den vom LuT gegebenen Adressraum angepasst. Man tut dies, indem man die niederwertigen Bit (LSB) abschneidet und nur die hherwertigen Bit (MSB) zur Adressierung verwendet.4. Look up Tableim LuT liegt jeweils eine Periode der zu erzeugenden Wellenformen vor.
5. Digital-Analogwandler (DAC)im DAC wird der momentane Amplitudenwert des aktuellen Abtastwerts erzeugt.
6. Tiefpassfilterdas Tiefpassfilter befreit das erzeugte Analogsignal von unerwnschten Frequenzkomponenten, erst er stellt die gewnschte Wellenform wieder her. Hier gilt das Theorem von Nyquist, was im Wesentlichen besagt, dass die Grenzfrequenz des Filters kleiner oder gleich der halben Taktfrequenz des Systems gewhlt werden sollte. 3.3. SequenzerDer hier verwendete Sequenzer zeichnet sich vor allem durch seine ungewhnliche Bedienung aus. Whrend herkmmliche Sequenzer meist verlangen jede zu spielende Note und deren Tonhhe einzeln zu bestimmen (siehe nachfolgender Grafik), stellt mein Matrix- Sequenzer bereits einen Pool von miteinander harmonierenden Notenwerten zur Verfgung, der die Grundlage einer jeden Sequenz darstellt, und so eine vollkommen andere Art des Komponierens ermglicht.Dieser Pool besteht in den meisten Fllen aus den Notenwerten einer bestimmten Skala, wie z.B. der wohl bekannten A-Moll Skala, es kann hier neben den Dur- und Mollskalen aus jeder beliebigen Kirchentonart beginnend mit jedem beliebigen Grundton gewhlt werden.Zustzlich stehen in Abhngigkeit der jeweiligen Tonart eine Vielzahl von Akkorden und Kadenzen zur Verfgung, um die der Notenpool erweitertet oder dezimiert werden kann.Die Komposition von Sequenzen erfolgt durch das Setzen sogenannter Events, die entweder einen Tastenaschlag auslsen, oder einen Wechsel der Tonart, des Grundtons oder des Akkords bewirken knnen. Man tut dies, indem man durch bettigen der Taster fr die jeweilige Zeile und Reihe, das einzelne Element der Matrix auswhlt, von dem ein Event ausgelst werden soll. Visualisiert wird ein aktiver Event durch das einschalten des LEDs, welches das jeweilige Element reprsentiert.
Der Notenpool und aktive Events stehen, anders als beim herkmmlichen Sequenzer, in keinem fest definierten Verhltnis zueinander, sondern knnen sich wie folgt verhalten:
Der Pool kann auf unterschiedliche Weise mit den Zeilen und Spalten der Matrix verknpft werden.
Die Matrix kann auf unterschiedliche Weise durchlaufen werden.
Events knnen von diversen Algorithmen automatisch generiert oder alteriert werden.
Nachfolgende Grafik soll den Unterschied zwischen diesen Beiden Modellen deutlich machen.
4. Hardware
4.1. Digitaler Schaltungsteil4.1.1. Verwendete Hardware
Als Hardwareplatform zur Realisierung des Projekts, wurden zwei 8Bit Mikrocontroller der Firma Atmel verwendet:
1. AVR#1 - Atmel AVR 8Bit RISC Atmega 8
8kb Flashspeicher
1kb SRAM 16Mhz
3x Timer
3x PWM
6x ADCDient als Klangerzeuger und implementiert die Direkt digitale Synthese
2. AVR#2 - Atmel AVR 8Bit RISC Atmega 32
32kb Flashspeicher
2kb SRAM 16Mhz