ファミコン音源は、単調な音色なのでそのままではつまらない音になります。
今までは、テンプレートの設定を使っていましたが、自作してみましょう。
現実世界の楽器は、音符1音1音の中にも音量の変化があります。
エンベロープとは、その音量の変化のパターンのことを言います。
nsd.libでは、それを数値で書いていきます。
例えば、ピアノ等の楽器は、最初のアタックが強く、その後、徐々に音が減衰します。
これを図に表すと以下のようになります。
エンベロープ定義は、1/60秒間毎の音量変化を、0~15の数値で羅列します。
また、音量を記述する他に、便利なコマンドがあります。
このように、上のグラフをエンベロープパターンに定義すると、以下のようになります。
エンベロープ(1){ 15 12 11 D0 10 D1 9 D2 8 D3 7 D4 6 D5 5 D8 L 4 R 3 2 1 L 0 }
これは、エンベロープの「1番」にピアノのような音量変化パターンを定義しました。
次は、音符1音1音の中での音程の変化です。
現実の楽器でいうところのビブラート、音程の揺らぎ等を定義できます。
今回の作るビブラートは、音を発音して少し経ってから音程の揺らぎをかけます。
エンベロープと同じように、これをビブラートパターンに定義すると、以下のようになります。
ビブラート(1){ 0 D20 L 1 2 3 3 2 1 0 -1 -2 -3 -3 -2 -1 0 }
ビブラートの掛けかたは非常に重要です。
器楽奏者は、その時の音楽の場面に合わせて、周期、振幅をコントロールします。
ここでは、少しだけ、例を紹介します(一例であって、すべてがこの通りではありません)。
最初はビブラートをかけず、少し経ってから、軽く掛けます。
他のパートが素晴らしい旋律を奏でているのに、大きなビブラートで主張する奏者は要りません。
最初だけビブラートをかけ、ビブラートの振幅も減衰させることが多いです。
クレッシェンドというイタリア語の意味は「成長する」です。
つまり、クレッシェンドも成長します。ビブラートの振幅もどんどん短くすることが多いです。
さぁ、作ったエンベロープパターンと、ビブラートパターンを使ってみます。