월요일에 이어 이번엔 자바에서 미디 파일(mid)을 불러들여 연주하는 프로그램 만들기(Sequencer, Sequence 이용).
java midiPlayTest test.mid 형태로 실행하면 test.mid 미디파일을 연주한다.
미디곡 연주가 끝난 뒤 시퀀서를 멈추고 닫게 하려고 하다가 연주가 끝난걸 어떻게 알 수 있나를 몰라 한참 헤메다. 결국 while 무한루프와 isRunning() 메서드를 이용해 성공.
14/5/30 금
import javax.sound.midi.*; import java.io.File; public class midiPlayTest { public static void main(String[] args){ midiPlayTest midiP = new midiPlayTest(); if(args.length < 1){ System.out.println("불러올 미디 파일명을 입력하세요."); System.out.println("ex)java midiPlayTest test.mid"); }else{ String fileName = args[0]; midiP.playFile(fileName); } } public void playFile(String fName){ try{ System.out.println("playFile Start"); //시퀀서(미디파일 재생장치) 객체 생성 Sequencer sequencer = MidiSystem.getSequencer(); //시퀀서 열기 sequencer.open(); //파일로부터 시퀀스(음원) 취득 File myMidiFile = new File(fName); Sequence mySeq = MidiSystem.getSequence(myMidiFile); //시퀀서에 시퀀스 설정 sequencer.setSequence(mySeq); //시퀀서 기동(재생시작) sequencer.start(); System.out.println("연주 중"); while(true){ if(!sequencer.isRunning()){ //시퀀서 정지(재생종료) sequencer.stop(); //시퀀서 닫기 sequencer.close(); break; } } System.out.println("연주 종료."); }catch(Exception ex){ System.out.println("Midi Error!!!"); ex.printStackTrace(); } } }