Springe zum Hauptinhalt

Audio

Audiotools


Sound, was ist das?

  • periodische Luftdruckschwankungen empfinden wir als Ton
  • Tonhöhe --> Frequenz
  • Lautstärke --> Amplitude
  • Hörbereich des menschlichen Ohres: zwischen 20Hz und 20kHz
  • menschliche Sprache: 0,3 bis 3.4kHz

Digitalisierung

  • einfachste Methode: Pulse Code Modulation (PCM)
    • Abtastung (sampling) -> Quantisierung (quantization) -> Kodierung (code-word-generation)
    • Abtastwerte werden unabhängig von anderen Abtastweren behandelt
    • Abtastfrequenz => 2 * max. zu digitalisierende Frequenz (Nyquist-Shannon-Abtasttheorem)

quantisierung.png


Audio-Hardware

  • Soundkarte(n) enthalten A/D-Wandler
  • Geräteunterstützung durch Linux Sound System

Linux Sound Systeme

Treiberstack mit Gerätetreibern für Audiohardware:

  • OSS (freie und proprietär Entwicklung)
  • ALSA (ab Linuxkernel 2.6)

Soundkarte konfigurieren (RedHat-ähnliche Distributionen):

$ /usr/bin/system-config-soundcard

$ cat /etc/modprobe.conf
alias snd-card-0 snd-emu10k1
options snd-card-0 index=0
install snd-emu10k1 /sbin/modprobe --ignore-install snd-emu10k1 && /usr/sbin/alsactl restore >/dev/null 2>&1 || :
remove snd-emu10k1 { /usr/sbin/alsactl store >/dev/null 2>&1 || : ; }; /sbin/modprobe -r --ignore-remove snd-emu10k1

  • ALSA enthält Module und Bibliotheken um OSS zu emulieren

Infos/Troubleshooting:

$ cat /proc/asound/cards
0 [Audigy         ]: Audigy - Sound Blaster Audigy
                     Sound Blaster Audigy (rev.3, serial:0x531102) at 0x9000, irq 11

Audiodevices (ALSA)

Gerätetreiber stellen Schnittstelle für Anwendungen bereit:

  • als Devicefiles unter /dev/snd/
  • typ. Aufbau: pcmCxDy
    • x bezeichnet Soundkarte Nr.
    • y bezeichnet Gerätenummer

Device Anmerkung
controlC0 Controlinterface, Card 0 (z.B. Mixer)
midiC0D0 Midi-Interface, Card 0, Interface 0
pcmC0D0p PCM Interface, Card 0, Interface 0, playback
pcmC0D0c PCM Interface, Card 0, Interface 0, capture
timer Timer

OSS-Devices:

  • /dev/dsp, /dev/audio, /dev/midi


Audioformate (Auswahl)

Format Name Anmerkung
wav WAVE Containerformat, enthält meist unkomprimierte PCM-Daten
http://de.wikipedia.org/wiki/Wav
aiff AIFF Containerformat für linear PCM-Daten
mp3 MPEG-1 Audio Layer 3 verlustbehaftetes, hochkomprimierendes Audioformat, Patente auf angewandte Verfahren
http://de.wikipedia.org/wiki/Mp3
ogg Ogg Vorbis patentfreies, verlustbehaftetes, hochkomprimierendes Audioformat
http://de.wikipedia.org/wiki/Vorbis
midi MIDI Befehle zur Ansteuerung (virtueller) Instrumente, keine originalgetreue Wiedergabe
http://de.wikipedia.org/wiki/Musical_Instrument_Digital_Interface

Bedingt durch Patente auf das MP3-Verfahren fehlt dessen Unterstützung in den meisten Linuxdistributionen.


Wiedergabe

xmms

  • Multimedia-Player (vorrangig Audio)
  • Funktionalität (fast) vollständig durch Plugins
    • Eingabe-Plugins -> unterstütze Audioformate
    • Ausgabe-Plugins -> unterstützte Soundsysteme, CD-Writer, usw.
    • Plugins für Effekte, Fernsteuerung, Visualisierung

Beachte manuelle Auswahl des Ausgabeplugins anhand des verwendeten Soundsystems/Soundservers.

mplayer / gmplayer

  • Multimedia-Player
  • interessant für Medienanalyse:

$ mplayer -identify <infile>
...
ID_AUDIO_ID=0
Audio file file format detected.
ID_FILENAME=<infile>
ID_DEMUXER=audio
ID_AUDIO_FORMAT=85
ID_AUDIO_BITRATE=128000
ID_AUDIO_RATE=44100
ID_AUDIO_NCH=0
ID_LENGTH=286.00

  • Codec-Auswahl erfolgt automatisch
  • Codec für Wiedergabe manuell setzen mit der Option -ac <codec>
  • verfügbare Codecs anzeigen:

$ mplayer -ac help

  • Wahl des Ausgabetreibers erfolgt automatisch (probieren)
  • Festlegen des Ausgabetreibers mit der Option -ao <driver>
  • verfügbare Ausgabetreiber anzeigen:

$ mplayer -ao help

Grafische Oberfläche zum mplayer wird mit dem Kommando gmplayer aktiviert.

play, soxplay

  • Shellscript
  • Soundkonvertierung und Ausgabe mittels sox

$ sox <infile> -t ossdsp /dev/dsp

TiMidity?++

  • Software-Synthesizer (MIDI-to-WAV Konverter)
    • alternativ Ausgabe als wav, ogg -Format
  • Anzeige von Songtexten (wenn vorhanden)

$ timidity -Os <infile.mid>


Mixer

  • Einstellen von Lautstärke, Balance, Klang und Stummschalten der verfügbaren Audiokanäle
  • Auswahl Eingangs- bzw. Aufnahmekanal
  • zusätzlich Schalter für Soundkartenfeatures:
    • 3D-Effekte, Digitalausgang, Mic Boost, ...

  • integrierte Anwendungen in Desktopoberflächen (kmix, gnome-volume-control)
  • text- / kommandozeilenbasierte Mixer: alsamixer, amixer
  • Sichern, Wiederherstellen von Soundkarteneinstellunge: alsactl


Formatkonvertierung

Samplingrate, Auflösung, ...

  • klassiche Anwendung SoX (Sound eXchange)
  • Detaillierte Ausgabe der Verarbeitungsschritte mit der Option -V

$ file <infile.wav>
infile.wav: RIFF (little-endian) data, WAVE audio, Microsoft PCM, 16 bit, stereo 44100 Hz
$ sox <infile.wav>  -r 8000 -b -c 1 <outfile_8000kHz_8bit_1channel.wav>
$ file <outfile_8000kHz_8bit_1channel.wav>
outfile_8000kHz_8bit_1channel.wav: RIFF (little-endian) data, WAVE audio, Microsoft PCM, 8 bit, mono 8000 Hz

Anzeigen der von SoX unterstützten Soundformate: sox -h (MP3-Support optional, erfordert libmad oder libmp3lame)

Soundeffekte mit SoX?

  • diverse Filter, Echo, Hall
  • Rückwärts
  • Fade
  • ...

Das Manual von SoX? beschreibt die Effekte und mögliche Parameter. man sox

verlustbehaftete Audioformate

  • deutliche Reduzierung des Speicherplatzbedarfes / Übertragungsbandbreite bei geringem Qualitätstverlust
  • MP3, OGG

$ lame --preset medium <infile.wav> <outfile.mp3>

  • Variable vs. Konstante Bitraten
    • Variable Bitraten (VBR) passen die Kodierung an die jeweiligen Anforderung des Inhalts an. -> konstante Qualität
    • Konstante Bitraten -> variable Qualität

$ oggenc -q 4 <infile.wav> <outfile.ogg>

weitere Werkzeuge

  • faac (AAC / MPEG4)
  • ffmpeg
  • mencoder


ID3-Tags

Metadaten wie Titel, Interpret, Album, usw. in Audiofiles (mp3, ogg).

  • Anzeige wird von vielen Hardware- und Softwareplayer unterstützt
  • Werkzeuge zum editieren: id3tag, xmms
$ id3info Kim_Norlen-Both_Hands.mp3

=== TPE1 (Lead performer(s)/Soloist(s)): Kim Norlen
=== TIT2 (Title/songname/content description): Both Hands
=== TYER (Year): 1998
=== TALB (Album/Movie/Show title): &&
=== TCON (Content type): Folk
=== COMM (Comments): ()[]: http://www.epitonic.com
=== TRCK (Track number/Position in set): 2
=== TDRC ():  frame
=== COMM (Comments): (ID3v1 Comment)[XXX]: http://www.epitonic.com
*** mp3 info
MPEG1/layer III
Bitrate: 128KBps
Frequency: 44KHz


Digitale Audioextraktion

  • Wiedergabe von CD-Audio in Systemen ohne analoge Verbindung zwischen CD-Laufwerk und Soundkarte.
  • Encodieren von CD-Audio für die Nutzung auf MP3-Playern
  • Problem: Sektoren einer CD-Audio nicht direkt adressierbar
    • Werkzeuge zur digitalen Extraktion: cdparanoia

$ cdparanoia "1[:30.12]-1[1:10]" <outfile.wav>

  • xmms als CD-Audio-Player mit digitaler Extraktion
  • grip
    • digitaler Audioextraktion
    • Anbindung an CDDB
    • Encoder: mp3, ogg
  • cdrdao CD-R[W] disk-at-once Werkzeug


Soundserver

  • erlauben konkurrierenden Zugriff auf Audiohardware
  • Client/Server-Implementation für netzwerktransparente Verteilung
  • zusätzlich Funktionen wie Synthesizer, Wellen- und Effektgeneratoren

  • esd (Gnome)
  • arts (KDE)
  • JACK

Beachte die Auswahl des Audiotreibers in den Anwendungen.


Audio-Editoren

  • unüberschaubare Anzahl von Werkzeugen zur Audiobearbeitung

audacity_logo.jpg

  • freier Mehrspur-Audio-Editor für verschiedene Systemplattformen
  • Features:
    • live Aufnahme, Digitalisieren von LP Und MC
    • Import- / Exportformate: wav, aiff, ogg, mp3 (über optionalen MP3-Encoder)
    • Editorfunktionen wie Copy & Paste, unbegrenztes Rückgängig machen
    • Effekte, Plugins


Streaming Audio

Anwendungsgebiete bei Radiostationen

  • Live Audiostream oder konservierte Aufzeichnungen
  • oft verschiedene Streamingvarianten (Protokolle) parallel

HTTP, MP3-Stream

  • Übertragung per HTTP-Protokoll
  • URL wird meist in einer Playlist *.m3u hinterlegt

$ curl -o <myaudiofile> http://media.server/path/to/media

RTSP

  • Wiedergabe per Realplayer / Helixplayer
  • RTSP-URL über *.rm -Datei übergeben
  • Aufzeichnung z.B. mittels mplayer

$ mplayer -dumpstream -dumpfile <myaudiofile> rtsp://media.server/path/to/media