Projektdokumentation Kai Aras Ss08

Click here to load reader

  • date post

    13-Jul-2015
  • Category

    Documents

  • view

    339
  • download

    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