Como emular/substituir/reativar controles (ou comandos) clássicos do Sound Mixer no Windows Vista?

StackOverflow https://stackoverflow.com/questions/71198

Pergunta

Eu tenho um problema (e já o tenho há algum tempo) - a nova pilha de mixagem de som do Vista apresenta coisas novas e legais, mas também reinventa a roda.Muitos aplicativos que costumavam usar o Volume Mixer em um sistema Windows para mixar diferentes saídas de voz em uma entrada (por exemplo Wave-out + Line-in -> Stereo Mix) pararam de funcionar desde então.O principal exemplo desse comportamento é o plugin Shoutcast DSP (pode ser útil para testes de soluções).

Como posso reativar os controles do mixer XP ou talvez emular esse comportamento de alguma forma, para que o programa (SC DSP) possa gerenciar adequadamente o volume de reprodução do microfone/entrada de linha junto com o volume de reprodução de saída de onda?

Meu pensamento seria emular um programa conectado ao Vista Mixer para Wave-Out e Line-out (ou volume do alto-falante do microfone - toda a reprodução, mostrada como "programas" ajustáveis ​​separados para que o Vista Mixer pudesse se referir a ele) e 'conectá-lo' ao sistema sob alguma emulação que se representa como a antiga interface de controle do mixer de volume do programa, mas francamente não tenho ideia de como fazer isso.

Esclarecer:este não é o meu PC (é um laptop HP Pavilion).O problema parece existir principalmente devido ao fato de o mixer do Vista controlar programas separados, e não entradas/saídas separadas.O hardware é totalmente capaz de fazer o que é necessário ao usar o Windows XP.Estou bem ciente do fato de que este é um problema de driver, mas o driver está simplesmente preparado para o que o Vista apresenta ao programador através de interfaces.O dispositivo mixer - como visto no sistema operacional, porém pode parecer no software - é baseado nas APIs do mixer para controle de áudio do Windows.

Pesquise usando o Google no Vista e controle de volume de reprodução line-in para obter mais informações sobre o problema (e a grande quantidade de usuários afetados por ele).É claro que reescrever o plug-in Shoutcast Source DSP para WinAMP resolveria o problema, mas é improvável que isso aconteça...

Foi útil?

Solução

Controlar os níveis de volume de uma placa de som em níveis individuais de entrada/saída no mixer do Windows Vista é possível usando o áudio API EndPoint

Isso deve permitir que você ajuste o volume principal e o volume de e conectado entradas de áudio.Uma desvantagem é que quando você enumera os pontos finais, se não houver um microfone conectado à sua placa de som, nada será enumerado.Isso significa que você precisará alterar seu aplicativo para responder a eventos de "microfone conectado" e notificar o usuário adequadamente.

Outra opção é mergulhar abaixo do Microsoft Core Audio e acessar o OndaRT motorista diretamente.Isso é muito mais trabalhoso do que usar as APIs WASAPI/Endpoint, mas lhe dará mais controle sobre o acesso às entradas/saídas da placa de som.

Outras dicas

O driver de áudio controla quais controles de mixer estão disponíveis e isso dependerá em grande parte dos recursos do hardware.

Se o driver do Vista não tiver determinados controles, é provável que seja uma falha desse driver e não do Vista.

(Informe-nos qual placa de som/dispositivo você está usando.)

Seria possível escrever um programa para criar seus próprios controles de mixer (este seria um driver somente de software para uma placa de som virtual), mas este programa não seria capaz de afetar o roteamento de áudio dentro do dispositivo se o driver real não tem algum controle de mixer para isso.

Se você marcar seu aplicativo como sendo compatível com o Windows XP, todos os controles e comportamentos antigos retornarão.

Se você marcar seu aplicativo como sendo compatível com o Windows XP, todos os controles e comportamentos antigos retornarão.

Isso é verdade, mas a partir do patch KB957388 do Vista SP1, incluído no SP2, e com alguns drivers de placa de som, as antigas funções da API do mixer (winmm.dll) podem travar quando o aplicativo está no modo de compatibilidade do XP.Em particular, mixerGetNumDevs e, menos frequentemente, mixerOpen não retornarão em alguns computadores.

Recebi relatórios de 5 usuários do Vista, de um total de 200 usuários do Vista, onde meu aplicativo trava ao inicializar, e rastreei essas funções suspensas.

Gostaria de relatar isso à Microsoft, mas não consigo encontrar nenhum lugar para fazê-lo.

Tudo o que posso fazer agora é lançar meu software sem o modo de compatibilidade ativado, mas isso perde a funcionalidade do meu aplicativo e o software não consegue controlar os mixers de entrada de linha ou microfone.

Não tenho tempo para trabalhar diretamente com funções de API de baixo nível.Conto com componentes de alto nível e não consigo encontrar nenhum para as novas APIs de áudio do meu sistema de desenvolvimento (Delphi).

Eu estaria interessado em pagar alguém para escrever uma DLL para mim!!!e-mail ross att stationplaylist ponto com

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top