Portál AbcLinuxu, 1. května 2025 15:51

ALSA: konečné řešení

10.9.2007 21:47 | Přečteno: 2260× | Linux | poslední úprava: 11.9.2007 07:08

Minule jsem se pustil do konfigurace ALSA a včera jsem si našel chvilku abych konečně dokončil snažení a přinutil všechno spolupracovat s alsou.

No všechno, víceméně to důležité, tedy hudba a video už s ní spolupracovaly, takže šlo spíše o flash (přes nspluginwrapper, mám amd64) UT2004, quake3, wine a cokoli co mixuje do OSS ;).

to poslední je samozřejmě prkotina, máme přeci

aoss aplikace_co_nema_rada_alsa

no jo, ale co s 32 bitovými aplikacemi :), ano první ze série balíčků který vznikl při tomto snažení. Potom stačí jen

aoss32 32_bit_aplikace_co_nema_rada_alsa

Jenže na cestě z plugu to kterého se mixuje mám i ladspa pluginy, a to se 32 bitovým knihovnám nelíbilo a tak tu máme druhý a třetí balíček.

Ale ejhle ani tak nebyl můj obsolentní binární proprietární a kdoví jaký ještě quake3 sto hrát nějak slušně. Strýček google nakonec poradil ioquake3 který je pro nedočkavce i 64 bit :) a pro odvážnější si ho zkompilují (mě kompilace skončila na prapodivné chybě). Pak už stačí jen

export SDL_AUDIODRIVER="alsa"
export AUDIODEV="default" #nebo něco jiného dle libosti

a máme tu quake3 přes ALSA.

Ve wine jde vnutit zvukový výstup, a stejně tak nspluginwrapper se chová slušně má li potřebné 32 bit knihovny, takže už jen zbýval Unreal Tournament a tedy OpenAL.

Pro začátek jsem naivně zkusil binárku pro amd64, ale nepochodil jsem, stabilita byla velmi velmi autentická, 32 bit verze je skálopevná, a přinutit OpenAL ke spolupráci je otázkou pár řádků v souboru ~/.openalrc

(define devices '(alsa))
(define alsa-out-device "openal")
(define speaker-num 4)

ano ten jeden apostrof tam patří a jako alsa-out-device můžete dát libovolné zařízení, ovšem když ho máte. Vzhledem k tomu, jak jsem si odzkoušel, že UT2004 (nebo openal???) si neporadí s více než 4 kanály, zvolil jsem to co jsem zvolil (na konci zápisku je můj ~.asoundrc).

Tak a co zbylo? no arts by možná chtělo duplex ;) a je to snad vše…

A na závěr slíbený .asoundrc, od posledně přibyl highpass filtr, jako lowpass filtr používám jiný plugin, pro zjištění jaké pluginy jsou dostupné se používá

listplugins

a co který dělá se dá zjistit pomocí

analyseplugin knihovna_obsahujici_plugin

.asoundrc i s občasným komentářem

pcm.dsp0		"duplex20" # pro aoss
pcm.dsp1		"duplex20"
pcm.default		"duplex20" # výchozí zařízení je duplexní pro arts

pcm.openal {                       # openal zařízení 4 kanály
	type		plug
	slave.pcm	"mix40"
}

pcm.duplex20 {                     # duplex je upmix sterea a hardware
	type		asym
	playback.pcm	"mix20"
	capture.pcm	"hw:0,0"
}

# tady jsou upmix zařízení všechno na 5.1
pcm.mix10 {
	type		route
	slave.pcm	"volume_upmix"
	slave.channels	6
	ttable {
		0.0	1
		0.1	1
		0.2	1
		0.3	1
		0.4	1
		0.5	1
	}
}

pcm.mix20 {
	type		route
	slave.pcm	"volume_upmix"
	slave.channels	6
	ttable {
		0.0	1
		1.1	1
		0.2	1
		1.3	1
		0.4	0.5
		1.4	0.5
		0.5	0.5
		1.5	0.5
	}
}

pcm.mix40 {
	type		route
	slave.pcm	"volume_mix"
	slave.channels	6
	ttable {
		0.0	1
		1.1	1
		2.2	1
		3.3	1
		0.4	0.5
		1.4	0.5
		0.5	0.25
		1.5	0.25
		2.5	0.25
		3.5	0.25
	}
}

pcm.mix41 {
	type		route
	slave.pcm	"volume_mix"
	slave.channels	6
	ttable {
		0.0	1
		1.1	1
		2.2	1
		3.3	1
		0.4	0.5
		1.4	0.5
		0.5	0.25
		1.5	0.25
		2.5	0.25
		3.5	0.25
		4.5	1
	}
}

pcm.mix50 {
	type		route
	slave.pcm	"volume_mix"
	slave.channels	6
	ttable {
		0.0	1
		1.1	1
		2.2	1
		3.3	1
		4.4	1
		0.5	0.2
		1.5	0.2
		2.5	0.2
		3.5	0.2
		4.5	0.2
	}
}


pcm.mix51 {
	type		route
	slave.pcm	"volume_mix"
	slave.channels	6
	ttable {
		0.0	1
		1.1	1
		2.2	1
		3.3	1
		4.4	1
		5.5	1
		0.5	0.2
		1.5	0.2
		2.5	0.2
		3.5	0.2
		4.5	0.2
	}
}

pcm.mix71 {
	type            route
	slave.pcm       "volume_mix"
	slave.channels  6
	ttable {
		0.0	1
		1.1	1
		2.2	1
		3.3	1
		4.4	1
		5.5	1
		0.5	0.14
		1.5	0.14
		2.5	0.14
		3.5	0.14
		4.5	0.14
		6.5	0.14
		7.5	0.14
		6.0	0.5
		6.2	0.5
		7.1	0.5
		7.3	0.5
	}
}

# upmixované mono a stereo je děsně uřvané 
pcm.volume_upmix {
	type		softvol
	slave.pcm	"volume_mix"
	control.name	"Master (upmix)"
	control.card	0
}

# ovládání celkové hlasitosti
pcm.volume_mix {
	type		softvol
	slave.pcm	"frequency_filter_in"
	control.name	"Master (mix)"
	control.card	0
}

# vstup pro frekvenční filtr, čert ví proč to tam musí být ;)
pcm.frequency_filter_in {
	type		plug
	slave.pcm	"frequency_filter"
	slave.channels	6
}

# frekvenční filtr
pcm.frequency_filter {
	type		ladspa
	slave.pcm	"frequency_filter_out"
	path "/usr/lib/ladspa"
	channels	6
	plugins {
		0 {     # tohle ořeže hloubky v satelitech
			id			1052
			policy                  duplicate
			input.bindings.0        "Input"
			output.bindings.0       "Output"
			input.controls		[ 120 ]
		}
		1 {     # tohle ořeže výšky v subwooferu
			id			1051
			policy                  none
			input.bindings.5        "Input"
			output.bindings.5       "Output"
			input.controls		[ 120 ]
		}
		2 {     # subwoofer je potřeba trochu zesílit :)
                        # ať mají sousedi občas radost
			id			1048
			policy                  none
			input.bindings.5        "Input"
			output.bindings.5       "Output"
			input.controls		[ 5 ]
		}
		
	}
}

# výstup na kartu, stejná poznámka jako u frequency_filter_in
pcm.frequency_filter_out {
	type		plug
	slave.pcm	"surround51"
	slave.channels	6
}
       

Hodnocení: 67 %

        špatnédobré        

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

Komentáře

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

Vložit další komentář

10.9.2007 23:02 disorder | blog: weblog
Rozbalit Rozbalit vše Re: ALSA: konečné řešení
Odpovědět | Sbalit | Link | Blokovat | Admin
a co nativny ioquake3? 64b a ALSA.
Pro začátek jsem naivně zkusil binárku pro amd64, ale nepochodil jsem, stabilita byla velmi velmi autentická, 32 bit verze je skálopevná, a přinutit OpenAL ke spolupráci je otázkou pár řádků v souboru ~/.
tam asi chyba nazov suboru. ma to zaujimavu syntax, som zvedavy comu to patri ;)
10.9.2007 23:17 xm | skóre: 36 | blog: Osvobozený blog | Praha
Rozbalit Rozbalit vše Re: ALSA: konečné řešení
Neříkej mi, žes nepoznal závorkové peklo ;-) Lispy lisp :-)

Ale skutečný Lisp to IMHO není... jen se jím inspirovali
Svoboda je tím nejdůležitějším, co máme. Nenechte se o ní připravit, podporujte Pirátskou stranu!
11.9.2007 00:02 disorder | blog: weblog
Rozbalit Rozbalit vše Re: ALSA: konečné řešení
nie, peklo nie, nebo :P

a co je skutocny lisp? hento vyzera ako skutocny lisp
11.9.2007 08:23 nigol
Rozbalit Rozbalit vše Re: ALSA: konečné řešení
Podle toho define bych rekl, ze je to skutecny Scheme ;)
11.9.2007 00:08 disorder | blog: weblog
Rozbalit Rozbalit vše Re: ALSA: konečné řešení
toho quake som si nevsimol, necital som to :)

ale mne ide, nekompiloval som
vogo avatar 11.9.2007 07:15 vogo | skóre: 34 | blog: "Skládat papír"
Rozbalit Rozbalit vše Re: ALSA: konečné řešení
jj trochu vypadl název, už jsem to doplnil :)
Nejsem paranoidní, ale to ještě neznamená, že po mě nejdou.

Založit nové vláknoNahoru

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