A resposta é: não. Java não pode listar os pcms ALSA definidos pelo usuário, pois expõe apenas os dispositivos de hardware e o dispositivo "padrão".
Obteve as informações de um desenvolvedor da ALSA aqui: link
Eu tenho uma placa de som surround 7.1 instalada e quero dividir as saídas em 4 saídas estéreo. Isso não é um problema com o ALSA (ou mesmo o PulseAudio), mas não consigo fazer com que o Java Sound System me mostre as saídas estéreo separadamente.
Qual é o truque aqui? É possível simular dispositivos de hardware com o ALSA para que o Java os veja?
Isso é o que o Java vê:
Found Mixer: PulseAudio Mixer, version 0.02
Found source line: interface SourceDataLine supporting 42 audio formats, and buffers of 0 to 1000000 bytes
Line unavailable.
Found source line: interface Clip supporting 42 audio formats, and buffers of 0 to 1000000 bytes
Line unavailable.
Found target line: interface TargetDataLine supporting 42 audio formats, and buffers of 0 to 1000000 bytes
Line unavailable.
Found Mixer: DX [default], version 1.0.21
Found target line: interface TargetDataLine supporting 84 audio formats, and buffers of at least 32 bytes
Found Mixer: DX [plughw:0,0], version 1.0.21
Found source line: interface SourceDataLine supporting 96 audio formats, and buffers of at least 32 bytes
Found source line: interface Clip supporting 96 audio formats, and buffers of at least 32 bytes
Found target line: interface TargetDataLine supporting 24 audio formats, and buffers of at least 32 bytes
Found Mixer: DX [plughw:0,1], version 1.0.21
Found source line: interface SourceDataLine supporting 24 audio formats, and buffers of at least 32 bytes
Found source line: interface Clip supporting 24 audio formats, and buffers of at least 32 bytes
Found Mixer: Port DX [hw:0], version 1.0.21
Found source line: Mic source port
Found source line: Aux source port
Found source line: Analog Input Monitor source port
Found target line: Master target port
Found target line: Analog Input Monitor target port
Este é o meu .asoundrc:
pcm_slave.eightchannels {
pcm "surround71:DX,0"
channels 8
}
pcm.stereo1 {
type plughw
slave.pcm {
type dshare
ipc_key 87882222
slave eightchannels
bindings [ 2 3 ]
}
}
pcm.stereo2 {
type plughw
slave.pcm {
type dshare
ipc_key 87882222
slave eightchannels
bindings [ 4 5 ]
}
}
pcm.stereo3 {
type plughw
slave.pcm {
type dshare
ipc_key 87882222
slave eightchannels
bindings [ 6 7 ]
}
}
pcm.stereo4 {
type plughw
slave.pcm {
type dshare
ipc_key 87882222
slave eightchannels
bindings [ 0 1 ]
}
}
A configuração ALSA funciona bem, pois eu posso reproduzir som nas saídas estéreo1 ... 4 com teste de alto-falante -D estéreo1.
Obrigado!
A resposta é: não. Java não pode listar os pcms ALSA definidos pelo usuário, pois expõe apenas os dispositivos de hardware e o dispositivo "padrão".
Obteve as informações de um desenvolvedor da ALSA aqui: link