Kデスクトップ環境

3.14. マップのある楽器(ドラムマップなど)

マップのある楽器とは、音程によって振る舞いの違う楽器のことです。 例えば、5オクターブのピアノを作る場合、1オクターブごとに1つのサンプルを割り当 てます。 それに応じて音程が変化します。 こうすると、1つのサンプルでやるよりもずっと良い音が出ます。

1つのキーごとに1つのドラムサンプルを演奏するドラムマップを構築することもできます。

パラメータを受け取るためには、楽器は「不完全」である必要があります。 例えば、wave サンプルを演奏する普通の楽器であっても、 wave サンプルはストラクチャの中には与えられません。そのかわりに、 文字列のポートがあり、それが wave プレイヤのファイル名に接続しています。 このようにして、ストラクチャはパラメータ化されます。

それが面倒に見えるのは承知しています。私の意図することを理解するには、 play_wav, play_akai, play_akai_stereo を見てください。

では、楽器に play_wav を使い、 ストラクチャにやり残しのパラメータのサンプルがあることを想定して、 次の内容のファイル 909drums.arts-map を作成してみましょう。

   1 structure=play_wav
   2 keygroup=35-35
   3 {
   4 sample=/usr/local/samples/909select/bt0a0a7.wav
   5 }
   6 keygroup=36-36
   7 {
   8 sample=/usr/local/samples/909select/bt0a0da.wav
   9 }
  10 keygroup=37-37
  11 {
  12 sample=/usr/local/samples/909select/bt3a0da.wav
  13 }
  14 keygroup=38-38
  15 {
  16 sample=/usr/local/samples/909select/bt7a0d7.wav
  17 }
  18 keygroup=39-39
  19 {
  20 sample=/usr/local/samples/909select/btaa0d0.wav
  21 }                                                                               

見ての通り、開いているパラメータはキーグループごとに異なる指定を受けています。 ここでは keygroup は1つのキーだけを指し示していますが、 keygroup=30-50 のようにキーの範囲を指定することもできます。

複数のパラメータがあっても同じです。keygroup の定義にもう一行追加すればよいのです。 次は、akai のピアノ用演奏マップの抜粋です。

   1 structure=play_akai_stereo
   2 keygroup=0-30
   3 {
   4 rightsample=/var/samples/BOESEND.LOUD/BOE_LD_F#0-R
   5 leftsample=/var/samples/BOESEND.LOUD/BOE_LD_F#0-L
   6 }
   7 keygroup=31-33
   8 {
   9 rightsample=/var/samples/BOESEND.LOUD/BOE_LD_G#0-R
  10 leftsample=/var/samples/BOESEND.LOUD/BOE_LD_G#0-L
  11 }
  12 keygroup=34-34
  13 {
  14 rightsample=/var/samples/BOESEND.LOUD/BOE_LD_A#0-R
  15 leftsample=/var/samples/BOESEND.LOUD/BOE_LD_A#0-L
  16 }
  17 keygroup=35-36
  18 {
  19 rightsample=/var/samples/BOESEND.LOUD/BOE_LD_C1_-R
  20 leftsample=/var/samples/BOESEND.LOUD/BOE_LD_C1_-L
  21 }
  22 keygroup=37-38
  23 {
  24 rightsample=/var/samples/BOESEND.LOUD/BOE_LD_D1_-R
  25 leftsample=/var/samples/BOESEND.LOUD/BOE_LD_D1_-L
  26 }
  27 keygroup=39-39
  28 {
  29 rightsample=/var/samples/BOESEND.LOUD/BOE_LD_D#1-R
  30 leftsample=/var/samples/BOESEND.LOUD/BOE_LD_D#1-L
  31 }
  32 keygroup=40-40
  33 {
  34 rightsample=/var/samples/BOESEND.LOUD/BOE_LD_E1_-R
  35 leftsample=/var/samples/BOESEND.LOUD/BOE_LD_E1_-L
  36 }

このマップファイルは、ホームディレクトリの arts/maps ディレクトリにコピーすればすぐに 楽器のマッパーに自動的に表示されます。