MIDI音源による演奏
| ド | ド# | レ | レ# | ミ | ファ | ソ | ソ# | ラ | ラ# | シ | ド |
| 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 89 | 70 | 71 |
Soundbank soundbank = synthesizer.getDefaultSoundbank();
System.out.println("getbank:"+soundbank);
Instrument[] instruments =soundbank.getInstruments();
synthesizer.loadInstrument(instruments[0]);
さらに、synthesizer から、最大16のMidiChannelクラスを取得します。import javax.sound.midi.*;
import java.applet.Applet;
import java.awt.*;
import java.awt.event.ActionEvent;
public class midi extends Applet{
MidiChannel[] channel=new MidiChannel[16];
Synthesizer synthesizer=null;
private Button playB=new Button();
public void init(){
playB.setLabel("play");
playB.setBounds(new Rectangle(60, 80, 80, 30));
this.setLayout(null);
this.add(playB, null);
playB.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
play_actionPerformed(e); } });
}
public void start() {
try {
synthesizer = MidiSystem.getSynthesizer();
synthesizer.open();
System.out.println("open:" + synthesizer);
Soundbank soundbank = synthesizer.getDefaultSoundbank();
System.out.println("getbank:" + soundbank);
if (soundbank != null) {
Instrument[] instruments = soundbank.getInstruments();
System.out.println(
"get instrument" + synthesizer.getAvailableInstruments());
synthesizer.loadInstrument(instruments[0]);
}
//SynsesizerからChannelを得る。
channel = synthesizer.getChannels();
} catch (Exception e) {
if (synthesizer == null)
System.out.println("fail to open midi");
}
}
public void playMidi(){
int note1[]={60,64,67,64,60};
int note2[]={64,60,60,64,64};
for(int i=0;i<5;i++){
channel[0].noteOn( note1[i], 127);
channel[7].noteOn( note2[i], 127);
try{
Thread.sleep(500); //0.5秒間休止する
}catch(Exception e){
System.out.println("fail to sleep");
}
channel[0].noteOff(note1[i], 128); //音を停止
channel[7].noteOff(note2[i], 128);
//System.out.println("1:" + );
}
}
void play_actionPerformed(ActionEvent e){
playMidi();
}
}