Sim, é porque, se você estiver gravando diretamente do dispositivo de hardware, só poderá gravar nos formatos, número de canais, taxa de bits, etc., diretamente suportados pelo hardware. Então, quando você faz algo como
arecord -D hw:0,0 out.wav
você vai se deparar com esse problema; você precisará adicionar os parâmetros corretos como em
arecord -D hw:0,0 -c 1 -f S16_BE -f44100 out.wav
(claro, com os parâmetros do seu dispositivo, não estes), ou você pode usar um plug-in de conversão que o ALSA disponibiliza automaticamente para cada dispositivo, como em
arecord -D plughw:0,0 ... out.wav
e depois será convertido para qualquer formato que você especificar.
O mesmo se aplica a qualquer outro aplicativo que tente gravar via ALSA. Você também pode configurar seu próprio ~/.asoundrc
com padrões razoáveis, se quiser.
Use arecord -L
para obter uma lista de quais dispositivos / plugins você pode gravar. Possivelmente você desejará usar o plugin dsnoop
fornecido automaticamente, mas você não nos disse para que precisa gravar e o que exatamente você fez quando tentou gravar.
Editar :
Ok, a informação que faltava era:
You are using a program called Mathworks. This program has a block for audio capture, which has a parameter called Device Name. The parameter defaults to
hw:1,0
.
Contanto que esse parâmetro esteja definido para qualquer valor de hw:...
, você pode gravar coisas no seu ~/.asoundrc
até ficar com a cara na cor azul, e isso não mudará nada, porque hw:...
significa "usar o hardware diretamente, não importa todos os outros plugins especificados em ~/.asoundrc
".
O primeiro passo é identificar o dispositivo correto: Do arecord -l
, e você verá algo como
card X: NAME_OF_CARD, device Y: NAME_OF_DEVICE
...
Agora, altere o valor do parâmetro acima para plughw:X,Y
, por ex. plughw:1,0
, exclua seu ~/.asoundrc
para remover uma possível fonte adicional de erros e tente novamente. plughw:...
colocará um plug
plug-in diretamente em frente ao determinado dispositivo de hardware como um escravo.
Se ainda assim não funcionar, existem duas razões possíveis, e a mensagem de erro que você receberá mostrará uma sugestão:
(1) O bloco Mathworks é escrito de tal forma que funciona apenas diretamente com dispositivos de hardware, não com plugins, e não tem como alterar o número de canais (talvez haja um parâmetro extra que eles esqueceram de mencionar em a documentação). Nesse caso, não há muito que você possa fazer. Você pode tentar usar dsp.audiofilereader em um canal nomeado com arecord
do outro lado, mas não tenho certeza de como isso funcionaria, e é uma medida paliativa.
(2) O plughw
plugin deve converter automaticamente os canais IIRC, mas talvez não. Então você terá que escrever explicitamente um plugin em seu ~/.asoundrc
, mas vamos fazer isso apenas se for necessário.