Zobraziť predchádzajúcu tému :: Zobraziť nasledujúcu tému |
Autor |
Správa |
Odar Hifi inventar
Založený: 14 december 2009 Príspevky: 3180
|
|
Návrat hore |
|
|
miero Hifi inventar
Založený: 08 september 2010 Príspevky: 11552 Bydlisko: Praha
|
Zaslal: Ne september 15, 2013 12:26:56 Predmet: |
|
|
Ak mas debian/ubuntu tak si skus nainstalovat PREEMPT, resp RT kernel.
Inak skusam momentalne nasledujucu zvrhlost - kvoli kompatibilite s youtube, spotify s moznostou ekvalizeru:
- klient -> ALSA:nodmix -> PulseAudio -> JACK -> equalizer (VST plugin cez wine) -> JACK(real-time) -> ALSA:HW
Inak bitperfect mi starosti nerobi, hlavne ze sa neresampluje :D |
|
Návrat hore |
|
|
dustin Hifi inventar
Založený: 06 október 2006 Príspevky: 4857 Bydlisko: Plzeň
|
Zaslal: Ne september 15, 2013 21:43:08 Predmet: Re: Linux pre prehravanie audia? |
|
|
Odar napísal: | Trochu som sa vcera hrabal na nete. Nasiel som takzvany Audiophile Linux http://www.ap-linux.com/ Neskusal ho niekto? |
Již pár měsíců kolující hype v kruzích audiofilů. Stačí vhodné pojmenování, na web naházet pár "klíčových" frází a rázem je zájem zažehnut.
citácia: | Udajne je tam specialne kompilovany kernel pre co najnizsiu latenciu. |
Viz výše
citácia: | Osobne som zrovna pri prinose nizkej latencie velmi skepticky |
Hurá
citácia: | , ale minimalne by mal byt nastaveny ako bitperfect, co pri ladeni napr. v Ubuntu moze byt na dlhe lakte. |
Autor této úpravy ubuntu sám prohlašuje, že audiu nerozumí a dělal to pro svého kamaráda audiofila. Ten jej zřejmě nabrífoval požadovanými funkcemi.
Použití jacku je nesmysl, autor tím dosahuje jen rádoby minimální latence. Jenže jack běží jen na jedné frekvenci (tedy nelze se vyhnout resamplování všech ostatních tracků) a nepřináší pro tento účel vůbec nic. Nakonec ani tu minimální latenci, protože vlastní jack sice žádné navýšení latence nevnáší, ale přehrávač s jackovým výstupem má stejně pořádné buffery (a je to tak správně), jen ten výstup jede přes jack, místo rovnou přes alsu. Hovadina na n-tou. Ale vysvětli to audiofilům...
citácia: | Navyse trosku by som ocakaval, ze tam bude nejako rieseny aj SoX upsampling . . . |
Autor netuší, která bije, natož aby řešil algoritmy resamplingu.
Jinak mrkni na http://blog.ivitera.com/pavel/linux-audio/simple-use-of-libsoxr-lsr-in-alsa-using-ld_preload , na hraní už to funguje snadno. |
|
Návrat hore |
|
|
dustin Hifi inventar
Založený: 06 október 2006 Príspevky: 4857 Bydlisko: Plzeň
|
Zaslal: Ne september 15, 2013 21:49:53 Predmet: |
|
|
miero napísal: | Ak mas debian/ubuntu tak si skus nainstalovat PREEMPT, resp RT kernel.
Inak skusam momentalne nasledujucu zvrhlost - kvoli kompatibilite s youtube, spotify s moznostou ekvalizeru:
- klient -> ALSA:nodmix -> PulseAudio -> JACK -> equalizer (VST plugin cez wine) -> JACK(real-time) -> ALSA:HW |
A nezkoušel jsi nativní ekvalizéry pro alsu, např. http://www.thedigitalmachine.net/alsaequal.html http://wiki.linuxmce.org/index.php/Equalizer_for_ALSA ?
miero napísal: | Inak bitperfect mi starosti nerobi, hlavne ze sa neresampluje |
Pokud přehráváš jinou frekvenci, než máš nastavenou v jacku, resampluje pulseaudio, aby to mohlo poslat dál jacku. |
|
Návrat hore |
|
|
miero Hifi inventar
Založený: 08 september 2010 Príspevky: 11552 Bydlisko: Praha
|
Zaslal: Ne september 15, 2013 22:15:22 Predmet: |
|
|
Nativne pluginy pre alsu som skusal len kratko a davnejsie, ale padali mi s tym programy co pouzivam.
VST pluginy su kvalitou i funkciami vyrazne dalej, kedze ich pouzivaju profesionali. A jeden znamy sa nimi i zivi, tak som to skusit pouzit pre hifi.
Napriklad jeho zakladny parametricky ekvalizer MEqualizer, ktory je zdarma, ponuka vyrazne viac moznosti ako bezne ekvalizery v prehravacoch, ci ine pluginy.
Zmenu frekvencie som teraz neriesil, prehravam CD, ale naskriptovat sa da vsetko - i kompletny restart toho "plugin retazca" s inou frekvenciou. Inak pulseaudio bezi tiez len na jednej frekvencii.
Akurat stabilne mi to teraz nepride - obcas pada jackd i pulseaudio, este budem musiet par veci poladit. |
|
Návrat hore |
|
|
Odar Hifi inventar
Založený: 14 december 2009 Príspevky: 3180
|
Zaslal: Po september 16, 2013 07:17:16 Predmet: |
|
|
dustin vdaka za nasmerovanie. Setris cas |
|
Návrat hore |
|
|
dustin Hifi inventar
Založený: 06 október 2006 Príspevky: 4857 Bydlisko: Plzeň
|
Zaslal: Po september 16, 2013 09:01:35 Predmet: |
|
|
miero, fakt bych na tvém místě zkusil ten LADSPový ekvalizér. Takhle složitý řetězec bude vždycky náchylný k problémům. |
|
Návrat hore |
|
|
dustin Hifi inventar
Založený: 06 október 2006 Príspevky: 4857 Bydlisko: Plzeň
|
|
Návrat hore |
|
|
Coques Hifista - zaslúžilec
Založený: 24 október 2006 Príspevky: 762 Bydlisko: CZ
|
Zaslal: Št september 26, 2013 17:10:30 Predmet: |
|
|
dustin,
díky za tip, je možné toto zprevádzkovať s použitím xbmc?
Viem, že som skúšal aktivovať resampling v ALSA a xbmc to ignorovalo.
Teraz si síce xbmc rieši resampling interne cez libsamplerate (natvrdo MEDIUM), ale chcelo by to práve ten sox. |
|
Návrat hore |
|
|
dustin Hifi inventar
Založený: 06 október 2006 Príspevky: 4857 Bydlisko: Plzeň
|
Zaslal: Št september 26, 2013 19:58:36 Predmet: |
|
|
Je to jednoduché - najdi si, kde máš umístěnou tu knihovnu libsoxr-lsr a xbmc spouštěj s tím parametrem LD_PRELOAD. Nejdříve bych se ještě přes ldd cesta_k_binarce_xbmc přesvědčil, že opravdu libsamplerate používá. |
|
Návrat hore |
|
|
Coques Hifista - zaslúžilec
Založený: 24 október 2006 Príspevky: 762 Bydlisko: CZ
|
Zaslal: Št september 26, 2013 20:23:24 Predmet: |
|
|
cs@pc:~/bin$ ldd /usr/lib/xbmc/xbmc.bin |grep -i -e sox -e sample
libsamplerate.so.0 => /usr/lib/i386-linux-gnu/libsamplerate.so.0 (0xb62d8000)
Do bash skriptu /usr/bin/xbmc som pridal LD_PRELOAD
while [ $(( $while [ $(( $LOOP )) = "1" ]
do
LOOP=0
"$LIBDIR/xbmc/xbmc.bin" $SAVED_ARGS
LD_PRELOAD=/usr/lib/i386-linux-gnu/libsoxr.so.0 /usr/lib/xbmc/xbmc.bin
RET=$?
if [ $(( $RET == 65 )) = "1" ]
then # User requested to restart app
Ale moc sa mi nezda ze by sa zlepsilo vyuzitie CPU, stale na cca 20-30% |
|
Návrat hore |
|
|
dustin Hifi inventar
Založený: 06 október 2006 Príspevky: 4857 Bydlisko: Plzeň
|
Zaslal: Št september 26, 2013 20:47:25 Predmet: |
|
|
1. Ta knihovna je libsoxr-lsr0, ne libsoxr0. Libsoxr je nová knihovna pro resamplování algoritmem soxu, bere parametry jako vlastní sox a má vlastní API. Libsoxr-lsr je nad ní pomocná knihovna, která má binární ABI shodné s některými klíčovými metodami libsamplerate, aby ji šlo nahradit.
2. Ten skript jsi přímo zkopíroval? Přijde mi, že tam máš to xbmc.bin volané dvakrát, jako první bez toho ld_preload.
Jinak na mám starším athlonu má xbmc stabilně load přes 20%, bez resamplování, je to grafická obludka. |
|
Návrat hore |
|
|
Coques Hifista - zaslúžilec
Založený: 24 október 2006 Príspevky: 762 Bydlisko: CZ
|
Zaslal: Št september 26, 2013 22:11:47 Predmet: |
|
|
Samozrejme, to som si nevsimol, moja chyba.
Zda sa,ze teraz xbmc pouziva libsox
cs@pc:/usr/lib/i386-linux-gnu$ sudo lsof |grep -i sox
xbmc.bin 5374 cs mem REG 8,1 198496 26191 /usr/lib/i386-linux-gnu/libsoxr.so.0.1.0
xbmc.bin 5374 cs mem REG 8,1 9544 26194 /usr/lib/i386-linux-gnu/libsoxr-lsr.so.0.1.9
Na CPU to urobilo tak 5% dole. Skoda len, ze bez zkompilovania celeho XBMC niesom schopny navolit si kvalitu resamplingu.
diky |
|
Návrat hore |
|
|
dustin Hifi inventar
Založený: 06 október 2006 Príspevky: 4857 Bydlisko: Plzeň
|
Zaslal: Št september 26, 2013 23:59:48 Predmet: |
|
|
Výborně, to je pěkný fígl s tím lsof Asi si jej dovolím vypůjčit na blog, samozřejmě s citací
Místo překompilování xbmc (pokud je z balíku, tak to je jednoduché, kompiloval jsem ho dřív spoustukrát, než si v něm sedl pvr plugin) bys mohl překompilovat balík libsox-lsr, což je triviální, zcela bez závislostí.
Koukal jsem, jak je to tam s tím nastavením kvality.
Zde http://sourceforge.net/p/soxr/code/ci/master/tree/src/soxr.h#l281 jsou jednotlivé hodnoty kvality libsoxr
http://sourceforge.net/p/soxr/code/ci/master/tree/src/soxr-lsr.h#l41 jsou enumy pro kvalitu libsamplerate
Hodnoty kvality libsamplerate se převádí na kvalitu libsoxr zde http://sourceforge.net/p/soxr/code/ci/master/tree/src/lsr.c#l26 . Tedy přesně jak píše v soxr.h, - 8, 9, 10 v klesající kvalitě.
A zde http://sourceforge.net/p/soxr/code/ci/master/tree/src/soxr.c#l90 se to konvertuje na precision (v bitech):
0-3 = 16, 4-7 stoupající od 20 do 32 v kroku 4 by, a konečně ty které nás zajímají - 8-10 klesající od 23 do 15. To je trochu divné, poslal jsem mail autorovi, jestli to tak má být. Nicméně pokud budeš chtít změnit kvalitu resamplingu v xbmc, stačí změnit ten poslední blok za dvojtečkou třeba za číslo 32 a budeš mít kvalitu "insane" (SOX_VHQ má nastavenou na 28 bitů). Co to udělá se zátěží CPU zatím netuším, očividně jsem dosud používal pouze precision 23 (tj. odpovídající best-samplerate). |
|
Návrat hore |
|
|
dustin Hifi inventar
Založený: 06 október 2006 Príspevky: 4857 Bydlisko: Plzeň
|
Zaslal: Pi september 27, 2013 10:25:44 Predmet: |
|
|
Autor libsoxr Rob mi odpověděl, že ty hodnoty 23, 19 a 15 pro různé kvality libsamplerate jsou správně a odpovídají kvalitě algoritmů libsamplerate. Tuhle knihovnu detailně nastudoval a snaží se o maximální kompatibilitu.
Mezitím jiný uživatel už zřejmě bude testovat patch pro zvýšení kvality té náhrady, pak nasdílím na blog.
http://www.diyaudio.com/forums/pc-based/93315-linux-audio-way-go-217.html#post3646816 |
|
Návrat hore |
|
|
Coques Hifista - zaslúžilec
Založený: 24 október 2006 Príspevky: 762 Bydlisko: CZ
|
Zaslal: Pi september 27, 2013 14:04:33 Predmet: |
|
|
Hmm, to je dobry napad ten libsox, ale neviem kde presne myslis, ze ma byt odohrana ta zmena.
kód: | p->precision = !quality? 0: quality < 3? 16 : quality < 8? 4 + quality * 4 : 55 - quality * 4; |
za
kód: | p->precision = !quality? 0: quality < 3? 16 : quality < 8? 4 + quality * 4 : 55 - quality * 32; |
takto? diky
(s lsof rob ako uznas za vhodne aj bez citacie) |
|
Návrat hore |
|
|
dustin Hifi inventar
Založený: 06 október 2006 Príspevky: 4857 Bydlisko: Plzeň
|
Zaslal: Pi september 27, 2013 14:14:54 Predmet: |
|
|
Myslel jsem třeba jenom jednoduše, bez změny quality pro různé libsamplerate hodnoty ( 8 - 10 ):
kód: | p->precision = !quality? 0: quality < 3? 16 : quality < 8? 4 + quality * 4 : 28; |
Jednoduchý popis překompilace balíčku je http://www.ducea.com/2008/03/06/howto-recompile-debian-packages/ |
|
Návrat hore |
|
|
dustin Hifi inventar
Založený: 06 október 2006 Príspevky: 4857 Bydlisko: Plzeň
|
Zaslal: Pi september 27, 2013 14:56:02 Predmet: |
|
|
Ale asi lepší by bylo přímo přenastavit hodnotu quality:
kód: | if (quality == 13)
quality = 6;
else if (quality > 10)
quality = 0;
else if (quality == SOXR_LSR0Q)
quality = SOXR_VHQ;
else if (quality == SOXR_LSR1Q)
quality = SOXR_VHQ;
else if (quality == SOXR_LSR2Q)
quality = SOXR_VHQ; |
S tím nastavením si můžeš pohrát. |
|
Návrat hore |
|
|
Coques Hifista - zaslúžilec
Založený: 24 október 2006 Príspevky: 762 Bydlisko: CZ
|
Zaslal: Pi september 27, 2013 15:28:02 Predmet: |
|
|
ok, diky moc. pohram sa s tym.
EDIT
tak uz som sa pohral :L)
skusal som hodnotu 28 a vytazenie CPU sa skoro nezmenilo. Aka je najvyssia mozna, je to tych 32?
Ten if-elseif som moc nepochopil, nie som koder, tak sa v tom uz dost motam.
Ak chcem pouzit najvyssiu moznu kvalitu mam vymenit v soxr.c celu sekciu alebo len cast?
kód: |
if (quality == 13)
quality = 6;
else if (quality > 10)
quality = 0;
p->phase_response = "\62\31\144"[(recipe & 0x30)>>8];
p->stopband_begin = 1;
p->precision = !quality? 0: quality < 3? 16 : quality < 8? 4 + quality * 4 : 28;
rej = p->precision * linear_to_dB(2.);
p->flags = flags;
if (quality < 8) {
p->passband_end = quality == 1? LOW_Q_BW0 : 1 - .05 / TO_3dB(rej);
if (quality <= 2)
p->flags &= ~SOXR_ROLLOFF_NONE, p->flags |= SOXR_ROLLOFF_MEDIUM;
|
za sekciu z tvojho predosleho prispevku? Vidim, ze tam vsade odkazujes na VHQ co je best?
Naposledy upravil Coques dňa Pi september 27, 2013 18:10:15, celkom upravené 1 krát. |
|
Návrat hore |
|
|
Odar Hifi inventar
Založený: 14 december 2009 Príspevky: 3180
|
Zaslal: Pi september 27, 2013 17:57:00 Predmet: |
|
|
Uplne idealne by bolo, keby niekto spravil add-on pre XBMC s moznostami nastavenia (hoci cez XML subor). To by sa ale asi muselo pretlacit na XBMC fore. |
|
Návrat hore |
|
|
Coques Hifista - zaslúžilec
Založený: 24 október 2006 Príspevky: 762 Bydlisko: CZ
|
Zaslal: Pi september 27, 2013 18:09:42 Predmet: |
|
|
presne tak, je skoda, ze to robia v XBMC 'na pevno'. |
|
Návrat hore |
|
|
Odar Hifi inventar
Založený: 14 december 2009 Príspevky: 3180
|
Zaslal: Št október 03, 2013 16:22:17 Predmet: |
|
|
Druhy den "bojujem" s openelec. Vsetko by bolo krasne, jednoduche, snad aj pouzielne, keby XBMC ako take podporovalo vo FLACoch embedded cue sheet. Snad ani ten SoX by mi tam tak nechybal, ako toto |
|
Návrat hore |
|
|
Coques Hifista - zaslúžilec
Založený: 24 október 2006 Príspevky: 762 Bydlisko: CZ
|
Zaslal: Pi október 04, 2013 09:02:06 Predmet: |
|
|
ja bych vsechny tie CUE shity zrusil.. |
|
Návrat hore |
|
|
Coques Hifista - zaslúžilec
Založený: 24 október 2006 Príspevky: 762 Bydlisko: CZ
|
Zaslal: Pi október 11, 2013 10:32:04 Predmet: |
|
|
Tak teraz vyzera ta dolezita cast zdrojaku asi takto :
kód: |
if (quality == 13)
quality = 6;
else if (quality > 10)
quality = 0;
else if (quality == SOXR_LSR0Q)
quality = SOXR_VHQ;
else if (quality == SOXR_LSR1Q)
quality = SOXR_VHQ;
else if (quality == SOXR_LSR2Q)
quality = SOXR_VHQ;
p->phase_response = "\62\31\144"[(recipe & 0x30)>>8];
p->stopband_begin = 1;
p->precision = !quality? 0: quality < 3? 16 : quality < 8? 4 + quality * 4 : 32;
rej = p->precision * linear_to_dB(2.);
p->flags = flags;
if (quality < 8) {
p->passband_end = quality == 1? LOW_Q_BW0 : 1 - .05 / TO_3dB(rej);
if (quality <= 2)
p->flags &= ~SOXR_ROLLOFF_NONE, p->flags |= SOXR_ROLLOFF_MEDIUM;
}
else {
static float const bw[] = {.931f, .832f, .663f};
p->passband_end = bw[quality - 8];
if (quality - 8 == 2)
p->flags &= ~SOXR_ROLLOFF_NONE, p->flags |= SOXR_ROLLOFF_MEDIUM;
}
if (recipe & SOXR_STEEP_FILTER)
p->passband_end = 1 - .01 / TO_3dB(rej);
return spec;
}
|
XBMC som nechal resamplovat na 192khz v advancedsettings.xml
kód: |
<advancedsettings>
<audio>
<resample>192000</resample>
<forceDirectSound>1</forceDirectSound>
<audiophile>1</audiophile>
<audiosinkbufferdurationmsec>100</audiosinkbufferdurationmsec>
<allowtranscode44100>1</allowtranscode44100>
<streamsilence>1</streamsilence>
</audio>
|
Mam cpu i3 a zobere si to cca 30%
Snad som to zrekompiloval spravne, ale podla vyuzitia cpu vyzera to tak, ze to funguje. |
|
Návrat hore |
|
|
dustin Hifi inventar
Založený: 06 október 2006 Príspevky: 4857 Bydlisko: Plzeň
|
Zaslal: Pi október 11, 2013 12:44:23 Predmet: |
|
|
Výborně, to vypadá dobře |
|
Návrat hore |
|
|
miero Hifi inventar
Založený: 08 september 2010 Príspevky: 11552 Bydlisko: Praha
|
Zaslal: Pi október 11, 2013 14:23:34 Predmet: |
|
|
Coques, ten kod je ale dost hnusny - aspon co sa tyka coding style :) |
|
Návrat hore |
|
|
Coques Hifista - zaslúžilec
Založený: 24 október 2006 Príspevky: 762 Bydlisko: CZ
|
Zaslal: Pi október 11, 2013 15:02:10 Predmet: |
|
|
no tak moj nieje |
|
Návrat hore |
|
|
|