Java에서 단일 미디 우드 블록 메모를 재생 하시겠습니까?
문제
BPM, 볼륨 등을 설정할 수있는 Java를 사용하여 나만의 메트로놈 (Woodblock Instrument)을 만들 계획이며 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의 노트 속도 값을 사용하고 싶을 것입니다.
사용중인 코드를 보지 못했지만 재생하기 전에 신디사이저를 켜는 메소드를 호출해야 할 수도 있습니다. 또한 타악기 노트를 연주하기 때문에 5월 메시지의 메모 직후에 해당 메모 오프 메시지를 보낼 수 있어야합니다 (따라서 고정 타악기 참고의 지속 시간을 파악할 필요가 없습니다). 내가 사용한 대부분의 MIDI 신디사이저는 메모 오프 메시지를 수신 한 후에도 전체 타악기 사운드를 재생합니다.
다른 팁
목판은 타악기 기기입니다. 드럼이나 타악기 패치가 할당 된 채널에서 올바른 음표를 재생할 때들을 때 들어야합니다. (타악기 또는 드럼 패치에서 각 노트는 다른 악기를 재생합니다 : 목재 블록, 스네어 드럼, 하이 톰, 클레이브 등)
사용 (예 :) 이 일반 미디 (GM) 참조 패치를 찾으려면. GM 타악기에는 채널 10이 필요하고 Hi Wood 블록의 경우 76 번, 낮은 목재 블록의 경우 77을 기록하십시오.
또한 악기 (116)는 전체 키보드 (1에서 128까지의 피치)입니다. 나는 그것이 비 관점 (즉, 10, 아마도 16) 채널에서 작동해야한다고 생각합니다.
참고 : GM은 1 기반 인 것처럼 보이지만 API는 0 기반 인 것 같습니다. 따라서 이러한 값 중 일부에서 한 제품을 빼야 할 수도 있습니다.