Usuário com melhor resposta
Como tocar dois sons simultâneos em C#

Pergunta
-
Boa noite pessoal.
Montei um formulário Windows Forms que quando ativo toca uma "música de fundo". Nesse formulário, ao clicar em determinado botão eu gostaria de tocar um outro som, mas quando este inicia aquele para.
Como poderei fazer os dois tocarem ao mesmo tempo?Eu utilizo o seguinte código:
SoundPlayer simpleSound = new SoundPlayer(@"c:\Windows\Media\chimes.wav"); simpleSound.Play();
Respostas
-
Utilizando a função mciSendString que é nativa do Windows:
//Declaração [DllImport("winmm.dll")] static extern Int32 mciSendString(string command, StringBuilder buffer, int bufferSize, IntPtr hwndCallback); //Chamadas mciSendString(@"open c:\sons\1.wav type waveaudio alias som1", null, 0, IntPtr.Zero); mciSendString(@"play som1", null, 0, IntPtr.Zero); mciSendString(@"open c:\sons\2.wav type waveaudio alias som2", null, 0, IntPtr.Zero); mciSendString(@"play som2", null, 0, IntPtr.Zero);
Não se esqueça de declarar a namespace System.Runtime.InteropServices
Todas as Respostas
-
-
Boa noite.
_Valentim, acredito que com SoundPlayer não seja possível dar play em dois sons ao mesmo tempo.
Tente ver a biblioteca System.Windows.Media.MediaPlayer para fazer o que tu precisas.
Edit: Acho que até é possível dar play em dois sons com o SoundPlayer, porém é preciso fazer o uso de outras API's. Se o uso do SoundPlayer não for obrigatório, recomendo a outra biblioteca.
Att., Rafael Simor
- Editado SimorC sexta-feira, 30 de outubro de 2015 23:23
-
-
Utilizando a função mciSendString que é nativa do Windows:
//Declaração [DllImport("winmm.dll")] static extern Int32 mciSendString(string command, StringBuilder buffer, int bufferSize, IntPtr hwndCallback); //Chamadas mciSendString(@"open c:\sons\1.wav type waveaudio alias som1", null, 0, IntPtr.Zero); mciSendString(@"play som1", null, 0, IntPtr.Zero); mciSendString(@"open c:\sons\2.wav type waveaudio alias som2", null, 0, IntPtr.Zero); mciSendString(@"play som2", null, 0, IntPtr.Zero);
Não se esqueça de declarar a namespace System.Runtime.InteropServices
-
Boa tarde. Eu não consegui utilizar a biblioteca System.Windows.Media.MediaPlayer, recomendada pelo SimorC, ela nem sequer aparece. Teria que fazer algo antes para utiliza-la?
Consegui tocar utilizando a função mciSendString. Obrigado André.
E só pra complementar... Como eu faço pra quando o toque terminar, iniciar novamente?