Bug 126012

Summary: kmix misses input control slider for capturing input with usb_audio headset
Product: [Applications] kmix Reporter: Sebastian Reitenbach <itlistuser>
Component: Soundcard specificAssignee: Christian Esken <esken>
Status: RESOLVED FIXED    
Severity: normal CC: sinderman+kde
Priority: NOR    
Version: unspecified   
Target Milestone: ---   
Platform: openSUSE   
OS: Linux   
Latest Commit: Version Fixed In:

Description Sebastian Reitenbach 2006-04-21 11:56:51 UTC
Version:           kmix 2.6 (using KDE KDE 3.5.2)
Installed from:    SuSE RPMs
OS:                Linux

not sure whether it is the same problem like this bug:
http://bugs.kde.org/show_bug.cgi?id=105745

I have a gembird AP 5.1 usb headset with virtual 5.1 sound. 


a statement from the alsa mailing list:
The inputs of a soundcard usually have two controls: one to control the mixing in the master sound 
output, and one to control the mixing while capturing.


the input slider for mixing while capturing is missing. the others, output mixer, input mixer, and auto gain control switch is available and working.

in alsamixer it is there.


cat /proc/asound/card1/oss_mixer
VOLUME "" 0
BASS "" 0
TREBLE "" 0
SYNTH "" 0
PCM "" 0
SPEAKER "" 0
LINE "" 0
MIC "Mic" 0
CD "" 0
IMIX "" 0
ALTPCM "" 0
RECLEV "" 0
IGAIN "" 0
OGAIN "" 0
LINE1 "" 0
LINE2 "" 0
LINE3 "" 0
DIGITAL1 "" 0
DIGITAL2 "" 0
DIGITAL3 "" 0
PHONEIN "" 0
PHONEOUT "" 0
VIDEO "" 0
RADIO "" 0
MONITOR "" 0
Comment 1 Tobias Oed 2006-11-16 23:07:14 UTC
I'm using fedora core 6 with a cmipci driven sound card and am also missing stuff in kmix: Some of the switches/sliders shown in alsamixer are missing from kmix.
For instance, amixer reports this for microphone related stuff:
Simple mixer control 'Mic',0
  Capabilities: pvolume pvolume-joined cvolume pswitch pswitch-joined cswitch cswitch-joined
  Playback channels: Mono
  Capture channels: Mono
  Limits: Playback 0 - 31 Capture 0 - 7
  Mono: Playback 31 [100%] [off] Capture 0 [0%] [on]
Simple mixer control 'Mic Boost',0
  Capabilities: pswitch pswitch-joined cswitch cswitch-joined
  Playback channels: Mono
  Capture channels: Mono
  Mono: Playback [off] Capture [on]

Which corresponds to what I have in alsamixer. On the other hand kmix is missing the "Mic:cvolume" and "Mic Boost:cswitch" capabilities.
Tobias
Comment 2 Christian Esken 2007-06-11 00:17:56 UTC
I see interesting combinations in Tobias Oed's configuration:
1) "pvolume cvolume" is definitely not working in KDE3's KMix. It is (hopefully) fixed for KDE4, SVN Revision 673714. Feedback about this is very appreciated.
2) "pswitch cswitch" without volume is possibly not supported in KDE3's KMix. It is not fixed yet in KDE4.

Target milestone: KDE4
Comment 3 Christian Esken 2007-06-16 20:49:58 UTC
*** Bug 132172 has been marked as a duplicate of this bug. ***
Comment 4 Christian Esken 2007-06-17 16:00:41 UTC
SVN commit 676707 by esken:

Finalized optimal ALSA support. The last open issue (pswitch cswitch) is
now resolved.

BUGS: 123560
BUGS: 135729
BUGS: 126012
BUGS: 125772



 M  +30 -15    mdwslider.cpp  


--- trunk/KDE/kdemultimedia/kmix/mdwslider.cpp #676706:676707
@@ -234,22 +234,36 @@
 
 
 
-    // --- SLIDERS ---------------------------
-    QBoxLayout *volLayout;
-    if ( _orientation == Qt::Vertical ) {
-        volLayout = new QHBoxLayout( );
-        volLayout->setAlignment(Qt::AlignVCenter);
-    }
-    else {
-        volLayout = new QVBoxLayout(  );
-        volLayout->setAlignment(Qt::AlignHCenter);
-    }
-    sliLayout->addItem( volLayout );
+   // --- SLIDERS ---------------------------
+   QBoxLayout *volLayout;
+   if ( _orientation == Qt::Vertical ) {
+      volLayout = new QHBoxLayout( );
+      volLayout->setAlignment(Qt::AlignVCenter);
+   }
+   else {
+      volLayout = new QVBoxLayout(  );
+      volLayout->setAlignment(Qt::AlignHCenter);
+   }
+   sliLayout->addItem( volLayout );
 
-    if ( m_mixdevice->playbackVolume().count() > 0 )
-       addSliders( volLayout, 'p' );
-    if ( m_mixdevice->captureVolume().count() > 0 )
+   if ( m_mixdevice->playbackVolume().count() > 0 )
+      addSliders( volLayout, 'p' );
+   if ( m_mixdevice->captureVolume().count() > 0 )
        addSliders( volLayout, 'c' );
+   if ( m_mixdevice->playbackVolume().count() == 0 && m_mixdevice->captureVolume().count() == 0 )
+   {  // no siders => put a label with the name.
+      // But I won't add " (capture)" as on the sliders, because there is only one "column"
+      if ( _orientation == Qt::Vertical ) {
+         m_label = new VerticalText( this, m_mixdevice->readableName() );
+      }
+      else {
+         m_label = new QLabel(this);
+         static_cast<QLabel*>(m_label)->setText(m_mixdevice->readableName());
+      }
+      volLayout->addWidget( m_label );
+      m_label->installEventFilter( this );
+      m_label->setToolTip( m_mixdevice->readableName() );  // @todo: Whatsthis, explaining the device
+   }
 
    // --- RECORD SOURCE LED --------------------------
    if ( showRecordLED )
@@ -277,7 +291,8 @@
          reclayout->addWidget( m_recordLED );
          connect(m_recordLED, SIGNAL(stateChanged(bool)), this, SLOT(setRecsrc(bool)));
          m_recordLED->installEventFilter( this );
-         m_recordLED->setToolTip( i18n( "Record" ) );
+         QString muteTip( i18n( "Capture/Uncapture %1", m_mixdevice->readableName() ) );
+         m_recordLED->setToolTip( muteTip );  // @todo: Whatsthis, explaining the device
       } // has Record LED
       else
       {