Synthetisierung von Audio und MIDI Referent Sebastian Frielitz.

51
Synthetisierung von Audio und MIDI Referent Sebastian Frielitz

Transcript of Synthetisierung von Audio und MIDI Referent Sebastian Frielitz.

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 ProgrammierenWas 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

Ein Sample pro Oktave

Pitch shifting Ton mit Pitch(x) Methode variieren

Amplitudensteuerung Ton eines physischen Instruments ist nicht gleichbleibend

AmplitudensteuerungADSR - 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

MIDIMusical 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 Datei enthält nur einen Track

Typ Eins 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änge88 00

8

1 0 0 0

8

1 0 0 0

0

0 0 0 0

0

0 0 0 0

msb 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

Noten spielen

Sysex Events 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