DirectSound é a melhor camada de abstração de áudio para Windows?
-
03-07-2019 - |
Pergunta
é DirectSound a melhor camada de abstração de áudio para Windows? Alternando meu aplicativo a partir de uma aplicação de som muito ruim, construído com um chipset específico, a uma camada Abstration.
App é Winform nativa, NET 3.5. DirectX / DirectSound é a opção mais provável, mas um pouco preocupado com a sobrecarga. Quaisquer outras opções? Ou é bobagem até mesmo pensar em outra coisa?
Solução
DirectSound não está recebendo o mesmo amor da Microsoft hoje como ficou no passado. Tanto quanto DirectX está em causa, você pode tentar XAudio2 ou XACT vez. Algumas pessoas adoram esses, outros odeiam. XAudio2 é mais baixo nível, enquanto XACT é, em vez de alto nível. Ambos são acessíveis a partir do Microsoft XNA, que é como Managed DirectX, mas é desenvolvido ativamente.
Mas você não está restrito a utilizar o DirectX vem com. Tente FMod se você quer algo grande. Eles ainda têm o seu modelo de licença Shareware / Hobbyist e um modelo de licença Freeware, no caso de você não quer pagar algum dinheiro grande.
Sua escolha depende do que exatamente você quer fazer com o som.
Outras dicas
SDL parece melhor.
Bem, você pode tentar OpenAL . O OpenGL é Direct3D é OpenAL para DirectSound (3D). A interface é bastante semelhante ao OpenGL, se você não fizer assim, você provavelmente não gostam OpenAL também. Também não tenho a certeza se a versão do Windows desta lib é um própria implementação, nativa ou apenas chama DirectSound e, portanto, pode ser apenas um invólucro (fina?) Em cima dela.
DirectSound é muito bom.
Se precisar de baixa latência ou um bom suporte para entrada de som e saída através de várias placas de som, ao mesmo tempo, você também pode querer ter um olhar para ASIO:
O waveOut ... API ainda é uma opção. É complicado para trabalhar com a partir do código gerenciado, mas você pode jogar vários sons ao mesmo tempo dessa maneira (no XP e no Vista, pelo menos).
Se você só precisa para reproduzir sons, ocasionalmente, System.Media.SoundPlayer é muito fácil de usar. No entanto, você não pode jogar mais do que um som ao mesmo tempo com este componente.
DirectSound é a sua única outra grande alternativa. Tem um built-in software sintetizador, se isso é algo que você precisa.
EDIT: SDL parece interessante. Obrigado, Sijin.
SharpDX parece interessante. Estou pensando em tentar isso como um substituto para Managed DirectX por causa das limitações x86 deste último.