Synthetisieren von Musik

Werbung
Synthetisierung von Audio und MIDI
Referent Sebastian Frielitz
Themen Überblick



Synthetisieren von Musik
MIDI
Beispiel
Synthetisieren von Musik

Stückbasierte Soundformate

Notenbasierte Soundformate
Notenbasierte Soundformate

Bedeutet: das Musikstück wird Notenweise
gespeichert

Motivation:
 Leichter zu editieren, da Instrumente isolieren
möglich
 Leicht auf Computerspielverlauf abzustimmen
 Schmaleres Datenformat (weniger Speicher nötig)
Musik Programmieren
Was wird benötigt?

Instrumente

Noten
Objektorientierter Ansatz

Abstrakte Klasse Instrument


Methode NewNote()
Abstrakte Klasse Note





Nur von Instrument aus zu instanziieren
Kann sich selber in Puffer spielen
Restart() – Ton halten
Pitch(x) – Frequenz des Tones (Pitch(440) = 440 Hz)
Volume(x) – Lautstärke
Instrumente Synthetisieren

Ansatz 1


Ein existierendes Instrument duplizieren
Ansatz 2

Sound mit musikalischer Qualität kreieren
Instrument duplizieren

Mehrere Samples von original Instrument erstellen


Pitch shifting


Ein Sample pro Oktave
Ton mit Pitch(x) Methode variieren
Amplitudensteuerung

Ton eines physischen Instruments ist nicht gleichbleibend
Amplitudensteuerung
ADSR - Envelope
Attack, Decay, Sustain, Release
Envelope

Umsetzung z.B. durch Synthesizer Hardware mit
eigenem Volumecontrol für Noten

Andere Envelope Control Formen


Trompeten, Violinen halten den Ton oft länger
Geigen spielen einen Tremolo oder Vibrato
MIDI
Musical Instrument Digital Interface


MIDI Manufacturer‘s Association MMA
spezifiziert Speicherung von MIDI
Für Kompatibilität General MIDI mit 175
Standard Instrumenten
Organisation von MIDI Files

Besteht aus Reihe von Chunks (RIFF Format)
Chunk beginnt mit 4 Char

MIDI Header Chunk





2 Byte Datei Typ
2 Byte Anzahl der Tracks
2 Byte Zeit Format
MIDI Track Chunk


Track Daten
Pro Track ein Instrument
MIDI Datei Typen

Typ Null


Typ Eins


Datei enthält nur einen Track
Mehrere Tracks, simultan abgespielt
Typ Zwei

Mehrere Tracks, ohne Zusammenhang
Header Chunk- MIDI Standard
Header Chunk
Track Chunk- MIDI Standard
Track Chunk
MIDI - Tracks

Liste von MIDI Events vorangestellt ein Zeitintervall
(delta time)

Delta Time: Zeit bis Eventauslösung

Einlesen der Track Chunks:


Chunklänge lesen und beachten
Events in in-Memory-Eventliste einfügen
General MIDI - Events

Erste Byte: Status Byte, gibt Eventtyp an

Zweites Byte: Channel Byte

Folgende Bytes: Daten Bytes




Status Bytes beginnen immer mit high Bit =1
Daten Bytes beginnen immer mit high Bit = 0
Channels von 1 bis 16 (Code 0-15)
Instrumente von 1 bis 128 (Code 0-127)
Ton spielen- MIDI Standard
Ton spielen
Ton spielen- MIDI Standard
Ton spielen
Ton spielen- MIDI Standard
Ton spielen
Integer variabler Länge

Kleine Zahlen passen in ein Byte

Jedes Byte 7 Bit

Msb 1 – es folgen noch Bytes

Msb 0 – letztes Byte des Integer
Integer variabler Länge
88 00
8
8
1000
1000
msb
0
0
0000 0000
msb
X000 1000 X000 0000 = 2^10 = 1024
MIDI – Events verwalten

Events sind zeitlich sortiert

Bei Typ Eins MIDI Dateien

Vor abspielen Events aller Tracks in gemeinsamen Speicher
Running Status

Zur Effizienssteigerung von MIDI wire protocol

Auf Daten eines Events folgen wieder Daten

Wire protocol benutzt dann den vorherigen Status weiter
MIDI - Events

Standard MIDI Events


Sysex Events


Noten spielen
System exclusive Message
Meta Events


Key signatures
Copyright notices
Meta Event – Time Signature

Typ 88 (Hex 58)

4 Bytes Daten

Ersten 2 Byte: ¾ Takt = 3 und 2

Drittes Byte: MIDI Ticks pro Metronom Klick

Viertes Byte: Anzahl 32stel Noten in einer MIDI viertel
Note
Track Chunk
Track Chunk- MIDI Standard
Track Chunk
Zwei Arten von MIDI

General MIDI


Standard Format
MIDI wire protocol

Zur Übertragung von MIDI Daten über
langsame Netze
Real Time Events

Verwendet bei MIDI wire protocol
Unterteilung in real-time Events und non real-time
Events

Real-time Events




Müssen an bestimmter stelle erscheinen um gewünschten
Effekt zu haben
Synchronisations Events: start, continue
Non real-time Events


Nicht zeitkritisch, werden geladen und später interpretiert
Instrument change
MIDI - Timing

Delta time tick counts festelegen
Zwei Techniken:


SMPTE
Musical Tempo
MIDI Timing - SMPTE




Society of Motion Picture and Television Engineers
Time format Code im Header negativ
Video und Audio synchronisation
Teile von Stunden, Minuten, Sekunden und Frames



Kinoqualität 24 Frames pro Sekunde
PAL, SECAM Fernsehen 25 Frames pro Sekunde
NTSC schwarz-weiß Fernsehen 30 Frames pro Sekunde
MIDI Timing – Tempo-Based



Time Format Kode im Header positiv
Beats per minute (bpm)
Im Header als Ticks pro Beat

80 bpm – 200 bpm (MIDI Standard: 120 bpm)
General MIDI






Channels 1 – 9 und 11-16 melody channels
Channel 10 rhythm channel (47
Rhythmusinstrumente)
16 simultane Noten auf melody channel
8 simultane Noten auf rhythm channel
175 Instrumente
Unterstützt werden: unter anderem


Kontroller für Modulation, Lautstärke, Sustain, Reset all
Parameter: Pitch Bend, Sensitivity
Base / Extended MIDI

Base Multitimbral Synthesizer




Base MIDI
6 simultane Melodie Noten auf 3 Instrumenten
3 simultane Rhythmus Noten auf 3 Instrumenten
Extended Multitimbral Synthesizer



Extended MIDI
16 simultane Melodie Noten auf 9 Instrumenten
16 simultane Rhythmus Noten auf 9 Instrumenten
Track Chunk
Track Chunk
Track Chunk
Track Chunk- MIDI Standard
Track Chunk
Track Chunk- MIDI Standard
Track Chunk
Track Chunk- MIDI Standard
Track Chunk
Herunterladen