JavaでMIDIを扱う
概要
テキストファイルに記録された音階を読み込み音を鳴らす。
例外をキャッチし対処する。
1.コマンドラインから音階の番号が保存されたテキストファイルを指定する。
2.テキストファイルを1行ずつ読み、音を出す。
3.コマンドラインでファイルの指定がない場合と音階番号の異常を例外としてキャッチしメッセージを表示する。
import java.io.*; import javax.sound.midi.*; public class MusicPlayerTest { public static void main(String[] args) throws Exception { int value = 0, i = 0; if (args.length == 0) { System.out.println("コマンドラインの引数がありません。"); System.exit(1); } Receiver receiver = MidiSystem.getReceiver(); ShortMessage message = new ShortMessage(); System.out.println("File name:" + args[0]); BufferedReader reader = new BufferedReader(new FileReader(args[0])); try { while (true) { try { String line = reader.readLine(); if (line == null) { break; } value = Integer.parseInt(line); // 音を出す message.setMessage(ShortMessage.NOTE_ON, value, 127); receiver.send(message, -1); // 2秒待つ Thread.sleep(200); // 音を止める message.setMessage(ShortMessage.NOTE_OFF, value, 127); receiver.send(message, -1); System.out.println(value); } catch (InvalidMidiDataException e) { System.out.println("MIDIデータエラー" + (i + 1) + "行目"); } catch (NumberFormatException e) { System.out.println("ノート番号の変換が出来ませんでした。" + (i + 1) + "行目"); } i++; } reader.close(); } catch (FileNotFoundException e) { System.out.println("ファイルが存在しません。" + e); } } }
実行結果
File name:doremi.txt
60
60
68
68
70
MIDIデータエラー6行目
68
ノート番号の変換が出来ませんでした。8行目
90
テキストファイルの内容
60
60
68
68
70
129
68
**
90
AKAI professional アカイ / MPK mini MK2 MIDIキーボードコントローラー AP-CON-026
- 出版社/メーカー: AKAI
- 発売日: 2014/09/19
- メディア: エレクトロニクス
- この商品を含むブログを見る
いちばんわかりやすいDTMの教科書 改訂版 (MIDI、AUDIOデータダウンロード対応)
- 作者: 松前公高
- 出版社/メーカー: リットーミュージック
- 発売日: 2015/07/22
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る