Re: Sound-Treiber FreeBSD vs. Linux

From: Marc Santhoff <M.Santhoff(at)web.de>
Date: Tue, 19 Mar 2019 12:35:05 +0100

On Tue, 2019-03-19 at 10:10 +0100, Oliver Fromme wrote:
> Hi Marc,

Tag Olli,

> Marc Santhoff wrote:
> > Tag allerseits,
> >
> > nach etwas rumsuchen verstehe ich die derzeitige Lage so:
> >
> > Linux hat alles an Sound auf ALSA umgebaut, teilweise sogar mit Kernel-
> > Unterstützung für geringe Laufzeiten.
> >
> > FreeBSD benutzt nach wie vor OSS an Stelle von ALSA, weswegen auch in den
> > meisten Ports die Option ALSA per default ausgeschaltet ist.
> >
> > Man kann also vereinfacht sagen, alle Informationen zu Linux und Sound die
> > ALSA nennen kann ich unter FreeBSD als OSS lesen.
> >
> > Ist das richtig so?
> >
> > Ziel ist, mit FreeBSD und externem USB-Sound-IF ein paar Aufnahmen zu machen.
> > Bevor ich tatsächlich Hardware anschaffe und die womöglich zurückschicken muß,
> > möchte ich erstmal allgemein die Möglichkeiten kennenlernen. im Visier habe
> > ich derzeit audio/jack und audio/audacity.
>
> Sowas habe ich schon gemacht, allerdings habe ich zum Aufnehmen
> sox verwendet und dann mit ffmpeg nachbearbeitet (Schneiden,
> fade-in / fade-out, ggf. Lautstärke anpassen, mit AAC oder AC3
> komprimieren; für mp3 nehme ich lame). Ich komme damit besser
> zurecht als mit GUI-Tools, weil es sich viel besser scripten
> lässt, da ich häufig sich wiederholende Workflows habe, die
> nach Automatisierung schreien (in bestimmten Fällen schreibe
> ich dann mein eigenes GUI-Frontend mit Python + tkinter).

Scripting finde ich grundsätzlich gut, wenn meine Aufgaben damit zu erledigen
sind. Zum rumspielen und Prozeß entwerfen werde ich aber trotzdem erstmal was
grafisches benutzen müssen und wollen.

> Letztlich sollte es aber relativ egal sein, welche Software man
> verwendet. Im Prinzip kannst Du sogar dd(1) nehmen (vorher mit
> den sysctls hw.usb.uaudio.* und/oder dev.pcm.X.* die gewünschten
> Aufnahme-Parameter setzen). Auch um ALSA vs. OSS mache ich mir
> keinen Kopf; das funktioniert einfach alles out-of-the-box.

Dann nehme ich das erstmalso hin, wie auch immer der Systemtreiber heißt, wenn
er tönt, isses gut. ;)

Ein wichtiger Teil für mich ist, daß ich mehrere Quellen mit verschiedenen
Senken verbinden kann. Also etwa Eingangskanäle aufzeichnen, gleichzeitig am
Kopfhörerausgang mithören und zusätzlich am USB-Dings wieder ausgeben. Sowas
kann man sicher mit tee auch irgendwie ereichen, aber da geht ziemlich sicher
die Synchronisation verloren.

Viele USB-Geräte haben dafür eingebaute Schaltmatrizen, nur ist es oft so, daß
die Hersteller Windows-fixiert sind und das Umschalten klappen kann oder
nicht. Wenn nicht, gibt es dafür Audio-Server wie jack (oder PulseAudio,
uvm.), die sowas erledigen. Grade gesehen, sogar als ncurses-Version, also
Konsolenfähig.

Wenn das unter FreeBSD mit Bordmitteln zu erreichen ist, um so besser. Nur aus
dem Studium des Handbuchs und ein paar man pages erschließen sich mir die
Möglichkeiten nicht.

Wenn es geht würde ich gern per systemeigenem mixer die Kanäle zusammenknoten,
die miteinander ans gleiche Signal sollen. Bisher weiß ich nur, daß man
mittels sysctl dafür sorgen kann, daß etwa mehr Kanäle am Device verfügbar
sind (vchans), der default von 8 ist aber gut für mich. Neben den gewöhnlichen
Funktionen vom mixer, Lautstärke pro Kanal, Kanäle als record-Quelle
auswählen.

> Den Abschnitt „BUGS“ in der snd_uaudio(4)-Manpage solltest Du
> Dir evtl. mal durchlesen; es gibt da ein paar Kleinigkeiten, die
> man im Blick haben sollte. Das Kernelmodul wird automatisch
> geladen, wenn Du den USB-Adapter einstöpselst.

Hab ich gelesen, netterweise nichts dabei, daß mich sehr stören würde.
Allerdings kann einem "alle Kanäle am Gerät schließen bei DSP read error"
schon leicht auf die Füße fallen, denke ich.

> Ansonsten geht das ganz normal: Mit „cat /dev/sndstat“ schauen,
> welche Devices es gibt, und welches Dein USB-Audio-Adapter ist
> (dieser erscheint dort als „pcmX: <USB audio> (play/rec)“).
> Siehe auch die sound(4)-Manpage; dort wird die Infrastruktur
> ausführlich beschrieben, einschließlich der ganzen sysctls, die
> unter hw.snd.* und dev.pcm.* zu finden sind).

Klar, lineare Sachen wie aufzeichnen, filtern, speichern oder so funktionieren
hier auch bestens. Ich brauch aber jetzt 4 Kanäle ohne zwei Soundgeräte extra
synchronisieren zu müssen (was jack iirc auch können soll).

Zu den div. sysctls gibt es ja wenigstens Dokumentation, aber der
Systemzusammenhang ist mir noch nicht richtig klar.

--
Marc Santhoff <M.Santhoff(at)web.de>
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Tue 19 Mar 2019 - 12:35:25 CET

search this site