190 likes | 345 Views
Audiodatenformate. Ein kleiner Überblick Über die traditionellen Audiodatenformate. Gliederung. Überblick/Entwicklungsskizze Ausgewählte Formate im Detail Unkomprimierte Das SND-Format Das WAV(PCM) bzw. AU Format Das AIFF Format Komprinierte AIFF-C MOD-Format (MIDI-Format) Vergleich
E N D
Audiodatenformate Ein kleiner Überblick Über die traditionellen Audiodatenformate
Gliederung • Überblick/Entwicklungsskizze • Ausgewählte Formate im Detail • Unkomprimierte • Das SND-Format • Das WAV(PCM) bzw. AU Format • Das AIFF Format • Komprinierte • AIFF-C • MOD-Format • (MIDI-Format) • Vergleich • ADAT
Überblick/Entwicklung EAIFF 85 RIFF WAV ADAT SND AESEBU VOC AU MOD AIFF AIFF-C MOD IFF SPDIF
SND Wird bei NeXT und Sun verwendet Besteht aus Kopf (SNDSoundStruct) und Daten Bei NeXT z.B. in eine Standartbibliothek (Sound Kit) einge- bunden, wodurch Bearbeitung des Klanges ohne Kenntnis vom inneren Aufbau einer SND Datei möglich ist Aufbau des SNDSoundStruct Aufbau in C Syntax typedef struct { int magic;/*magic number SND_Magic*/ int dataLocation;/*offset or pointer to the data*/ int dataSize;/*number of bytes of data*/ intdataFormat;/*the data format code*/ int samplingRate; /*the sampling rate*/ int channelCount; /*the number of channels*/ char info[4]; /*optional text information*/ }SNDSoundStruct; Das SND-Format
WAV(PCM) AIFF Die Entwicklung EA IFF 85-Format Microsoft Apple /Mac RIFF-Format AIFF Windows WAV-Format
Form Chunk Typedef struct{ ID ckID; /*=Form*/ long ckSize; /*=Länge in byte*/ ID formType; /*= Wave */ char chunks[ ]; /*Korrektur-byte falls ckSize ungerade ist*/ }WaveChunk; Format Chunk Typedef struct { ID ckID; /*= Format */ long ckSize; unsigned short wFormatTag; (= WAVE_FORMAT_PCM) unsigned short nChannels; unsigned long nSamplesPerSec; unsigned long nAvgBytesPerSec; unsigned short nBlockAlign; unsigned short nBitsPerSample; }FormatChunk Der Code des Wave Chunks in C Der Data Chunk enthält nur die Audiodaten
Der Aufbau des AIFF-Formates Darüber hinaus gibt es noch eine Reihe weiterer Chunks!
Der Common Chunk typedef struct { ID ckID; /* =COMM */ long ckSize; /* =18*/ short numChannels; unsigned long numSampleFrames; short sampleSize; extended sampleRate; } CommonChunk Der Sound Data Chunk typedef struct { ID ckID; /* = SSND*/ long ckSize; unsigned long offset; unsigned long blockSize; unsigned char soundData [ ]; } SoundDataChunk Der Code des AIFF Chunks in C Die Syntax des Form Chunks gleicht der des Wave Chunks
Komprimierung von Musikdaten • Digitalisierung von Musik • Große Datenmengen möglicher Ausweg Komprimierung • Probleme bei der Komprimierung • Komplexität des Verfahrens • Datenverlust • Qualitätsverlust
Von AIFF zu AIFF-C • AIFF-C ist eine Erweiterung von AIFF zur Verwendung von komprimierten Klangdaten. • Der grundsätzliche Dateiaufbau bleibt unverändert. • Der Form Chunk hat den gleichen Aufbau wie bei AIFF. Der einzige Unterschied besteht im Inhalt des Formtyps, der jetzt `AIFC‘ heißt. Außerdem muß er genau einen Format Version Chunk enthalten. • Der Common Chunk wurde im Vergleich zu AIFF um zwei Angaben erweitert: ID compressionType; Pstring compressionName; • Im Sound Data Chunk folgen die komprimierten Daten der einzelnen Kanäle immer hintereinander, gefolgt von den Daten des nächsten Zeitintervalls.
Das MOD Audioformat • völlig andere Herangehensweise an das Komprimieren der Daten • kein pures Sampling • mehrere kurze Samplings (Instrumente) und eine Partitur mit Noten • Hoher Produktionsaufwand • Bearbeitungsprobleme • Kein Rechenaufwand bei der Komprimierung
Das Midi Format • Noch „kleiner“ als das MOD-Format • Nur noch abspeichern von Nummern • Informationen zu den Nummern in Software oder Hardware • Da genaue Instrumentendefinitionen häufig nicht vorhanden sind,ist eine getreue Wiedergabe fast nicht möglich
ADAT (Datenübermittlung) Problem: Übertragung digitaler Audiodaten ohne Informationsverlust. 1.Entfernung 2.Taktfrequenz 3. Kanalmenge Lösung:ADAT
Aufbau Teil 1 1 Kanal 4 Daten Informationsbits Einsbit 10 Nullbits User Bits Kanal 1 Kanal 2 ..... Kanal 8
Aufbau Teil 2 Beispiel (vier Kanäle,kein Userbit) 0000 0000 0000 0000 Information von 4 Kanälen 0000100001000010000100000000001 im ADAT Format 0000111110000011111000000000001 kodiert