MML中間言語、パーサ部分をまずお手軽に作ってみるのはアリかも
@cat2151 「ポーティングのコストなくせるからBNFでMMLをASTにできるようにするといいかも」は、「BNFでMML書くのがどんだけ大変か、また、持続的にBNFをうまく共有、修正、メンテしていけるのがどんだけ大変か」の度合いと天秤かなあ
2015-05-30 10:29:30@cat2151 前提として、字句解析・構文解析したあとのAST(抽象構文木)に対して、実際に音を鳴らすなりバイナリ吐くなりのアクションをとらせる処理というのは、完全に別モジュールとして外出しして考えている。ってこれは最初に書いたか。
2015-05-30 10:35:07@cat2151 pegjsブラウザで試した。左に定義を「MMLs = [a-g]*」と書き、右にMMLを書くと、右下のoutputにパース結果が配列で入る。こりゃ楽だ。 pegjs.org/online pic.twitter.com/yCFmKL2GWY
2015-05-30 10:51:12@cat2151 この右下のoutputのデータが、AST(抽象構文木)をjson形式で表したもので、プログラム上はこれを読み込むと、この場合は単純な文字列の配列として扱える。楽。
2015-05-30 10:54:23@cat2151 このoutputされたASTのjsonをテケトウにjsに食わせて、例えば逆順に並び替えて加工して、再度MMLに戻して、鳴らしてみて、といった簡単なデモをjsで書いてjs投稿系サイトで共有できるかな、と思ったが壁が
2015-05-30 11:19:14@cat2151 壁1。まずjavascriptでMMLを書けるライブラリで、2行(includeと、MML実際に書く1行)で済みそうなものがすぐ見つからなかった。 壁2。そのライブラリをサポートするjavascriptのplaygroundかつ投稿系サイトがすぐ見つからなかった
2015-05-30 11:20:19@cat2151 このレベルの簡単さと環境選ばなさのサービスのjavascript版みたいなのを探してた wonderfl.net/c/62Di
2015-05-30 11:22:13@cat2151 $playmml('cde') って書いたら即音が出るくらいの機能をinclude1行で使えるくらいのjavascriptライブラリがどっかにあるのではと思っている
2015-05-30 11:25:44@cat2151 javascript + Web Audio APIでMMLを鳴らす MMLEmitterを見つけた mohayonao.hatenablog.com/entry/2014/08/…
2015-05-30 17:19:38@cat2151 mml-emitter github。Usageわかりやすい github.com/mohayonao/mml-…
2015-05-30 17:22:31@cat2151 JavascriptのplaygroundでMMLを使ってみるサンプルは、先に書いたjsdo.itの「MMLEmitter で MML を試してみるテスト」がある jsdo.it/cx20/2V5t
2015-05-30 17:31:45@cat2151 よって、「MMLをtextboxに入力」「それをパースしてjson得る(パーサはpeg.jsで作る)」「jsonを逆順並び替えなど加工」「そこからMMLを再生成」「鳴らす」は、それなりにできそう。
2015-05-30 17:37:05ABA gamesがBulletMLで弾幕という文化を記述し保存することを試みたのと同様に、我々はMML文法をParsing Expression Grammarで記述し保存していくことを試みてもよいのではないだろうか asahi-net.or.jp/~cs8k-cyu/bull…
2015-06-09 20:45:47@cat2151 もちろん弾幕同様MMLもバリバリの現役であるのは言わずもがな。 とはいえ、いにしえのMML文法がぐぐってすぐ出てこないのって、失伝フォビアを発症するよね?
2015-06-09 20:49:52MMLをPEGでパースできるようにしておくことのメリット思いつき。 初学者のサポートとなるよう、編集中に裏でパーサ流しておいて文法ミスあれば修正サジェストとか。 この初学者とは「俺ふぁみべMMLは得意なんだけどMSXのMMLは初めて」とかも含むよ
2015-06-09 22:02:10