Nachtrag für einen Test, falls die Idee oben nicht zündet:
Mach aus der flac- eine wav-Datei. Und dann gib die allein aplay (ohne sox) vor, um der Formatfrage und der Kompatibilität mit der Hardware nachzuspüren.
Melomane hat geschrieben:Hallo Jürgen,
nur eine Idee.Es sieht für mich so aus, als wolle die Hardware unbedingt S32_LE. Möglicherweise musst du die nicht nur auf der rechten Seite der Pipe bei aplay vorgeben, sondern auch auf der linken bei sox.
Wenn das nichts nützt, muss der Experte (Frank) ran.
Gruß
Jochen
koslowj hat geschrieben:Nach weiteren Experimenten hat sich die oben beschriebenen Lösung nur als die zweitbeste herausgestellt. Natürlich sollte man sox dazu auffordern, Daten im 32Bit-Format bereitzustellen, anstatt an der Sample-Rate herumzuspielen. Dann klappt es auch bei 24Bit 96kHz Material usw.
sox mymusic.flac -t raw -b 32 - | aplay -t raw -f S32_LE -c 2 -r 44100 -D hw:0,0
koslowj hat geschrieben:Dann ein paar Fragen:
0. Was bedeuten Ausgaben der Form
playhrt: number of delayed loops: 5 (67151 sec 30786486 nsec)
Sie treten bei play_simple und bei play_writecatloop auf. (Wenn ich allerdings in play_writecatloop die Priorität von playhrt mit ``chrt -f 99'' erhöhe, entfallen diese Zeilen bei der Wiedergabe.) Normalerweise steigt die Anzahl der verspäteten Loops langsam an (wenn man einen vernünftigen Wert für EXTRABYTESPLAY gefunden hat.) Darf das passieren, oder sollte es vermieden werden?
koslowj hat geschrieben:1. Viele Musikstücke enden mit Ausgaben der Form
playhrt: number of delayed loops: 6 (68768 sec 64296977 nsec)
playhrt: average available buffer: 8009 (68768 sec 78263993 nsec)
playhrt: bad read, 8 bytes missing at 68770.814801485
playhrt: bad read, 352 bytes missing at 68770.815799129
playhrt: Loops: 236230 (6 delayed), total bytes: 83152608 in 83152608 out.
playhrt: Bad loops/frames written: 0/0, bad reads/bytes: 2/360
Was hat es mit den 'bad reads'' auf sich? Die scheinen ganz am Ende aufzutreten. Die "input chunk size" dürfte bei 360 gelegen haben, was gerade 8+352 ist. Vermutlich ist das unerheblich.
koslowj hat geschrieben:2. Die "bad reads" machen es mir bisher leider auch unmöglich, play_upsample_convolve auszuprobieren. Beispiel:
playhrt: Step size is 999453 nsec.
playhrt: Setting input chunk size to 1536 bytes.
playhrt: Input buffer size is 68800 bytes.
playhrt: Accessing card in non-block mode.
playhrt: Min and max buffer size of device 48 .. 131072 - using 8064.
playhrt: Using mmap access.
playhrt: Start time (14199 sec 567084133 nsec)
playhrt: bad read, 512 bytes missing at 14199.570082492
playhrt: bad read, 512 bytes missing at 14199.573080851
playhrt: bad read, 512 bytes missing at 14199.576079210
playhrt: bad read, 512 bytes missing at 14199.579077569
playhrt: had 4 bad reads . . . exiting
playhrt: Loops: 12 (12 delayed), total bytes: 15360 in 15360 out.
playhrt: Bad loops/frames written: 0/0, bad reads/bytes: 4/2048
Terminated
koslowj hat geschrieben:je nach Einstellung des Werts für EXTRABYTESPLAY. Der steht zunächst auf 0, ich habe hier aber keine Idee, was ich einstellen soll. Für 44100 kHz und 96000 kHz hatten sich bei play_simple und play_volrace ganz verschiedene Werte ergeben, ca. 830 bzw. ca 60. Für Hinweise wäre ich dankbar.
koslowj hat geschrieben:Übrigens scheinen zwei Versionen von play_upsample_convolve zu existieren: die im Source-Code-Paket
koslowj hat geschrieben:Noch eine ganz andere Frage: wie lassen sich .dff Dateien handhaben? Mit MPD-basierten Programmen lassen die sich abspielen. Es wäre schön, wenn das auch hier ginge.
cptoshm --buffer-size=4194312 --file=/var/tmp/privat/ramdisk/playlist_files/SilvertownBlues.wav --shmname=/inpipe_cpcat --verbose ;
sleep_pipe_programs_cptoshm ;
shmcat --block-size=176 --shmname=/inpipe_cpcat --verbose |
sox --buffer 1024 -b 16 -c 2 -e signed -r 44100 -t wav - -b 64 -c 2 -e floating-point -r 44100 -t raw - |
sox --buffer 1024 -b 64 -c 2 -e floating-point -r 44100 -t raw - -b 64 -c 2 -e floating-point -t raw - vol 0.8 rate -v -I 192000 |
volrace --verbose --param-file=/var/tmp/privat/ramdisk/volrace_runtime_parameters |
brutefir /home/privat/_brutefir/lr-ms/brutefir_config_lr-ms |
sox --buffer 1024 -b 64 -c 2 -e floating-point -r 192000 -t raw - -b 64 -c 2 -e floating-point -t raw - vol 0.8 rate -v -I 96000 |
sox --buffer 1024 -b 64 -c 2 -e floating-point -r 96000 -t raw - -b 32 -c 2 -e signed -r 96000 -t raw - |
writeloop --block-size=768 --file-size=4608 --verbose --shared /outpipe_wcl_1 outpipe_wcl_2 outpipe_wcl_3 &
sleep_pipe_programs_brutefir ;
sleep_pipe_programs_writeloop outbuffer ;
catloop --block-size=768 --verbose --shared /outpipe_wcl_1 outpipe_wcl_2 outpipe_wcl_3 |
chrt -r 99 taskset -c 0 playhrt --stdin --buffer-size=1536 --device=hw:0,0 --extra-bytes-per-second=0 --extra-frames-out=24 --hw-buffer=2048 --loops-per-second=1000 --mmap --non-blocking-write --number-channels=2 --sample-format=S32_LE --sample-rate=96000 --sleep=10 --verbose
FoLLgoTT hat geschrieben:Nachdem ich mir den Quellcode angeschaut habe, war mir klar, dass der Lautstärke
regelnde Teil von VOLRACE bereits mehrkanalig funktioniert
Daihedz hat geschrieben:Und wie steht es bei 8-Kanal mit der Kanalzuweisung des RACE-Teils von Volrace?
Daihedz hat geschrieben:Hallo NilsFoLLgoTT hat geschrieben:Nachdem ich mir den Quellcode angeschaut habe, war mir klar, dass der Lautstärke
regelnde Teil von VOLRACE bereits mehrkanalig funktioniert
Und wie steht es bei 8-Kanal mit der Kanalzuweisung des RACE-Teils von Volrace?
Ich verwende deshalb volrace bis zur Klärung lieber vor brutefir, und überprüfe mit einem brutefir-wartescript, ob brutefir einwandfrei funktioniert, bevor Daten an den DAC weitergereicht werden.
frankl hat geschrieben:(Falls das Fading bei Parameteränderung ein bisschen schnell ist oder komisch klingt kann man das per --fading-length etwas verlängern.)
Daihedz hat geschrieben:Eine Frage in die Runde: Wer oder was wandelt besser - brutefir oder sox?
Mitglieder in diesem Forum: 0 Mitglieder und 5 Gäste