Externe Soundkarte mit 8 inputs an RasberrPI

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Liebe Forum Mitglieder,


    Ich habe eine sehr spezielle Aufgabe für den RasberryPI 2.


    Folgende Soundkarte soll an den RBPI2 angeschlossen werden: Pesonus Audiobox 1818 VSL

    Ziel ist es 8 Kanäle simultan aufzunehmen und zu speichern (in je einem Array Sampelrate von ca. 5 kHz).

    Betriebssystem ist Debian/Linux.

    Ich greife auf den RasberryPI2 per ssh zu.

    Als erstes möchte ich testen ob ich alle 8 Kanäle auch einzeln ansteuern kann und hier beginnen schon die Schwierigkeiten.

    Meine Frage: Hat jemand Erfahrung wie ich Soundkarten unter Linux von einem anderen Computer aus ansteuern kann und wie ich auf die einzelnen Kanäle zugreifen kann?

    Gefühlt kann dies ja nicht so weit entfernt von einem Zugriff auf einen Musikserver sein.
    Ich lese immer 7.1 Surround aber was ist wenn ich 8 Input Kanäle habe. Ausgeben möchte ich diese auch gar nicht, sondern nur aufnehmen.

    Vielen Dank und liebe Grüße

    Tino

  • Die Sampleraten sind ja üblicherweise ganze Vielfache oder Teiler von 44100 Hz oder 48 kHz. Dh wenn schon wäre die Samplerate wahrscheinlich 6 kHz oder 5,5125 kHz, aber werden so niedrige Sampleraten überhaupt unterstützt, ich hätte eigentlich angenommen, dass es erst bei 11,25 kHz oder 12 kHz oder gar dem doppelten davon anfängt...
    …und da wäre meine Sorge ob sich das über USB überhaupt ausgeht. Schließlich müssen sich soweit ich weiß alle Geräte die Datenübertragungsrate mit USB teilen und man hört ja schon oft genug von Knacksern, Hängern oder Unterbrechungen, selbst wenn es nur um Stereo geht (auch wenn viele Probleme andere Ursachen haben mögen).

    Aber zur eigentlichen Frage:
    Von der Software her sehe ich eigentlich kein Problem. Aufnehmen kann man auf der Kommandozeile zB mit arecord. Abhängig davon ob die 8 Kanäle verteilt auf einzelne Geräte oder als Kanäle eines einzelnen Geräts zugänglich sind, muss man sich eben noch etwas mit der Konfiguration von Alsa auseinandersetzen (so könnte man auch die 8 Kanäle eines 7.1 Geräts als 4 virtuelle Geräte mit je zwei Kanälen konfigurieren).
    Wenn du das Audiointerface bereits hast, könntest du es ja einmal anschließen und die Ausgabe der Befehle

    Code
    $ aplay -l
    $ arecord -l


    posten.

  • Danke für die schnelle Antwort, ich habe die selben Befehle und noch ein par mehr schon ausgeführt. Ich kann noch nicht sagen, ob ich in so einer niedrigen Samplerate aufnehmen kann, es handelt sich auch nicht um einen Audio stream im klassischen Sinn.

    Hier die Ergebnisse:

    aplay -l
    **** List of PLAYBACK Hardware Devices ****
    card 0: VSL [AudioBox 1818 VSL], device 0: USB Audio [USB Audio]
    Subdevices: 1/1
    Subdevice #0: subdevice #0
    arecord -l
    **** List of CAPTURE Hardware Devices ****
    card 0: VSL [AudioBox 1818 VSL], device 0: USB Audio [USB Audio]
    Subdevices: 1/1
    Subdevice #0: subdevice #0

    lsusb
    Bus 001 Device 002: ID 0424:9514 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 005: ID 194f:0103

    aplay -L | grep :CARD
    sysdefault:CARD=VSL
    front:CARD=VSL,DEV=0
    surround40:CARD=VSL,DEV=0
    surround41:CARD=VSL,DEV=0
    surround50:CARD=VSL,DEV=0
    surround51:CARD=VSL,DEV=0
    surround71:CARD=VSL,DEV=0
    iec958:CARD=VSL,DEV=0


    Für mich ist entscheidend, wie ich die einzelnen Kanäle ansprechen kann. Nehmen wir an ich habe auf Kanal 3 Audio laufen, wie kann ich dies abhören?


    Liebe Grüße

    Tino

    Einmal editiert, zuletzt von schlafcola (11. Mai 2015 um 13:38)

  • Aha, es gibt also ein Wiedergabe- und ein Aufnahmegerät, die dann wahrscheinlich (hoffentlich) jeweils maximal 8 Kanäle unterstützen. Basierend auf http://alsa.opensrc.org/Splitting_fron…tputs_.asoundrc könntest du einmal eigene Geräte für ein paar der Aufnahmekanäle erstellen, wenn das funktioniert, sollte es sich leicht nach Belieben anpassen lassen:


    Das wäre meine erste Idee für eine ~/.asoundrc oder /etc/asound.conf (die Datei musst du vermutlich erst erstellen). Testen kannst du das erste (Stereoaufnahme)gerät (pcm.capture1) dann mit

    Code
    $ arecord -D capture1 -r 24000 -f S16_LE -d 10 testaufnahme.wav


    was eine 10 Sekunden lange wav-Datei liefern sollte (oder eine bei der Fehlersuche hilfreiche Fehlermeldung ausgeben sollte).

    Einmal editiert, zuletzt von smutbert (11. Mai 2015 um 19:27)

  • Vielen Dank, ich habe leider eine Fehlermeldung bekommen:

    arecord -D capture1 -r 24000 -f S16_LE -d 10 testaufnahme.wavALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM audiobox_capture
    arecord: main:682: audio open error: No such file or directory

    Ich habe noch nicht erwähnt das jeder Kanal einzeln aufgenommen werden soll.


    Ich habe grob verstanden wie ich die Kanäle in der .asoundrc anordne. Wie kann ich aber das Skript so modifizieren, dass ich jeden kanal einzeln ausgebe?


    Auch habe ich noch probleme Audiodateien über das Netzwerk auszugeben.


    Schon mal vielen Dank für die Hilfe!

    Liebe Grüße

    Tino

    P.S.: Eventuell kann das hier auch helfen:

    amixer
    Simple mixer control 'AudioBox 1818 VSL Clock Selector',0
    Capabilities: enum
    Items: 'AudioBox 1818 VSL Internal Clock' 'AudioBox 1818 VSL S/PDIF Clock' 'AudioBox 1818 VSL ADAT Clock'
    Item0: 'AudioBox 1818 VSL Internal Clock'
    Simple mixer control 'AudioBox 1818 VSL Clock Selector Capture Sw',0
    Capabilities: pswitch penum
    Playback channels: Front Left - Front Right - Rear Left - Rear Right - Front Center - Woofer - Side Left - Side Right - Rear Center - ? - ? - ? - ? - ? - ? - ?
    Mono:
    Front Left: Playback [on]
    Front Right: Playback [on]
    Rear Left: Playback [on]
    Rear Right: Playback [on]
    Front Center: Playback [on]
    Woofer: Playback [on]
    Side Left: Playback [on]
    Side Right: Playback [on]
    Rear Center: Playback [on]
    ?: Playback [on]
    ?: Playback [on]
    ?: Playback [on]
    ?: Playback [on]
    ?: Playback [on]
    ?: Playback [on]
    ?: Playback [on]
    Simple mixer control 'AudioBox 1818 VSL Clock Selector Capture Sw',1
    Capabilities: pswitch pswitch-joined penum
    Playback channels: Mono
    Mono: Playback [on]
    Simple mixer control 'AudioBox 1818 VSL Clock Selector Capture Vo',0
    Capabilities: volume penum
    Playback channels: Front Left - Front Right - Rear Left - Rear Right - Front Center - Woofer - Side Left - Side Right - Rear Center - ? - ? - ? - ? - ? - ? - ?
    Capture channels: Front Left - Front Right - Rear Left - Rear Right - Front Center - Woofer - Side Left - Side Right - Rear Center - ? - ? - ? - ? - ? - ? - ?
    Limits: 0 - 255
    Front Left: 246 [96%]
    Front Right: 246 [96%]
    Rear Left: 255 [100%]
    Rear Right: 255 [100%]
    Front Center: 255 [100%]
    Woofer: 255 [100%]
    Side Left: 255 [100%]
    Side Right: 255 [100%]
    Rear Center: 255 [100%]
    ?: 255 [100%]
    ?: 255 [100%]
    ?: 255 [100%]
    ?: 255 [100%]
    ?: 255 [100%]
    ?: 255 [100%]
    ?: 255 [100%]
    Simple mixer control 'AudioBox 1818 VSL Clock Selector Capture Vo',1
    Capabilities: volume volume-joined penum
    Playback channels: Mono
    Capture channels: Mono
    Limits: 0 - 255
    Mono: 255 [100%]
    Simple mixer control 'AudioBox 1818 VSL Clock Selector Playback S',0
    Capabilities: pswitch penum
    Playback channels: Front Left - Front Right - Rear Left - Rear Right - Front Center - Woofer - Side Left - Side Right - Rear Center - ? - ? - ? - ? - ? - ? - ?
    Mono:
    Front Left: Playback [off]
    Front Right: Playback [off]
    Rear Left: Playback [off]
    Rear Right: Playback [off]
    Front Center: Playback [off]
    Woofer: Playback [off]
    Side Left: Playback [off]
    Side Right: Playback [off]
    Rear Center: Playback [off]
    ?: Playback [off]
    ?: Playback [off]
    ?: Playback [off]
    ?: Playback [off]
    ?: Playback [off]
    ?: Playback [off]
    ?: Playback [off]
    Simple mixer control 'AudioBox 1818 VSL Clock Selector Playback S',1
    Capabilities: pswitch pswitch-joined penum
    Playback channels: Mono
    Mono: Playback [off]
    Simple mixer control 'AudioBox 1818 VSL Clock Selector Playback V',0
    Capabilities: volume penum
    Playback channels: Front Left - Front Right - Rear Left - Rear Right - Front Center - Woofer - Side Left - Side Right - Rear Center - ? - ? - ? - ? - ? - ? - ?
    Capture channels: Front Left - Front Right - Rear Left - Rear Right - Front Center - Woofer - Side Left - Side Right - Rear Center - ? - ? - ? - ? - ? - ? - ?
    Limits: 0 - 255
    Front Left: 255 [100%]
    Front Right: 255 [100%]
    Rear Left: 255 [100%]
    Rear Right: 255 [100%]
    Front Center: 255 [100%]
    Woofer: 255 [100%]
    Side Left: 255 [100%]
    Side Right: 255 [100%]
    Rear Center: 255 [100%]
    ?: 255 [100%]
    ?: 255 [100%]
    ?: 255 [100%]
    ?: 255 [100%]
    ?: 255 [100%]
    ?: 255 [100%]
    ?: 255 [100%]
    Simple mixer control 'AudioBox 1818 VSL Clock Selector Playback V',1
    Capabilities: volume volume-joined penum
    Playback channels: Mono
    Capture channels: Mono
    Limits: 0 - 255
    Mono: 255 [100%]

  • Ok, mein Fehler, ich habe audiobox_capture nachträglich in dsnooped umbenannt, aber die Änderung in den letzten beiden Abschnitten (pcm.capture1 und 2) vergessen. Ich habe es jetzt in meinem vorigen Post korrigiert.

    Könntest du bitte die Befehle. Ausgaben von Befehlen, Auschnitte aus Konfigurationsdateien,.. in code-Tags packen - wenn du es ohne Abgrenzung zum restlichen Text des Beitrags postest, ist es beim Lesen wirklich unübersichtlich. Im Editor hier gibte es dafür die Schaltfläche <#>, die im Beitrag, das hier erzeugt

    Code
    [code]
    hier steht eine Befehlsausgabe
    [/ code]


    (das Leerzeichen in [/ code] gehört weg, aber ohne wird es im Post gar nicht angezeigt) was dann im Beitrag zu

    Code
    hier steht eine Befehlsausgabe


    wird.

    […]
    Ich habe noch nicht erwähnt das jeder Kanal einzeln aufgenommen werden soll.
    […]

    Das ist ziemlich egal, zuerst müssen wir unser Konstrukt einmal grundsätzlich zum Funktionieren bringen, wo welcher Kanal hin soll überlegen wir uns ganz zum Schluss...

    Einmal editiert, zuletzt von smutbert (11. Mai 2015 um 15:50)

  • Gerne makiere ich die Befehlsausgabe mit dem shortcode.

    Ich habe eine neue Fehlermeldung bekommen:

    Code
    arecord -D capture1 -r 24000 -f S16_LE -d 10 testaufnahme.wavALSA lib pcm_direct.c:1666:(snd1_pcm_direct_parse_open_conf) Unique IPC key is not defined
    arecord: main:682: audio open error: Invalid argument

    Liebe Grüße

    Tino

    Einmal editiert, zuletzt von schlafcola (11. Mai 2015 um 16:07)

  • Du hast dich für die /etc/asound.conf entschieden (und nicht die ~/.asoundrc - dort wäre das folgende glaube ich nicht notwendig) (?)
    Daran hätte ich jedenfalls von Anfang an denken sollen :angel: Eine neue dritte Zeile

    Code
    ipc_key 2051


    im ersten Abschnitt. wobei der Zahlenwert willkürlich gewählt ist, sollte Abhilfe schaffen. Ich habe wieder meinen vorigen Post aktualisiert.

    Damit du auch weißt was wir tun:
    Wir wollen mit mehreren Anwendungen von unterschiedlichen Kanälen ein- und desselben Geräts aufnehmen, aber direkt auf das Gerät kann immer nur eine Anwendung zugreifen. Das ändern wir mit dem ersten "Gerät" namens pcm.dsnooped. Das Plugin dsnoop, das wir dort verwenden, ist ein Alsa-Plugin, das es mehreren Anwendungen erlaubt gleichzeitig von ein- und demselben Gerät aufzunehmen. Die beiden weiteren Definitionen pcm.capture1/2 dienen nur dazu, nur bestimmte Kanäle dieses Geräts anzusprechen.

    Einmal editiert, zuletzt von smutbert (11. Mai 2015 um 19:38)

  • Wunderbar ja jetzt konnte ich eine Aufnahme machen. Leider kann ich von zu Hause nicht pulseaudio zum laufen bringen. Aber die Aufnahme ist da nur kann ich nichts hören. Ich kann sie auch abspielen.


    Vielen Dank und liebe Grüße

    Tino

  • Deine Bemerkung mit Pulseaudio verstehe ich nicht ganz?
    Pulseaudio haben wir bei der Aufnahme komplett umgangen. Mit Pulseaudio hätte es wohl auch funktioniert, denn das erlaubt ähnlich wie dsnoop den gleichzeitigen Zugriff mehrerer Anwendungen auf ein Aufnahme- oder Wiedergabegerät, aber mit den vielen Kanälen hätte ich unter Pulseaudio nicht so ohne weiteres weiter gewusst… vermutlich hätten wir dem Aufnahmegerät sagen müssen, welchen Kanal es aufnehmen soll.


    Wenn die Aufnahme leer ist bzw. nur Stille enthält solltest du dir eventuell auch die Aufnahemeregler ansehen. vielleicht stehen die auf 0. Also alsamixer starten, <F6> drücken, die richtige Soundkarte auswählen und schließlich mit <F4> die Aufnahmeregler oder mit <F5> alle Regler anzeigen lassen.
    Und zu den einzelnen Kanälen: so könnten deine Aufnahmegeräte für je einen Kanal aussehen

    Das Aufnahmegerät bei arecord musst du natürlich auch entsprechend anpassen und eventuell die Option -c 1 für 1 Kanal hinzufügen, standardmäßig wird arecord wahrscheinlich 2 Kanäle aufnehmen wollen.

    Einmal editiert, zuletzt von smutbert (12. Mai 2015 um 09:36)

  • So ich konnte erfolgreich einen Mono Kanal aufnehmen denke ich. Zwar habe ich nur ein Rauschen aufgenommen aber ich werde veranlassen das auf verschiedenen Kanälen auch ein verwertbares Signal anliegt! Momentan kann ich die Soundfiles nur per SCP auf meinen Computer kopieren. Ich werde heute Abend alle Kanäle einzeln aufnehmen. Ich melde mich dann nochmal. Ich wollte mit pulseaudio Audio über ssh ausgeben aber SCP ist für den Moment auch ausreichend.
    Liebe Grüße

    Tino

  • Du meinst aber nicht dass du den Pulseaudioclient (das Abspielprogramm) auf dem Raspberry laufen und auf einen auf dem Deskop laufenden Pulseaudiodämon zugreifen lassen wolltest - sondern schon beides auf dem Raspberry?

    Dann kannst du nämlich auch dafür leicht auf Pulseaudio verzichten

    Code
    $ aplay -D plughw:VSL testaufnahme.wav


    sollte die Datei auf den ersten Kanälen des Audiointerfaces wiedergeben. Gegebenenfalls musst du natürlich wieder die Lautstärkeregler/Stummschalter in alsamixer richtig einstellen, diesmal für die Wiedergabekanäle.

    Einmal editiert, zuletzt von smutbert (12. Mai 2015 um 17:34)

  • Danke ich habe die Aufnahmen auf meinen Computer geladen. Ich habe Pulseaudio und paprefs auf dem rasberry pi installiert da ich selber noch nie den RasberryPI gesehen habe, ich konfiguriere ihn ausschließlich über ssh. Morgen werde ich die Kanäle nochmals testen, bisher habe ich nur Rauschen aufgenommen.

    Vielen Dank und liebe Grüße


    Tino

  • So ich mache gerade Testaufnahmen. Leider kann ich bisher nur ein Rauschen ausmachen. Ich werde die einzelnen Quellen umstecken lassen und nochmal aufnehmen. Eventuell werde ich wohl doch die einzelnen Kanäle über Pulseaudio abhören müssen vor den nächsten Aufnahmen. Gibt es noch ein paar Dinge die ich tun kann um die einzelnen Kanäle hörbar zu machen?

    Liebe Grüße

    Tino

  • Du könntest ja - um zu sehen ob das Problem bei unserer Konfiguration oder etwas anderem liegt - einfach an die ersten beiden Kanäle ein Signal hängen und die dann direkt mit

    Code
    $ arecord -D hw:VSL,0 -r 24000 -f S16_LE -c 2 -d 10 test.wav


    aufnehmen. So nimmst du direkt von der Hardware auf und die asound.conf spielt keine Rolle mehr. Taucht im Ergebnis noch immer kein Signal auf (ich überprüfe so etwas ganz gerne in audacity), könntest du dir die Regler und Schalter in alsamixer noch einmal genauer ansehen.

  • Habe ich gerade versucht und folgende Fehlermeldungen erhalten:

    Code
    pi@raspberrypi ~ $ arecord -D hw:VSL,0 -r 24000 -f S16_LE -c 2 -d 10 extratest.wav
    Recording WAVE 'extratest.wav' : Signed 16 bit Little Endian, Rate 24000 Hz, Stereo
    arecord: set_params:1081: Sample format non available
    Available formats:
    - S32_LE
    Code
    pi@raspberrypi ~ $ arecord -D hw:VSL,0 -r 24000 -f S32_LE -c 2 -d 10 extratest.wav
    Recording WAVE 'extratest.wav' : Signed 32 bit Little Endian, Rate 24000 Hz, Stereo
    arecord: set_params:1087: Channels count non available



    OK die Aufnahme hat nun geklappt indem ich

    Code
    record -D plughw:VSL,0 -r 24000 -f S32_LE -c 2 -d 10 extratest.wav

    gewählt habe.

    Einmal editiert, zuletzt von schlafcola (13. Mai 2015 um 15:43)

  • Auweia, 32 Bit Sampleformat bedeuten auch die doppelte Datenrate gegenüber 16 Bit, damit werden die 8 Kanäle zu einer noch größeren Herausforderung für den RPi. Aber versuchen kannst du es ja trotzdem, nimm einfach -c 8 statt -c 2, dann nimmt er alle 8 Kanäle auf.

    (Bei der Gelegenheit könntest du auch ausprobieren ob niedriger Sampleraten als 24000 Hz unterstützt werden, also -r 12000 oder gar -r 6000, das erhöht schließlich auch die Chancen, dass es sich mit den 8 Kanälen doch ausgeht...)

  • Hallo, ich habe inzwischen alles Mögliche probiert und auch einige Male aufgenommen, leider ihne Erfolg. Auch habe ich mit dem Support der Soundkarte gesprochen welche mir die Bit und kHz Daten genannt haben welcche die Karte unterstützt. Leider klappt alles nicht, ich komme nicht mehr weiter. Ich habe auch hier einmal folgende Dinge angeschaut:

    /proc/asound/devices

    Code
    0: [ 0]   : control
      1:        : sequencer
      8: [ 0- 0]: raw midi
     16: [ 0- 0]: digital audio playback
     24: [ 0- 0]: digital audio capture
     33:        : timer

    Könnte das bedeuten, dass ich die falschen Kanäle aufnehme?

    Auch habe ich folgendes in die .asoundrc geschrieben:


    Leider schweigt sich der Support aus, welcher Soundchip in meiner Soundkarte verbaut ist.
    Ich habe den Rest der .asoundrc gleich belassen. Die neuen Zeilen dienen lediglich um Konflikte mit bestimmten Soundchips zu vermeiden.

    Hast Du noch eine Idde was man noch probieren kann bzw. ob ich die Falschen Kanäle ansteuere?

    Liebe Grüße und ein schönes Wochenende wünscht

    Tino

  • Die Hardware bzw. der Treiber erlauben es offensichtlich nur alle 8 Kanäle auf einmal anzusprechen, dh das Weglassen der nicht gewünschten Kanäle kann nur in Software passieren. Ein möglicher Weg dorthin hätte die beschriebene asound.conf sein sollen und rein prinzipiell kann ich keinen Fehler an meinem Vorschlag finden…
    Eine weitere Möglichkeit wäre ein Aufnahmeprogramm, das sich nur die interessanten Kanäle "herauspickt" und die Daten der anderen Kanäle einfach verwirft, aber ich bin mir bis jetzt weder mit alsa/arecord noch mit Pulseaudio/parecord sicher wie man das richtig macht.


    Dass bei den Aufnahmen bis jetzt aber überhaupt nichts außer Rauschen herausgekommen ist, kann auch an den Mixereinstellungen liegen. Poste vielleicht einmal die Ausgabe von

    Code
    $ amixer -c VSL

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!