楽器定義ファイルの書き方 目次 0: 前置き 1: 楽器の名称 2: 楽器の弦の数 3: 各弦の開放弦の音高と、各弦が何フレットから始まるか 3-1: 音高 3-2: 開放弦のはじまるフレット数 4: ポジションマーク ---------------------------------------------------------------- 0: 前置き 楽器定義ファイルは、.def という拡張子を持つファイルで、 \system\apps\frets\ に置きます。一つの楽器、一つのチューニング毎に一つの定義ファイル が必要になります。 楽器定義ファイルの中身は、改行で区切られたプレインテキストで、各 行の中身は以下の様になっています。 1 楽器の名称 (1行) 2 楽器の弦の数 (1行) 3 各弦の開放弦の音高と、各弦が何フレットから始まるか (n行) 4 ポジションマーク (2行) 1 楽器の名称 (1行) 任意の文字列。必ずしもファイル名と一致する必要はありません。 例えば デフォールトの定義ファイルである gtr_std.def では、楽器名称 として "Guitar (Standard tuning)" という文字列が使用されています。 2 楽器の弦の数 (1行) 1から 10までの 10進数で表記します。 3 各弦の開放弦の音高と、各弦が何フレットから始まるか (n行) 弦の数を n本とすると、低音弦側から n行記述します。各行は、それぞれ 音高,開放弦のはじまるフレット数 という形式で記述します。音高と開放弦のはじまるフレット数については それぞれ以下で詳述します。 3-1: 音高 何となくMIDIっぽい様な表記をしているんじゃないかと思います。が、私は MIDIの事を何もしりませんので良く判りません。 所謂 真ん中のCからはじまるドレミを C4 D4 E4 F4 G4 A4 B4 で表記します。 それよりも nオクターブ上の音は C4+n D4+n E4+n F4+n G4+n A4+n B4+n で表記します。 nをマイナスにすれば、nオクターブ下の音となります。 例) C4の2オクターブ上は C6 A4の1オクターブ下は A3 シャープには +を、フラットには -を付加します。 例) A1+, B5- 注) EPOCデバイスに塔載されているスピーカーは大変小さなもので、高音再生は まあまあですが低音の方は苦しいので、実際の楽器の音と同じ音高が出せな い場合がままあります。例えばギターの場合ですと、本当の音高は下から E2 A2 D3 G3 B3 E4 のはずなのですが、これを Psion Series 5mxで再生すると、下の方の 3音 か4音ぐらいは大変苦しくなってしまいます。従って、デフォールトのギター の定義ファイルでは、2オクターブ上げた音高である E4 A4 D5 G5 B5 E6 を使用しています。混乱する方もいらっしゃるとは思いますが、音にならない よりはましだと思いますので我慢しましょう。 3-2: 開放弦のはじまるフレット数 開放弦のはじまるフレット数は、大抵の場合 0ですが、例えばバンジョー の 5弦等の様にフレットボードの途中から弦がはじまる場合にはそれに応 じた数を記述します。 申し訳ありませんが負のフレット数には対応していません。 4: ポジションマーク (2行) ポジションマーク位置/個数定義行 描画モジュール名 ポジションマークは、位置や個数を位置/個数定義行で指定し、形状を描画モ ジュール名で指定します。 ポジションマーク位置/個数定義は、1フレットから12フレットまで順に 「そこに何個のポジションマークを描画するか」を記述します。 例) 101010101002 これは、1/3/5/7/9フレットに 1つ、12フレットに 2つ という意味です。 描画モジュール名は、その名のとおりポジションマークを描画するための OPL モジュールの名前から拡張子(.opo)を除いたものです。 デフォールトでは、ドット形状のモジュール ("dot") 又は ブロック形状のもの ("block") 又は ポジションマーク無し ("no") とを指定出来ますが、ユーザー がモジュールを書く事によって拡張可能です。 原理上は、スノーフレークやダイアモンド等はもちろんの事、複雑なVineの 様なインレイまで描画することも可能なはずです。 デフォールトでは ギターは 001010101002 block バンジョーは 101010100102 block ウクレレは 000010100201 dot というポジションマーク位置定義が与えられています。 ポジションマーク描画モジュールの書式につきましては、時間があれば文書化 しようと思っています。 以上です。 素晴しい楽器定義ファイルやポジションマーク描画モジュールを書かれた場合、 それを他のユーザーと共有しても良いという方がいらっしゃいましたら、 ktkawabeまで送って下されば frettedパッケージに入れて配布させていただき ます。全く使えない (例えば frettedでエラーが出る) という場合でも無ければ、 送っていただいたものは全てパッケージに入れさせていただきます。 河邊 ktkawabe@hi-ho.ne.jp