24
Institut für Elektrische Messtechnik und Grundlagen der Elektrotechnik www.emg.tu-bs.de Chiptunes Wie musikalisch ist mein Mikrocontroller? Martin Wenske WS 2011/2012 09.01.2012 Betreuer: Timo Klingeberg

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

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Vielen Dank für Ihre Aufmerksamkeit