[linux-audio-dev] Two / Three HDSPM Cards?

Audio Developer audiodev at glw.com
Thu Jun 9 13:50:33 UTC 2005


Howdy,
 
I am currently trying to get two HDSPM cards working with ALSA and JACK. I can use each card individually from each other using -Dhw:0 or -Dhw:1. However I need to get both cards to look like one card for a program that we are developing in house. From what I have read I need either a .asoundrc or a /etc/alsa.conf file. For the time being I have chosen to work with .asoundrc.

Here is the problem. I build the .asoundrc file according to the help page in the ALSA documentation, however when I execute any program that calls that virtual card, I get the following error. (This output is from the PCM test program in Alsa-Lib) 

opteron:/usr/src/alsa-lib-1.0.9/test # ./pcm -Dplug:hdspmbig -c112 
Playback device is plug:hdspmbig 
Stream parameters are 44100Hz, S16_LE, 112 channels 
Sine wave rate is 440.0000Hz Using transfer method: write
pcm: pcm_multi.c:811: snd_pcm_multi_open: Assertion `!slave_map[sidxs[i]][schannels[i]]' failed.
Aborted

If I reduce the number of channels contained in the virtual card named hdspm_112 to 64 channels, the test will work fine. I have a suspicion that the problem lies in the fact that the virtual card holds more channels than are physically available to the first sound card (hw:0). I am sure that there is something painfully obvious that I am missing but I haven't been able to locate it in the last four days.

I am including my .asoundrc file for reference. 

Any help would me much appreciated.

Thanks,
Matthew Simmons

--------------begin .asoundrc ---------------------- pcm_slave.hdspm_s {
      pcm hdspm_0
 }
 pcm.hdspm_1 {
      type hw
      card 1
 }
 ctl.hdspm_1 {
      type hw
      card 1
 }
 pcm.hdspm_0 {
      type hw
      card 0
 }
 ctl.hdspm_0 {
      type hw
      card 0
 }
 ctl.hdspm_112 {
      type hw
      card 0
 }
 pcm.hdspm_112 {
      type multi;
      slaves.a.pcm hdspm_0;
      slaves.a.channels 56;
      slaves.b.pcm hdspm_1;
      slaves.b.channels 56;
      bindings.0.slave a;
      bindings.0.channel 0;
      bindings.1.slave a;
      bindings.1.channel 1;
      bindings.2.slave a;
      bindings.2.channel 2;
      bindings.3.slave a;
      bindings.3.channel 3;
      bindings.4.slave a;
      bindings.4.channel 4;
      bindings.5.slave a;
      bindings.5.channel 5;
      bindings.6.slave a;
      bindings.6.channel 6;
      bindings.7.slave a;
      bindings.7.channel 7;
      bindings.8.slave a;
      bindings.8.channel 8;
      bindings.9.slave a;
      bindings.9.channel 9;
      bindings.10.slave a;
      bindings.10.channel 10;
      bindings.11.slave a;
      bindings.11.channel 11;
      bindings.12.slave a;
      bindings.12.channel 12;
      bindings.13.slave a;
      bindings.13.channel 13;
      bindings.14.slave a;
      bindings.14.channel 14;
      bindings.15.slave a;
      bindings.15.channel 15;
      bindings.16.slave a;
      bindings.16.channel 16;
      bindings.17.slave a;
      bindings.17.channel 17;
      bindings.18.slave a;
      bindings.18.channel 18;
      bindings.19.slave a;
      bindings.19.channel 19;
      bindings.20.slave a;
      bindings.20.channel 20;
      bindings.21.slave a;
      bindings.21.channel 21;
      bindings.22.slave a;
      bindings.22.channel 22;
      bindings.23.slave a;
      bindings.23.channel 23;
      bindings.24.slave a;
      bindings.24.channel 24;
      bindings.25.slave a;
      bindings.25.channel 25;
      bindings.26.slave a;
      bindings.26.channel 26;
      bindings.27.slave a;
      bindings.27.channel 27;
      bindings.28.slave a;
      bindings.28.channel 28;
      bindings.29.slave a;
      bindings.29.channel 29;
      bindings.30.slave a;
      bindings.30.channel 30;
      bindings.31.slave a;
      bindings.31.channel 31;
      bindings.32.slave a;
      bindings.32.channel 32;
      bindings.33.slave a;
      bindings.33.channel 33;
      bindings.34.slave a;
      bindings.34.channel 34;
      bindings.35.slave a;
      bindings.35.channel 35;
      bindings.36.slave a;
      bindings.36.channel 36;
      bindings.37.slave a;
      bindings.37.channel 37;
      bindings.38.slave a;
      bindings.38.channel 38;
      bindings.39.slave a;
      bindings.39.channel 39;
      bindings.40.slave a;
      bindings.40.channel 40;
      bindings.41.slave a;
      bindings.41.channel 41;
      bindings.42.slave a;
      bindings.42.channel 42;
      bindings.43.slave a;
      bindings.43.channel 43;
      bindings.44.slave a;
      bindings.44.channel 44;
      bindings.45.slave a;
      bindings.45.channel 45;
      bindings.46.slave a;
      bindings.46.channel 46;
      bindings.47.slave a;
      bindings.47.channel 47;
      bindings.48.slave a;
      bindings.48.channel 48;
      bindings.49.slave a;
      bindings.49.channel 49;
      bindings.50.slave a;
      bindings.50.channel 50;
      bindings.51.slave a;
      bindings.51.channel 51;
      bindings.52.slave a;
      bindings.52.channel 52;
      bindings.53.slave a;
      bindings.53.channel 53;
      bindings.54.slave a;
      bindings.54.channel 54;
      bindings.55.slave a;
      bindings.55.channel 55;

 # Use hdspm_1

  bindings.56.slave b;
  bindings.56.channel 0;
      bindings.57.slave b;
      bindings.57.channel 1;
      bindings.58.slave b;
      bindings.58.channel 2;
      bindings.59.slave b;
      bindings.59.channel 3;
      bindings.60.slave b;
      bindings.60.channel 4;
      bindings.61.slave b;
      bindings.61.channel 5;
      bindings.62.slave b;
      bindings.62.channel 6;
      bindings.63.slave b;
      bindings.63.channel 7;
      bindings.64.slave b;
      bindings.64.channel 8;
      bindings.65.slave b;
      bindings.65.channel 9;
      bindings.66.slave b;
      bindings.66.channel 10;
      bindings.67.slave b;
      bindings.67.channel 11;
      bindings.68.slave b;
      bindings.68.channel 12;
      bindings.69.slave b;
      bindings.69.channel 13;
      bindings.70.slave b;
      bindings.70.channel 14;
      bindings.71.slave b;
      bindings.71.channel 15;
      bindings.72.slave b;
      bindings.72.channel 16;
      bindings.73.slave b;
      bindings.73.channel 17;
      bindings.74.slave b;
      bindings.74.channel 18;
      bindings.75.slave b;
      bindings.75.channel 19;
      bindings.76.slave b;
      bindings.76.channel 20;
      bindings.77.slave b;
      bindings.77.channel 21;
      bindings.78.slave b;
      bindings.78.channel 22;
      bindings.79.slave b;
      bindings.79.channel 23;
      bindings.80.slave b;
      bindings.80.channel 24;
      bindings.81.slave b;
      bindings.81.channel 25;
      bindings.82.slave b;
      bindings.82.channel 26;
      bindings.83.slave b;
      bindings.83.channel 27;
      bindings.84.slave b;
      bindings.84.channel 28;
      bindings.85.slave b;
      bindings.85.channel 29;
      bindings.86.slave b;
      bindings.86.channel 30;
      bindings.87.slave b;
      bindings.87.channel 31;
      bindings.88.slave b;
      bindings.88.channel 32;
      bindings.89.slave b;
      bindings.89.channel 33;
      bindings.90.slave b;
      bindings.90.channel 34;
      bindings.91.slave b;
      bindings.91.channel 35;
      bindings.92.slave b;
      bindings.92.channel 36;
      bindings.93.slave b;
      bindings.93.channel 37;
      bindings.94.slave b;
      bindings.94.channel 38;
      bindings.95.slave b;
      bindings.95.channel 39;
      bindings.96.slave b;
      bindings.96.channel 40;
      bindings.97.slave b;
      bindings.97.channel 41;
      bindings.98.slave b;
      bindings.98.channel 42;
      bindings.99.slave b;
      bindings.99.channel 43;
      bindings.100.slave b;
      bindings.100.channel 44;
      bindings.101.slave b;
      bindings.101.channel 45;
      bindings.102.slave b;
      bindings.102.channel 46;
      bindings.103.slave b;
      bindings.103.channel 47;
      bindings.104.slave b;
      bindings.104.channel 48;
      bindings.105.slave b;
      bindings.105.channel 49;
      bindings.106.slave b;
      bindings.106.channel 50;
      bindings.107.slave b;
      bindings.107.channel 51;
      bindings.108.slave b;
      bindings.108.channel 52;
      bindings.109.slave b;
      bindings.109.channel 53;
      bindings.110.slave b;
      bindings.110.channel 54;
      bindings.111.slave b;
      bindings.111.channel 55;
      bindings.112.slave b;
      bindings.112.channel 56;

 }

 pcm.hdspmbig {
  type route
  slave.pcm "hdspm_112"
  ttable.0.0 1
  ttable.1.1 1
  ttable.2.2 1
  ttable.3.3 1
  ttable.4.4 1
  ttable.5.5 1
  ttable.6.6 1
  ttable.6.6 1
  ttable.7.7 1
  ttable.8.8 1
  ttable.9.9 1
  ttable.10.10 1
  ttable.11.11 1
  ttable.12.12 1
  ttable.13.13 1
  ttable.14.14 1
  ttable.15.15 1
  ttable.16.16 1
  ttable.17.17 1
  ttable.18.18 1
  ttable.19.19 1
  ttable.20.20 1
  ttable.21.21 1
  ttable.22.22 1
  ttable.23.23 1
  ttable.24.24 1
  ttable.25.25 1
  ttable.26.26 1
  ttable.27.27 1
  ttable.28.28 1
  ttable.29.29 1
  ttable.30.30 1
  ttable.31.31 1
  ttable.32.32 1
  ttable.33.33 1
  ttable.34.34 1
  ttable.35.35 1
  ttable.36.36 1
  ttable.37.37 1
  ttable.38.38 1
  ttable.39.39 1
  ttable.40.40 1
  ttable.41.41 1
  ttable.42.42 1
  ttable.43.43 1
  ttable.44.44 1
  ttable.45.45 1
  ttable.46.46 1
  ttable.47.47 1
  ttable.48.48 1
  ttable.49.49 1
  ttable.50.50 1
  ttable.51.51 1
  ttable.52.52 1
  ttable.53.53 1
  ttable.54.54 1
  ttable.55.55 1
  ttable.56.56 1
  ttable.57.57 1
  ttable.58.58 1
  ttable.59.59 1
  ttable.60.60 1
  ttable.61.62 1
  ttable.63.63 1
  ttable.64.64 1
  ttable.65.65 1
  ttable.66.66 1
  ttable.67.67 1
  ttable.68.68 1
  ttable.69.69 1
  ttable.70.70 1
  ttable.71.71 1
  ttable.72.72 1
  ttable.73.73 1
  ttable.74.74 1
  ttable.75.75 1
  ttable.76.76 1
  ttable.77.77 1
  ttable.78.78 1
  ttable.79.79 1
  ttable.80.80 1
  ttable.81.81 1
  ttable.82.82 1
  ttable.83.83 1
  ttable.84.84 1
  ttable.85.85 1
  ttable.86.86 1
  ttable.87.87 1
  ttable.88.88 1
  ttable.89.89 1
  ttable.90.90 1
  ttable.91.91 1
  ttable.92.92 1
  ttable.93.93 1
  ttable.94.94 1
  ttable.95.95 1
  ttable.96.96 1
  ttable.97.97 1
  ttable.98.98 1
  ttable.99.99 1
  ttable.100.100 1
  ttable.101.101 1
  ttable.102.102 1
  ttable.103.103 1
  ttable.104.104 1
  ttable.105.105 1
  ttable.106.106 1
  ttable.107.107 1
  ttable.108.108 1
  ttable.109.109 1
  ttable.110.110 1
  ttable.111.111 1
 }
 ctl.hdspmbig {
  type hw;
  card 0;
 }





More information about the Linux-audio-dev mailing list