Saturday, February 26, 2005

Audio recording in KDE/Mandrake

I had a sudden desire to hear my own voice. Installed kdemultimedia-krec which contains the nice, small sound recorder 'krec'. The Krec gui seemed pretty intuitive but nothing would get recorded. I had always thought that the line-in/mic/capture etc. controls in the mixer (kmix) confuses me; 15 minutes of fruitless messing with them only added to my fear.

Configuration:
I have an onboard Intel Corp. 82801DB/DBL/DBM AC'97 audio card with pci-id (lspci -n) 8086:24c5. I use arts as my KDE soundserver. kmix (and alsamixer) both shows several input controls -
Line, CD, Mic, Video,...,Capture. In kmix, each control has
* a green LED at the top (showing whether the input control is turned off or on)
- there can be many controls turned on at the same time
- turn the input controls off (mute them) when not in use to prevent feedback noise (sound of typing, humming noise etc.)
* a slider showing the playback volume (which I guess, is the volume at which input audio will be played). The slider for the Capture control does not move in kmix but I can manipulate it via alsamixer to change the capture/recording volume)
- I noticed that if I set the 'PCM Out Path and Mute' control to 'pre 3D' (the other value is 'post 3D') then I whatever I say in the microphone comes out via the speaker (headphone). The volume of this feedback can be controlled (besides the normal Master etc. controls) by the slider of the currently enabled input control.
* a red LED showing the current capture source. There can be (besides capture control - it has be turned on to capture/record) only one capture control which is enabled. Turning one on turns the others off. (In alsamixer, use 'space' to set capture device).

Okay, now whats wrong with my krec ? It has VU-Meter on the main window which (irrespective of recording or not) shows the audio signal level coming in through the recording device. No activity was observed there. Since kmix was not allowing me change the 'capture' control I decided to fall back to the good old and trusted amixer. After a little playing, I could make it work. This is my working configuration (as seen in the output of 'amixer' - only relevant controls):

// line-in turned off
Simple mixer control 'Line',0
Capabilities: pvolume pswitch pswitch-joined cswitch cswitch-joined cswitch-exclusive
Capture exclusive group: 0
Playback channels: Front Left - Front Right
Capture channels: Front Left - Front Right
Limits: Playback 0 - 31
Front Left: Playback 18 [58%] [off] Capture [off]
Front Right: Playback 17 [55%] [off] Capture [off]

// mic turned on, playback ... dont care, set as capture device
Simple mixer control 'Mic',0
Capabilities: pvolume pvolume-joined pswitch pswitch-joined cswitch cswitch-joined cswitch-exclusive
Capture exclusive group: 0
Playback channels: Mono
Capture channels: Front Left - Front Right
Limits: Playback 0 - 31
Mono: Playback 25 [81%] [on]
Front Left: Capture [on]
Front Right: Capture [on]

// capture control
Simple mixer control 'Capture',0
Capabilities: cvolume cswitch cswitch-joined
Capture channels: Front Left - Front Right
Limits: Capture 0 - 15
Front Left: Capture 11 [73%] [on]
Front Right: Capture 11 [73%] [on]

- I used
$ amixer sget Capture,0
to get the control details. To change/set controls, use sset as in this example
$ amixer sset Capture,0 80%,40% unmute cap

Things started working. Oh - after I heard myself in krec, I almost shouted (to myself) - "Slow down, dude!".

- d.

No comments:

Post a Comment