PulseAudio und 96/24 - 48/24 ?

  • Auf meinem Rechner habe ich Fedora 13 laufen und zum Musik hören benutze ich MPD mit GMPC als Client. Als Soundkarte dient eine Audiotrak Prodigy HD2, die ich mir für hochwertige Audiowiedergabe über Analogausgang zugelegt habe. Meine Musik liegt in FLAC vor, eigene Vinyl Rips in 96/24, 48/24, meine CD Rips in 44/16. Ich möchte eine bitperfekte Wiedergabe haben.

    MPD mit alsa zu benutzen funktioniert nur sehr eingeschränkt, da der client ständig 'problems opening audio device' meldet. Mit PulseAudio habe ich dieses Problem nicht. Er spielt alles ab. Meine Frage ist nun, ob PulseAudio überhaupt 24 bit wiedergeben kann, oder alles auf 44/16 runtersampelt, worauf ich schließe nach Eingabe von "pactl stat"
    in ein Terminal, worauf folgende Ausgabe erfolgt:

    Name des Servers: pulseaudio
    Version des Server: 0.9.21
    Standard-Sample-Angabe: s16le 2ch 44100Hz
    Standard-Kanal-Zuordnung: front-left,front-right
    Standard-Ausgabe: alsa_output.pci-0000_03_06.0.analog-stereo
    -Standard-Quelle: alsa_input.pci-0000_03_06.0.analog-stereo
    Cookie: 383776dc


    Gibt es eine Möglichkeit, PulseAudio, bzw. alsa, auf das zugegriffen wird, so zu konfigurieren, dass ich eine bitperfekte Wiedergabe erreiche?

    Über Hilfe zu meinem Problem würde ich mich sehr freuen.

    MFG

  • Zitat

    Die Prozessor-Auslastung und die Qualität des Klangs (wichtig bei älterer Hardware!) hängen von der verwendeten Resampling-Methode ab. Änderungen sind durch das Editieren der Datei /etc/pulse/daemon.conf in einem Editor [4] mit Root-Rechten [3] möglich, verwendbar für "resample-method" sind [1]:

    Quelle : UU Wiki

  • Danke dir für die schnelle Antwort. Leider ändern Änderungen in der /etc/pulse/daemon.conf nichts an der ausgabe von pactl stat.

    Hier mal meine daemon.conf:


    # This file is part of PulseAudio.
    #
    # PulseAudio is free software; you can redistribute it and/or modify
    # it under the terms of the GNU Lesser General Public License as published by
    # the Free Software Foundation; either version 2 of the License, or
    # (at your option) any later version.
    #
    # PulseAudio is distributed in the hope that it will be useful, but
    # WITHOUT ANY WARRANTY; without even the implied warranty of
    # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    # General Public License for more details.
    #
    # You should have received a copy of the GNU Lesser General Public License
    # along with PulseAudio; if not, write to the Free Software
    # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
    # USA.

    ## Configuration file for the PulseAudio daemon. See pulse-daemon.conf(5) for
    ## more information. Default values a commented out. Use either ; or # for
    ## commenting.

    ; daemonize = no
    ; fail = yes
    ; allow-module-loading = yes
    ; allow-exit = yes
    ; use-pid-file = yes
    ; system-instance = no
    ; enable-shm = yes
    ; shm-size-bytes = 0 # setting this 0 will use the system-default, usually 64 MiB
    ; lock-memory = no
    ; cpu-limit = no

    ; high-priority = yes
    ; nice-level = -11

    ; realtime-scheduling = yes
    ; realtime-priority = 5

    ; exit-idle-time = 20
    ; scache-idle-time = 20

    ; dl-search-path = (depends on architecture)

    ; load-default-script-file = yes
    ; default-script-file =

    ; log-target = auto
    ; log-level = notice
    ; log-meta = no
    ; log-time = no
    ; log-backtrace = 0

    # resample-method = speex-float-9
    # enable-remixing = yes
    ; enable-lfe-remixing = no

    ; flat-volumes = yes

    ; rlimit-fsize = -1
    ; rlimit-data = -1
    ; rlimit-stack = -1
    ; rlimit-core = -1
    ; rlimit-as = -1
    ; rlimit-rss = -1
    ; rlimit-nproc = -1
    ; rlimit-nofile = 256
    ; rlimit-memlock = -1
    ; rlimit-locks = -1
    ; rlimit-sigpending = -1
    ; rlimit-msgqueue = -1
    ; rlimit-nice = 31
    ; rlimit-rtprio = 9
    ; rlimit-rttime = 1000000

    # default-sample-format = s16le
    # default-sample-rate = 192000
    ; default-sample-channels = 2
    ; default-channel-map = front-left,front-right

    ; default-fragments = 4
    ; default-fragment-size-msec = 25


    Meine Soundkarte unterstützt bis 192/24 und mein Rechner ist relativ neu (Dual Core Phenom II, 4 GB RAM)


    Was kann ich noch einstellen, um ein optimales Ergebnis zu erzielen?


    Gruß

  • Zitat

    MPD mit alsa zu benutzen funktioniert nur sehr eingeschränkt, da der client ständig 'problems opening audio device' meldet.

    Du weißt aber schon, das Pulse Audio auf Alsa aufsetzt?

    Wie sieht denn deine mpd.conf aus....

    Ungefähr so...

    Code
    ...audio_output {        type    "pulse"        name    "My MPD PulseAudio Output"        server  "localhost"   # optional        sink    "alsa_output" # optional}...

    Quelle

    Code
    # default-sample-format = s16le
    # default-sample-rate = 192000
    ; default-sample-channels = 2
    ; default-channel-map = front-left,front-right

    Du weißt das Zeilen die mit # beginnen, nicht gelesen werden.

    pulse-daemon.conf(5) - Linux man page

  • Ich habe absichtlich # vor die beiden Zeilen gesetzt, um diese auszukommentieren. Damit samplle rate sowie sample format Pulse egal sind. Ursprünglich stand hinter sample rate 44100, das habe ich in 192000 geändert, weil das aber nichts an der Ausgabe von pactl stat geändert hat, habe ich die Zeilen auskommentiert.


    Meine mpd.conf:

    Wäre ich mit alsa besser bedient als mit Pulse? Oder kann ich mit Pulse ein optimales Ergebnis erzielen?

    Gruß

    Einmal editiert, zuletzt von LigH (3. September 2010 um 22:01)

  • Ich denke schon das du mit Pulse optimale Ergebnisse erzielen kannst, allerdings muss ich mit der detaillierten Konfiguration erst mal auseinandersetzen, daher kann ich nicht sofort was dazu sagen.

    Zitat

    Ursprünglich stand hinter sample rate 44100, das habe ich in 192000 geändert, weil das aber nichts an der Ausgabe von pactl stat geändert hat, habe ich die Zeilen auskommentiert.


    In der Wiki von Arch Linux habe ich gelesen das 44100 durch 48000 ersetzt werden soll.(Bug, oder so)

  • 96000 oder mehr werden dann aber nicht als 48000 wiedergegeben? Also dass der runtersampelt...

    werd es aber mal ausprobieren...

    Bis jetzt ist es jedenfalls so, dass, egal was ich in der pulse config datei eintrage, mit oder ohne Raute davor, sich an der Ausgabe von pactl stat nichts ändert. Immer 44100 Hz, 16 bit.

    Optimal wäre für mich, dass alle Dateien richtig wiedergegeben werden, unabhängig von sample format und sample rate. 24 bit audio macht ja nur Sinn, wenn es auch wiedergegeben wird und nicht auf 16 runtercodiert wird.

    Bin dir jedenfalls sehr dankbar, dass du dich so mit meinem "Problem" beschäftigst ;)

    Gruß

  • Es könnte alles so einfach sein...ist es aber nicht...wenn man wissen will wie was funktioniert und warum?

    Dann habe ich mich via Jabber mit Musikern unterhalten, die sagten O-Ton " Für professionelle/audiophile Ansprüche würde nur "Jack" in Frage kommen.

    Noch eine Grafik...

    Noch ein wenig Geduld dann finde ich auch die ideale Pulse-Audio Konfiguration

  • Von Jack habe ich noch nichts gehört. Könnte der denn was für mich sein? Oder ist ein richtig konfigurierter Pulse bzw. vielleicht doch alsa besser für mich?

    Gruß

  • Hallo,

    Jack kann seine Vorteile in erster Linie im Zusammenspiel mit der unter Linux prof. Audiosoftware wie Ardour, Rosegarden usw. ausspielen, da er mit einigen lästigen Einschränkungen von alsa aufräumte. Für das Musikhören (auch in höchstmöglicher realisierbarer Qualität) würde ich persönlich es unter Fedora bei Pulseaudio belassen. Wenn man das nicht mag kann man PA immer noch entfernen und das reine alsa verwenden, was bildlich gesprochen die kürzeste "Verbindung" darstellen sollte.

    Ein Vorteil von Jack ist zweifellos die einfache grafische Konfiguration die zudem sehr viele Einstellmöglichkeiten bietet:

    [Blockierte Grafik: http://www.imgbox.de/users/public/thumbnails/lXM8oTjeBL_t.gif]

    Code
    yum install jack qjackctl pulseaudio-module-jack

    installiert das benötigte. Nun die Nachteile: Nicht alle Anwendungen können oder wollen mit Jack. Bei einigen klappt es gar nicht da generell keine Unterstützung, andere benötigen eine teils mühsame Nachkonfiguration. Wenn die unterstützten Programme ausreichen spricht andererseits nichts dagegen es mal mit Jack zu versuchen. Seit Fedora 12 sollte Jack Pulseaudio auch nicht mehr blockieren.

    Weitaus einfacher und weniger aufwändig wäre es die benötigten Anpassungen an Pulseaudio vorzunehmen. Die Standard-sample-rate wird in der /etc/pulse/default.pa festgelegt. Diese mit beliebigem Editor öffnen und die folgende Zeile auskommentieren und mit deviceangabe gewünschter Samplefrequenz ergänzen:

    Code
    #load-module module-alsa-sink

    Bespiel: load-module module-alsa-sink device=BEZEICHNUNG rate=48000

    Danach Pulseaudio neu starten und die Änderungen sollten übernommen sein.

  • load-module module-alsa-sink device=BEZEICHNUNG rate=48000

    ändert leider nichts. Ausgabe von pactl stat weiterhin:


    Name des Servers: pulseaudio
    Version des Server: 0.9.21
    Standard-Sample-Angabe: s16le 2ch 44100Hz
    Standard-Kanal-Zuordnung: front-left,front-right
    Standard-Ausgabe: alsa_output.pci-0000_03_06.0.analog-stereo
    -Standard-Quelle: alsa_input.pci-0000_03_06.0.analog-stereo
    Cookie: 3f405c3e
    [Michi@michi-desktop ~]$ pactl stat
    Momentane Nutzung: 1 Blöcke mit insgesamt 63,9 KB Bytes.
    Während gesamter Laufzeit: 152 Blöcke mit insgesamt 7,8 MB Bytes.
    Sample-Pufferspeichergrösse: 0 B
    Name des Nutzers: Michi
    Rechnername: michi-desktop
    Name des Servers: pulseaudio
    Version des Server: 0.9.21
    Standard-Sample-Angabe: s16le 2ch 44100Hz
    Standard-Kanal-Zuordnung: front-left,front-right
    Standard-Ausgabe: alsa_output.pci-0000_03_06.0.analog-stereo
    -Standard-Quelle: alsa_input.pci-0000_03_06.0.analog-stereo


    Gruß

  • Seltsam. Das müsste eigentlich ohne weiteres funktionieren. Tut es bei mir ja auch denn pulseaudio hält sich an die in der default.pa gemachten Angaben. Ich gehe davon aus das Bezeichnung in device=BEZEICHNUNG durch die Angabe der Soundkarte ersetzt wurde. ;)

    Wenn Pulseaudio beim Neustart dann eine Einstellung missachtet hätte eigentliche eine Fehlermeldung "load error" oder ähnliches reportiert werden müssen. Stell doch bitte mal Deine /etc/pulse/default.pa zur Verfügung. Dann kann man sich am ehesten ein rundes "Bild" machen.

  • Hier meine /etc/pulse/default.pa:

    #!/usr/bin/pulseaudio -nF
    #
    # This file is part of PulseAudio.
    #
    # PulseAudio is free software; you can redistribute it and/or modify it
    # under the terms of the GNU Lesser General Public License as published by
    # the Free Software Foundation; either version 2 of the License, or
    # (at your option) any later version.
    #
    # PulseAudio is distributed in the hope that it will be useful, but
    # WITHOUT ANY WARRANTY; without even the implied warranty of
    # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    # General Public License for more details.
    #
    # You should have received a copy of the GNU Lesser General Public License
    # along with PulseAudio; if not, write to the Free Software Foundation,
    # Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.

    # This startup script is used only if PulseAudio is started per-user
    # (i.e. not in system mode)

    .nofail

    ### Load something into the sample cache
    #load-sample-lazy x11-bell /usr/share/sounds/gtk-events/activate.wav
    #load-sample-lazy pulse-hotplug /usr/share/sounds/startup3.wav
    #load-sample-lazy pulse-coldplug /usr/share/sounds/startup3.wav
    #load-sample-lazy pulse-access /usr/share/sounds/generic.wav

    .fail

    ### Automatically restore the volume of streams and devices
    load-module module-device-restore
    load-module module-stream-restore
    load-module module-card-restore

    ### Automatically augment property information from .desktop files
    ### stored in /usr/share/application
    load-module module-augment-properties

    ### Load audio drivers statically (it's probably better to not load
    ### these drivers manually, but instead use module-hal-detect --
    ### see below -- for doing this automatically)
    #load-module module-alsa-sink device=BEZEICHNUNG rate=48000
    #load-module module-alsa-source device=hw:1,0
    #load-module module-oss device="/dev/dsp" sink_name=output source_name=input
    #load-module module-oss-mmap device="/dev/dsp" sink_name=output source_name=input
    #load-module module-null-sink
    #load-module module-pipe-sink

    ### Automatically load driver modules depending on the hardware available
    .ifexists module-udev-detect.so
    load-module module-udev-detect
    .else
    ### Alternatively use the static hardware detection module (for systems that
    ### lack udev support)
    load-module module-detect
    .endif

    ### Automatically load driver modules for Bluetooth hardware
    .ifexists module-bluetooth-discover.so
    load-module module-bluetooth-discover
    .endif

    ### Load several protocols
    .ifexists module-esound-protocol-unix.so
    load-module module-esound-protocol-unix
    .endif
    load-module module-native-protocol-unix

    ### Network access (may be configured with paprefs, so leave this commented
    ### here if you plan to use paprefs)
    #load-module module-esound-protocol-tcp
    #load-module module-native-protocol-tcp
    #load-module module-zeroconf-publish

    ### Load the RTP reciever module (also configured via paprefs, see above)
    #load-module module-rtp-recv

    ### Load the RTP sender module (also configured via paprefs, see above)
    load-module module-null-sink sink_name=rtp format=s32le channels=2 rate=192000 description="RTP Multicast Sink"
    #load-module module-rtp-send source=rtp.monitor

    ### Load additional modules from GConf settings. This can be configured with the paprefs tool.
    ### Please keep in mind that the modules configured by paprefs might conflict with manually
    ### loaded modules.
    .ifexists module-gconf.so
    .nofail
    load-module module-gconf
    .fail
    .endif

    ### Automatically restore the default sink/source when changed by the user during runtime
    load-module module-default-device-restore

    ### Automatically move streams to the default sink if the sink they are
    ### connected to dies, similar for sources
    load-module module-rescue-streams

    ### Make sure we always have a sink around, even if it is a null sink.
    load-module module-always-sink

    ### Honour intended role device property
    load-module module-intended-roles

    ### Automatically suspend sinks/sources that become idle for too long
    load-module module-suspend-on-idle

    ### If autoexit on idle is enabled we want to make sure we only quit
    ### when no local session needs us anymore.
    load-module module-console-kit

    ### Enable positioned event sounds
    load-module module-position-event-sounds

    ### Cork music streams when a phone stream is active
    load-module module-cork-music-on-phone

    # X11 modules should not be started from default.pa so that one daemon
    # can be shared by multiple sessions.

    ### Load X11 bell module
    #load-module module-x11-bell sample=bell-windowing-system

    ### Register ourselves in the X11 session manager
    #load-module module-x11-xsmp

    ### Publish connection data in the X11 root window
    #.ifexists module-x11-publish.so
    #.nofail
    #load-module module-x11-publish
    #.fail
    #.endif

    ### Make some devices default
    #set-default-sink output
    #set-default-source input

  • Zitat

    #load-module module-alsa-sink device=BEZEICHNUNG rate=48000

    So kann das auch nicht funktionieren. Zuerst mal muss die Zeile überhaupt berücksichtigt werden (Raute entfernen) und bei device muss die verwendete Soundkarte angegeben werden. Also z.B.:

    Code
    load-module module-alsa-sink device=hw0,1 rate=48000

    Danach Pulseaudio auf der Konsole neu starten und wenn keine Rückmeldungen in Form von Load Errors kommen sollte die neue Einstellung korrekt verwendet werden.

  • Wenn ich auf 48000 einstelle, gibt mpd keinen Ton von sich, bei 16-44. Damit etwas wiedergegeben wird, muss ich vor die betreffende Zeile eine Raute setzen...

    Aber egal, was ich da einstelle, pactl stat sagt immer das gleiche...

  • Scheint so, dass ich mein "Problem" gelöst bekommen habe. Nicht nur in /etc/pulse/default.pa muss etwas verändert werden, sondern gleichzeitig in der damon.conf. s24be und 192000 habe ich da eingetragen, die Ausgabe von pactl stat ist nun korrekt.

    Gibt es einen Unterschied zwischen be und le, float und was es sonst noch so gibt?

    Gruß

  • BE = Big Endian / LE = Little Endian: Die Reihenfolge der Bytes bei Integer- (Ganzzahl-) Samples mit mehr als 8 bit. Wenn du die falsche auswählst, rauscht es bis zur Übersteuerung schon bei leisen Szenen, weil hier die niederwertigsten Daten durch die Vertauschung den höchsten Wert erhalten. Das ist auch der Hauptunterschied zwischen intel-PC und damals Motorola-Mac, und insofern auch der Hauptunterschied der PCM-Sample-Daten zwischen WAV und AIFF.

    Float: Standardisierte Fließkommadarstellung für höheren Dynamikumfang (bei einfacher Genauigkeit = Single Precision: 24 bit Mantisse, 7 bit Exponent, 1 bit Vorzeichen). Gut zum Speichern hoher Auflösung, aber ... welche Geräte können das nativ aufzeichnen oder wiedergeben?! Durchschnittliche PC-Soundkarten bestimmt meistens nicht.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!