3

Pythonオーディオalsaライブラリを使用して、M-Audio Delta1010LTPCIオーディオインターフェイスを操作しています。このオーディオインターフェースには8つのアナログ入力があります。1つの特定のモノラル入力の信号を分析したいと思います。カードが認識されています:

cat /proc/asound/cards 0 [M1010LT        ]: ICE1712 - M Audio Delta 1010LT
                  M Audio Delta 1010LT at 0xa000, irq 18

その後、コマンド「amixer」を使用して、すべてのデバイス名(ここに入力ADCを表示)をリストしました。

...
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]
...

その後、コマンド「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

私は正しいですか?これは1つの記録サブデバイスのみを表示していますか?8を表示していませんか?

また、envy24ビジュアルミキサーであるMudita24もインストールしました。これで、すべての入力チャンネルのレベルを完璧に調整および監視できます。

その後、GStreamerを使用して少しテストを行いました。これも非常にうまく機能しました。

gst-launch-0.10 alsasrc card-name=0 device-name='ADC 0' ! queue ! alsasink card-name=0 device-name='DAC 0'

しかし、次のカードとデバイス記述子を使用して、Pythonのalsaで特定のモノラルチャネルをアドレス指定するのに問題があります。

'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

ALSAを使用して特定のモノラル入力チャンネルに対処するにはどうすればよいですか?これは私が使用しているPythonライブラリです:link

これが私が各チャンネルのデバイスを作成しようとしている方法です:

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 ]
}

私はあなたのアドバイスを正しく解釈しましたか?私もこれをウェブで探していて、このカードの他の2つの.asoundrcを見つけました(残念ながら、これも機能しません)。

#
# 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
}

そしてここにもう1つ:

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
}
4

1 に答える 1

2

ツールにはデバイス名は表示されamixerませんが、ミキサー コントロールは表示されます。

実際、ICE1712 チップにはキャプチャ デバイスが 1 つしかありません (正確に 12 チャネル)。


~/.asoundrc個々のチャネルの仮想デバイスを取得するには、次のようなものをまたはに追加してみてください/etc/asound.conf:

pcm.one_channel {
    @args [ CHANNEL ]
    @args.CHANNEL { type integer }
    type dsnoop
    ipc_key 20130206
    slave {
        pcm "hw:0"
        channels 12
        rate 48000
    }
    bindings [ $CHANNEL ]
}

、 などone_channel:0のデバイス名を使用します。one_channel:1

于 2013-02-06T10:11:14.647 に答える