研究テーマ->音楽ソフトの開発->MIDI系アプリの開発->自動作曲ソフトの開発->音域  
  コード進行を考慮せずに、 メロディを生成するアルゴリズムについて考えます。  
メロディの音域
これまでに書いたように、0〜127のノートナンバーをランダムにつないでメロディとしても、音楽的なものになりません。音域を絞ってやると それだけで少しマシなメロディになります。メロディは、ボーカルやその他、サックス、フルートなどの楽器で演奏することが考えられますが、それぞれの楽器には音域があります。ここでは歌モノっぽいメロディを自動生成するということを考えて、J-POPの曲で実際にメロディの音域を調べ、それをアルゴリズムに反映させるということをしました。具体的には、サザン、ドリカムなどのヒット曲を調べ、メロディの最低音、最高音の平均を求めます。プログラムに、その最低音、最高音以外の音が生成された場合は、それを捨ててしまうフィルターを組み込めばよいわけです。
同じ曲の中でも音域が変わる
実際に何曲か調べてみると、分かりますが、Aメロ、Bメロ、サビなど、曲の部分によって、メロディの音域が変わります。
具体的には、サザンの曲を10曲程度調べてみた結果では、Aメロ、Bメロの最低音はD#、最高音は上のF#でした。さびでは、最低音がG、最高音は上のGになります。このため、自動作曲ソフトの処理の中では、メロディの音域をパラメータとして、変更可能な形でもたせておく必要があります。
Aメロ、Bメロとサビでは、サビのほうが音域があがっているであろうことは、誰でも想像がつくと思いますが、詳しくみてみると、最高音は半音〜全音くらい上になっているだけで、さほどあがっていません。最低音は3度くらいあがっています。自動作曲を行う際に、Aメロ、Bメロ、サビなど各パートを別々に作り、音域を変えてやると、それらしいものが作曲できそうです。
サザンの音域
ドリカムの音域
ポイント
サビは単に音域があがるだけでなく最低音があがるのが特徴
メロディの音域は、パラメータとして保持する

アルゴリズム − 音域のフィルター

1 音が20個生成されるまで下記の手順を繰り返す
2  63〜77までの乱数を発生させ、それを音高とする
聴く このアルゴリズムで生成されたmidiファイルを聞くことができます。

上の「聴く」をクリックして、再生してみると分かりますが、指定された音域に収まっていても、音がバラバラな感じがします。調整感を出すためには、音階という概念を取り入れる必要があります。