作曲ツール作っています。

作曲プログラムのチューンナップは放置して、ツールの作成にいそしんでいました。
予定では3連休のうちに完成させるつもりだったのですが、ってぼやきつつ。
何を作ったかというと、コードを提案してくれるツールです。

出力サンプル (※ これは出力例であり、別のメロディーに書き換えても何も起きません)

サンプルには転調機能実装の時のサンプル曲の最後の段のメロディーが入っています。
あくまで自分専用なので自分の決め方に最適化されていて、基本、最後のコードから決めるように設計されています。
プルダウンでコードを選ぶと、前のコードのうち接続可能なものが青色に変わります。

ツール本体は公開するつもりはないのですが、perlで書いてあるので、CGIに対応できないわけではありません。でも、レンタルサーバーを借りる気がないのでCGI対応しません。
なぜなら、自分にとって厄介なのはプログラムの書き換えよりもデータベースの構築なので。

ちょっとボヤキを追加すると、perljavascriptって似てそうで似てない言語なので、perlスクリプトの中に、後で吐くjavascriptを仕込むのはちょっと混乱します。
whileやforのループから抜けるコマンドは、perl

my $i =0; # 何行目か調べる。
while(<FileHandle>){
 if($_ =~ /hogehoge/){
  next;
 }
 if($_ eq "hoge"){
  last;
 }
}continue{
 $i++;
}

という風に last コマンドを使うのですが、javascriptではbreak でループを抜けます。

for(var i=0;i<hoge.length;i++){
 if(hoge[i] == "hogehoge"){
  continue;
 }
 if(hoge[i] == "hoge"){
  break;
 }
}

特に問題なのは continue で、perljavascriptでは全然用途が違うのに同じコマンド名なのです。