17 aug 2012 kl. 04:44 skrev Doug <dmcgarr...@optonline.net>:

> On 08/16/2012 07:53 PM, Doug wrote:
>> On 08/16/2012 04:29 PM, Anders Genell wrote:
>>> 
>>> 16 aug 2012 kl. 19:07 skrev Doug <dmcgarr...@optonline.net
>>> <mailto:dmcgarr...@optonline.net>>:
>>> 
>>>> I'm running PCLinuxOS, and it does not come with .asoundrc.  Some time
>>>> ago I asked here for some help to get
>>>> sound to come out of BOTH the Intel on-board sound decoder and the
>>>> GeForce NVidia HDMI port at the same
>>>> time all the time. (The NVidia card has its own sound decoder.)  If I
>>>> had .asoundrc, would that help, and if so, what
>>>> should the script be?
>>>> 
>>>> --Thanx--doug
>>> Dear Doug!
>>> 
>>> Below are the hints I could manage to scramble together during your
>>> last troubleshooting,
>>> - I don't know if they are still useful?
>>> 
>>> Regards,
>>> Anders
>>> 
>>> 
>>>> I found a version of it here:
>>>> http://wiki.linuxquestions.org/wiki/M-Audio_Quattro
>>>> although it mentions /root/.asoundrc as proper placement which I
>>>> would not recommend.
>>>> 
>>>> The idea is to create a "multi" device from your two hardware devices
>>>> (e.g. hw:0,0 and hw:1,0) as described for the Quattro. Then create a
>>>> "plug" device for handling automatic conversion (your software might
>>>> not support the precise format needed by the "multi" device). In the
>>>> example there is a routing table for the "plug" device consisting of
>>>> expressions like "ttable.0.0 1;"
>>>> Those expression mean something like "route input nr 0 to output nr 0
>>>> with level 1". Channels are numbered from 0. By doing something like
>>>> ttable.0.0 1;
>>>> ttable.1.1 1;
>>>> ttable.0.2 1;
>>>> ttable.1.3 1;
>>>> you duplicate what is coming on the first two channels from your
>>>> software to the two output channel pairs. If you have setup the
>>>> "multi" device properly that would mean sound out on both devices.
>>>> There are a number of pitfalls that may need to be avoided, but give
>>>> it a go and shout back if you get stuck!
>>>> 
>>>> Regards,
>>>> /A
>>>> 
>> /snip/
>> 
>> I am still kind of snowed by all this, as I have been all along.  Do you
>> suggest that I just copy the M-Audio_Quattro file, just modifying the
>> ttable lines iaw with your suggestion?  And call it .asoundrc? Or do
>> something else?
>> Do I need to do anything about a jack input, and if so, do I need a
>> script for that?
>> I'm not sure what Quattro is/was--I found some kind of usb audio box on
>> Google, but I don't think that's involved, and some other reference to
>> some Quattro hw or sw that runs on a Mac.
>> 
>> I will try and add an /etc/.asoundrc with the ttables modified as you
>> indicate, and see what happens.  If things get worse I can always rename
>> the file to something innocuous.
>> 
>> If it is of any use to you, here is my aplay -l output:
>> 
>> doug@Linux1 ~]$ aplay -l
>> **** List of PLAYBACK Hardware Devices ****
>> card 0: Intel [HDA Intel], device 0: ALC662 rev1 Analog [ALC662 rev1 Analog]
>>   Subdevices: 1/1
>>   Subdevice #0: subdevice #0
>> card 0: Intel [HDA Intel], device 1: ALC662 rev1 Digital [ALC662 rev1
>> Digital]
>>   Subdevices: 1/1
>>   Subdevice #0: subdevice #0
>> card 1: NVidia [HDA NVidia], device 3: HDMI 0 [HDMI 0]
>>   Subdevices: 1/1
>>   Subdevice #0: subdevice #0
>> card 1: NVidia [HDA NVidia], device 7: HDMI 0 [HDMI 0]
>>   Subdevices: 1/1
>>   Subdevice #0: subdevice #0
>> card 1: NVidia [HDA NVidia], device 8: HDMI 0 [HDMI 0]
>>   Subdevices: 1/1
>>   Subdevice #0: subdevice #0
>> card 1: NVidia [HDA NVidia], device 9: HDMI 0 [HDMI 0]
>>   Subdevices: 1/1
>>   Subdevice #0: subdevice #0
>> 
>> Sorry that I'm such a dunce.  OTOH, I can't be the only one who ever
>> wanted to do this.  It ought to be built in to the kernel!
>> Since it's child's play to get two video screens, why is it so hard to
>> get two audio outputs? (Granted, the two videos come
>> out of the same card.)
>> 
>> Thank you for your patience!  --doug
>> 
>> 
> Did what I said--it hasn't blown up the local sound, but there's still 
> no sound
> on the HDMI channel.  No way to know if the machine has even looked at
> the /etc/.asoundrc file, but it's definitely there. I'm listening to an 
> Internet
> radio station on realplayer, and it's coming out my local speakers, but
> no sound from the TV. Of course, the file refers to quattro, which I don't
> have.  I didn't do anything with jack, since I don't understand it at all.
> There is no q4 device, that I know of.
> 
> --doug
> 
> 

Hi again, Doug!

Sorry to confuse you, I'll see if I can make amends. 

First, I found this about Nvidia HDA and alsa. 
ftp://download.nvidia.com/XFree86/gpu-hdmi-audio-document/gpu-hdmi-audio.html

I don't know what device out of the four that should be used, but for the 
instructions below I'll assume it's card 1, device 7, and has 7.1 channels out 
and we'll combine it with the Intel analog out which is card 0, device 0 which 
I assume has stereo output. I also assume you want to duplicate the front 
channels of the surround-capable Nvidia-card to the Intel card. If you need 
other devices just change those numbers in the asoundrc/asound.conf file. 

I will also assume you want system wide settings, since you say you put 
something in /etc. If that is the case the file name should be asound.conf as 
alsa only looks for .asoundrc in your home directory (e.g. 
/home/doug/.asoundrc). You could start by renaming the file you have to 
/etc/asound.conf and try to play something.

The Quattro is as you guessed the M-Audio USB Quattro sound card, which shows 
up as a pair of dual channel devices, and that is of course not what you have, 
but the instructions for setting up a "multi" device works for any two sound 
cards. The naming in asound.conf can be chosen  arbitrarily, so we don't need 
to call the pcm's (i.e. 'virtual sound cards', more or less) q4 or quattro.

In short this is what we'll do:

We link the Nvidia and Intel sound cards using the "multi" pcm, so that they 
become one single virtual sound card. 
We add a "plug" pcm on top of the "multi" so that we can rout incoming channels 
to arbitrary output channels, and so that alsa automatically converts incoming 
audio to a format the "multi" virtual sound card understands.
Using the routing abilities, we duplicate the first two incoming channels and 
send them to the Intel stereo outs as well as the Nvidia front outputs. 
I copied the asoundrc-file from the M-Audio Quattro example, removed what was 
not needed and altered the rest according to my assumptions above. Here is the 
result, which you should put in a file that you name asound.conf and put in 
/etc: 

#
# compose 8 channels from a stereo device and a 7.1 device, hw:0,0 (Intel) and 
# hw:1,7 (Nvidia)
# 
#

pcm.dougs_multi {
        type multi;

        slaves.a.pcm "hw:0,0"; # This is the Intel card
        slaves.a.channels 2; # It is a stereo card
        slaves.b.pcm "hw:1,7"; # This is the Nvidia card
        slaves.b.channels 8; # It is a 7.1 card

# Bind channels of the new virtual sound card (dougs_multi) to physical 
channels on the two real sound cards. 
        bindings.0.slave a;
        bindings.0.channel 0;
        bindings.1.slave a;
        bindings.1.channel 1;
        bindings.2.slave b;
        bindings.2.channel 0;
        bindings.3.slave b;
        bindings.3.channel 1;
        bindings.4.slave b;
        bindings.4.channel 2;
        bindings.5.slave b;
        bindings.5.channel 3;
        bindings.6.slave b;
        bindings.6.channel 4;
        bindings.7.slave b;
        bindings.7.channel 5;
        bindings.8.slave b;
        bindings.8.channel 6;
        bindings.9.slave b;
        bindings.9.channel 7;

}

#This is a "control device" adhering to the virtual sound card, which is mostly 
not needed, but we may as well create it while hacking. 
ctl.dougs_multi{
        type hw;
        card 1;
}


#
# Remap 4 channels as interleaved.
# Use "plug" to make alsa automatically convert the format of the incoming 
sound from your software to something the multi understands. 

pcm.dougplug {
        type plug;
        slave.pcm "dougs_multi";
        slave.channels 10;

#Here we route channels. The first number is incoming channel and the second is 
outgoing channel. The third is level, so you can choose to reduce the level for 
som channels by choosing a number between 0 and 1. 
# If you have som program playing stereo sound that will mean incoming channels 
0 and 1. Those will be routed to channels 0 and 1 as well as 2 and 3 of the 
multi device. That corresponds to the Intel card (channels 0 and 1) and the 
first two channels of the Nvidia card (channels 2 and 3). 
        ttable.0.0 1; # In-channel 0 to out-channel 0 - Intel
        ttable.1.1 1; # In-channel 1 to out-channel 1 - Intel
        ttable.0.2 1; # In-channel 0 (again) to out-channel 2 - Nvidia
        ttable.1.3 1; # In-channel 1 (again) to out-channel 3 - Nvidia
        ttable.2.4 1;
        ttable.3.5 1;
        ttable.4.6 1;
        ttable.5.7 1;
        ttable.6.8 1;
        ttable.7.9 1;
 
}


# This will not be needed either, but we're on a roll here so why stop?
ctl.dougplug {
        type hw;
        card 1;
}

------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Alsa-user mailing list
Alsa-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/alsa-user

Reply via email to