none
Teclado musical virtual RRS feed

  • Pergunta

  • Boa tarde a todos do fórum!

    Pessoal! Eu fiz essa pergunta antes, mas, acho que a mesma não foi muito clara.

    Eu quero desenvolver um projeto para a minha filhinha. É esse teclado aqui:

    Teclado musical virtual

    Eu já consegui inserir sons através do Windows Media Player. Mas, o que quero é:

    ao tocar uma música de fundo no Windows Media Player, a criança consiga tocar em um botão. E quando clicar nesse botão, o instrumento emitir um som ao mesmo tempo do que está sendo tocado Windows Media Player.

    Aqui está o código:

    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| arquivo WAV|*.wav";
    
                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";
                wmp.Ctlcontrols.play();
            }
        }
    }
    

    O problema que eu não consigo resolver está evento click do botão btTecla1_Click. Eu não sei que comando é adequado para este tipo de evento. Nesse botão não consigo emitir um som ao apertar a tecla.

    Estou usando o Visual Studio 2013 Ultimate e o Visual Studio 2015 Community.

    Desde já, mui agradecido pela ajuda.

    domingo, 8 de janeiro de 2017 18:52

Respostas

  • Bom dia,

    Verifique as sugestões neste link.

    Atenciosamente,


    Robson William Silva

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    segunda-feira, 16 de janeiro de 2017 12:51
    Moderador

Todas as Respostas

  • Bom dia DesignWeb,

    Como será os sons? Você tem os arquivos dos sons prontos? Você precisa somente executar o som é isso?



    Se ajudei Vote como Útil, se resolvi seu problema clique em Marcar como Resposta.


    Daniel Ribeiro Arrais
    Consultor Sênior
    Site: www.danielarrais.com.br
    Linkedin: http://www.linkedin.com/in/danielarrais
    E-mail: arraishapkido@gmail.com
    Skype: dani.arrais

    segunda-feira, 9 de janeiro de 2017 11:21
  • Boa noite, Daniel!

    Os sons que eu quero colocar, são de notas e ritmos musicais.

    terça-feira, 10 de janeiro de 2017 21:53
  • Olá DesignWeb

    Eu entendi que o som são de notas musicais, só não consegui entendi onde estão estes sons? São arquivos MP3 por exemplo com o som de DO outro com som de RE?

    Qual sua idéia?


    Se ajudei Vote como Útil, se resolvi seu problema clique em Marcar como Resposta.


    Daniel Ribeiro Arrais
    Consultor Sênior
    Site: www.danielarrais.com.br
    Linkedin: http://www.linkedin.com/in/danielarrais
    E-mail: arraishapkido@gmail.com
    Skype: dani.arrais

    quarta-feira, 11 de janeiro de 2017 09:22
  • Boa tarde, Daniel!

    É exatamente assim como você está pensando. Os fundos musicais, são MP3, MP4,  AVI e WAV.

    Só que, no evento do botão btTecla1_Click, é um arquivo WAV, e quando dou um clique no botão aparece esse erro aqui:

    Erro no WMP

    As notas musicais, meu colega de trabalho, que é músico, está providenciando.

    Muito grato se me ajudar a resolver o problema.

    quarta-feira, 11 de janeiro de 2017 18:45
  • Olá DesignWeb,

    O problema está no path!Ele não consegue entender da forma que você está passando.

    Experiementa por @ e colocar uma barra apenas :
    wmp.URL = @"D:\PASTA\ARQUIVO.WAV";

    OU colocar 3 barras
    wmp.URL = "D:\\\PASTA\\\ARQUIVO.WAV";

    []'S,
    --

    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!


    quarta-feira, 11 de janeiro de 2017 18:52
  • Olá! Boa noite, Rodrigo!

    Obrigado por me respostar. Mas, a sua sugestão não funcionou. Continua dando erro na mesma linha de código.

    O objetivo do botão btTecla1_Click, e, quando a criança apertar o botão o som saia ao mesmo tempo que o som de fundo tocado Media Player.

    quarta-feira, 11 de janeiro de 2017 23:29
  • Ola DesignWeb,

    Faz o teste desta forma abaixo 

                SoundPlayer my_wave_file = new SoundPlayer("C:\\PASTA\\ARQUIVO.wav");
                my_wave_file.Play();


    Se ajudei Vote como Útil, se resolvi seu problema clique em Marcar como Resposta.


    Daniel Ribeiro Arrais
    Consultor Sênior
    Site: www.danielarrais.com.br
    Linkedin: http://www.linkedin.com/in/danielarrais
    E-mail: arraishapkido@gmail.com
    Skype: dani.arrais

    quinta-feira, 12 de janeiro de 2017 10:57
  • Boa tarde, Daniel!

    Obrigado por me responder. Mas, eu já fiz essa pesquisa e fiz o teste com esses códigos que você acabou de me passar.

    Mas, você não me entendeu.

    Ele toca normalmente, mas não é assim que eu quero. Tem que tocar tudo ao mesmo tempo no Windows Media Player.

    Você lembra como funciona um teclado musical?

    Você aperta um botão, e toca um ritmo musical, daí, ao mesmo tempo você aperta as teclas do instrumento musical e ambos emitem os sons.

    Entendeu?!

    Tem como resolver o problema?

    quinta-feira, 12 de janeiro de 2017 18:23
  • Bom dia,

    Verifique as sugestões neste link.

    Atenciosamente,


    Robson William Silva

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    segunda-feira, 16 de janeiro de 2017 12:51
    Moderador
  • Bom dia,

    Devido a falta de interação do autor dessa pergunta,

    essa thread está sendo fechada. Caso o problema ainda

    esteja ocorrendo, favor abrir uma nova thread.

    Atenciosamente,


    Robson William Silva

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    quarta-feira, 18 de janeiro de 2017 11:22
    Moderador