문제

정말 멋진 오디오 "장난감"이 있습니다. Tonematrix. 나는 그것을 자바 애플릿으로 상환하고 싶습니다. 사용해 보았습니다 Jfugue'에스 player.play 소리에 대한 개별 노트와 함께 Thread.sleep 타이밍이지만 결과는 끔찍합니다.

Jfugue는 17 일 이후 응답을 중지합니다 (예, 실제로 계산했습니다) player.play 그리고 Thread.sleep 좋은 리듬을 전달하기에는 너무 불규칙합니다.

대신 무엇을 추천 하시겠습니까? 기본적으로, 나는 한 번의 소리를 즉시 생성하는 간단한 방법을 찾고 있습니다. 따라서 사운드가 재생되기 전에 1 초의 일부가되기 전에 데이터를보고 오디오 라이브러리에 어떤 노트를 재생 해야하는지 알려야합니다. (조화의 여러 메모가있을 것입니다.)

도움이 되었습니까?

해결책

내 생각에 Jfugue에서 메모를 끄는 것을 잊어 버렸거나 일단 메모 재생을 중단하는 것을 잊어 버리는 버그가 있습니다.

Midi를 사용하는 것은 당신이 말하는 일을하는 매우 쉬운 방법입니다. 다음은 MIDI 패키지에 유용한 방법의 약간의 HodgePodge가 있습니다.

Synthesizer synth = MidiSystem.getSynthesizer();
synth.open();
MidiChannel midiChannel = synth.getChannels()[0];
midiChannel.allNotesOff();
currentInstrument = synth.getAvailableInstruments()[index];
System.out.println("Switching instrument to #" + index + ": " + currentInstrument.getName());
synth.loadInstrument(currentInstrument);
midiChannel.programChange(currentInstrument.getPatch().getBank(), currentInstrument.getPatch().getProgram());
midiChannel.noteOn(noteNumber, velocity);
midiChannel.noteOff(noteNumber);
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top