Java에서 단일 미디 우드 블록 메모를 재생 하시겠습니까?

StackOverflow https://stackoverflow.com/questions/1621075

  •  06-07-2019
  •  | 
  •  

문제

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 기반 인 것 같습니다. 따라서 이러한 값 중 일부에서 한 제품을 빼야 할 수도 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top