Player de áudio em Windows Forms

Neste artigo mostro como criar facilmente um player de áudio em Windows Forms, usando a linguagem C#. Como de costume o código-fonte estará disponível ao final do artigo.

Introdução

Podemos facilmente criar um player usando a classe SoundPlayer, do namespace System.Media, e por meio do método Play executarmos músicas. O problema é que esta classe permite somente o áudio no formato .wav (ou .wave), que é um formato muito peculiar de sons do Windows, e pouco utilizado em músicas em geral, apesar de ser comprovadamente superior ao MP3.

Por isso neste artigo vamos ver como criar um player que aceite MP3, de forma bem simples e rápida, utilizando uma DLL do Windows, chamada winmm.dll, responsável pelos processos de multimídia do Windows.

Projeto

Após criar o projeto e adicionar controles ao formulário o layout dele será assim.

Design

Note que foi adicionado ao formulário o controle OpenFileDialog, responsável por abrir uma janela de diálogo para o usuário escolher a música a ser tocada.

Agora a parte que interessa, aperte F7 para ir a página de códigos e comece importando a DLL winmm, como vemos abaixo.


using System.Runtime.InteropServices;

[DllImport("winmm.dll")]

privatestaticexternlong mciSendString(string lpstrCommand, StringBuilder lpstrReturnString, int uReturnLength, int hwndCallback);

Note que foi declarado o namespace InteropServices, responsável pela comunicação entre objetos COM e objetos do .NET Framework. O método mciSendString será o responsável por enviar as ações do áudio para o seu computador, dessa forma passaremos como parâmetro, em string, o que deve ser feito com a música. Lembre-se de ver o link do começo deste artigo com a lista de comandos suportados caso queira fazer mais testes.

Comece colocando código no evento click do botão Abrir, para que ao ser clicado abra a busca em seu computador.


private void btnAbrir_Click(object sender, EventArgs e)

{

ofdMusica.ShowDialog();

}

Veja cada método abaixo, referente a cada botão criado no design e note como só é mudado o valor do comando explicado no parágrafo anterior. É feito também uma validação simples se existe música aberta antes de tocar ou pausar.


private void Abrir(string arquivo)

{

comando = "open \"" + arquivo + "\" type MPEGVideo alias TocadorMP3";

mciSendString(comando, null, 0, 0);

}

private void Tocar()

{

if (lblMusica.Text.Equals("Música:"))

MessageBox.Show("Escolha e abra a música antes!");

else

{

comando = "play TocadorMP3";

mciSendString(comando, null, 0, 0);

}

}

private void Pausar()

{

if (lblMusica.Text.Equals("Música:"))

MessageBox.Show("Escolha e abra a música antes!");

else

{

comando = "pause TocadorMP3";

mciSendString(comando, null, 0, 0);

}

}

private void Parar()

{

comando = "stop TocadorMP3";

mciSendString(comando, null, 0, 0);

comando = "close TocadorMP3";

mciSendString(comando, null, 0, 0);

lblMusica.Text = "Música:";

}

Agora dê dois cliques no OpenFileDialog para que seja criado o evento FileOk, que é disparado após ser selecionado uma música em seu computador. Nesse evento codifique o seguinte.


private void ofdMusica_FileOk(object sender, CancelEventArgs e)

{

lblMusica.Text = "Música:" + ofdMusica.SafeFileName;

this.Abrir(ofdMusica.FileName);

}

Assim é atribuído o nome da música tocada ao label e chamado o método abrir, passando como parâmetro a respectiva música. Codifique os demais eventos, que irão chamar os métodos criados anteriormente.


private void btnTocar_Click(object sender, EventArgs e)

{

this.Tocar();

}

private void btnPausar_Click(object sender, EventArgs e)

{

this.Pausar();

}

private void btnParar_Click(object sender, EventArgs e)

{

this.Parar();

}

Execução

Rode o projeto e faça os testes.

PlayerMP3

É isso, bem simples para mostrar-lhes como realmente é fácil criarmos um tocador de músicas pelo Visual Studio. O código-fonte deste projeto se encontra neste link.

Obrigado e até o próximo artigo.

Expresse sua opinião!

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s