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.
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.
Um comentário:
Postar um comentário