I'm using the python audio alsa library to interact with my M-Audio Delta 1010LT PCI audio interface. This audio interface has 8 analog inputs. I'd like to analyze the signal of one specific mono input. The card is being recognized:
cat /proc/asound/cards 0 [M1010LT ]: ICE1712 - M Audio Delta 1010LT
M Audio Delta 1010LT at 0xa000, irq 18
After that I listed all device names (showing input ADCs here) with the command "amixer"
...
Simple mixer control 'ADC',0
Capabilities: volume volume-joined penum
Playback channels: Mono
Capture channels: Mono
Limits: 0 - 164
Mono: 142 [87%] [7.50dB]
Simple mixer control 'ADC',1
Capabilities: volume volume-joined penum
Playback channels: Mono
Capture channels: Mono
Limits: 0 - 164
Mono: 164 [100%] [18.50dB]
Simple mixer control 'ADC',2
Capabilities: volume volume-joined penum
Playback channels: Mono
Capture channels: Mono
Limits: 0 - 164
Mono: 164 [100%] [18.50dB]
Simple mixer control 'ADC',3
Capabilities: volume volume-joined penum
Playback channels: Mono
Capture channels: Mono
Limits: 0 - 164
Mono: 164 [100%] [18.50dB]
Simple mixer control 'ADC',4
Capabilities: volume volume-joined penum
Playback channels: Mono
Capture channels: Mono
Limits: 0 - 164
Mono: 164 [100%] [18.50dB]
Simple mixer control 'ADC',5
Capabilities: volume volume-joined penum
Playback channels: Mono
Capture channels: Mono
Limits: 0 - 164
Mono: 164 [100%] [18.50dB]
Simple mixer control 'ADC',6
Capabilities: volume volume-joined penum
Playback channels: Mono
Capture channels: Mono
Limits: 0 - 164
Mono: 164 [100%] [18.50dB]
Simple mixer control 'ADC',7
Capabilities: volume volume-joined penum
Playback channels: Mono
Capture channels: Mono
Limits: 0 - 164
Mono: 164 [100%] [18.50dB]
...
After that I listed the recording harware devices using the command "arecord -l"
arecord -l**** List of CAPTURE Hardware Devices ****
card 0: M1010LT [M Audio Delta 1010LT], device 0: ICE1712 multi [ICE1712 multi]
Subdevices: 1/1
Subdevice #0: subdevice #0
Am I right? Is this displaying only 1 recording subdevice? Shouln't it be showing 8?
I also installed Mudita24 - an envy24 visual mixer. With this one I can adjust and monitor the level of all input channels flawlessly.
After that I made a little test using GStreamer which worked also quite well:
gst-launch-0.10 alsasrc card-name=0 device-name='ADC 0' ! queue ! alsasink card-name=0 device-name='DAC 0'
But I'm having troubles to address a certain mono channel in python's alsa using the following card and device descriptors:
'default' // This one get's me channel 1 & 2 MIXED (I'd like to get them as seperated mono inputs)
'hw:0,0' // recognizes device but the input value is 0
'hw:0,0,0' // returns same as hw:0,0
'hw:0,0,1' // Device or resource busy (pretty much every other value than 0 returns this)
'hw:0,1' // No such file or directory
How do I address a specific mono input channel using ALSA? This is the python library I'm using: link
This is how I'm trying to create a device for each channel:
pcm.one_channel {
@args [ CHANNEL ]
@args.CHANNEL { type integer }
type dsnoop
ipc_key 20130206
slave {
pcm "hw:0"
channels 12
rate 44000
}
bindings [ $CHANNEL ]
}
pcm.two_channel {
@args [ CHANNEL ]
@args.CHANNEL { type integer }
type dsnoop
ipc_key 20130206
slave {
pcm "hw:0"
channels 12
rate 44000
}
bindings [ $CHANNEL ]
}
pcm.three_channel {
@args [ CHANNEL ]
@args.CHANNEL { type integer }
type dsnoop
ipc_key 20130206
slave {
pcm "hw:0"
channels 12
rate 44000
}
bindings [ $CHANNEL ]
}
pcm.four_channel {
@args [ CHANNEL ]
@args.CHANNEL { type integer }
type dsnoop
ipc_key 20130206
slave {
pcm "hw:0"
channels 12
rate 44000
}
bindings [ $CHANNEL ]
}
pcm.five_channel {
@args [ CHANNEL ]
@args.CHANNEL { type integer }
type dsnoop
ipc_key 20130206
slave {
pcm "hw:0"
channels 12
rate 44000
}
bindings [ $CHANNEL ]
}
Did I interpret your advice correctly? I've been also looking around the web for this and found two other .asoundrc for this card (which unfortunately also do not work).
#
# M-Audio Delta 1010
#
pcm.ice1712_capture {
type dsnoop
ipc_key 1024
slave {
pcm "hw:0"
period_size 0
buffer_size 65536
rate 44100
channels 10
format "S16_LE"
}
}
pcm.ice1712_playback {
type dsnoop
ipc_key 1024
slave {
pcm "hw:0"
period_size 0
buffer_size 65536
rate 44100
channels 10
format "S16_LE"
}
}
pcm.ice1712_duplex {
type asym
playback.pcm ice1712_playback
capture.pcm ice1712_capture
}
pcm.ch1 {
type plug
ttable.0.0 1
slave.pcm ice1712_duplex
}
pcm.ch2 {
type plug
ttable.1.1 1
slave.pcm ice1712_duplex
}
pcm.ch3 {
type plug
ttable.0.2 1
slave.pcm ice1712_duplex
}
pcm.ch4 {
type plug
ttable.1.3 1
slave.pcm ice1712_duplex
}
pcm.ice1712_ch5 {
type plug
ttable.0.4 1
slave.pcm ice1712_duplex
}
pcm.ice1712_ch6 {
type plug
ttable.1.5 1
slave.pcm ice1712_duplex
}
pcm.ice1712_ch7 {
type plug
ttable.0.6 1
slave.pcm ice1712_duplex
}
pcm.ice1712_ch8 {
type plug
ttable.1.7 1
slave.pcm ice1712_duplex
}
pcm.ice1712_ch9 {
type plug
ttable.0.8 1
slave.pcm ice1712_duplex
}
pcm.ice1712_ch10 {
type plug
ttable.1.9 1
slave.pcm ice1712_duplex
}
and here another one:
pcm.multi_capture {
type multi
slaves.a.pcm hw:0
slaves.a.channels 12
# First 8 channels of first soundcard (capture)
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
# S/PDIF section. Uncomment bindings if required.
# S/PDIF first soundcard (capture)
#bindings.16.slave a
#bindings.16.channel 8
#bindings.17.slave a
#bindings.17.channel 9
}
ctl.multi_capture {
type hw
card 0
}
pcm.multi_playback {
type multi
slaves.a.pcm hw:0
slaves.a.channels 10
# First 8 channels of first soundcard (playback)
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
# S/PDIF section. Uncomment bindings if required.
# S/PDIF first soundcard (playback)
#bindings.16.slave a
#bindings.16.channel 8
#bindings.17.slave a
#bindings.17.channel 9
}
ctl.multi_playback {
type hw
card 0
}