研究テーマ->音楽ソフトの開発->MIDI系アプリの開発->自動作曲ソフトの開発->音階  
  コード進行を考慮せずに、 メロディを生成するアルゴリズムについて考えます。  
音階の効果
音階を意識せずに、オクターブ内の12音を均等に扱って作曲を行うと、どうしても調整感のない曲になってしまいます。たとえば、「ドレミファソラシド」の「ド#、レ#」などの半音を含んでいない音階をダイアトニックスケールと言いますが、ダイアトニックスケールだけを使用して、自動作曲を行うと、かなり調整感のある音楽を作ることができます。。
聴く このアルゴリズムで生成されたmidiファイルを聞くことができます。
色々な音階
音階は、ド〜シまでの12の音のうち、どの音を使用して作曲を行うかを決めます。たとえば、沖縄音階で曲をつくる場合は、「ドミファソシ」の音だけを使用して、曲を作ります。(なので、レとラの音は使用してはいけません。)
音階と紛らわしいものに調律があります。調律とは、純正率とかのように、12の音をどのような音程でもつか(どのような周波数にするか)を決めるものです。なぜ紛らわしいかというと、たとえば、ガムランの音楽の場合、「ドミファソシ」の音階で曲ができていますが、それだけでは駄目で、「ドミファソシ」の各音の調律にも特徴があります。なので漠然と、「ガムラン風の音階の曲」と言った場合、音階と調律の両方を含む意味になっています。
聴く このアルゴリズムで生成されたmidiファイルを聞くことができます。
上記は、上にあるダイアトニックと同じアルゴリズムで、沖縄音階を使用して自動作曲した曲です。沖縄音階を使用するだけで、アジアっぽい雰囲気が強くでていることが分かると思います。
音が上昇する場合と下降する場合
音階でやっかいなことの1つに、上昇する場合と、下降する場合とで、使用する音が変わる音階があるということです。一番なじみのあるものでは、ハーモニック・マイナー・スケールがあります。
色々なジャンルの音楽を扱うために、音階を調べていくと、このように上下で違っている音階がけっこうあることが分かります。フラメンコで使用される音階なども、上下で違っています。
このような音階をカバーするために、たんに、1セットの音の集まりを音階としてもっておくのではなく、上下で2つのセットの音の集まりを音階としてもっておく必要があることが分かります。(ちなみに、もっとつきつめていくと、上下、2つでは足りない場合もでてきます。)
旋法
同じ音階でも、中心となる音(トニックといいます)が違ってくると、それによって作られるメロディの雰囲気が違ってきます。これを旋法と言います。ポピュラー音楽の世界、特にジャズでは、モードと言っているやつです。
たとえば、ド旋法だと、「ドレミファソラシド」、レ旋法だと、「レミファソラシドレ」と言った感じで演奏します。クラシックだと、イオニアとか旋法ドリア旋法とかいう名前で呼びます。
ちなみに、ここで中心となる音といっているのは、キー(調)とは違う話ですので、注意してください。つまり、ハ長調(キーがC)でも、ド旋法とかレ旋法があるわけです。
通常のポップスですと、ほとんど、ドから始まって、ドに終わる形ですから、旋法は気にしなくても大丈夫ですが、クラシックとか、民族音楽に範囲を広げようとすると、自動作曲のアルゴリズムの中に、旋法を扱う仕組みが入っていたほうが良いと思います。
短調、長調の区別は必要ない?
少々乱暴かもしれませんが、イ短調=ダイアトニックスケールのラの旋法と考えることも可能と思います。アルゴリズムのパラメータの中に、重複する意味のものをもつと、ややこしいですから、もし同じであれば、旋法だけパラメータとして保持し、短調、長調の区別はもたないほうが良いかもしれません。
ただし、アルゴリズムの内に調そのものは、もたないと、調号が必要なときに少し困ります。たとえば、最終的に出力するMIDIには、データに何調の曲かを入れておくことができますが、この際に調が必要になります。また同様の曲を別の調で作りたい場合もあるでしょうから、調そのものは必要かもしれません。
 
音階について学習するソフトを作ってみました
音階について、学習するソフトを作ってみました。
こちらからダウンロードできます。