sexta-feira, 13 de janeiro de 2012

APIs para desenvolvimento de software com áudio

Desenvolver uma aplicação que pode ser usada diretamente sobre a camada de áudio do SO é confusão. O Windows tem o DirectSound, WinKS, WASAPI, Windows Multimedia Library e ASIO, o Linux tem o FFADO, ALSA e OSS e o MacOS tem o Sound Manager, ASIO e Core Audio. Implementar um software que funcione em tudo isto pode ser transtorno.

Encontrei algumas alternativas que parecem ser viáveis: JUCE, SDL, OpenAL, RTAudio e PortAudio. Basicamente tratam-se de 3 APIs abertas que permitem escrever aplicações de áudio e compilá-la para aquela lista acima.

  • O JUCE (http://www.rawmaterialsoftware.com/juce.php)  promete atender até implementações de Audio Unit (plugins tipo VST para Mac) e VST. Além disto possui biblioteca para GUI. Por isto pareceu um quase Qt.

  • O SDL (http://www.libsdl.org/) permite acesso também ao teclado, webcam, mouse e outras coisas. É dirigido para jogos. Não me convenceu apesar de ser uma alternativa para futuramente incluir stream de vídeo. Se não estou enganado possui biblioteca para Arduino. E ATARI!

  • O openAL foi feito pela creative e pode ser uma alternativa para trabalhar com  espacialização. Pareceu-me que ela foi feita para isto.  É uma API para multicanais de saída muito utilizada para jogos, por exemplo (http://connect.creativelabs.com/openal/OpenAL%20Wiki/Games.aspx). Pra ajudar, parece que funciona em Android. Pelo que li, não possui suporte ao MIDI.

  • O RTAudio foi feito por um tal Gary Scavone, na época no CCRMA em Stanford (https://ccrma.stanford.edu/software/stk/index.html)  e atualmente na universidade de McGill (http://www.music.mcgill.ca/~gary/rtaudio/). Lembro de ter visto ele no código do Jacktrip. Acho que o jacktrip, talvez por ter sido feito no mesmo CCRMA, usa ou usava-o. Esta API tem um problema que é ter o mesmo nome de uma API da Microsoft. :-)

  • O PortAudio me pareceu a API mais madura. Pd, CSound e Audacity, por exemplo, estão em PortAudio (http://www.portaudio.com/apps.html). Parece funcionar bem.
Resumindo, preciso ler mais sobre isto...

quarta-feira, 4 de janeiro de 2012

Extrair áudio de um DVD

Listar o conteúdo de um DVD

lsdvd

Extrair as 99 faixas de áudio para mp3

for((x=1; x<=99; x++)) do
mplayer dvd://0$x -cdrom-device /dev/sr0 -dumpaudio -dumpfile track$x.mp3; 
done;


Mas se ele estiver separado em capítulos e não em títulos


for((x=1; x<=99; x++)) do
mplayer dvd://01 -chapter $x-$x -cdrom-device /dev/sr0 -dumpaudio -dumpfile track$x.mp3; 
done;


Fontes:
  • http://www.cyberciti.biz/faq/linux-unix-extract-audio-from-avi-video-file-online-stream/
  • http://www.mplayerhq.hu/DOCS/HTML/en/faq.html#idp11189712
  • http://lists.mplayerhq.hu/pipermail/mplayer-users/2003-April/032217.html