Som em C#

andrepadez

Power Member
Boas,

Alguem conhece alguma rotina fácil, recorrendo talvez ao Directx 9.0c, para tocar um WAV ou MP3 num evento (ex: ao clicar de um botão, fim de um contador)?
Já pesquisei na net, e encontro coisas muito complexas, com argumentos que não compreendo e não tenho ninguem que me explique.
Não preciso de Pauses, saber em que tempo vai, etc.
Outra dificuldade que tenho é saber onde colocar o Ficheiro de Som, como referenciá-lo em termos de path (se é relativa ou absoluta).

Por fim, e esta vai servir não só para os sons, mas para quando precisar de chamar ficheiros gerais, quando quero chamar uma função que receba como argumento uma string que indica o caminho do ficheiro, como preencher essa string? Já experimentei por exemplo
"c:\teste\teste.ext", e o compilador devolve-me um problema qualquer com as barras invertidas.


Obrigado desde já
 
Dá uma vista de olhos na classe System.Media.SoundPlayer.

É bastante simples de utilizar:
Código:
System.Media.SoundPlayer meuPlayer = new System.Media.SoundPlayer(@"C:\pasta\ficheiro.wav");
meuPlayer.Play();
 
Última edição:
Gracias,

Só uma última questão:

Quanto à referenciação do caminho do ficheiro não há uma maneira de ser relativa? Isto porque quando compilar o programa e o tornar portátil o a path vai ser diferente de computador para computador.
E de onde começa essa relatividade?, do local onde está o exe??

Obrigado mais uma vez
 
Se podes usar DirectX 9.0, acho que existe algo simples no namespace AudioVideoPlayback.

O problema das backslashes (\) é que são usadas para inserir caracteres especias como por exemplo o caractere de nova linha (a.k.a. newline, carriage return (CR), line feed (LF), CRLF, ou em "noobês" enter). Por exemplo a string "Linha 1\nLinha 2" tem o seguinte conteúdo:
Código:
Linha 1
Linha 2
Repara que o '\n' foi substituído por uma nova linha.
Se quiseres escrever mesmo uma backslash (ou outro caractere especial como aspas, por exemplo ") tens duas alternativas:
  • Preceder de backslash (assim: "c:\\" para c:\, "aspas = \"\"" para aspas = "")
  • Usar @ antes de abrir aspas (assim: @"c:\" para c:\)
Com a primeira opção as coisas podem ficar um pouco difíceis de ler, por isso recomendo a segunda. No entanto, para usares aspas na segunda forma, é necessário outro truque: usar aspas duas vezes, assim @"aspas = """"" para aspas = "". Repara que usei 5 aspas no final: 2 para um caractere de aspas, outras 2 para outro caractere de aspas, e a última para fechar a string.

EDIT: Se calhar é mesmo mais simples usares o System.Media.SoundPlayer.

Quanto aos caminhos relativos...
Para combinar dois caminhos usa o método Combine da classe Path. Fazes algo do género:
Código:
Path.Combine(caminhoAteAPastaOndeEstaoOsSons, caminhoRelativo);

O caminho até à pasta onde estão os sons é o que vai mudar de computador para computador. Pode ser o caminho onde reside o executável ou a pasta Documentos do utilizador ou outra coisa qualquer. Não me lembro como obter todos esses caminhos, mas sei que estão todos algures na mesma classe. Algo parecido com ClasseOndeEstao.CurrentDirectory ou ClasseOndeEstao.DocumentsFolder ou assim...
 
Última edição:
Quanto à referenciação do caminho do ficheiro não há uma maneira de ser relativa?
Sim, basta obter o caminho para a pasta onde o executável está inserido, através desta propriedade:
Código:
Application.StartupPath
 
Boas !
Eu gostaria que me dessem uma ajudinha eu queria saver como fazer com que a musica que eu faça reproduzir seja a correspondente ao radio buton

Obrigado.
 
Back
Topo