> Hello. What is the latest status of Creative/emu10k1 support?
> 
> I have Alsa driver where the LiveDrive Line-In2 ("Line LiveDrive 1")
> on capture bus does not work. We checked the case with Alsa developers
> but the problem remained. A quick look at the Alsa-Devel archives
> reveals that others have had the same problem this year.
> 
> Before anyone jumps and tell that they are able to record from
> the Line-In2, I can tell that that is possible via AC97, which
> is wrong way.
> 
>  !! If you think your capture works, mail me and we   !!
>  !! *verify* it together with my test mixer settings. !!

I was playing with the alsa source in kernel-2.6.0 and after "fixing" a few
things, my Line-In2 started working as expected.

This is my testing procedure:

- Headset plugged in the Headphones and Mic of the LiveDrive. Card is Live
  Platinum (with the IEEE1394).

- Unload all alsa modules and confirm nothing is loaded.... cat
  /proc/asound/cards says "no cards". My sound-related modules are compiled in
  the kernel and only the card-specific drivers are modules.

- modprobe snd-emu10k1

- set a few volume levels (all are default, module is freshly loaded and
  alsactl is not used). I set the headphones, so I can be more than sure that I
  do not record what I am hearing. The names do not correspond to the original
  ones, because of the changes to the source.

  amixer cset numid=36,iface=MIXER,name='Headphone Playback Volume',index=1 50,50
  amixer cset numid=24,iface=MIXER,name='LiveDrive Line1 Capture Volume' 100,100
  amixer cset numid=25,iface=MIXER,name='LiveDrive Line1 Capture Switch' on,on

  In reality I used alsamixer to set these three values, but for clarity I show
  the amixer commands here.

- Test recording

  arecord -f cd > out.wav
  aplay out.wav

Works fine and nothing was heard while recording. AC97 capture level is down,
Capture switch is off etc.

The exact same procedure does not work using the original sources.

I attach my patch, but it is already too late (it is MORNING already) for me to
check what exactly "fixed" the problem. The reason I started playing with the
sources, was because gamix had trouble identifying some of the controls, so I
decided to change the names to more reasonable values. I also removed the
indexing of the "LiveDrive Line" controls and it suddenly worked as if by
magic. I hope some guru creates a more reasonable patch.

One more thing. Happy New Year! I hope this patch makes a bunch of us happy,
even in its present very ugly state.

-- 
\    Georgi Georgiev   \  A long memory is the most subversive idea in \
/     [EMAIL PROTECTED]    /  America.                                     /
\   +81(90)6266-1163   \                                               \
--- linux-2.6.0/sound/pci/emu10k1/emufx.c       2003-12-18 11:58:56.000000000 +0900
+++ linux-2.6.0/sound/pci/emu10k1/emufx.c       2003-12-31 04:52:31.907050521 +0900
@@ -159,7 +159,7 @@
        /* 0x0f */ "Rear Right",
        /* 0x10 */ "AC97 Front Left",
        /* 0x11 */ "AC97 Front Right",
-       /* 0x12 */ "ADC Caputre Left",
+       /* 0x12 */ "ADC Capture Left",
        /* 0x13 */ "ADC Capture Right",
        /* 0x14 */ NULL,
        /* 0x15 */ NULL,
@@ -1897,7 +1897,7 @@
                /* Line LiveDrive Playback Volume */
                for (z = 0; z < 2; z++)
                        VOLUME_ADDIN(icode, &ptr, playback + z, EXTIN_LINE1_L + z, gpr 
+ z);
-               snd_emu10k1_init_stereo_control(controls + i++, "Line LiveDrive 
Playback Volume", gpr, 0);
+               snd_emu10k1_init_stereo_control(controls + i++, "LiveDrive Line1 
Playback Volume", gpr, 0);
                gpr += 2;
        
                /* Line LiveDrive Capture Volume + Switch */
@@ -1905,8 +1905,8 @@
                        SWITCH_IN(icode, &ptr, tmp + 0, EXTIN_LINE1_L + z, gpr + 2 + 
z);
                        VOLUME_ADD(icode, &ptr, capture + z, tmp + 0, gpr + z);
                }
-               snd_emu10k1_init_stereo_control(controls + i++, "Line LiveDrive 
Capture Volume", gpr, 0);
-               snd_emu10k1_init_stereo_onoff_control(controls + i++, "Line LiveDrive 
Capture Switch", gpr + 2, 0);
+               snd_emu10k1_init_stereo_control(controls + i++, "LiveDrive Line1 
Capture Volume", gpr, 0);
+               snd_emu10k1_init_stereo_onoff_control(controls + i++, "LiveDrive Line1 
Capture Switch", gpr + 2, 0);
                gpr += 4;
        }
        
@@ -1928,21 +1928,21 @@
        }
        
        if (emu->fx8010.extin_mask & ((1<<EXTIN_LINE2_L)|(1<<EXTIN_LINE2_R))) {
-               /* Line LiveDrive Playback Volume */
+               /* Line2 LiveDrive Playback Volume */
                for (z = 0; z < 2; z++)
                        VOLUME_ADDIN(icode, &ptr, playback + z, EXTIN_LINE2_L + z, gpr 
+ z);
-               snd_emu10k1_init_stereo_control(controls + i++, "Line LiveDrive 
Playback Volume", gpr, 0);
-               controls[i-1].id.index = 1;
+               snd_emu10k1_init_stereo_control(controls + i++, "LiveDrive Line2 
Playback Volume", gpr, 0);
+               //controls[i-1].id.index = 1;
                gpr += 2;
        
-               /* Line LiveDrive Capture Volume */
+               /* Line2 LiveDrive Capture Volume */
                for (z = 0; z < 2; z++) {
                        SWITCH_IN(icode, &ptr, tmp + 0, EXTIN_LINE2_L + z, gpr + 2 + 
z);
                        VOLUME_ADD(icode, &ptr, capture + z, tmp + 0, gpr + z);
                }
-               snd_emu10k1_init_stereo_control(controls + i++, "Line LiveDrive 
Capture Volume", gpr, 0);
-               snd_emu10k1_init_stereo_onoff_control(controls + i++, "Line LiveDrive 
Capture Switch", gpr + 2, 0);
-               controls[i-1].id.index = 1;
+               snd_emu10k1_init_stereo_control(controls + i++, "LiveDrive Line2 
Capture Volume", gpr, 0);
+               snd_emu10k1_init_stereo_onoff_control(controls + i++, "LiveDrive Line2 
Capture Switch", gpr + 2, 0);
+               //controls[i-1].id.index = 1;
                gpr += 4;
        }
 

Reply via email to