研究テーマ->音楽ソフトの開発->MIDI系アプリの開発->自動作曲ソフトの開発->確率による重み付け  
  複数の選択肢がある場合、プログラミング上、どのような考え方が可能かを示します。ここでは手法を示すことに力点を置いていますので、ここで提示したアルゴリズムを使用して生成される曲が音楽的かどうかはあまり考えていません。  
複数の選択肢が許される場合
複数の選択肢が許されるような音楽理論があるとします。たとえば、次のようなルールを考えてみましょう。
ルール
最初の音の音高は、60である 
2つ目以降の音は、前の音に比べて、半音上、半音下、全音上、全音下のいずれかに進む
音の長さは常に96である
このような場合、単に、4つの音のうちのどれかを選ぶのではなく、確率で重みづけをして、特定の音を選ばれやすくしたり、選ばれにくくしたりすることが考えられます。どのような確率を割り振るかは、実際にある曲を参考にして決めることができます。たとえば、歌謡曲100曲を調べ、半音上、半音下、全音上、全音下に進む音が、実際にどれくらいの頻度であるかを調べて、確率として割り振るわけです。実際に調べるのが大変な場合、もっともらしい予想をしてみることもできます。たとえば、半音上下に進むことは全音上下に進むことよりは少なそうですから、次のようなアルゴリズムを考えてみました。下記のMIDIから分解能を480にしています。

アルゴリズム − 音の進行確率

1 1つ目の音として、音高60、音の長さ480の音を生成する
2 続く音が19個生成されるまで下記の手順を繰り返す
3   前の音と比べて半音上がる音を20%の確率で生成する
 前の音と比べて半音下がる音を20%の確率で生成する
 前の音と比べて全音上がる音を30%の確率で生成する
 前の音と比べて全音下がる音を30%の確率で生成する
 音の長さは480にする 
聴く このアルゴリズムで生成されたmidiファイルを聞くことができます。
採用した音楽理論(ルール)があまり良いものではないため、音楽的ではありませんが、考え方は分かってもらえたと思います。