![Page 1: Chiptunes Wie musikalisch ist mein Mikrocontroller? XOR 7 6 5 4 3 2 1 0 XOR 1 0 1 0 1 LFSR - Linear Feedback Shift Register: Darf nicht mit 0x00 initialisiert werden! Primitives Polynom](https://reader030.vdokument.com/reader030/viewer/2022041217/5e05ba3cfdba385e2214ecdd/html5/thumbnails/1.jpg)
Institut für Elektrische Messtechnik und Grundlagen der Elektrotechnik
www.emg.tu-bs.de
ChiptunesWie musikalisch ist mein Mikrocontroller? Martin Wenske WS 2011/201209.01.2012
Betreuer: Timo Klingeberg
![Page 2: Chiptunes Wie musikalisch ist mein Mikrocontroller? XOR 7 6 5 4 3 2 1 0 XOR 1 0 1 0 1 LFSR - Linear Feedback Shift Register: Darf nicht mit 0x00 initialisiert werden! Primitives Polynom](https://reader030.vdokument.com/reader030/viewer/2022041217/5e05ba3cfdba385e2214ecdd/html5/thumbnails/2.jpg)
Inhalt
● Motivation● Geschichte des Chiptunes● Signalformen● Hüllkurvenfilter● D/A - Umsetzer● Chiptunes Demo
2/27
![Page 3: Chiptunes Wie musikalisch ist mein Mikrocontroller? XOR 7 6 5 4 3 2 1 0 XOR 1 0 1 0 1 LFSR - Linear Feedback Shift Register: Darf nicht mit 0x00 initialisiert werden! Primitives Polynom](https://reader030.vdokument.com/reader030/viewer/2022041217/5e05ba3cfdba385e2214ecdd/html5/thumbnails/3.jpg)
Motivation
• Wozu ist mein Mikrocontroller in der Lage?– Musik vom Chip abspielen lassen
• Die begrenzten Ressourcen nutzen– 20 MHz Taktfrequenz– wenig Speicher
3/27
![Page 4: Chiptunes Wie musikalisch ist mein Mikrocontroller? XOR 7 6 5 4 3 2 1 0 XOR 1 0 1 0 1 LFSR - Linear Feedback Shift Register: Darf nicht mit 0x00 initialisiert werden! Primitives Polynom](https://reader030.vdokument.com/reader030/viewer/2022041217/5e05ba3cfdba385e2214ecdd/html5/thumbnails/4.jpg)
Geschichtliche des Chiptunes
• 1980er:Die ersten Spielkonsolen (Commodore 64, Amiga) werden erschwinglich ( 1MHz Taktrate; 64kByte RAM)
• 1980 – 1995:Komponieren von Musik auf Spielkonsolen ist sehr beliebt;Die einzige Möglichkeit Musik digital zu erzeugen
• 2012:Speicher ist zwar nicht mehr teuer, allerdings ist der Speicher auf Mikrocontrollern immer noch relativ knapp (ca. 8 – 64 kByte Flash)
4/27
![Page 5: Chiptunes Wie musikalisch ist mein Mikrocontroller? XOR 7 6 5 4 3 2 1 0 XOR 1 0 1 0 1 LFSR - Linear Feedback Shift Register: Darf nicht mit 0x00 initialisiert werden! Primitives Polynom](https://reader030.vdokument.com/reader030/viewer/2022041217/5e05ba3cfdba385e2214ecdd/html5/thumbnails/5.jpg)
Verfügbare Ressourcen
8 kByteFlash
1 kByteSRAM
512 ByteEEPROM
Atmel Mega 8
8 Bit Mikrocontroller● Musikdaten nur im Flash abspeicherbar
● Vergleich: Datenrate mp3 := 16 kByte/s
● 1/2 Sekunde speicherbar
● Abspielen von Samples nicht möglich
5/27
![Page 6: Chiptunes Wie musikalisch ist mein Mikrocontroller? XOR 7 6 5 4 3 2 1 0 XOR 1 0 1 0 1 LFSR - Linear Feedback Shift Register: Darf nicht mit 0x00 initialisiert werden! Primitives Polynom](https://reader030.vdokument.com/reader030/viewer/2022041217/5e05ba3cfdba385e2214ecdd/html5/thumbnails/6.jpg)
Syntese von Musik
Signalerzeugung Hüllkurven-Filter D/A - Wandlung
Vorteil: - extrem geringe Datenrate nötig
Nachteil: - Einschränkungen in der Wahl der Signalform - Wiedergabe von Sampels nicht/nur bedingt möglich
DA
● Dynamische Erzeugung von Signalformen beliebiger Frequenz
6/27
![Page 7: Chiptunes Wie musikalisch ist mein Mikrocontroller? XOR 7 6 5 4 3 2 1 0 XOR 1 0 1 0 1 LFSR - Linear Feedback Shift Register: Darf nicht mit 0x00 initialisiert werden! Primitives Polynom](https://reader030.vdokument.com/reader030/viewer/2022041217/5e05ba3cfdba385e2214ecdd/html5/thumbnails/7.jpg)
Signalformen
t
A t
A t
A t
ASinus - 440 Hz
Dreieck - 440 Hz
Sägezahn - 440 Hz
Rechteck - 440 Hz
7/27
![Page 8: Chiptunes Wie musikalisch ist mein Mikrocontroller? XOR 7 6 5 4 3 2 1 0 XOR 1 0 1 0 1 LFSR - Linear Feedback Shift Register: Darf nicht mit 0x00 initialisiert werden! Primitives Polynom](https://reader030.vdokument.com/reader030/viewer/2022041217/5e05ba3cfdba385e2214ecdd/html5/thumbnails/8.jpg)
Zusätzliche Signalform - Rauschen
t
A
Rauschen
● Wichtig für die Synthese von frequenzreichen Signalen ● Schlagzeug● Regen● Wellen
8/27
![Page 9: Chiptunes Wie musikalisch ist mein Mikrocontroller? XOR 7 6 5 4 3 2 1 0 XOR 1 0 1 0 1 LFSR - Linear Feedback Shift Register: Darf nicht mit 0x00 initialisiert werden! Primitives Polynom](https://reader030.vdokument.com/reader030/viewer/2022041217/5e05ba3cfdba385e2214ecdd/html5/thumbnails/9.jpg)
DDS – Direkte Digitale Syntese
∑ Phasenregister Sinus Tabelle D/A UmsetzerDatenwort
Takt
(8 Bit)(16 Bit) (8 Bit)
Phasenakku
Max. Ausgangsfrequenz = 8000 HzTaktfrequenz = 16000 HzFrequenzaufösung = 0,24 Hz
Datenwort 0x3F := 2550x3FFF 255
9/27
![Page 10: Chiptunes Wie musikalisch ist mein Mikrocontroller? XOR 7 6 5 4 3 2 1 0 XOR 1 0 1 0 1 LFSR - Linear Feedback Shift Register: Darf nicht mit 0x00 initialisiert werden! Primitives Polynom](https://reader030.vdokument.com/reader030/viewer/2022041217/5e05ba3cfdba385e2214ecdd/html5/thumbnails/10.jpg)
DDS – Sägezahn
∑ PhasenregisterDatenwort
Phasenakku
(16 Bit)D/A Umsetzer
(8 Bit)
Datenwort 0x3FFF
10/27
Takt
![Page 11: Chiptunes Wie musikalisch ist mein Mikrocontroller? XOR 7 6 5 4 3 2 1 0 XOR 1 0 1 0 1 LFSR - Linear Feedback Shift Register: Darf nicht mit 0x00 initialisiert werden! Primitives Polynom](https://reader030.vdokument.com/reader030/viewer/2022041217/5e05ba3cfdba385e2214ecdd/html5/thumbnails/11.jpg)
DDS – Rechteck
∑ PhasenregisterDatenwort
Phasenakku
(16 Bit) D/A Umsetzer(8 Bit)
Datenwort 0x3FFF
0x7FFF
0
11/27
Takt
![Page 12: Chiptunes Wie musikalisch ist mein Mikrocontroller? XOR 7 6 5 4 3 2 1 0 XOR 1 0 1 0 1 LFSR - Linear Feedback Shift Register: Darf nicht mit 0x00 initialisiert werden! Primitives Polynom](https://reader030.vdokument.com/reader030/viewer/2022041217/5e05ba3cfdba385e2214ecdd/html5/thumbnails/12.jpg)
DDS – Dreieck
∑ PhasenregisterDatenwort
Phasenakku
(16 Bit)
Datenwort 0x3FFF
12/27
Takt
D/A Umsetzer(8 Bit)
|2er Komplement|
|2er Komplement|
![Page 13: Chiptunes Wie musikalisch ist mein Mikrocontroller? XOR 7 6 5 4 3 2 1 0 XOR 1 0 1 0 1 LFSR - Linear Feedback Shift Register: Darf nicht mit 0x00 initialisiert werden! Primitives Polynom](https://reader030.vdokument.com/reader030/viewer/2022041217/5e05ba3cfdba385e2214ecdd/html5/thumbnails/13.jpg)
Erzeugung von Rauschen
1 1 1 1 0 1 0 0
XOR
02467 5 3 1
XOR1
0
1
0
1
LFSR - Linear Feedback Shift Register:
● Darf nicht mit 0x00 initialisiert werden!
● Primitives Polynom => Folge des LFSR maximal● unterschiedliche Registereinträge
XOR
1
1
13/2728−1
![Page 14: Chiptunes Wie musikalisch ist mein Mikrocontroller? XOR 7 6 5 4 3 2 1 0 XOR 1 0 1 0 1 LFSR - Linear Feedback Shift Register: Darf nicht mit 0x00 initialisiert werden! Primitives Polynom](https://reader030.vdokument.com/reader030/viewer/2022041217/5e05ba3cfdba385e2214ecdd/html5/thumbnails/14.jpg)
ADSR Hüllkurven Filter
● Hüllkurve ist in vier Bereiche unterteilt:
● Attack: Anstiegszeit bis Signal seine maximale Amplitude erreicht
● Decay: Abfall der Amplitude bis auf einen bestimmten Wert
● Sustain: Halten der Amplitude solange der Ton noch aktiv ist
● Release: Abfall der Amplitude auf null
● Erzeugung vielfältiger Klangkurven
● Auch nicht-instrumentenähnliche Verläufe sind möglich
t
AAttack Decay Sustain Release t
A
14/27
![Page 15: Chiptunes Wie musikalisch ist mein Mikrocontroller? XOR 7 6 5 4 3 2 1 0 XOR 1 0 1 0 1 LFSR - Linear Feedback Shift Register: Darf nicht mit 0x00 initialisiert werden! Primitives Polynom](https://reader030.vdokument.com/reader030/viewer/2022041217/5e05ba3cfdba385e2214ecdd/html5/thumbnails/15.jpg)
Instrumentelle Hüllkurvenformen
t
A
A
S
R
D
t
A
A
D
t
A
AR
● Steiler Anstieg● Haltephase● Steiler Abfall
● Steiler Anstieg● Langsamer Signalabfall
● Steiler Anstieg● Abfallphase● Steiler Abfall
15/27
![Page 16: Chiptunes Wie musikalisch ist mein Mikrocontroller? XOR 7 6 5 4 3 2 1 0 XOR 1 0 1 0 1 LFSR - Linear Feedback Shift Register: Darf nicht mit 0x00 initialisiert werden! Primitives Polynom](https://reader030.vdokument.com/reader030/viewer/2022041217/5e05ba3cfdba385e2214ecdd/html5/thumbnails/16.jpg)
Besondere Hüllkurvenformen
A
A
S
R
A
A
S
R
● Rauschen ● Steiler Anstieg● Sehr kurze Haltephase● Steile Abfall
● Umgekehrter Signalverlauf
A
A
R
● Rauschen ● Steiler Anstieg● Langsamer Abfall
16/27
![Page 17: Chiptunes Wie musikalisch ist mein Mikrocontroller? XOR 7 6 5 4 3 2 1 0 XOR 1 0 1 0 1 LFSR - Linear Feedback Shift Register: Darf nicht mit 0x00 initialisiert werden! Primitives Polynom](https://reader030.vdokument.com/reader030/viewer/2022041217/5e05ba3cfdba385e2214ecdd/html5/thumbnails/17.jpg)
Signalerzeugung – Direkter Pinausgang
µC
RPB0
17/27
● Kaum Schaltungsaufwand● Erzeugung zusätzlicher höherer Frequenzen
![Page 18: Chiptunes Wie musikalisch ist mein Mikrocontroller? XOR 7 6 5 4 3 2 1 0 XOR 1 0 1 0 1 LFSR - Linear Feedback Shift Register: Darf nicht mit 0x00 initialisiert werden! Primitives Polynom](https://reader030.vdokument.com/reader030/viewer/2022041217/5e05ba3cfdba385e2214ecdd/html5/thumbnails/18.jpg)
Signalerzeugung – R2R Netzwerk
µC2R
2R
2R
2R
R
R
2RPB0
PB1
PB2
PB3
R
18/27
● 4 Bit => 16 Inkremente● Hoher Schaltungsaufwand
![Page 19: Chiptunes Wie musikalisch ist mein Mikrocontroller? XOR 7 6 5 4 3 2 1 0 XOR 1 0 1 0 1 LFSR - Linear Feedback Shift Register: Darf nicht mit 0x00 initialisiert werden! Primitives Polynom](https://reader030.vdokument.com/reader030/viewer/2022041217/5e05ba3cfdba385e2214ecdd/html5/thumbnails/19.jpg)
Signalerzeugung – Pulsweitenmodulation
PWM Hardware
TAKT
Tastverhältnis
CR
● Nutzt internen PWM Generator des Mikrocontrollers● Wenige Bauelemente nötig● Maximale Frequenz begrenzt
19/27
![Page 20: Chiptunes Wie musikalisch ist mein Mikrocontroller? XOR 7 6 5 4 3 2 1 0 XOR 1 0 1 0 1 LFSR - Linear Feedback Shift Register: Darf nicht mit 0x00 initialisiert werden! Primitives Polynom](https://reader030.vdokument.com/reader030/viewer/2022041217/5e05ba3cfdba385e2214ecdd/html5/thumbnails/20.jpg)
Signalerzeugung – Pulsweitenmodulation
t
t
20/27
Tastverhältnis=t eint aus
![Page 21: Chiptunes Wie musikalisch ist mein Mikrocontroller? XOR 7 6 5 4 3 2 1 0 XOR 1 0 1 0 1 LFSR - Linear Feedback Shift Register: Darf nicht mit 0x00 initialisiert werden! Primitives Polynom](https://reader030.vdokument.com/reader030/viewer/2022041217/5e05ba3cfdba385e2214ecdd/html5/thumbnails/21.jpg)
Funktionsschema – 3 Stimmig
Stimme 1
Stimme 2
Stimme 3
Summierer
21/27
ADSR
![Page 22: Chiptunes Wie musikalisch ist mein Mikrocontroller? XOR 7 6 5 4 3 2 1 0 XOR 1 0 1 0 1 LFSR - Linear Feedback Shift Register: Darf nicht mit 0x00 initialisiert werden! Primitives Polynom](https://reader030.vdokument.com/reader030/viewer/2022041217/5e05ba3cfdba385e2214ecdd/html5/thumbnails/22.jpg)
Chiptunes Demo
Geschrieben von Linus Akesson (lft)
Hardware:● Atmel mega 88● 8 kByte Flash● 1 kByte SRAM
● 8 MHz Taktfrequenz● 16 kHz Abtastrate● 500 Takte zur Berechnung des nächsten Samples
● 8 Bit – R2R Netzwerk
Software:● 4 Kanäle● Je Kanal ein Rechteck/Dreieck/Rausch Generator nutzbar
22/27
![Page 23: Chiptunes Wie musikalisch ist mein Mikrocontroller? XOR 7 6 5 4 3 2 1 0 XOR 1 0 1 0 1 LFSR - Linear Feedback Shift Register: Darf nicht mit 0x00 initialisiert werden! Primitives Polynom](https://reader030.vdokument.com/reader030/viewer/2022041217/5e05ba3cfdba385e2214ecdd/html5/thumbnails/23.jpg)
Quellen
• http://de.wikipedia.org/wiki/Primitives_Polynom• http://de.wikipedia.org/wiki/Linear_rückgekoppeltes_Schieberegister• http://de.wikipedia.org/wiki/Direct_Digital_Synthesis
• http://www.linusakesson.net/hardware/chiptune.php• http://www2.atmel.com/• http://www.ags.tu-bs.de/?id=e.lab:projekte:sidplayer
Weiterführende Inhalte:• http://www.mikrocontroller.net
23/27
![Page 24: Chiptunes Wie musikalisch ist mein Mikrocontroller? XOR 7 6 5 4 3 2 1 0 XOR 1 0 1 0 1 LFSR - Linear Feedback Shift Register: Darf nicht mit 0x00 initialisiert werden! Primitives Polynom](https://reader030.vdokument.com/reader030/viewer/2022041217/5e05ba3cfdba385e2214ecdd/html5/thumbnails/24.jpg)
Vielen Dank für Ihre Aufmerksamkeit