Envy24HT and Alsa (dmix)

Other talk about Salix
Post Reply
User avatar
thenktor
Salix Wizard
Posts: 2426
Joined: 6. Jun 2009, 14:47
Location: Franconia
Contact:

Envy24HT and Alsa (dmix)

Post by thenktor »

Hi,
after using The Creative Audigy for years (which provides hardware mixing of several streams) I want to ask how good dmix is? Is it automatically configured by Alsa and will it play more streams without problems?

Perhaps I want to buy a sound card with Envy24HT chipset. Does anybody have experince with this chipset in Linux?
I don't think there will be any problems though...

Reviews:
http://jimmyauw.com/2006/08/09/sound-card-comparison/
http://stephan.win31.de/soundk.htm

Alsa:
http://www.alsa-project.org/main/index. ... le-ice1724
Image
burnCDDA (burns audio CDs)
geBIERt (German beer blog)
User avatar
gapan
Salix Wizard
Posts: 6241
Joined: 6. Jun 2009, 17:40

Re: Envy24HT and Alsa (dmix)

Post by gapan »

I believe dmix has been the alsa default for some time now.
Image
Image
User avatar
thenktor
Salix Wizard
Posts: 2426
Joined: 6. Jun 2009, 14:47
Location: Franconia
Contact:

Re: Envy24HT and Alsa (dmix)

Post by thenktor »

OK, I've bought the ESI Prodigy Hifi: http://www.thomann.de/gb/esi_prodigy_71_hifi.htm
Everything works well.
Image
burnCDDA (burns audio CDs)
geBIERt (German beer blog)
User avatar
thenktor
Salix Wizard
Posts: 2426
Joined: 6. Jun 2009, 14:47
Location: Franconia
Contact:

Re: Envy24HT and Alsa (dmix)

Post by thenktor »

BTW: dmix resamples everything to 48 kHz, which is not the best idea in terms of sound quality of CDs (44.1 kHz). But it can be changed, just take a look here: http://alsa.opensrc.org/Dmix#Does_dmix_ ... quality.3F

EDIT:
A correct asound.conf looks like this:

Code: Select all

pcm.!default {
    type plug
        slave.pcm "swmixer"
}

pcm.swmixer {
    type dmix
    ipc_key 1001
    slave {
        pcm "hw:0,0" #for ICE1724's analog output
        #pcm "hw:0,1" # for ICE1724's digital output
        #format S32_LE # needed only for ICE1724's digital output.
        period_size 1024
        buffer_size 4096
        rate 44100
        #rate 176400 # upsampling
    }
}
Image
burnCDDA (burns audio CDs)
geBIERt (German beer blog)
User avatar
thenktor
Salix Wizard
Posts: 2426
Joined: 6. Jun 2009, 14:47
Location: Franconia
Contact:

Re: Envy24HT and Alsa (dmix)

Post by thenktor »

Now that I wanted to use the digital and the analogue part of the card simultaneously, I have modified my asoundrc file. It features a dmix part for digital and analogue output and it routes the sound to both outputs.
Note: of course digital dmix only works for stereo output, if you play some Dolby Digital or DTS you have to stop all stereo before.

Code: Select all

# default ALSA route for software support of multiple sound streams
pcm.!default {
	type plug
	slave.pcm "digi-ana-copy"
}

pcm.digi-ana-copy {
	# this plugin converts channels and applies volume during the conversion
	# the format and rate must match for both of them.
	type route
	slave.pcm {
		type multi
		# slave D: digital output
		slaves.D.pcm "digitaldmix";
		slaves.D.channels 2;

		# slave A: analog output
		slaves.A.pcm "analogdmix";
		slaves.A.channels 2;

		# bindings table (channel names, that are used for the transfer table)
		bindings.0.slave D
		bindings.0.channel 0	# 0: digital left
		bindings.1.slave D
		bindings.1.channel 1	# 1: digital right
		bindings.2.slave A
		bindings.2.channel 0	# 2: analog left
		bindings.3.slave A
		bindings.3.channel 1	# 3: analog right
	}
	# transfer table (bi-dimensional compound of cchannels * schannels numbers)
	# the parameter is the transfer volume [0..1]
	ttable.0.0 1	# digital left  -->  digital left
	ttable.1.1 1	# digital right -->  digital right
	ttable.0.2 1	# digital left  -->  analog left
	ttable.1.3 1	# digital right -->  analog right
}

# analog part
pcm.analogdmix {
	type dmix
	ipc_key 1001
	slave {
		pcm "hw:0,0" # for ICE1724's analog output
		period_size 1001
		buffer_size 4096
		rate 44100 # see cat /proc/asound/card0/pcm0p/sub0/hw_params during playback
	}
}

# digital part
# hw:0,1 designates the Digital Coaxial Output
# S32_LE is the only format supported by the driver
# period_time, period_size, and buffer_size are needed to make aRts not stutter. Increase buffer_size if stuttering persists.
pcm.digitaldmix {
	type dmix
	ipc_key 1002
	slave {
		pcm "hw:0,1"
		format S32_LE
		period_time 0
		period_size 1024
		buffer_size 4096
		rate 44100
	}
}

# pass through device used by ogle
pcm.!spdif {
	type plug
	slave.pcm "hw:0,1"
}

# pass through device used by mplayer -ac hwac3
pcm.!iec958 {
	type plug
	slave.pcm "hw:0,1"
}

# just another digital pass through device
pcm.digital {
	type plug
	slave.pcm "hw:0,1"
}
Image
burnCDDA (burns audio CDs)
geBIERt (German beer blog)
Post Reply