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.