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(); } }