groovyでmidi演奏の最初の一歩 - quicktimeを使って
2007/08/23
groovy
java
groovyを使用してmidiで簡単な音を発音してみます。
実は、フィボナッチミュージックというのをみかけて、真似したかったのですが...
上記のサイトでは、javax.sound.midi.*を使用してRubyから音をだしていました。
それで、groovyでコードをまねてみたのですが、音がでない...
調べると、どうもosx上のjavaから標準のパッケージ(javax.sound.midi.*)を使用して音をだすのがしんどうそう(※)だったので、いろいろ調べて回って、appleのquicktimeを使ってみることにしました。
※調べかたがまだまだなのかも。
quicktimeのjavadoc
開発環境はosxなので、quicktime関連は、デフォルトのjavaからすぐにアクセスできましたが、widows環境だと開発環境をつくるところからはじめることになりますね。
簡単なサンプルです。
import quicktime.QTSession
import quicktime.std.music.ToneDescription
import quicktime.std.music.NoteChannel
import quicktime.std.music.NoteRequest
QTSession.open()
def noterequest = new NoteRequest(new ToneDescription(1));
def r = 0..150
for(int i in r){
NoteChannel noteChannel = new NoteChannel(noterequest);
noteChannel.playNote(i, 127);
sleep(30);
noteChannel.playNote(i, 0);
println i
}
r = 150..0
for(int i in r){
NoteChannel noteChannel = new NoteChannel(noterequest);
noteChannel.playNote(i, 127);
sleep(30);
noteChannel.playNote(i, 0);
println i
}
QTSession.close()
import quicktime.std.music.ToneDescription
import quicktime.std.music.NoteChannel
import quicktime.std.music.NoteRequest
QTSession.open()
def noterequest = new NoteRequest(new ToneDescription(1));
def r = 0..150
for(int i in r){
NoteChannel noteChannel = new NoteChannel(noterequest);
noteChannel.playNote(i, 127);
sleep(30);
noteChannel.playNote(i, 0);
println i
}
r = 150..0
for(int i in r){
NoteChannel noteChannel = new NoteChannel(noterequest);
noteChannel.playNote(i, 127);
sleep(30);
noteChannel.playNote(i, 0);
println i
}
QTSession.close()
参考
: