オルゴールプログラムは8年前にC言語の勉強を兼ねて作った物ですので、私がこれから移植や改良を行う事は恐らく行わないでしょう。
つきましては、プログラムのソースによる助言程度となります。
2和音ですが、グローバル変数として、toneとtone_bをタイマー0,1を使ってそれぞれのパートを和音として出力しています。
音が切り替わったパートがあれば、その音をセットするといった具合です。移植するには、timer1に関わる部分も修正する必要があります。
一応ミュージック・マクロ・ランゲージなる仕様書はあります。2重和音のプログラムは、単音のデータの作り方とは異なります。
http://www.ne.jp/asahi/air/variable/picmel/applications/melody/mmlspec.htm
2重和音がなった場合は、このサンプルの様に奏でます。しかし、これ以上の小節はメモリーの制約から入りませんでした。
http://www.ne.jp/asahi/air/variable/picmel/applications/melody/melody_sample_D.zip
2重和音のプログラムは、それ以上の改良が見込めなかったので、それ以上の追求は行いませんでした。C言語の習作として作った関係もあり、参考として公開しております。
なお、PICを使った和音オルゴールについては、
http://milky.geocities.jp/waewax/
の方が色々公開しておりますので、参考までにご紹介させていただきます。