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
Ab Version B+ ist das Composite-Video-Signal mit dabei
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.
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).
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) |
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.
Adapter XLR zu Klinke Stereo
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).
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
...
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:
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 kΩ
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.
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.
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.
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:
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.