none
Colocar mais de um fundo musical no Windows Form ao mesmo tempo. RRS feed

  • 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:

    Teclado com fundo musical 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.

    domingo, 25 de dezembro de 2016 17:29

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".

    segunda-feira, 26 de dezembro de 2016 10:23
  • 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.

    segunda-feira, 26 de dezembro de 2016 21:14
  • 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".

    terça-feira, 27 de dezembro de 2016 14:12
  • Boa tarde, Juliano Nunes!

    Não entendi o que realmente você quer que eu faça, no click do botão btTecla1. Me mostre em linhas de códigos  o que é realmente para fazer. Eu não entendi ainda..

    Muito agradecido.

    terça-feira, 27 de dezembro de 2016 18:12
  • Boa tarde, Juliano Nunes!

    Quero te mostrar como eu fiz, e por favor me ajude a entender esse erro. Veja a imagem:

    Por favor! Me aponte uma solução para esse problema.

    Desde já, muito agradecido.

    quarta-feira, 28 de dezembro de 2016 19:32
  • 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

    segunda-feira, 5 de março de 2018 02:37