none
Midi Input! RRS feed

  • Pergunta

  • Olá...estou tentando fazer um pequeno piano em VB 2015...

    Quero controlar o piano com o meu controlador MIDI! Já tenho este codigo que me permite escolher o controlador MIDI e tocar!

    No entanto quando primo o tecla do controlador ..o som toca ..mas quando tiro o dedo da tecla o som toca outra vez!

    As notas também parecem ser infinitas...algumas ficam a tocar infinitamente!

    Alguém me ajude?

    Aqui está o codigo que tenho por agora:

    estou usando um modulo chamado clsMIDI...

    Public Class Form1
        Dim m As New clsMIDI
        Dim hMidiIn As Integer
    
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            If midiInGetNumDevs() = 0 Then
                MsgBox("No MIDI devices connected")
            End If
    
            Dim InCaps As New MIDIINCAPS
            Dim DevCnt As Integer
    
            For DevCnt = 0 To (midiInGetNumDevs - 1)
                midiInGetDevCaps(DevCnt, InCaps, Len(InCaps))
                ComboBox1.Items.Add(InCaps.szPname)
            Next DevCnt
    
            midiInStart(hMidiIn)
        End Sub
    
        Private Sub Form1_Closed(sender As Object, e As EventArgs) Handles Me.Closed
            midiInStop(hMidiIn)
            midiInReset(hMidiIn)
            midiInClose(hMidiIn)
        End Sub
    
        Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged
            Dim DeviceID As Integer = ComboBox1.SelectedIndex
            midiInOpen(hMidiIn, DeviceID, AddressOf MidiInProc, 0, CALLBACK_FUNCTION)
            midiInStart(hMidiIn)
        End Sub
    
        Function MidiInProc(ByVal hMidiIn As Integer, ByVal wMsg As UInteger, ByVal dwInstance As Integer, ByVal dwParam1 As Integer, ByVal dwParam2 As Integer) As Integer
            Dim DataByte1 = (dwParam1 And &HFF00) >> 8
            m.PlayMIDINote(DataByte1, 127)
        End Function
    
    
    End Class

    Obrigado!

    quarta-feira, 15 de novembro de 2017 12:08

Respostas

  • Boa tarde, alienoiz. Tudo bem?

    Por se tratar de uma questão de "How to/Customização" você deveria abrir essa questão como "Discussão Geral", assim junto com a comunidade, poderá encontrar a melhor maneira de implementar o que deseja.

    Para abrir uma discussão, faça o mesmo processo de abrir uma pergunta, mas ao invés de marcar como pergunta, marque como discussão, assim:

    Atenciosamente,


    Filipe B de Castro

    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, 22 de novembro de 2017 18:44
    Moderador

Todas as Respostas

  • Boa tarde,

    Obrigado por usar o fórum MSDN.

    Essa seria uma questão de "How to/Customização" ou "Break Fix/Erro"?

    Atenciosamente,


    Filipe B de Castro

    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, 15 de novembro de 2017 19:38
    Moderador
  • Não entendo!!!?!!!
    quinta-feira, 16 de novembro de 2017 10:37
  • Questão de "How to" seria como fazer, implementar algo, etc.
    "Break fix" Seria erro na ferramenta, mensagem de erro, etc.

    Atenciosamente,

    Filipe B de Castro

    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.

    quinta-feira, 16 de novembro de 2017 19:12
    Moderador
  • Ok ..então neste caso é uma questão "How to" .. o que devo fazer???

    Obrigado!

    quinta-feira, 16 de novembro de 2017 19:57
  • E então....alguém me ajuda?!
    domingo, 19 de novembro de 2017 10:11
  • Boa tarde, alienoiz. Tudo bem?

    Por se tratar de uma questão de "How to/Customização" você deveria abrir essa questão como "Discussão Geral", assim junto com a comunidade, poderá encontrar a melhor maneira de implementar o que deseja.

    Para abrir uma discussão, faça o mesmo processo de abrir uma pergunta, mas ao invés de marcar como pergunta, marque como discussão, assim:

    Atenciosamente,


    Filipe B de Castro

    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, 22 de novembro de 2017 18:44
    Moderador
  • OK.. Obrigado Filipe! Abraço!
    sexta-feira, 24 de novembro de 2017 17:06