Gå til innhold

[LØST] ALSA og hardware mixing [Echo Mia Midi]


Anbefalte innlegg

Noen ALSA-pros her? :D

Sitter da på ett stykk Echo Mia Midi, og har kjempet for å få det til å funke :D

Men, fikk aldri mixing, hverken hardware eller software, til å funke skikkelig ...

En midlertidig løsning var pulseaudio som fiksa det, men den løsningen er ikke god nok (en del som ikke funker med pulse, etc).

 

http://bbs.archlinux.org/viewtopic.php?id=36508 Karen her har nøyaktig samme problem som meg (samme kort også). Alt funker faktisk helt fint så lenge det er mono som blir avspilt D: Problemet ser ut til å være at et stereoklipp bruker to av subdevicene for å avspille stereoen, men flagger bare en som busy, slik at når et annet program prøver å bruke subdevice 2, er den allerede opptatt. Virker veldig sannsynelig, siden å først avspille et mono-klipp, for å så avspille et stereo-klipp fungerer helt fint det og.

Finnes det en fiks?

 

Kan akseptere software mixing, men selv ikke det fungerte av en eller annen grunn. Har prøvd kanskje 100 forskjellige config-filer :\

Endret av TheMaister
Lenke til kommentar
Videoannonse
Annonse

Hehe. Ja, har prøvd å kjøre uten .asoundrc og /etc/asound. /usr/share/alsa/alsa.conf var visst helt nødvendig for at lyd skulle fungere i det hele tatt :p Har prøvd software mixing med dmix, men selv med DET fikk jeg "device is busy" med flere lydkilder. Eller, det fungerte i ett tilfelle, og det var aplay -D plug:dmix, men aldri med andre programmer.

Lenke til kommentar

I Ubuntu måtte jeg bare installere pakken alsa-firmware. Mener jeg gjorde noe av det samme i Arch da jeg brukte det. Har også fjerned modulene for de andre lydkortene slik at det er bare Mia-en som virker. Installerer du pakken echomixer elns får du også en del verktøy til lydkortet.

Lenke til kommentar

Det er allerede gjort ... Lydkortet funker konge, det, bare utenom mixinga i hardware/software. Med PA funker software mixing, men den skaper noen problemer med noen programmer. Prøvde også ubuntu i dag, for å sjekke om det var noen rare greier i Arch som kødda det til (heller andre veien egentlig :p), og funka ikke der heller. :\

Lenke til kommentar

Mixing i lydsammenheng er når flere forskjellige lydkilder blir mikset sammen til en lyd, slik at den kan sendes ut på høyttalerene. Om miksingen ikke fungerer kan bare ett program avspille lyd samtidig, og er ganske upraktisk :p

 

Med hardware miksing sender ALSA alle lydkilder til lydkortet, og lar lydkortet selv ta seg av miksingen. Litt mindre CPU-bruk. Med software (mest vanlig) tar ALSA imot alle lydkildene, lar CPUen mikse sammen lydene og sender produktet til lydkortet.

Lenke til kommentar

Ah. Da forstår jeg.

 

Har litt av det samme problemet, når jeg spiller av i Amarok. Men ikke i andre programmer, firefox og Totem f.eks. kan spille fint i lag. Jeg tenkte det var fordi Amarok var KDE og brukte xine, men når jeg tenkter meg om så har jeg jo Totem-xine.

 

Jeg trodde at det var ALSA som hadde ansvaret for å blande lydkildene, ikke lydkortet, så har egentlig aldri tenkt noe mer over det.

Lenke til kommentar

Er det hardware mixing på Mia-en da?

 

Det vet jeg faktisk ikke. Det kommer jo med Ubuntu automatisk.

Har satt Amarok til å gå direkte til ALSA, kanskje derfor det kræsjer?

 

Red.: Yes, satte nå Amarok til å bruke PulseAudio og nå fungerer alt.

Endret av Xecuter
Lenke til kommentar

Ja, hardware mixing finnes på Mia. (De 8 virtuelle lydkanalene) Ser ut til at du har akkurat samme "problem" som meg ja :) Når ting går rett til alsa vil den altså ikke la flere programmer kjøre. Av en eller annen grunn.

 

Har kommet hit though:

 

Mia har 8 virtuelle kanaler (som mixes til 2 kanaler).

Når man spiller av et stereoklipp tolker mia-kortet det som 2 forskjellige lydspor og

bruker lydspor 1 og 2. Men alsa tror bare at 1 er i bruk, noe som får alsa til å hikke når den vil spille av et nytt lydspor på 2 (device busy, etc). Prøver man dog mono-klipp, er det ingen problem. Og man har perfekt hardware-mixing. (Hvis man åpner og ser i echomixer)

 

En veldig, veldig skitten fiks, er å først spille av to mono-klipp, som tar kanal 1 og 2, så spille av stereo på 3 og 4. Så skrur man av de to mono-klippene, og 1 og 2 er ledige. Så kan man spille av et stereoklipp oppå der igjen, og presto man har hardware mixing.

 

Så det er fullt mulig, så det er bare å finne en måte at alsa faktisk skal vite at det er to virtuelle kanaler som er i bruk, og ikke bare 1! :D

 

Software mixing med dmix er jo fullgodt det og, men av en eller annen grunn funker ikke det :\ Får vel bare gi opp programmer som ikke støtter pulseaudio eller via alsa-pluginen til PA da :p

Endret av TheMaister
Lenke til kommentar

Kommet lengre på problemet nå. Har gjort noen forsøk i dag med å få dette til å funke, og har isolert problemet.

 

Hardware-mixingen funker egentlig strålende! Er bare et problem med at alsa default velger en subdevice den tror er ledig.

 

Sett at ~/.asoundrc så slik ut:

 

pcm.mia0{
type hw
card 0
subdevice 0 # 0 og 1 blir brukt
}

pcm.mia1{
type hw
card 0
subdevice 2
}

 

Vil alt fungere strålende om man kjører f.eks.

 

aplay -D mia0 <foo.wav>

aplay -D mia1 <bar.wav>

 

Så, problemet er da å få manipulert hvordan subdevices velges, uten å måtte styre med mange forskjellige devices (vel, hadde alle programmer kunne få velge sin egen device hadde jo problemet vært løst.)

Prosessen er slik i alsa.conf

 

pcm.hw {
@args [ CARD DEV SUBDEV ]
@args.CARD {
	type string
	default {
		@func getenv
		vars [
			ALSA_PCM_CARD
			ALSA_CARD
		]
		default {
			@func refer
			name defaults.pcm.card
		}
	}
}
@args.DEV {
	type integer
	default {
		@func igetenv
		vars [
			ALSA_PCM_DEVICE
		]
		default {
			@func refer
			name defaults.pcm.device
		}
	}
}
@args.SUBDEV {
	type integer
	default {
		@func refer
		name defaults.pcm.subdevice
	}
}		
type hw
card $CARD
device $DEV
#	if ["$SUBDEV" -eq 1]; then	 ## Noe sånt, men alsa
#export SUBDEV=2							 ## er ingen bash-parser akkurat.
#fi
subdevice $SUBDEV
hint {
	show {
		@func refer
		name defaults.namehint.extended
	}
	description "Direct hardware device without any conversions"
}
}

 

Spesielt denne biten:

 

@args.SUBDEV {
	type integer
	default {
		@func refer
		name defaults.pcm.subdevice
	}
}

 

 

Så, en skitten fiks for nå er å kjøre denne asound.conf

 

pcm.!default{
type hw
card 0
subdevice 0
}
ctl.!default{
type hw
card 0
}
pcm.mia1{
type hw
card 0
subdevice 2
}
pcm.mia2{
type hw
card 0
subdevice 4
}
pcm.mia3{
type hw
card 0
subdevice 6
}

 

MPlayer er mappa til mia3, mpd til mia2, xbmc til mia1 og flash og andre greier defaulter til 0 :p

Endret av TheMaister
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...