Qual é o equivalente moderno da leitura de '/ dev / audio'?

4

Recentemente, meu fiel computador doméstico morreu após 10 anos. A atualização que se seguiu (do SuSE 10 para o OpenSuSE 12.3) foi uma espécie de choque cultural para mim - nenhum dos convenientes atalhos e utilitários que eu colecionei já funcionou. Hoje estou tentando fazer com que a entrada de som funcione novamente.

Eu costumava gravar programas noturnos da minha estação de rádio local através da entrada de linha da minha placa de som através de um pequeno utilitário que não faz nada além de abrir /dev/audio , executar algumas ioctls e ler bytes dela (e escrevê-lo em um arquivo WAV com libsndfile). Nada extravagante, apenas um pequeno utilitário "autorecord" que pode gravar N segundos de som, e pode passar por cron , sem um front-end, sem a necessidade de X, e sem que eu precise estar logado. (Ele foi originalmente adaptado do record.c do xawtv.)

Agora isso não funciona mais. Embora minha placa de som esteja configurada, não consigo mais gravar som com essa ferramenta - na verdade, parece que não há mais /dev/sound ! Pelo que eu percebi, mesmo em 2004, era um recurso legado suportado de má vontade, enquanto todas as pessoas legais deveriam programar contra a interface ALSA, muito mais sofisticada e capaz.

Qual é a maneira atual recomendada de obter rapidamente a entrada do dispositivo de som? Posso reativar a /dev/sound emulação de alguma forma? Suponho que um programa de terceiros também funcione, desde que não exija que eu forneça uma sessão X ou pressione os botões no meio da noite.

    
por Kilian Foth 21.03.2014 / 08:03

1 resposta

4

Acontece que os desenvolvedores de sound stack me anteciparam e escreveram uma solução específica para situações como a minha - eu não consegui encontrá-la no começo.

Aoss faz exatamente o que você deseja: ele pré-carrega libaoss.so e, em seguida, executa outra linha de comando, que então verá uma /dev/dsp e conseguir ioctl / ler / escrever. Então, em vez de, e.

autorecord -a -t -d 300 -o violin_concerto 

diga

/usr/bin/aoss autorecord -a -t -d 300 -o violin_concerto 

para que a ferramenta obsoleta funcione como antes.

A alternativa é carregar os módulos do kernel de emulação correspondentes, o que criará um real /dev/dsp e até um /dev/audio :

# modprobe snd_pcm_oss
# modprobe snd_seq_oss
# modprobe snd_mixer_oss

(É claro que a coisa responsável e voltada para o futuro teria sido crescer, aprender ALSA e programação pulseaudio e portar essas ferramentas antigas para a moderna e mais complicada API de som. Mas hoje em dia, eu não tenho mais o tempo para ferreiro de ferramentas que eu costumava fazer.)

    
por 10.04.2014 / 21:57