Sound-Verarbeitung am Raspberry Pi

Bekanntermaßen hat der Raspberry Pi zwar Sound-Ausgänge und zwar über eine 3,5-mm-Klinkenbuchse per PWM oder in guter Qualität über den HDMI-Anschluss. Sounds aufnehmen kann er aber nur mit fremder Hilfe, z. B. einem USB-Soundadapter oder ähnlicher Hardware. Wie man ein Mikrofon oder eine andere Audio-Quelle anschliesst, soll hier behandelt werden.

Interne Sound-Schnittstelle

Der Raspberry Pi verfügt über zwei Möglichkeiten der Audio-Ausgabe:

Wenn kein Display angeschlossen ist, kann automatisch auf die analoge Ausgabe umgeschaltet werden.

Bei der Raspbian-Distribution sind schon alle Module per Default installiert. Sonst können Sie das Sound-Modul mittels

modprobe snd_bcm2835

manuell laden. Wollen Sie das Modul bei jedem Start automatisch laden, erzeugen Sie eine Konfigurationsdatei im Verzeichnis /etc/modules-load.d/ und schreiben Sie dort den Namen des Moduls hinein, zum Beispiel:

echo "snd_bcm2835" > /etc/modules-load.d/sound.conf

Jetzt sollte die Audio-Ausgabe problemlos funktionieren. Testen können Sie dies beispielsweise per aplay, das im Paket alsa-utils enthalten ist:

aplay foobar.wav

Im Paket alsa-utils gibt es ein weiteres Testprogramm, mit dem sich ein Sinuston auf einem der Kanäle erzeugen läßt. Zum Beispiel:

speaker-test -t sine -f 440 -c 2 -s 1

speaker-test -t sine -f 440 -c 2 -s 2

(Siehe auch Manual-Page von Speaker-Test: man speaker-test)

Beachten Sie, dass nur der root-User und Nutzer in der Gruppe audio auf die Soundkarte zugreifen können. Gegebenefalls müssen Sie den User mit dem Kommando gpasswd -a <USER> audio in die Gruppe audio eintragen.

Wenn Sie nichts hören sollten, kann es daran liegen, dass der Sound auf dem falschen Kanal ausgegeben wird, beispielsweise über HDMI statt analog. Im Paket alsa-utils ist auch das Programm amixer enthalten, ein textbasierter Mixer für das ALSA-System. amixer ist ein Werkzeug für die Kommandozeile und daher für eigene Scripte das geeignetere Werkzeug. Daneben gibt es noch den Alsamixer, der über eine interaktive ncurses-Oberfläche verfügt. Der amixer ist ein mächtiges Werkzeug und kann alle Einstellungen vornehmen, die vom Treiber unterstützt werden. Hier wird er verwendet, um per Kommandozeile den Kanal und die Ausgabe-Lautstärke einzustellen.Der Kanal kann mittels

amixer cset numid=3 <Nummer>

eingestellt werden, wobei für "Nummer" folgende Werte möglich sind:

(Falls Sie pulseaudio installiert haben, müssen Sie noch den Parameter "-c 0" angeben.) Nun sollten Sie Sounddateien mittels aplay abspielen können. Zahlreiche Testdateien finden Sie unter /usr/share/scratch/Media/Sounds/. Beachten Sie jedoch, dass mit aplay keine mp3-Dateien abgespielt werden können - dafür brauchen Sie noch die entsprechenden Codecs.

Das Programm amixer hat zahlreiche Kommandos und Parameter, die Sie per amixer --help anzeigen lassen können. Beispielhaft hier nur einige davon. Zuerst kann man erfragen, welche Controls es überhaupt gibt:

pi@raspberrypi ~ $ amixer controls

numid=3,iface=MIXER,name='PCM Playback Route'

numid=2,iface=MIXER,name='PCM Playback Switch'

numid=1,iface=MIXER,name='PCM Playback Volume'

"Switch" ist uninteressant, weil es nur einen Soundchip gibt. "Route" (numid=3) ist der Ausgabekanal und "Volume" (numid=1) die Lautstärke. Die aktuellen Werte erfahren Sie so:

pi@raspberrypi ~ $ amixer contents

numid=3,iface=MIXER,name='PCM Playback Route'

  ; type=INTEGER,access=rw------,values=1,min=0,max=2,step=0

  : values=1

numid=2,iface=MIXER,name='PCM Playback Switch'

  ; type=BOOLEAN,access=rw------,values=1

  : values=on

numid=1,iface=MIXER,name='PCM Playback Volume'

  ; type=INTEGER,access=rw---R--,values=1,min=-10239,max=400,step=0

  : values=-1725

  | dBscale-min=-102.39dB,step=0.01dB,mute=1

Wie man den Kanal wählt, wurde oben schon gezeigt. Bleibt noch die Lautstärke. Der höchste Wert ist 400, der niedrigste -10239. Da man die Lautstärke meist über die angeschlossene Anlage oder "Brüllwürfel" (PC-Lautsprecherboxen) regelt, wird in der Regel die Maximallautstärke eingestellt (auch um ein genügend starkes Eingangssignal für die Anlage zu bekommen):

pi@raspberrypi ~ $ amixer cset numid=1 400

numid=1,iface=MIXER,name='PCM Playback Volume'

  ; type=INTEGER,access=rw---R--,values=1,min=-10239,max=400,step=0

  : values=400

  | dBscale-min=-102.39dB,step=0.01dB,mute=1

Werden Kopfhörer verwendet, muss ggf. die Lautstärke reduziert werden. Bei negativen Werten ist ein Trick notwendig, damit das Programm z. B. -100 nicht als unbekannten Parameter zurückweist: Mit dem Parameter "--" wird dem Programm mitgeteilt, dass nun keine Parameter mehr kommen und schon klappt es mit den negativen Zahlen, z. B.:

pi@raspberrypi ~ $ amixer cset numid=1 -- -1000

numid=1,iface=MIXER,name='PCM Playback Volume'

  ; type=INTEGER,access=rw---R--,values=1,min=-10239,max=400,step=0

  : values=-1000

  | dBscale-min=-102.39dB,step=0.01dB,mute=1

Die Aufrufe von amixer für die Standardeinstellungen können Sie natürlich wieder in der Startdatei /etc/rc.local unterbringen. Mehr Infos zum amixer finden Sie auch noch weiter unten.

Audiostecker beim Raspberry Pi

http://www.netzmafia.de/skripten/hardware/RasPi/Projekt-Sound/audiostecker.jpg

Ab Version B+ ist das Composite-Video-Signal mit dabei

http://www.netzmafia.de/skripten/hardware/RasPi/Projekt-Sound/RasPi-AV2.jpg

Sound-Aufnahme am Raspberry Pi mit Zusatzhardware

Allgemeines

Die meisten Desktopcomputer verfügen über mindestens eine Eingangsbuchse zum Anschluss eines Audiogeräts und eine Ausgangsbuchse zum Anschluss eines Verstärkers oder von Lautsprechern. Diese Buchsen befinden sich normalerweise an der Rückseite eines Desktopcomputers. Viele Computer verfügen auch über eine Mikrofonbuchse, die sich oft an der Vorderseite des Computers befindet. Normalerweise ist dieser Anschluss rosafarbig codiert und zeigt das Bild eines Mikrofons darüber.

http://www.netzmafia.de/skripten/hardware/RasPi/Projekt-Sound/Buchsen.gif

Im Allgemeinen haben die meisten Computer-Mikrofone eine von zwei Steckervarianten: einen 3,5-mm-Klinkenstecker, der die gleiche Art Stecker wie beim Kopfhörer ist, oder einen USB-Stecker. Der Klinkenstecker weist darauf hin, dass es sich um ein "normales" analoges Mikrofon handelt, wogegen bei einem Mikrofon mit USB-Anschluss der Analog-Digital-Wandler bereits im Mikrofon enthalten ist und die Sound-Daten digital übermittelt werden.

Hochwertigere Musikmikrofone, Kondensatormikrofone und andere professionelle Ausrüstung erfordern normalerweise einen Adapter, bevor man sie einstecken kann. Sieht man ein Dreieck aus Stiften am Stecker des Mikrofons, handelt es sich um einen XLR- oder DIN-Stecker und man braucht entweder ein Adapter-Kabel oder ein Mischpult. Bei 6,35-mm-Steckern reicht ein Adapter-Secker von 6,35 mm auf 3,5 mm.

Das Signal ist bei machen internen Soundkarten und externen Soundadaptern zu leise, beziehungsweise viel zu verrauscht, weil die Soundkarte oder der Adapter eine zu geringe Eingangsempfindlichkeit besitzt. Das Signal des Mikrofons muss daher per Software lauter gerechnet werden. Dies führt zu einem erhöhten Rauschteppich. Abhilfe schafft hier nur ein kleiner Vorverstärker oder ein Mischpult die das Signal auf Line-Level verstärken und dann den Line-Eingang der Soundkarte oder des Adapters nutzen.

Anschlüsse

Bei den Klinkensteckern -und -buchsen unterscheidet man drei Typen unabhängig von dem Durchmesser. Da gibt es drei Klassen: 1/4 "(6,35 mm), 1/8" (3,5 mm) oder 1/10" (2,5 mm).

http://www.netzmafia.de/skripten/hardware/RasPi/Projekt-Sound/TRS_gross.gif

http://www.netzmafia.de/skripten/hardware/RasPi/Projekt-Sound/TRRS.gif

Die Belegung kann aber von Gerät zu Gerät variieren. Ziemlich oft gilt für den dreipoligen Stereo- oder Monostecker:

Stereo-Stecker

Tip

L

Linkes Tonsignal

Ring

R

Rechtes Tonsignal

Sleeve

GND

gemeinsame Masse (Rückleitung)

 

Mono-Stecker

Tip

T

Tonsignal

Ring

U

ggf. Speisespannung (Elektret-Mikro)

Sleeve

GND

gemeinsame Masse (Rückleitung)

http://www.netzmafia.de/skripten/hardware/RasPi/Projekt-Sound/TRRS_Belegung1.gif    http://www.netzmafia.de/skripten/hardware/RasPi/Projekt-Sound/TRRS_Belegung2.gif

Wie Sie sehen ist für Stereo-Mikrofone die Anschlussbelegung identisch mit dem Kopfhöreranschluss. Mono-Mikrofone mit zweipoligem Monostecker führen das Signal an der Spitze und Masse am Schaft des Steckers, wobei gelegentlich eine Tonaderspeisung über die Spitze stattfindet. Mono-Mikrofone mit dreipoligem Stecker nutzen die Spitze für das Signal, den Ring für die Speisung (z. B. 1,5 V oder 5 V)), aus der beispielsweise ein Vorverstärker für ein Elektretmikrofon gespeist werden kann, und Masse am Schaft des Steckers.

Gesangsmikrofone im professionellen Bühnen- und Studiobereich werden in der Regel nicht über Klinken-, sondern über XLR-Verbinder angeschlossen. Für den Anschluss von Mikrofonen an transportable Geräte (z. B. DAT-Recorder im Reportagebereich) werden jedoch häufig auch Klinkenstecker verwendet. Gegebenenfalls ist ein Adapter notwendig.

http://www.netzmafia.de/skripten/hardware/RasPi/Projekt-Sound/XLR_Klinke1.gif
Adapter XLR zu Klinke Stereo

http://www.netzmafia.de/skripten/hardware/RasPi/Projekt-Sound/XLR_Klinke2.gif
Adapter XLR zu Klinke 2 x Mono

Audio über USB

Audio-Adapter für den Anschluss an USB gibt es wie Sand am Meer. Da fällt die Wahl schwer. Ich habe mich für ein ganz einfaches Teil entschieden, das nur einen Mikrofon-Eingang und einen Line-Ausgang besitzt. Es nennt sich "Plugable USB Audio Adapter" (Schwarzes Aluminiumgehäuse; C-Media HS 100B Chip; Kein Treiber erforderlich für Windows, Mac OS X, Linux und Chromebook).

http://www.netzmafia.de/skripten/hardware/RasPi/Projekt-Sound/Audio-Adapter.jpg

Der USB-AUDIO eignet sich besonders für spezielle Linux Einplatinencomputer/Kleincomputer wie z.B. Raspberry Pi, Beaglebone Black, und andere Projekte wie Hackintosh wo es keine integrierten Audio-Treiber gibt. Es ist auch kein Netzteil erforderlich, der USB-AUDIO wird über den USB mit Strom versorgt. Der Adapter verfügt über zwei 3,5-mm-Buchsen für Stereo-Kopfhörer (grün) und Mikrofon (rosa).

Die meisten Mikrofone oder Headsets auf dem Markt besitzen einen TRS-Stecker (Tip, Ring, Sleeve, siehe oben). Der USB-AUDIO ist für diesen Anschluss ausgelegt. Mono- oder TS-Mikrofone (Tip, Sleeve) benötigen einen 3,5-mm-Mono auf Stereo-Adapter. Die meisten Betriebssysteme unterstützen zwar mehrere Audio-Ausgänge, erlauben jedoch nur das Aktivieren von nur einem einzigen Ausgang zu einem Zeitpunkt.

Zum Installieren stecken Sie den USB-AUDIO in den Raspberry Pi und booten den Rechner. Dann überprüfen Sie mit lsusb, ob der Adapter erkannt wurde:

lsusb

 

Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp.

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.

Bus 001 Device 004: ID 0d8c:0014 C-Media Electronics, Inc.

Der letzte Eintrag listet den USB-AUDIO auf (C-Media ...). Öffnen Sie dann die Datei /etc/modules, und kommentieren Sie darin (sofern vorhanden) den Eintrag "snd_bcm2835" aus.

# snd-bcm2835

i2c-bcm2708

i2c-dev

Dann können Sie nachsehen, was alles an Sound-Hardware istalliert ist:

cat /proc/asound/cards

 

 0 [ALSA           ]: bcm2835 - bcm2835 ALSA

                      bcm2835 ALSA

 1 [Device         ]: USB-Audio - USB Audio Device

                      C-Media Electronics Inc. USB Audio Device at usb-20980000.usb-1.3, full speed

Wie Sie sehen, hat der eingebaute Standard-ALSA-Treiber des RasPi noch die Priorität (Device 0). Unter Linux mit einem USB-Adapter arbeiten Sie am besten unter ALSA (Advanced Linux Sound Architecture), siehe unten. Eine ähnliche Ausgabe wie oben können Sie auch mit dem ALSA-Player aplay erreichen. aplay -l zeigt alle verfügbaren Interfaces für die Wiedergabe von Audiodaten an:

aplay -l

 

Card 0 – bcm2835 (Built-in Pi Audio)

Card 1 – Plugable USB Audio Device

Auch hier wird unser USB-AUDIO als zweite Alternative angezeigt. Wichtig ist nur, dass innerhalb der Ausgabe bei beiden Kommandos (cat ... oder aplay ...) die Angabe Card x: Plugable USB Audio Device oder Card x: ... USB Audio (bzw. auf deutsch "Karte x:") auftaucht, was bedeutet, das der RasPi den USB-Audio-Adapter erkannt hat.

Wenn soweit alles in Ordnung ist, können Sie sich an die Konfiguration machen. Verwenden Sie Ihre Lieblings-Editor (als Root → sudo vi ...), um die Datei /etc/modprobe.d/alsa-base.conf zu ändern (bei neueren Raspbian-Versionen versteckt sich die Datei unter dem Namen /usr/share/alsa/alsa.conf). Löschen Sie dabei nichts, sondern setzen Sie nur ein Kommentarzeichen (#) vor die entsprechende Zeile (Oder erstellen Sie eine Sicherungskopie der Datei). Die Veränderung halten sich in Grenzen. Bei neueren Raspbian-Versionen sind die Änderungen hingegen in der Datei /lib/modprobe.d/aliases.conf vorzunehmen.

Ändern Sie die Zeile

options snd-usb-audio index = -2

auf:

options snd-usb-audio index = 0

Damit hat der USB-Adapter die höchste Priorität und wird als Standard genommen. Die folgende Zeile wird geändert oder hinzugefügt, um den internen Sound-Treiber auf die zweite Stelle zu setzen:

options snd_bcm2835 index = 1

Ersetzen Sie index = 1 durch index = -2, wird er ganz abgeschaltet. Damit ist die Neuordnung der Hierarchie der Soundmodule abgeschlossen.

Nun wird die Datei /etc/asound.conf für den ALSA-Soundtreiber bearbeitet. Ist sie noch nicht vorhanden, können Sie die Datei neu erstellen. Die Bearbeitung erfolgt wieder als Root-User, indem folgende Zeilen eingetragen werden:

pcm.!default {

 type hw card 0

}

ctl.!default {

 type hw card 0

}

Bei neueren Raspbian-Versionen beziehen sich die Änderungen hingegen auf die Datei /usr/share/alsa/alsa.conf. Dort steht irgendwo:

defaults.ctl.card 0

defaults.pcm.card 0

Was man nicht ändern muss, weil oben die Adapterreihenfolge geändert wurde und die USB-Karte schon den Index 0 hat.

Danach ist ein Reboot des Raspberry Pi notwendig, um alle Änderungen zu aktivieren. Noch ein Tipp: Da der USB-Adapter kein Kabel hat, ist es sinnvoll, den Adapter in den unteren USB-Port einzustecken. Wenn oben eingesteckt wird, kommt man eventuell nur schwer an den unteren USB-Port. Was man auch bedenken sollte ist die Tatsache, dass USB-Audio-Geräte stets eine signifikante Latenzzeit besitzen, die eventuell beim parallelen Verwenden einer Kamera einen Versatz zur Folge hat. Das gilt für alle Betriebssysteme. Man kann die Latenz nur hinterher mit Software korrigieren.

ALSA (Advanced Linux Sound Architecture)

ALSA ist der grundlegende Baustein des Soundsystems unter Linux. Ohne ALSA (oder die Alternative OSS4, die hier nicht besprochen wird) sind dem RasPi keine Töne zu entlocken oder aufzuteichen. ALSA stellt die Kernelmodule bereit, mit denen der Sound-Adapter überhaupt erst angesprochen werden kann. Da die Module zum Kernel gehören, muss man sie nicht extra installieren, sie sind bereits vorinstalliert. In der Regel wird die Sound-Hardware beim Booten vom Kernel erkannt. Der Kernel lädt daraufhin das zur Sound-Hardware passende Kernelmodul. Erst nach dem erfolgreichen Laden des Kernelmodules ist die Sound-Hardware von Programmen via ALSA ansprechbar. Eine Standard-Raspbian-Installation bringt die notwendigen ALSA-Pakete bereits mit. Je nach Betriebssystem-Version kann aber die Installation folgender Pakete notwendig sein:

Eine Auflistung über die von ALSA vergebenen Namen bekommt man mit dem Befehl aplay -L, z. B.:

aplay -L

null

    Discard all samples (playback) or generate zero samples (capture)

sysdefault:CARD=Device

    USB Audio Device, USB Audio

    Default Audio Device

front:CARD=Device,DEV=0

    USB Audio Device, USB Audio

    Front speakers

surround40:CARD=Device,DEV=0

    USB Audio Device, USB Audio

    4.0 Surround output to Front and Rear speakers

surround41:CARD=Device,DEV=0

    USB Audio Device, USB Audio

    4.1 Surround output to Front, Rear and Subwoofer speakers

surround50:CARD=Device,DEV=0

    USB Audio Device, USB Audio

    5.0 Surround output to Front, Center and Rear speakers

surround51:CARD=Device,DEV=0

    USB Audio Device, USB Audio

    5.1 Surround output to Front, Center, Rear and Subwoofer speakers

surround71:CARD=Device,DEV=0

    USB Audio Device, USB Audio

    7.1 Surround output to Front, Center, Side, Rear and Woofer speakers

iec958:CARD=Device,DEV=0

    USB Audio Device, USB Audio

    IEC958 (S/PDIF) Digital Audio Output

sysdefault:CARD=ALSA

    bcm2835 ALSA, bcm2835 ALSA

    Default Audio Device

Das zweite Informationskommando aplay -l (mit kleinem L) wurd weiter oben schon vorgeführt. An die von ALSA bereitgestellten Schnittstellen können sowohl Programme, andere Soundserver (z. B. PulseAudio) als auch Frameworks (z. B. GStreamer) ankoppeln. Diese Vielfältigkeit ist auch meistens das Problem bei Schwierigkeiten mit dem Soundsystem. Nur in wenigen Fällen liegt der Fehler bei ALSA selbst, sondern in der Anbindung und dem Routing der Klangquellen.

Um die Schnittstellen direkt anzusprechen und zu testen, gibt es den Befehl speaker-test. Er verfügt über eine Vielzahl an Optionen, näheres dazu findet man in der entsprechenden Manpage. Der folgende Kommandoaufruf testet mit rosa Rauschen und zwei Kanälen die Schnittstelle "front" (in der Regel die Standardlautsprecher):

speaker-test -c 2 -D front

Man kann auch die Soundkarte direkt ansprechen, indem man die Devicenummer angibt:

speaker-test -c 2 -D plughw:0,0

oder, je nach Devicenummer ("Card 1"),

speaker-test -c 2 -D plughw:1,0

Dies ist hilfreich, wenn die Soundausgabe gar nicht funktioniert und man ermitteln will, wo genau der Fehler liegt. Die Ausgabe des Programms dokumentiert, was gerade geschieht:

speaker-test 1.0.25

 

Wiedergabe-Gerät ist plughw:0,0

Stream-Parameter sind 48000 Hz, S16_LE, 2 Kan¦le

Verwende 16 Oktaven rosa Rauschen

Rate ist 48000 Hz (angefordert: 48000 Hz)

Puffergröße von 96 bis 262144

Periodengröße von 48 bis 131072

Verwende maximale Puffergröße 262144

Perioden = 4

gesetzt: period_size = 65536

gesetzt: buffer_size = 262144

 0 - Vorne links

 1 - Vorne rechts

Zeit pro Periode = 5,554304

 0 - Vorne links

 1 - Vorne rechts

Zeit pro Periode = 5,558997

 0 - Vorne links

 1 - Vorne rechts

Zeit pro Periode = 5,559127

 0 - Vorne links

 1 - Vorne rechts

 ...

Einstellungen mit dem Mixer

Das Programm amixer ist ein textbasierter Mixer für das ALSA-System. amixer ist ein Werkzeug für die Kommandozeile und daher für eigene Scripte das geeignetere Werkzeug. Daneben gibt es noch den Alsamixer, der über eine interaktive ncurses-Oberfläche verfügt. Der amixer ist ein mächtiges Werkzeug und kann alle Einstellungen vornehmen, die vom Treiber unterstützt werden. Auf der Treiberebene sind diese Einstellungen relativ kompliziert, weshalb der amixer "simple mixer controls" anbietet. Dies sind Regler und Schalter mit für den Menschen verständlichen Bezeichnungen. An dieser Stelle werden nur Kommandos für diese einfachen Steuerelemente behandelt, weiterführende Informationen bietet die Manpage. Die Beispiele in diesem Kapitel beziehen sich auf den USB-Sound-Adapter, bei der Original-Sound-Schnittstelle erhalten Sie andere Auagaben.

Da amixer mehrere Soundkarten unterstützt, muss auch hier wieder die gewünsche Kartennummer angegeben werden. Beim Aufruf ohne Argumente werden die aktuellen Mixer-Einstellungen für die Standard-Soundkarte bearbeitet. Die allgemeine Syntax des Kommandoaufrufs lautet:

amixer <Optionen> <Kommando>

Neben anderen können dem amixer folgende Optionen übergeben werden:

-h

Hilfefunktion

-q

Stillemodus. Es erfolgen keinerlei Ausgaben (z. B. bei Scripten).

-c Karte

Kartennummer des zu steuernden Soundinterfaces. Der Gerätename, der aus diesem Parameter erstellt wird, hat Syntax 'hw:N', wobei N die Kartennummer ist.

-s

Lesen der Kommandos von stdin statt von der Kommandozeile. Alle Befehle werden nacheinander ausgeführt. Dies ist praktisch, wenn man mehrere Eisntellungen vornehmen muss. Dabei werden nur die Kommandos sset und cset akzeptiert. Andere Befehle werden ignoriert.

Der amixer kennt folgende Kommandos (bei einigen Beispielen wurden lange Zeilen umbrochen):

help

Hilfefunktion, Kommandosyntax

info

Zeigt die Informationen über ein Interface an.

amixer -c 0 info

Card hw:0 'Device'/'C-Media Electronics Inc. USB Audio Device

at usb-3f980000.usb-1.5, full speed'

  Mixer name    : 'USB Mixer'

  Components    : 'USB0d8c:0014'

  Controls      : 9

  Simple ctrls  : 3

scontrols

Zeigt eine vollständige Liste der einfachen Mixer-Controls an.

amixer -c 0 scontrols

Simple mixer control 'Speaker',0

Simple mixer control 'Mic',0

Simple mixer control 'Auto Gain Control',0

scontents

Zeigt eine vollständige Liste der einfachen Mixer-Controls und deren Inhalt an.

 amixer -c 0 scontents

Simple mixer control 'Speaker',0

  Capabilities: pvolume pswitch pswitch-joined

  Playback channels: Front Left - Front Right

  Limits: Playback 0 - 37

  Mono:

  Front Left: Playback 30 [81%] [-7.00dB] [on]

  Front Right: Playback 30 [81%] [-7.00dB] [on]

Simple mixer control 'Mic',0

  Capabilities: pvolume pvolume-joined cvolume cvolume-joined pswitch

                pswitch-joined cswitch cswitch-joined

  Playback channels: Mono

  Capture channels: Mono

  Limits: Playback 0 - 31 Capture 0 - 35

  Mono: Playback 27 [87%] [4.00dB] [on] Capture 30 [86%] [18.00dB] [on]

Simple mixer control 'Auto Gain Control',0

  Capabilities: pswitch pswitch-joined

  Playback channels: Mono

  Mono: Playback [off]

get oder sget <scontrol>

Zeigt den Inhalt zu einem einfachen Mischer-Control an. Das Control muss angegeben werden. Es kann nur ein Device gleichzeitig gesteuert werden.

amixer -c 0 sget Mic

Simple mixer control 'Mic',0

  Capabilities: pvolume pvolume-joined cvolume cvolume-joined pswitch

                pswitch-joined cswitch cswitch-joined

  Playback channels: Mono

  Capture channels: Mono

  Limits: Playback 0 - 31 Capture 0 - 35

  Mono: Playback 27 [87%] [4.00dB] [on] Capture 30 [86%] [18.00dB] [on]

set oder sset <scontrol> <Parameter> ...

Setzt den Inhalt eines einfachen Mischer-Controls. Der Parameter kann entweder eine Prozentangabe von 0% bis 100% (%-Suffix), eine Angabe in dB (dB-Suffix) oder ein genauer Hardware-Wert sein. Die dB-Angabe für die Verstärkung kann nur für die Mischelemente mit entsprechend verfügbaren dB-Informationen verwendet werden. Die Parameter cap, nocap, mute, unmute, toggle werden verwendet, um die Aufnahmeeigenschaften zu ändern oder das und Muting für die Gruppe festzulegen.

# Aufnahme an/aus: cap, nocap

amixer -c 0 sset 'Mic' cap

 

# Wiedergabe an/aus: mute, unmute

amixer -c 0 sset Speaker unmute

 

# Mikrofon-Empfindlichkeit

amixer -c 0 sset Mic Playback 30

Simple mixer control 'Mic',0

  Capabilities: pvolume pvolume-joined cvolume cvolume-joined pswitch

                pswitch-joined cswitch cswitch-joined

  Playback channels: Mono

  Capture channels: Mono

  Limits: Playback 0 - 31 Capture 0 - 35

  Mono: Playback 30 [97%] [7.00dB] [on] Capture 30 [86%] [18.00dB] [on]

controls

Zeigt eine vollständige Liste der Karten-Controls an.

amixer -c 0 controls

numid=3,iface=MIXER,name='Mic Playback Switch'

numid=4,iface=MIXER,name='Mic Playback Volume'

numid=7,iface=MIXER,name='Mic Capture Switch'

numid=8,iface=MIXER,name='Mic Capture Volume'

numid=9,iface=MIXER,name='Auto Gain Control'

numid=5,iface=MIXER,name='Speaker Playback Switch'

numid=6,iface=MIXER,name='Speaker Playback Volume'

numid=2,iface=PCM,name='Capture Channel Map'

numid=1,iface=PCM,name='Playback Channel Map'

contents

Zeigt eine vollständige Liste der Karten-Controls und deren Inhalt an.

amixer -c 0 contents

numid=3,iface=MIXER,name='Mic Playback Switch'

  ; type=BOOLEAN,access=rw------,values=1

  : values=on

numid=4,iface=MIXER,name='Mic Playback Volume'

  ; type=INTEGER,access=rw---R--,values=1,min=0,max=31,step=0

  : values=27

  | dBminmax-min=-23.00dB,max=8.00dB

numid=7,iface=MIXER,name='Mic Capture Switch'

  ; type=BOOLEAN,access=rw------,values=1

  : values=on

numid=8,iface=MIXER,name='Mic Capture Volume'

  ; type=INTEGER,access=rw---R--,values=1,min=0,max=35,step=0

  : values=30

  | dBminmax-min=-12.00dB,max=23.00dB

numid=9,iface=MIXER,name='Auto Gain Control'

  ; type=BOOLEAN,access=rw------,values=1

  : values=off

numid=5,iface=MIXER,name='Speaker Playback Switch'

  ; type=BOOLEAN,access=rw------,values=1

  : values=on

numid=6,iface=MIXER,name='Speaker Playback Volume'

  ; type=INTEGER,access=rw---R--,values=2,min=0,max=37,step=0

  : values=34,17

  | dBminmax-min=-37.00dB,max=0.00dB

numid=2,iface=PCM,name='Capture Channel Map'

  ; type=INTEGER,access=r----R--,values=1,min=0,max=36,step=0

  : values=0

  | container

    | chmap-fixed=MONO

numid=1,iface=PCM,name='Playback Channel Map'

  ; type=INTEGER,access=r----R--,values=2,min=0,max=36,step=0

  : values=0,0

  | container

    | chmap-fixed=FL,FR

cget <scontrol>

Zeigt den Inhalt eines einzelnen Controls an. ie Identifikation eines Controls hat folgende Komponenten: iface, Name, Index, Gerät, Teilgerät, numid. Das Format der Ausgabe ist ähnlich wie bei contents.

amixer cget numid=3

numid=3,iface=MIXER,name='Mic Playback Switch'

  ; type=BOOLEAN,access=rw------,values=1

  : values=on

cset <scontrol> <Parameter>

Setzt den Inhalt eines Controls. Die Identifikation eines Controls hat folgende Komponenten: iface, Name, Index, Gerät, Teilgerät, numid. Darauf folgende Argument(e) legen den/die Wert(e) des Controls fest. Siehe auch Beispiele unten.

Einige Beispiele sollen den Gebrauch der Controls veranschaulichen. Noch eine Anmerkung:Bei negativen Werten ist ein Trick notwendig, damit das Programm z. B. -100 nicht als unbekannten Parameter zurückweist: Mit dem Parameter "--" wird dem Programm mitgeteilt, dass nun keine Parameter mehr kommen und schon klappt es mit den negativen Zahlen.

Zuerst wird der Auto Gain Control ausgeschaltet:

amixer -c 0 cset numid=9,iface=MIXER,name='Auto Gain Control' 0

numid=9,iface=MIXER,name='Auto Gain Control'

  ; type=BOOLEAN,access=rw------,values=1

  : values=off

Die Langfassung "numid=9,iface=MIXER,name='Auto Gain Control'" ist nicht zwingend erforderlich, aber innerhalb von Scripten eine gute Dokumentationshilfe. Normalerweise reicht es, die numerische ID anzugeben:

amixer -c 0 cset numid=9 0

numid=9,iface=MIXER,name='Auto Gain Control'

  ; type=BOOLEAN,access=rw------,values=1

  : values=off

Oder man gibt nur den Namen an, sofern dieser eindeutig ist:

amixer -c 0 cset name='Auto Gain Control' 0

numid=9,iface=MIXER,name='Auto Gain Control'

  ; type=BOOLEAN,access=rw------,values=1

  : values=off

Dann wird die Mikrofon-Empfindlichkeit eingestellt:

amixer -c 0 cset numid=8,iface=MIXER,name='Mic Capture Volume' 30

numid=8,iface=MIXER,name='Mic Capture Volume'

  ; type=INTEGER,access=rw---R--,values=1,min=0,max=35,step=0

  : values=30

  | dBminmax-min=-12.00dB,max=23.00dB

Schliesslich wird der Lautsprecher "aufgedreht":

amixer -c 0 cset numid=6 30

numid=6,iface=MIXER,name='Speaker Playback Volume'

  ; type=INTEGER,access=rw---R--,values=2,min=0,max=37,step=0

  : values=30,30

  | dBminmax-min=-37.00dB,max=0.00dB

Wiedergabe

Das Programm aplay erlaubt nicht nur, den Status von ALSA zu erkennen sondern kann auch Audio-Dateien abspielen. Einen Überblick über die Sound-Interfaces und deren Sub-Geräte bekommt man, wie oben schon erwähnt, mit:

aplay -l

Wollen Sie dagegen die von ALSA selbst kreierten Schnittstellen des Soundservers sehen, so benutzten Sie das große L:

aplay -L

Das Programm kann aber auch direkt Sounddateien (Formate: voc, wav, raw und au) über die Soundkarte ausgeben. Zum Beispiel:

aplay -D front moo.wav

oder auch

aplay -D plughw:0,0 moo.wav

In der Regel reicht die Angabe der Kartennummer (Device) alleine auch schon aus:

aplay -D plughw:0 moo.wav

Das Default-Format ist wav, für andere Formate muss mit dem Parameter -t [Dateiformat] der Dateityp eingestellt werden (voc, wav, raw oder au). Mit der Option -v können Sie sich Informationen über die Arbeit des Programms ausgeben lassen, z. B. über pcm-Struktur und Setup. Es sind auch mehrere "v" möglich ("vv", "vvv") - für noch mehr Info:

aplay -v -D plughw:0,0 test.wav

Wiedergabe: WAVE 'test.wav' : Signed 16 bit Little Endian, Rate: 44100 Hz, stereo

Hardware PCM card 0 'USB Audio Device' device 0 subdevice 0

Its setup is:

  stream       : PLAYBACK

  access       : RW_INTERLEAVED

  format       : S16_LE

  subformat    : STD

  channels     : 2

  rate         : 44100

  exact rate   : 44100 (44100/1)

  msbits       : 16

  buffer_size  : 22050

  period_size  : 5513

  period_time  : 125011

  tstamp_mode  : NONE

  period_step  : 1

  avail_min    : 5513

  period_event : 0

  start_threshold  : 22050

  stop_threshold   : 22050

  silence_threshold: 0

  silence_size : 0

  boundary     : 1445068800

  appl_ptr     : 0

  hw_ptr       : 0

Wenn aplay nicht ausreicht, kann ich den Sound-Exchanger SoX empfehlen. Es liest, schreibt und konvertiert faktisch alle existierenden Audioformate, seien sie auch noch so exotisch. Außer der bloßen Konvertierung inklusive Anpassung der Sampling-Rate und Quadro-, Mono- oder Stereoumwandlung kann sox (Sound Exchanger) den Dateien auch noch jeweils Effekte hinzurechnen. sox ist bei vielen Distributionen in den Paketlisten enthalten, wird aber nicht automatisch installiert. Bei Debian/Raspbian reicht das Kommando apt-get install sox, um das Tool auf die Platte zu bekommen. Da sox auf der Kommandozeile arbeitet, ist es extrem flexibel im Scripten einsetzbar, aber manchmal auch unkomfortabel. Dafür kann man damit aber auch Sounds synthetisieren und ausgeben. Mit sox können Sie die Soundkarte softwaremässig on-the-fly wechseln, indem Sie die Umgebungsvariable AUDIODEV auf "hw:0" oder "hw:1" setzen. Dazu geben Sie in der Kommandozeile beispielsweise vor dem Aufruf von play (ein Links auf sox) ein:

AUDIODEV=hw:1 play humptataa.mp3

Aufnahme

Um die Aufnahme-Funktionen des USB-Mikrofon in Linux zu testen, gibt es eine Reihe von netten Programmen. Da jedoch nicht alle Programme speziell für USB-Adapter geeignet sind, nehmen Sie eine nicht ganz so schicke, aber brauchbare Aufnahme-Software, die auf der Kommandozeile arbeitet. Das Tool arecord verfügt über eine Vielzahl an Optionen, siehe Manpage. Die Syntax für die Aufzeichnung lautet:

arecord -f [Format] -D [Hardware] -d [Dauer]

Wenn man beispielsweise in CD-Qualität für 20 Sekunden mit dem USB-Mikrofon erfassen will gibt man ein:

arecord -f cd -D plughw:0,0 -d 10 test.wav

Hiermit wird der Aufnahmekanal des USB-Adapters im Format einer Audio-CD mit 44.1 KHz und 16-Bit-Auflösung (Little Endian) in Stereo als wav-Datei gespeichert. Setzt man den Parameter bei -d auf Null (-d 0), wird so lange aufgenommen, bis das Programm mit STRG-C gekillt wird. In der Regel reicht die Angabe der Kartennummer alleine auch schon aus:

arecord -f cd -D plughw:0 -d 10 test.wav

Ich bleibe aber bei den folgenden Beispielen bei der "Langfassung".

Das Ergebnis kann mit aplay abgespielt werden:

aplay -f cd -D front test.wav

Wenn es funktioniert, dann können Sie das Mikrofon in jeder Umgebung zu verwenden. Nun noch zwei Beispiele:

arecord -t wav --max-file-time=60 -D plughw:0,0 mon.wav

Nimmt von der Standard-Audioquelle in Mono, 8000 Samples pro Sekunde, 8 Bit pro Probe auf. Startet eine neue Datei alle 60 Sekunden. Die Dateinamen lauten "mon-nn.wav", wobei "nn" bei "01" beginnt und dann stetig hochgezählt wird.

arecord -f cd -t wav -max-file_time 900 -D plughw:0,0 mon.wav

Das gleiche wie oben, nur dass die Aufnahme in Stereo mit CD-Qualität erfolgt und alle Viertelstunde eine neue Dateri erzeugt wird.

8 Gigabyte Speicher auf dem USB-Stick reichen für ca. 10 Stunden Stereo-Tonaufnahmen im WAV-Format. Mit weniger Qualität kann man im AU-Format (Mono, 8000 Samples/Sekunde, 8 Bit) auf demselben Speicher fast 300 Stunden aufzeichnen. Zum Schneiden von Tonaufnahmen verwenden Sie z. B. die Software "Audacity" mit GUI. Zur Installation genügt der Befehl sudo apt-get install audacity.

Audiodaten verarbeiten

Wenn Sie für Tests mithören wollen, was gerade über das Mikrofon aufgenommen wird, können Sie den Sound von arecord direkt per Pipe an aplay übergeben. Es tritt dabei aber eine leichte Verzögerung zwischen Aufnahme und Wiedergabe auf:

arecord -t wav -D plughw:0,0 |  aplay -D plughw:0,0

Man kann den Output von aplay auch auf die Standardausgabe leiten und so auch per Pipe in ein Programm leiten, dass die Audidaten auswertet oder konzentriert (z. B. Minima/Maxima der Amplitude bestimmt oder per FFT das Frequensspektrum ermittelt. Für das Standardformat 8 Bit Mono, 8000 Samples/Sekunde reicht das folgende Kommando. Der Parameter -q unterdrückt alle sonstigen Ausgaben:

arecord -q -D plughw:0,0 | auswerteprogramm

Audio-Signale über das Netzwerk streamen

Die beiden oben genannten Programme erlauben es, Audio-Signale über das Netzwerk zu schicken, z. B. an irgendeinen Server. Dazu wird das Audiosignal vom Mikrofon über eine SSH-Verbindung auf den Zielcomputer "gepipt". Das ist ganz einfach:

arecord -D plughw:0,0 -f dat | ssh -C user@server aplay -f dat

Nun schalten Sie die Lautsprecher am Ziel-PC ein und hören Sie, was der Raspberry Pi aufnimmt.

Für solche Fälle ist es günstig, einen SSH-Login ohne Passwort einzurichten. Dafür muss auf dem internen Rechner ein Zertifikat erstellt und auf den externen Computer übertragen werden, was mit Hilfe der beiden Kommandos ssh-keygen und ssh-copy-id erledigt werden kann. Zuerst wird ein Schlüssel-Paar (Public- und Private-Key) erstellt und dann der öffentliche Schüssel zum Webserver übertragen.

Der Private-Key ist dann dem normalen Passwort gleichgestellt. Im Gegensatz zum Passwort existiert er aber als Datei, die vor fremdem Zugriff zu schützen ist. Deswegen besteht die Möglichkeit, den Private-Key mit einer Passphrase zu schützen. Die Passphrase muss in unserem Fall leer bleiben, da sonst bei Verbindungsaufnahme diese Passphrase abgefragt würde und so kein automatischer Audiotransfer möglich wäre.

Das folgende Shellscript erzeugt die Schlüssel und übertägt sie dann (den Account "user@www.netzmafia.de" gibt es natürlich nicht, er dient nur als Beispiel):

#!/bin/bash

# Generiert Public/Private-Keys und kopiert sie zur Netzmafia

# damit ein Login bzw. Aufbau eines SSH-Tunnels dorthin ohne

# Passwort-Eingabe moeglich ist

#

# zuerst werden die Keys generiert

ssh-keygen -t dsa

 

# nun befinden sich im Verzeichnis ~/.ssh zwei Dateien:

# id_dsa  id_dsa.pub

#

# nun wird der public key zur Netzmafia kopiert und dort

# an die Datei ~/.ssh/authorized_keys angehaengt

ssh-copy-id -i ~/.ssh/id_dsa.pub user@www.netzmafia.de

 

# ab jetzt kann sich der User vom internen System als

# "user@www.netzmafia.de" ohne Passworteingabe auf

# Netzmafia einloggen

Sounds mit Python verarbeiten

Für das ALSA-Soundsystem kann das vorinstallierte Python-Modul pygame herangezogen werden. Leider unterstützt es nur die eingebaute Soundkarte. Um einen USB-Soundadapter mit Python anzusprechen, kann man Linux-Befehle für den SoX-Player oder arecord aufrufen. Über den Lunk am Ende der Seite kann man auch eine kleine Python-Klasse DoSound herunterladen, die einem sogenannten Wrapper für die Systemkommandos bildet.Damit kann die Soundkarte softwaremässig ausgewählt werden.

Das folgende Beispiel zeigt, wie das Abspielen einer Sounddatei von Python aus erfolgt:

#!/usr/bin/env python

 

import time

from dosound import DoSound

 

# Device mit ID 1 verwenden  (USB audio adapter)

player = DoSound(1)       

player.play("/home/pi/humptataa.mp3", 0.5) # volume = 0.5

print "isPlaying:", player.isPlaying()

print "stop"

player.stopPlaying()

print "isPlaying:", player.isPlaying()

Oft werden nur bestimmte Signaltöne benötigt, wozu die internen Soundkarte ausreicht. Die Klasse DoSound verwendet playTone(), um einen Ton mit der vorgegebener Frequenz und Dauer abzuspielen. Im folgenden Beispiel werden erst drei Töne nacheinander und dann alle zusammen abgespielt.

#!/usr/bin/env python

 

from dosound import DoSound

import time

 

dev = 0  # interner Soundadapter

DoSound.playTone(440, 0.3, dev)

DoSound.playTone(550, 0.3, dev)

DoSound.playTone(660, 0.3, dev)

time.sleep(1)

DoSound.playTone([440, 550, 660], 3, dev)

DoSound.stopPlaying()

MOC - Music on Console

MOC - music on console ist ein einfach zu bedienender Audioplayer mit einer Client-Server-Struktur für die Konsole, der viele Formate (MP3, Ogg Vorbis, FLAC, Musepack, WAVE, Speex und andere) unterstützt. Es lassen sich Lieder aus einem Ordner abspielen, oder Playlisten erstellen und speichern. MOCP eignet sich besonders bei Systemen, bei denen keine grafische Oberfläche zur Verfügung steht. Er unterstützt außerdem das Abspielen von Internetradiostationen (durch Eingabe einer direkten Adresse für den Stream oder durch (M3U-)Playlisten). Zudem unterstützt er gapless playback und er bsitzt Repeat- und Shuffle-Funktionen. Die Textoberfläche basiert auf der Curses-Bibliothek. MOCP erlaubt es, mit sogenannten Themes das Farbschema des Clients zu verändern. Standardmäßig werden schon einige Themes bei der Installation mitgebracht. Dank der Client-Server-Architektur, kann der Player auch von verschiedenen Clients aus per SHH angesprochen werden.

Vorverstärker

Leider hat bei den meisten Sound-Systemen der Mikrofoneingang nur eine recht geringe Empfindlichkeit. In der Regel lohnt es sich, einen Vorverstärker zu verwenden, statt die Daten später "lauter" zu rechnen (siehe Bemerkung weiter oben). Die Dimensionierung von Transistor-Stufen ist nicht so kompliziert wie es scheint. Die Grundschaltung eines einfachen Mikrofon-Vorverstärkers sieht folgendermaßen aus:

http://www.netzmafia.de/skripten/hardware/RasPi/Projekt-Sound/verstaerker.gif

Um die Bauteile zu dimensionieren, müseen die Rahmenbedingungen festgelegt werden:

Damit ein Verstärker einen möglichst großen unverzerrten Aussteuerbereich hat, muss der Kollektor-Ruhestrom die Hälfte des Sättigungsstroms betragen. Dann nämlich lässt sich der Strom in beide Richtungen gleich weit verändern, ohne dass es zu einer Begrenzung kommt.

Der Arbeitswiderstand Rc lässt sich am einfachsten berechnen, da die Spannung und der Strom bekannt sind:

Rc = Vcc/(2*Ic) : Rc = 5 V/0,002 A = 2,5

Der Strom Ib muss nun über den Widerstand Rb so eingestellt werden, dass sich ein Kollektorstrom von 1 mA ergibt. Auch hier sind alle Größen nun bekannt:

Der Basisstrom ergibt sich nun aus dem Kollektorstrom Ic und dem Stromverstärkungsfaktor des Transistors

Ib = Ic/300 = 1/300 = 0,0033 [mA]

Damit kann nun auch Rb berechnet werden:

Rb = (Uc - Ub)/Ib = 1,8 V/0,000'003'3 A = 1,3 MΩ

Rb sorgt zudem für eine Spannungs-Gegenkopplung, die einen Teil des Ausgangssignals gegensinnig zum Eingang zurückführt, um den Einfluss von Temperatur und Exemplarstreuung zu reduzieren und die Stabilität zu erhöhen. Erhöht sich beispielsweise die Temperatur des Transistors, so fließt ein größerer Strom durch den Kollektor. Daraufhin sinkt aber die Spannung am Kollektor, und mit ihr auch die Spannung an Rb. Folglich sinkt der Basisstrom und somit auch der Kollektorstrom. Auf diese Weise lässt sich der Arbeitspunkt der Schaltung stabilisieren. Gleichzeitig hängt die Gesamtverstärkung nur wenig vom Stromverstärkungsfaktor des Transistors ab, sondern lässt sich durch die Wahl des Widerstandes Rb einstellen. Bei dieser sehr einfachen Schaltung stellt sich (fast) immer ein Arbeitspunkt im linearen Bereich der Kennlinie ein, er liegt aber selten in der Mitte des Aussteuerbereichs. Die Schaltung ist brauchbar für kleine Signalamplituden, wie sie beim Mikrofon vorkommen.

Die berechneten Widerstandswerte sind in der Regel nicht handelsüblich. Daher nimmt man Widerstände der E-Reihe, die dem Wertmöglichst nahe kommen:

Die Koppelkondensatoren C1 und C2 bestimmen die untere Grenzfrequenz. In der Regel empfehlen die Hersteller der Mikrofonkapseln Koppelkondensatoren von 100 nF oder größer. Der Ausgangskondensator ist wegen der Verstärkung größer. Das führt zu der Wahl:

Das folgende Bild zeigt eine Erweiterung für Elektret-Mikrofonkapseln. Die Mikrofone haben nur ca. 10 mm Durchmesser und passen meist gleich mit auf die Platine. Hinzugekommen sind R3, R4 und C2 für die Speisung des Mikrofons. Daneben ist das Platinenlayout zu sehen.

http://www.netzmafia.de/skripten/hardware/RasPi/Projekt-Sound/verstaerker2.gif

Sie können sich den Eagle-Schaltplan und das Eagle-Layout herunterladen. Gegebenenfalls wird der Vorverstärker noch über ein RC-Siebglied von der übrigen Schaltung getrennt. Man kann natürlich auch ein passendes Modul oder einen Bausatz im Elektronikhandel erwerben. Dann spart man sich das Rechnen und auch das Testen der Schaltung. Ganz ausführlich und mit vielen erweiterten Schaltung wird der Vorverstärker auf der Webseite von Prof. Gossner besprochen.

Der folgende Verstärker ist mit einem Operationsverstärker realisiert. Das Electret-Mikrophon erhält über die Widerstände R1 und R2 die zum Betrieb nötige Spannung. Elko C3 entkoppelt diese Spannung, so dass überlagerte Störungen unwirksam bleiben. Über Kondensator C1 gelangt das Mikrofonsignal zum nichtinvertierenden Eingang (Pin 3) des Operationsverstärkers TLC271, ein Low-Power-Typ mit FET-Eingängen. Das verstärkte Signal kann am OPV-Ausgang (Pin 6) abgegriffen werden. Der Gegenkoppelzweig mit R6 und R7 ist so dimensioniert, dass die Verstärkung etwa 500 beträgt. Die Kondensatoren C2 und C6 begrenzen den Frequenzbereich auf ca. 150 Hz bis 18 kHz. Die Betreibsspannung wird über eine Z-Diode auf 8,2 V begrenzt.

http://www.netzmafia.de/skripten/hardware/RasPi/Projekt-Sound/verstaerker_opv.gif

Soundadapter im Eigenbau

Die folgende Schaltung stellt eine voll funktionsfähige Soundkarte für PC dar. Wie man am Blockdiagramm sehen kann, sind 5V- und 3,3-Spannungsregler eingebaut, Es gibt eine HID-Schnittstelle (MUTE, VOL +, VOL-), die in der Schaltung nicht beschaltet ist, und einen S/PDIF-Ausgang. Die Schaltung kann direkt vom USB-Port mit Strom versorgt werden. Weiter Vorteil ist, dass der Ausgangs-DAC in der Lage ist, direkt 32-Ohm-Kopfhörer anzusteuern, jedoch ist die Ausgangsleistung nur 12 mW. Alle Details zu dem PCM2902 sind dem Datenblatt zu entnehmen.

http://www.netzmafia.de/skripten/hardware/RasPi/Projekt-Sound/Mikro-PCM2902.gif

Der Schaltplan ist fast 1:1 aus dem Datenblatt kopiert. Das IC PCM2902 benötigt einen 12-MHz-Quarz mit der notwendigen Beschaltung, Anschluss an den USB-Port, etliche Blockkondensatoren für alle intern erzeugten Spannungen, einen Kopfhöhrer-Ausgang und für das Mikrofon einen Vorverstärker. In der vorliegenden Schaltung wird der Eingang mit nur einem Mikrofon (Mono) beschaltet. Wenn Sie den Verstärker mit Mikro duplizieren, können Sie auch Stereo-Aufnahmen machen. Das aufwendige Innenleben des PCM2902 zeigt die folgende Blockschaltung:

http://www.netzmafia.de/skripten/hardware/RasPi/Projekt-Sound/PCM2902_Blockschaltung.gif

Das USB-Mikrofon mit dem PCM2902 wird problemlos von Debian, Raspbian und Windows erkannt. Weitere Treiber sind nicht erforderlich. Die USB-Audio-Geräte melden sich automatisch als "Human Interface Device" (HID) an. Die entsprechenden Treiber sind in den o. g. Betriebssystemen bereits enthalten.