Играть на одном миди вудблоке на Java?
Вопрос
Я планирую создать свой собственный метроном (инструмент для создания деревянных блоков) с использованием Java, который может задавать его bpm, громкость и т. д. И я пробовал использовать более 16 каналов (спецификация MIDI 1.0), полученных из getChannels () код> но там вообще не слышно никаких деревянных блоков.
Вот код, взятый из http://www.jsresources.org
/*
* Turn the note on on MIDI channel 1.
* (Index zero means MIDI channel 1)
*/
MidiChannel[] channels = synth.getChannels();
channels[0].noteOn(nNoteNumber, nVelocity);
/*
* Wait for the specified amount of time
* (the duration of the note).
*/
try
{
Thread.sleep(nDuration);
}
catch (InterruptedException e)
{
}
/*
* Turn the note off.
*/
channels[0].noteOff(nNoteNumber);
Кто-нибудь что-нибудь получил по этому поводу? спасибо.
Решение
В зависимости от вашего синтезатора звуки перкуссии будут на канале 10 или канале 16 (индексы 9 или 15 в вашем массиве). Звуки деревянных блоков - это ноты с номерами 76 и 77, и вы, вероятно, захотите использовать значение скорости ноты 128 (для максимальной громкости).
Я не смотрел на код, который вы используете, но вам также может понадобиться вызвать метод, чтобы включить синтезатор, прежде чем вы сможете что-либо воспроизводить. Кроме того, поскольку вы играете перкуссионную ноту, вы , возможно, сможете отправлять соответствующее сообщение о выключенной ноте сразу после сообщения о включенной ноте (поэтому вам не нужно определять продолжительность фиксированной записи). ударная нота). Большинство используемых мной MIDI-синтезаторов воспроизводят весь перкуссионный звук даже после получения сообщения «Отключить ноты».
Другие советы
деревянный блок - это ударный инструмент. Вы должны услышать это, когда играете правильную ноту на канале, которому назначен патч ударных или перкуссии. (в патче ударных или ударных каждая нота играет на своем инструменте: деревянный блок, малый барабан, хай-том, клаве и т. д.)
Используйте (например) эту общую ссылку на MIDI (GM) для поиска исправлений , Вам нужен канал 10 для GM-перкуссии и нота № 76 для Hi Wood Block или 77 для Low Wood Block.
Кроме того, инструмент 116 представляет собой полнофункциональный деревянный блок (любой шаг от 1 до 128). Я считаю, что это должно работать на любом канале без перкуссии (то есть не 10 или, возможно, 16).
Примечание. Похоже, что GM основывается на 1, а ваш API - на 0, поэтому вам, возможно, придется вычесть одно из этих значений.