Dúvidas em MIDIControl

Bom, estou desenvolvendo uma aplicação em que eu preciso manipular sons MIDI, mas nada que seja externo, como um arquivo que eu incremento ou mesmo que o usuário o faça, quero desenvolver algo como: usuário clica numa tecla e toca uma nota de MIDI.

Mas tenho muitas dúvidas ainda e depois de muito procurar no google eu venho ao fórum ver se alguém conseguiria saná-las.

Bem, como observado no exemplo abaixo eu pretendo fazer como que o sistema (celular) toque uma nota que eu especificar. A função getMidiByteNote() retorna uma nota em Byte de acordo com a nota que eu passar e a oitava que ela deve ser tocada.

public void midiShort(String string_note, int int_octave, int int_time) { this.string_note = string_note; this.int_octave = int_octave; this.int_time = int_time; try { this.midi_control.shortMidiEvent(MIDIControl.NOTE_ON | 3, this.getMidiByteNote(), 127); } catch (Exception e) { System.out.println("Error: shortMidiEvent: " + e); } }

Até aí tudo bem, mas a nota tem seu próprio tempo, ela fica soando ainda algum tempo (let ring) e é como somente um toque. O que eu quero saber é: Para que serve o chanel em “shortMidiEvent” que eu especifiquei como um exemplo como: “MIDIControl.NOTE_ON | 3”. Velocity que eu especifiquei como “127” para mim deveria ser o tempo que a nota ficaria tocando, mas eu consigo somente um controle de volume (pelo que percebi).

Algumas coisas ainda estão meio confusas.

Gostaria de poder apertar uma tecla do cel e tocar a nota enquanto essa tecla ficasse pressionada, sei que é pelo método “keyRepeated”, mas se eu o invocar é como se a nota estivesse sendo pressionada várias vezes e não sendo segurada.

Outra coisa é: Até agora eu só consegui alguns sons de Bateria e de Piano, como eu consigo acessar outros sons? Ou tenho que implementar um sond bank?

Se puderem me sanar uma dessas dúvidas agradeceria.

Agora continuarei no google search.

Obrigado.