Inquiridor
Colocar mais de um fundo musical no Windows Form ao mesmo tempo.

Pergunta
-
Boa tarde a todos!
Conseguir vencer mais uma etapa do projeto, graças a vocês, turma da Web. Eu coloquei uma fundo musical no meu Windows Form, usando Windows Media Player. Só que eu quero mais além disso. Eu quero que Windows Media Player receba mais de um som. Só que vindo do teclado do meu projeto. Ele é um teclado musical virtual.
Vejam:
Para quem viu a minha última pergunta, notou que alterei o visual do meu projeto.
Mas, aqui está o meu código fonte:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.IO; namespace wfTokMusic { public partial class frmMusic : Form { string[] archivo, rute; string[] music = new string[1000]; public frmMusic() { InitializeComponent(); } private void playListToolStripMenuItem_Click(object sender, EventArgs e) { openFileDialog1.Multiselect = true; openFileDialog1.InitialDirectory = label1.Text; openFileDialog1.Filter = "archivo MP3|*.mp3| archivo MP4|*.mp4| archivo AVI|*.avi"; if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK) { archivo = openFileDialog1.SafeFileNames; rute = openFileDialog1.FileNames; for (int i = 0; i < archivo.Length; i++) { listMusic.Items.Add(archivo[i]); } } } private void playToolStripMenuItem_Click(object sender, EventArgs e) { axWindowsMediaPlayer1.Ctlcontrols.play(); } private void pauseToolStripMenuItem_Click(object sender, EventArgs e) { axWindowsMediaPlayer1.Ctlcontrols.pause(); } private void stopToolStripMenuItem_Click(object sender, EventArgs e) { axWindowsMediaPlayer1.Ctlcontrols.stop(); } private void rewindToolStripMenuItem_Click(object sender, EventArgs e) { if (listMusic.SelectedIndex != 0) { listMusic.SetSelected(listMusic.SelectedIndex - 1, true); axWindowsMediaPlayer1.URL = music[listMusic.SelectedIndex]; } } private void forwardToolStripMenuItem_Click(object sender, EventArgs e) { if (listMusic.SelectedIndex != listMusic.Items.Count - 1) { listMusic.SetSelected(listMusic.SelectedIndex + 1, true); axWindowsMediaPlayer1.URL = music[listMusic.SelectedIndex]; } } private void inícioToolStripMenuItem_Click(object sender, EventArgs e) { listMusic.SetSelected(0, true); axWindowsMediaPlayer1.URL = music[listMusic.SelectedIndex]; } private void últimoToolStripMenuItem_Click(object sender, EventArgs e) { listMusic.SetSelected(listMusic.Items.Count - 1, true); axWindowsMediaPlayer1.URL = music[listMusic.SelectedIndex]; } private void sairToolStripMenuItem_Click(object sender, EventArgs e) { this.Close(); } private void listMusic_SelectedIndexChanged(object sender, EventArgs e) { axWindowsMediaPlayer1.URL = rute[listMusic.SelectedIndex]; } private void trackVolume_Scroll(object sender, EventArgs e) { axWindowsMediaPlayer1.settings.volume = trackVolume.Value; } private void btTecla1_Click(object sender, EventArgs e) { } } }
O que eu quero saber é,; "Que comando eu coloco dentro do método btTecla1 para tocar Windows Media Player ao mesmo de um fundo musical, sem causar nenhum dano ao software?".
Um abraço a todos, um feliz natal e um próspero ano novo.
Todas as Respostas
-
Para tocar dois áudios ao mesmo tempo é necessário que utilize um segundo objeto MediaPlayer, uma nova instância.
If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer".
Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".
- Sugerido como Resposta Lucio Rogerio SPBanned segunda-feira, 5 de março de 2018 09:18
-
Boa tarde, Juliano Nunes!
Eu não entendi sua resposta. Eu fiz assim:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.IO; using System.Media; namespace wfTokMusic { public partial class frmMusic : Form { string[] archivo, rute; string[] music = new string[1000]; public frmMusic() { InitializeComponent(); } private void playListToolStripMenuItem_Click(object sender, EventArgs e) { openFileDialog1.Multiselect = true; openFileDialog1.InitialDirectory = label1.Text; openFileDialog1.Filter = "archivo MP3|*.mp3| archivo MP4|*.mp4| archivo AVI|*.avi"; if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK) { archivo = openFileDialog1.SafeFileNames; rute = openFileDialog1.FileNames; for (int i = 0; i < archivo.Length; i++) { listMusic.Items.Add(archivo[i]); } } } private void playToolStripMenuItem_Click(object sender, EventArgs e) { axWindowsMediaPlayer1.Ctlcontrols.play(); } private void pauseToolStripMenuItem_Click(object sender, EventArgs e) { axWindowsMediaPlayer1.Ctlcontrols.pause(); } private void stopToolStripMenuItem_Click(object sender, EventArgs e) { axWindowsMediaPlayer1.Ctlcontrols.stop(); } private void rewindToolStripMenuItem_Click(object sender, EventArgs e) { if (listMusic.SelectedIndex != 0) { listMusic.SetSelected(listMusic.SelectedIndex - 1, true); axWindowsMediaPlayer1.URL = music[listMusic.SelectedIndex]; } } private void forwardToolStripMenuItem_Click(object sender, EventArgs e) { if (listMusic.SelectedIndex != listMusic.Items.Count - 1) { listMusic.SetSelected(listMusic.SelectedIndex + 1, true); axWindowsMediaPlayer1.URL = music[listMusic.SelectedIndex]; } } private void inícioToolStripMenuItem_Click(object sender, EventArgs e) { listMusic.SetSelected(0, true); axWindowsMediaPlayer1.URL = music[listMusic.SelectedIndex]; } private void últimoToolStripMenuItem_Click(object sender, EventArgs e) { listMusic.SetSelected(listMusic.Items.Count - 1, true); axWindowsMediaPlayer1.URL = music[listMusic.SelectedIndex]; } private void sairToolStripMenuItem_Click(object sender, EventArgs e) { this.Close(); } private void listMusic_SelectedIndexChanged(object sender, EventArgs e) { axWindowsMediaPlayer1.URL = rute[listMusic.SelectedIndex]; } private void trackVolume_Scroll(object sender, EventArgs e) { axWindowsMediaPlayer1.settings.volume = trackVolume.Value; } private void btTecla1_Click(object sender, EventArgs e) { AxWMPLib.AxWindowsMediaPlayer wmp = new AxWMPLib.AxWindowsMediaPlayer(); wmp.URL = "D:\\Fannatikus\\wfTokMusic\\wfTokMusic\\Resources\\band-la.wav"; } } }
Por favor! Dê uma olhada no método btTecla1_Click. Não consegui fazer.
Estou usando o Visual Studio 2013 Ultimate/Visual Studio 2015 Community.
Muito agradecido se você me der uma resposta mais específica.
-
No código abaixo você configura o objeto wmp e a url do mesmo, mas não dá o Play.
private void btTecla1_Click(object sender, EventArgs e) { AxWMPLib.AxWindowsMediaPlayer wmp = new AxWMPLib.AxWindowsMediaPlayer(); wmp.URL = "D:\\Fannatikus\\wfTokMusic\\wfTokMusic\\Resources\\band-la.wav"; }
If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer".
Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".
-
-
-
Antigamente eu usava esta API (sndPlaySound) com a flag SND_ASYNC para tocar sons misturados.
https://msdn.microsoft.com/en-us/library/windows/desktop/dd798676(v=vs.85).aspx
Exemplo de uso da API no C#:
https://docs.microsoft.com/pt-br/dotnet/csharp/programming-guide/interop/how-to-use-platform-invoke-to-play-a-wave-file
- Sugerido como Resposta Lucio Rogerio SPBanned segunda-feira, 5 de março de 2018 09:18