Ergebnis 1 bis 3 von 3

Thema: snd_aloop Auf einem Raspberry Pi...

  1. #1
    Registriert seit
    10.12.2003
    Beiträge
    3.902

    snd_aloop Auf einem Raspberry Pi...

    Hallo zusammen,

    hat jemand ein Anleitung wie ich auf einem Raspberry Pi 3 mit einer Soundkarte sowohl die Auswertung (mit monitord) als auch eine zeitweise Aufzeichnung (mit sox/rec) realisieren kann?

    Testweise spiel' ich grad mit 2 USB-Soundkarten, die das gleiche Eingangssignal kriegen...aber das kann doch nicht die richtige Lösung sein...
    Felix
    felix[null][null][null]@funkmeldesystem.de

  2. #2
    Registriert seit
    21.08.2005
    Beiträge
    251
    Hallo Felix,

    Ich bastle gerade an einem Auswerter mit RTL_SDR und multimon_ng. Das monitord-Projekt ist ja leider nicht weiter entwickelt worden.
    Auf dem PC funktioniert das bereits gut. Ich nutze lediglich ALSA und den alsamixer, um Audio-Out auch als Input zu schalten.

    Dann "füttere" ich in einem Terminal das Funksignal in den Mixer (und damit auch auf die Lautsprecher)

    rtl_fm -f [frequenz]-l80 | aplay -r 24000 -f S16_LE -t raw -c 1

    In einem anderen Terminal läuft dann die Auswertung

    arecord -f S16_LE -c1 -r22050 -t raw | multimon-ng -t raw -a FMSFSK -a ZVEI1 -f alpha -

    und diese Ausgabe pipe ich dann in ein Skript, welches die Ausgabe filtert, korrigiert und in Abhängigkeit des Outputs aufnahmen startet:

    if [ dies, das, jenes ]
    then
    arecord -f S16_LE -c1 -r22050 -t raw -d $rectime | lame -r -s 22.05 -m m -b 64 - "$almtime-$schleife.mp3" &
    fi


    Auf dem PC klappt das bislang prima. Auswerter und Aufnahme laufen parallel.

    Auf den von mir getesteten ARM-Kleincomputern
    - Banana PI
    - Odroid C2
    Kriege ich den Alsamixer aber nicht dazu, den Audio-Output auf den Input zu Routen. Der C2 hat gar keine passende Soundkarte und der Banana kann's nicht.

    Ich probiere als nächstes billige USB-Soundkarten. Da hängt dann zwar nichts dran, aber sie können evtl das interne Out to In Routing übernehmen -- und wenn nicht, kann man immer noch ein physisches Loop-Kabel von Out zu In legen.
    Im Alsa Projekt gäbe es eine Dummy-Karte, aber mit der habe ich es bislang nicht ans Laufen bekommen.

    Und ich schau mal, ob es ein Raspberry Pi 3 vielleicht besser hin bekommt, als der Banana und der Odroid oder ob virtual Mixer/cable wie Pulsaudio und Jack das besser machen, als Alsa.

    Andreas

  3. #3
    Registriert seit
    21.08.2005
    Beiträge
    251
    Hallo Felix,

    Ich habe dein Problem wie folgt auf dem Banana Pi gelöst. Das soltle sich aber auch auf einem Raspberry Pi so machen lassen:
    Ich nutze dazu den Pulseaudio Server.

    Installation:

    aptitude install pulseaudio pulseaudio-utils

    oder auch

    apt-get install pulseaudio pulseaudio-utils


    Danach in der ALSA-Konfig den Pulseaudio Server als default Device festlegen:
    /etc/asound.conf

    pcm.pulse { type pulse }
    ctl.pulse { type pulse }
    pcm.!default { type pulse }
    ctl.!default { type pulse }


    Wenn Pulseaudio läuft, rufst du eine Liste deiner Devices ab:

    > pacmd list-sources | grep -e device.string -e 'name:'
    name:
    device.string = "0"
    name:
    device.string = "hw:0"


    Aus dieser Liste suchtst du die Soundkarte, deren Line-IN du verwenden willst (den .monitor Eintrag) und setzt diese Karte als Default Input in der Konfiguration vom Pulseaudio-Server ein:
    Einfach in /etc/pulse/default.pa am Ende:

    set-default-source alsa_output.platform-1c22c00.codec.analog-stereo.monitor

    Hinzufügen, oder wie auch immer deine Soundkarte heisst.

    Dann mit alsamixer den richtigen Input-Pegel einstellen.
    Jetzt kannst du mit mehreren Tasks simultan lesend auf den Input zugreifen, ohne das Device explizit angeben zu müssen.

    Zum Testen beispielsweise folgendes eingeben:

    arecord -f S16_LE -c1 -r22050 -d 30 test_1.wav & \
    arecord -f S16_LE -c1 -r22050 -d 30 test_2.wav

    Dann müsste der Pi simultan den Sound vom Input in beide wav-dateien 30 Sekunden lang aufnehmen.

    In der Praxis könntest du dann einen Decoder-Task und einen Record-Task parallel laufen lassen oder vom Decoder aus den Record anstossen.

    viele Grüße,
    Andreas

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •