Portál AbcLinuxu, 26. dubna 2024 18:01


Dotaz: PulseAudio umele zpozdeni stredoveho reproduktoru o 6ms

25.9.2010 17:48 qazasd
PulseAudio umele zpozdeni stredoveho reproduktoru o 6ms
Přečteno: 760×
Odpovědět | Admin
Zdravim,

mam reproduktory 5.1 a kvuli omezenemu mistu v mistnosti mam stredovy reproduktor asi o 2m bliz k poslechovemu mistu nez ostatni reproduktory, coz zpusobuje, ze zvuk z nej dorazi priblizne o 2/350 = 5,7ms drive. A tj. problem hlavne u prostorovych efektu ve filmech, ktere pak nezni dobre.

U vetsiny domacich kin se vzdalenost reproduktoru nastavuje v menu aby mohla byt provedena tato korekce.

Chtel bych se zeptat, jak na toto umele zpozdeni v linuxu. Pouzivam Ubuntu 10.04 "Lucid Lynx", ktere pouziva zvukovy demon PulseAudio.

Predem diky.

Řešení dotazu:


Nástroje: Začni sledovat (2) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

25.9.2010 19:53 DNA
Rozbalit Rozbalit vše Re: PulseAudio umele zpozdeni stredoveho reproduktoru o 6ms
Odpovědět | | Sbalit | Link | Blokovat | Admin
zajímavé, nikdy mě nenapadlo, že by mělo pár metrů nějaký vliv...

měl by to umět mplayer, vygooglil jsem nastavení, ale lepší by to asi bylo nastavit napevno...

spoždění = 1000 * (vydálenost reproduktoru v metrech)/342

mplayer -af delay=10.5:10.5:0:0:7:0 media.avi

každopádně na testování se to hodí...
25.9.2010 21:45 qazasd
Rozbalit Rozbalit vše Re: PulseAudio umele zpozdeni stredoveho reproduktoru o 6ms
vyborne, mplayer -af delay=0:0:0:0:8:8 media.avi funguje, jenom bych dodal, ze poradi zpozdeni je:

predni vlevo : predni vpravo : zadni vlevo : zadni vpravo : center : subwoofer

take me nikdy nenapadlo, ze by par metru melo vliv, nez sem si precetl par clanku o spravnem umisteni reporoduktoru. Ted jsem vyzkousel -af delay a musim rict, ze i clovek co se zvukem moc nezabyva pozna rozdil. Napr. pohybujici se zvuk zezadu dopredu uz nezni pouze neustale vic/min z jednoho/druheho reprodukroru, ale je slyset opravdu poceste ...

Za parametr mplayer diky, nicmene rikam si, ze by mohlo existovat nejake systemovejsi reseni, neb pro video pouzivam spise VLC a rikam si, ze tato kalibrace by prospela i ostatnim aplikacim, treba obycejnemu prehravaci hudby ...

25.9.2010 23:22 dustin | skóre: 63 | blog: dustin
Rozbalit Rozbalit vše Re: PulseAudio umele zpozdeni stredoveho reproduktoru o 6ms
Zkus ve svém uživatelském .asoundrc předefinovat surround51 tak, aby používal ladspa plugin a v něm delay, viz např. http://alsa.opensrc.org/SurroundSound#Custom_Routing_of_Signals_to_Surround_Outputs - to bindings.2 by měl být třetí kanál (v tomto případě konfigurace 2.1 je to subwoofer).

Ale nevím, jak pak do takového zařízení zvládne zapisovat pulseaudio, to chce vyzkoušet.
26.9.2010 19:45 DNA
Rozbalit Rozbalit vše Re: PulseAudio umele zpozdeni stredoveho reproduktoru o 6ms
narazil jsem na brutefir http://www.duffroomcorrection.com/wiki/Brutefir

mám ho v distru, tak ho asi zkusím, jestli je to vůbec to co myslím...

26.9.2010 14:49 FF
Rozbalit Rozbalit vše Re: PulseAudio umele zpozdeni stredoveho reproduktoru o 6ms
Ano i kousek má velký vliv, jednak je ten zvuk časově jinde, a také vzniká tzv. hřebenový filtr, kdy se zvuk na různých frekvencích fázově otočí a některé frekvence potom chybí jiné jsou zase zvýrazněny. Zpoždění se řeší např u PA aktivních reprobeden i mezi stredotonovym a výškovým reproduktorem neboť ten výškový má na sobě ještě hornu a byl by tak zpožděn.
26.9.2010 19:46 DNA
Rozbalit Rozbalit vše Re: PulseAudio umele zpozdeni stredoveho reproduktoru o 6ms
také už se o to zajímám, zas mám na desktopu co ladit :-D
2.11.2011 06:24 qazasd
Rozbalit Rozbalit vše Re: PulseAudio umele zpozdeni stredoveho reproduktoru o 6ms
Odpovědět | | Sbalit | Link | Blokovat | Admin
Příloha:
Pokud by mel nekdo zajem, nakonec jsem napsal delay plugin pro alsu. Zdrojovy kod prikladam. Zkompilovat a nainstalovat lze pomoci Makefile
all: libasound_module_pcm_delay.so

install: libasound_module_pcm_delay.so
        cp libasound_module_pcm_delay.so /usr/lib/x86_64-linux-gnu/alsa-lib
        cp libasound_module_pcm_delay.so /usr/lib/alsa-lib

libasound_module_pcm_delay.so: pcm_delay.o
        gcc -shared pcm_delay.o -lasound -Wl,-soname -Wl,libasound_module_pcm_delay.so -o libasound_module_pcm_delay.so

pcm_delay.o: pcm_delay.c
        gcc -DHAVE_CONFIG_H -I. -I.. -Wall -g -I/usr/include/alsa -g -O2 -MT pcm_delay.lo -MD -MP -MF pcm_delay.Tpo -c -o pcm_delay.lo pcm_delay.c
        gcc -DHAVE_CONFIG_H -I. -I.. -Wall -g -I/usr/include/alsa -g -O2 -MT pcm_delay.lo -MD -MP -MF pcm_delay.Tpo -c pcm_delay.c  -fPIC -DPIC -o pcm_delay.o
po instalaci jiz lze v ~/.asoundrc pouzivat "type delay" takto
pcm.mydelay {
   type delay
   delay {
      0 3
      1 3.5
      2 1
      3 1
   }
   slave.pcm "kamseposledal"
}
ktery zpozdi 0. kanal o 3ms, 1. 3,5ms, atd.

misto konfiguracni casti "delay" lze take pouzit "distance" a zadat primo vzdalenost vsech reproduktoru, kompletni konfigurace tak muze vypadat napr. takto:
pcm.!surround51 {
        type plug
        slave.pcm "mydelay"
}

pcm.mydelay {
        type delay;
        distance {
                0 1.42 # metru (front left)
                1 1.42 # metru (fron right)
                2 3.74 # metru (rear left)
                3 3.27 # metru (rear right)
                4 1.40 # metru (center)
                5 1.24 # metru (subwoofer)
        }
        slave.pcm "mydmix"
}

pcm.mydmix {
        type dmix
        ipc_key 2048
        ipc_key_add_uid true
        slave {
                pcm {
                        type hw
                        card 1
                        device 0
                        channels 6
                }
                channels 6
        }
        bindings {
                0 0
                1 1
                2 4
                3 5
                4 2
                5 3
        }
}

odpovidajici zpozdeni se dopocita samo. Zatim jsem plugin prilis netestoval, ale zda se, ze funguje. Kdyby jste tedy nekdo chtel plugin pouzit a vyskytl se nejaky problem, dejte vedet.
2.11.2011 14:47 dustin | skóre: 63 | blog: dustin
Rozbalit Rozbalit vše Re: PulseAudio umele zpozdeni stredoveho reproduktoru o 6ms
Paráda, klobouk dolů. Byla by obrovská škoda se ten plugin nepokusit dostat do alsa-libu přes mailinglist alsa-devel. Stačí úvodní mail s návrhem řešení a základním diffem, Takashi Iwai nebo Jaroslav Kysela už tě nanavigují, co a jak dál. Díky moc!
pepe_ avatar 2.11.2011 14:56 pepe_ | skóre: 48
Rozbalit Rozbalit vše Re: PulseAudio umele zpozdeni stredoveho reproduktoru o 6ms

A nedá se to nějak v pulse ?  vše mi jede s pulse a bez něj je to problém...

8.11.2011 01:25 qazasd
Rozbalit Rozbalit vše Re: PulseAudio umele zpozdeni stredoveho reproduktoru o 6ms
Příloha:
Zdravim ve spolek,

nasel jsem drobnou chybku v pcm_delay.c v implementaci kopirovani z/do ringbufferu. Ackoli si snad ani nedokazu predstavit situaci, kdy by se mela projevit prikladam opravenou verzi.

Nova verze jeste obsahuje kontrolu navratove hodnody callocu, kde nebyla jak se slusi a patri a take moznost v .asoundrc nastavovat rychlost zvuku (kdyby mel snad nekdo pocit, ze u nej doma zvuk pomalejsi :) staci zadat vedle "distance { ... }" jeste napr. "soundspeed 345.5" volba je vsak volitelna a defautni hodnota je 346.3 m/s

Mimochodem, pokud by nekdo chtel aby mu s timto pluginem fungoval na 64bit systemu i firefox anebo skype je potreba vytvorit jeste 32-bit verzi pluginu nebot oba jmenovane programy vyuzivaji lib32asound-lib ... (coz jsem zjistil az nyni) ... toho lze docilit pridanim volby -m32 gcccku pri kompilaci. Je potreba mit nainstalovano libc6-dev-i386, a vysledne .socko zkopirovat do /usr/lib32/alsa-lib
8.11.2011 02:13 qazasd
Rozbalit Rozbalit vše Re: PulseAudio umele zpozdeni stredoveho reproduktoru o 6ms
Příloha:
Tak tedy do tretice vseho dobreho ... v prilozenem pcm_delay.c nastavovani rychlosti zvuku ZaruceneFunguje(tm) :)
8.11.2011 08:45 dustin | skóre: 63 | blog: dustin
Rozbalit Rozbalit vše Re: PulseAudio umele zpozdeni stredoveho reproduktoru o 6ms
Dovolím si znovu zopakovat - pošli to do alsy a máš navždy vystaráno, včetně všech ostatních :)

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.