Última atualização: O Wine 1.7.55 adiciona suporte adequado ao PulseAudio.
Não há muito problema em todos esses dias.
O que você está descrevendo foi anos atrás.
Os aplicativos em Wine só sabem como falar com uma pilha de som do Windows, assim como com a maioria dos outros subsistemas do Windows, o Wine fornece isso. O problema vem de nossa pilha de sons ter mudado significativamente na última década.
Era uma vez ...
... nós só temos OSS e ALSA. Eles fornecem interfaces previsíveis, mas não são fáceis de codificar. Levou as idades do vinho para chegar a um ponto "apenas funciona" com o seu apoio ALSA. O diagrama de pilha foi bem simples:
Hardware → ALSA → Wine/Win32-api → Windows app
O principal problema com o ALSA é notoriamente meticuloso se você quiser que mais de uma coisa seja tocada de uma só vez. Aplicativos podem acidentalmente bloqueá-lo de outros.
Então o PulseAudio ficou popular.
De repente, todos os desktops tinham essa coisa chamada PulseAudio. Foi outra camada entre aplicativos e ALSA para permitir que muitos aplicativos façam ruído de uma só vez e adicionem recursos como som pela rede.
Mas o Wine ainda só sabia como falar com a ALSA, e agora havia essa coisa do PulseAudio fazendo isso desde a inicialização. O áudio do Wine teve que ser canalizado através de uma camada de compatibilidade com o ALSA para o PulseAudio e depois voltar para o ALSA. A pilha mostra quão horrível isso parece:
Hardware → ALSA → PulseAudio → ALSA emulator → Wine/Win32 → Windows app
Além disso, a camada de emulação do ALSA (fornecida pelo PulseAudio) não foi ótima. Ele suportaria alguns canais e algumas opções de gravação, mas nem de perto o ALSA que o próprio PulseAudio estava no topo.
O problema percebido sempre foi "culpa dos outros caras"
O áudio no Wine não funcionou. Em retrospecto, é fácil ver onde o problema realmente estava, mas havia três opiniões na época que fizeram do Wine um verdadeiro campo de batalha:
-
Usuários clamavam para que os desenvolvedores do Wine adicionassem um driver nativo do PulseAudio.
-
Os desenvolvedores de vinhos não viram por que deveriam gastar outra idade (e estamos falando de meses e meses de tempo de desenvolvedor) interagindo com outro áudio camada quando o viram como problema do PulseAudio por não fornecer uma interface ALSA funcional. Aos olhos deles, as pessoas poderiam usar apenas
pasuspender
para obter PA para liberar o ALSA de nível inferior para manipulação direta. -
Os desenvolvedores do PulseAudio também sugeriram que o Wine exibisse o dedo coletivo e apenas adicione um driver PA. Dezenas de outras aplicações tiveram, então porque não puderam? E toda vez que eu perguntava, a camada do PulseAudio ALSA estava boa, sem bugs e eram apenas os erros dos desenvolvedores do Wine que eram o problema.
-
Um usuário escreveu um driver PulseAudio hackeado que falou diretamente com o Pulseaudio e fez a própria conversão de áudio bitmap. Outros usuários adoraram porque, apesar de seus hacks, ele frequentemente "apenas funcionava", mas os desenvolvedores do Wine o odiavam porque era outro grande ramo de código a ser mantido, e era um hack.
E então as coisas melhoraram.
Todo mundo deu um pouco.
-
Os usuários pararam de reclamar tanto.
-
Vinho refatorou o uso da abordagem do Windows Vista e do Windows 7 ao som. Eles chamam isso de MMDevAPI. Você pode ler tudo sobre o MMDevAPI aqui . Isso elimina uma tonelada de código de som e simplifica as configurações. Ainda usa o ALSA embora.
-
O PulseAudio corrigiu bugs para permitir que o Wine funcionasse melhor.
-
O desenvolvimento do WinePulse cessou quando o MMDevAPI começou a mostrar que estava funcionando.
E embora possa parecer, duvido que não seja o fim desta história. Existem projetos suportados comercialmente, como OpenAL e GStreamer, que podem realmente simplificar a pilha de sons do Wine, além de fornecer recursos extras.
Mas anos depois, o Wine 1.7.55 adicionou o suporte principal ao PulseAudio ...
Eu venho escrevendo este post há anos e esta é talvez a coisa mais estranha ainda. Depois de abandonar o desenvolvimento do driver PA, parece que alguém voltou a isso e transformou em algo real.
Mais do que isso, foi puxado para a versão principal do Wine .
Em um prefixo estabelecido, basta executar wine regedit
e alterar HKCU\Software\Wine\Drivers\Audio
de alsa
para pulse
. Tudo, incluindo o som surround, parece funcionar. Aqui está a pilha agora:
Hardware → ALSA → PulseAudio → Wine/Win32-api → Windows app
É melhor que a camada de compatibilidade com ALSA? Eu ainda não tenho certeza. Eu tentei o que eu pensei que eram alguns dos jogos de buggier e eles ainda pulam um pouco.
Funciona, o que é o principal ... mas também o wrapper da ALSA.