English

MDPW for Jacl(Tcl/Java)

インストール

音の定義

音列の定義

和音の定義

曲を作る


ダウンロード mdpw30.zip

Tcl/Java

戻る

インストール

Tcl/Java よりjaclBinaryをダウンロードして展開するとlib/tcljava1.4.0などの下に jacl.jartcljava.jarが得られます。 さらにアーカイブmdpw30.zipをダウンロードして解凍すると mdpw.jarファイルが現れます。 この3つを貴方のシステムのJava環境にくわえて下さい。 この製品は内容的にJavaプログラマー向けなのでこの説明で分って頂きたいところですが 大体以下の3つの方法があります。
  • java, javac コマンド実行時にクラスパス引数で指定する。
  • CLASSPATH環境変数にアーカイブの場所をくわえる。
  • jre/lib/extフォルダに置く(呼び出されるJavaコマンドに対応するフォルダ)
Jarを親フォルダに置いた場合の実行例です。
c:\mdpw\sample> dir /w ..\*.jar
mdpw.jar jacl.jar tcljava.jar
C:\mdpw\sample> dir /w 
jacl.bat sample.tcl
C:\mdpw\sample> java -cp ..\mdpw.jar;..\jacl.jar;..\tcljava.jar tcl.lang.Shell sample.tcl
C:\mdpw\sample> dir /w 
jacl.bat sample.tcl sample.mid
C:\mdpw\sample> 

ページの先頭| 次のステップへ

音の定義

まずは音が一つなるだけの例です。 jaclのバージョンが1.26で動作を確認していますが、 古いバージョンだと最初の1行は不用になります。 mdpw.tclはユティリティー関数を定義しているもので、 アーカイブを展開したsampleフォルダにあります。 また:mnの引数ですが ピッチ(高さ:0-127), デュレーション(長さ:正のdouble), ベロシティ(強さ:0 - 127), プログラムナンバー(音色:0 - 127, 129) の順に指定します。
package require java
java::load com.cwbp.mdpw.PlayExtension
source mdpw.tcl
play MIDIFilePlayer "note.mid"
play tempo 60
play [:mn 60 1 64 0]
play end
exit 0

ページの先頭| 次のステップへ

音列の定義

音列とは時間的に連続して鳴る一連の音の事です。 以下のように:msで音列リストを作りその中に音をならべる事で、実現可能です。 ドレミと音がするはずです。 :mnで引数が足りない場合は前の音の値を用います。
package require java
java::load com.cwbp.mdpw.PlayExtension
source mdpw.tcl
play MIDIFilePlayer "seq.mid"
play tempo 120
play [:ms [:mn 60 1 64 0] [:mn 62 1] [:mn 64 1]]
play end
exit 0

ページの先頭| 次のステップへ

和音の定義

和音は以下のように:mcで作った和音リストに音をくわえる事により、実現可能です。 ドミソの和音の例です。 やはり:mnで引数が足りない場合は前の音の値を用います。
package require java
java::load com.cwbp.mdpw.PlayExtension
source mdpw.tcl
play MIDIFilePlayer "chord.mid"
play tempo 120
play [:mc [:mn 60 2 64 0] [:mn 64] [:mn 67]]
play end
exit 0

ページの先頭| 次のステップへ

曲を作る

音列と和音で曲を作ります。 音列と和音はそれぞれtclで言うところのリストで実現されているのですが、 これらのリストは更に音列や和音のに含める事が出来ます。 自由に入れ子に出来るので和音の列を始め何段でもリスト構造を作る事が出来ます。 ついでにplayを複数呼び出すと連続して演奏される事も使ってみました。 「チューリップ」最初の2小節です。
package require java
java::load com.cwbp.mdpw.PlayExtension
source mdpw.tcl
set chord_c [:mc [:mn 60 2 64 0] [:mn 64 2] [:mn 67 2]]
set chord_part [:ms $chord_c $chord_c]
set melody [:ms [:mn 60 1 80 0] [:mn 62 1] [:mn 64 1] [:mn 64 1 0]]
set phrase [:mc $melody $chord_part]
play MIDIFilePlayer "sample.mid"
play tempo 120
play $phrase
play $phrase
play end
exit 0
後は貴方のアイデア次第で、音楽プログラミングをお楽しみ下さい。
ページの先頭