私は現在、Cubase、Logic、Reason などにあるようなピアノ キーボード エディターをプログラミングしています。
私はこの大きなグリッド、二重配列 new int [13][9] を持っています。これにより、13 行、9 列になります。最初の列 [0-12][0] はキーボードで、上部には「ハイ C」(ミディ ノート 72)、下部には「ロー C」(ミディ ノート 60) があります。その列は JButton の配列であり、たとえば「low C」を押すと、シンセサイザーによってノート 60 が再生されます。
今のところ問題なく動作していますが、16 ノートしか連続して再生できないという問題があり、シンセサイザーがシャットダウンするか何かのようです。
問題が何であるかについて何か考えがありますか?
コードのビット:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.util.*;
import javax.sound.midi.*;
actionPerformed(ActionEvent ae){
for(int i = 0; i<13; i++){
if(o== instr[i]){//instr is the button array
SpelaTangent(i);
}
}
}
public void SpelaTangent(int tangent){
int [] klaviatur = new int[13];
for(int i = 0; i<13; i++){
klaviatur[i] = (72-i);
}
try {
Synthesizer synth = MidiSystem.getSynthesizer();
synth.open();
final MidiChannel[] mc = synth.getChannels();
Instrument[] instrument = synth.getDefaultSoundbank().getInstruments();
synth.loadInstrument(instrument[1]);
mc[0].noteOn(klaviatur[tangent],350);
mc[0].noteOff(klaviatur[tangent],350);
} catch (MidiUnavailableException e) {}
}
助けていただければ幸いです。