私は今大学でプログラミングの入門講座を履修していて、1月18日までに自分でプログラムを自作する課題に追われて困っています。
今のところ、ある二次方程式から導き出される数値を使って音程を決めていき、それを順次MIDIで吐き出すプログラムを想定しています。
ところが、既にあるMIDIファイルを再生するJavaアプレットのサンプルならいたるところにあるのに、JavaでMIDI音源を直接操作して音を出すサンプルはなかなか見当たりません。プログラミングは初心者で、基本をざっとやっただけなので、APIガイドを見つつプログラムが組めるほどの力はありません。javax.sound.midiパッケージを使うと出来そうなのですが、APIガイドには例文が載っているわけでもないので…
せめて、PCのMIDI音源で「ドレミ」と鳴らしたいのですが、何かよい本やサイトがありましたらぜひ教えてください。調子のいい質問とは思いますが、よろしくお願いします。
No.1
- 回答日時:
すばやい返信をありがとうございます。
ただ、残念ながらそのページは既知でした。読解力不足であまりピンとこなかったんです。すみません。
No.2ベストアンサー
- 回答日時:
こんばんは。
JAVA PRESSの補足サンプルが役に立つと思います。
http://cappuccino.jp/keisuken/java/JavaSound/
この中の、MidiSample04.javaがサンプルそのものなんですが、私の環境(WindowsXP + JRE1.5、JDK1.4)だと音が鳴りません。
おそらくJava標準のシンセ(Java Sound Synthesizer)にインストゥルメントがロードされていないためだと思います。
下のサンプルはWindows標準のシンセを取得してドレミを鳴らすサンプルです。MacやLinuxでは途中で終了してしまうので、リストに表示される別のシンセをmsynthNameに指定しなおしてください。
--------------------
import javax.sound.midi.*;
public class ExMIDI {
public static void main(String[] args) throws Exception {
MidiDevice.Info[] infos = MidiSystem.getMidiDeviceInfo();
String msynName = "Microsoft GS Wavetable SW Synth";
MidiDevice msyn = null;
Receiver rc = null;
ShortMessage mes = new ShortMessage();
for(int i = 0; i < infos.length; i++) {
System.out.println("--------------------------------------------------");
System.out.println("[ " + (i + 1) + " ]" + new String(infos[i].getName().getBytes("ISO-8859-1")));
System.out.println("バージョン:" + infos[i].getVersion());
System.out.println("メーカー :" + infos[i].getVendor());
System.out.println("説明 :" + infos[i].getDescription());
System.out.println("--------------------------------------------------");
if(infos[i].getName().equals(msynName)) {
msyn = MidiSystem.getMidiDevice(infos[i]);
}
}
if(msyn == null) {
System.out.println(msynName + "が見つかりません。");
System.exit(1);
}
msyn.open();
rc = msyn.getReceiver();
mes.setMessage(ShortMessage.NOTE_ON, 0, 60, 120);//ド発音用
rc.send(mes, -1);
Thread.sleep(1000);
mes.setMessage(ShortMessage.NOTE_ON, 0, 60, 0);//ド消音用
rc.send(mes, -1);
mes.setMessage(ShortMessage.NOTE_ON, 0, 62, 120);//レ発音用
rc.send(mes, -1);
Thread.sleep(1000);
mes.setMessage(ShortMessage.NOTE_ON, 0, 62, 0);//レ消音用
rc.send(mes, -1);
mes.setMessage(ShortMessage.NOTE_ON, 0, 64, 120);//ミ発音用
rc.send(mes, -1);
Thread.sleep(1000);
mes.setMessage(ShortMessage.NOTE_ON, 0, 64, 0);//ミ消音用
rc.send(mes, -1);
msyn.close();
}
}
--------------------
参考URL:http://cappuccino.jp/keisuken/java/JavaSound/
詳細な返答をありがとうございます。
音、自分のPCではちゃんと鳴りました!学校のPCはWindowsなのでこのままでも問題なく使えると思います。
おかげでなんとか課題が始められそうです。本当にありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 作詞・作曲 DTM DAWとmidiキーボードについて 1 2022/10/20 16:41
- 作詞・作曲 iMacでMIDIデータを良い音で再生するための音源をインストールする方法を教えて下さい 4 2022/07/09 17:51
- 作詞・作曲 MIDIキーボード内蔵オーディオインターフェイス 1 2022/06/04 08:35
- C言語・C++・C# プログラム内から、MIDIファイルの一部分だけを再生する方法 1 2023/02/15 11:08
- 楽器・演奏 Korg cx-3 new(2001~のモデル)を中古で購入しました。 しかし、音が出ません。症状と 2 2022/10/24 09:26
- その他(AV機器・カメラ) 電子ピアノに内蔵されているデモ曲を、PCやCDに入れて聴けるようにできますか? 以下、前回質問した内 2 2022/05/02 14:36
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
- 作詞・作曲 Cubaseでダウンロードしたmidi音源を聴く方法を教えてください。 今日Cubaseインストール 1 2022/05/14 17:13
- 作詞・作曲 MIDIファイルを編集できる?アプリってありますか 1 2022/11/22 18:02
- 楽器・演奏 dtm初心者です。 MIDIは入力機器に録音機械が ないと midiは打ち込み出来ないんですか? 1 2022/04/18 21:30
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語のポインターに関する警告
-
JSPやサーブレットでSystem.out...
-
EclipseでJava
-
JAVAのDouble型の小数点以下の...
-
Javaのコマンドライン引数を使...
-
[JAVA]try 内の変数を外で!?
-
printfの%fにおいて教本どおり...
-
java シンボルが見つかりません...
-
会員情報登録プログラムの作成...
-
(急募) Javaじゃんけんゲームで...
-
binarySearchについて
-
配列を後ろから数えるには?
-
エクスクラメーション2つ?
-
エクセルマクロ文で、赤文字セ...
-
メール送信を行うJavaプログラム
-
コマンドプロンプトに不正な文...
-
Javaでファイル転送プログラム
-
javaで判別式のプログラミング...
-
LC発振回路-ループ利得
-
JAVAのエラーの意味が分かりま...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語のポインターに関する警告
-
[JAVA]try 内の変数を外で!?
-
JSPやサーブレットでSystem.out...
-
JAVAのDouble型の小数点以下の...
-
EclipseでJava
-
「続行するには何かキーを押し...
-
文字列の引き算
-
java シンボルが見つかりません...
-
JAVA 文字色変更
-
改行の判定方法
-
JAVAのエラーの意味が分かりま...
-
Javaのコマンドライン引数を使...
-
java教えてください。
-
曜日の取得方法を教えて下さい!
-
JavaにはなぜGO TO ...
-
Javaでカレントディレクトリを...
-
構文解析中にファイルの終わり...
-
JAVA 三角形の判定
-
複数行キーボード入力した後に...
-
printfの%fにおいて教本どおり...
おすすめ情報