Live Music Coder M^2

自分好みのプログラム言語を自作したいという思いから、5,6年も前になりますが、iPhoneアプリで”Live Music Coder”なるものを開発したことがあります。
一行で作るプログラムなのですが、コンソールのコマンドライン(CUI)をペースにしています。コマンドラインといえば、GUIの時代になってもWindows, Mac, Linuxで使われ続けています。やはりこれはこれで便利だからです。
コンソールではよく複数のプログラムをパイプで連結して実行します。このパイプラインでデータを処理する仕組みを模倣して作りました。一番こだわったのは、パイプラインでは難しい条件分岐です。構文で実現すればいいのですが、スペースが限られているため、できるだけシンプルに記述できるよう演算子の方式で実現しました。
シンプルにすればわかりにくくなることは避けられませんが、実験的な試みとして形にしました。

lmc03

下の赤枠がプログラムの部分です。上の赤枠は出力した結果です。(データはループします) データに従い音がなります。UIの都合上、上から下に逆スクロールします。(通常の逆です。iPad版は通常どおり)
このプログラムを別のプログラムで記述すると以下のような意味になります。(Swift / Playground 最近お気にいりのMacの開発環境Xcodeです。)
LMC02

このアプリの使い方は以下リンクです。
http://iphone.iiv.jp/sound/index/L0024
最近、iOS9用にアップデートしました。

iPad版のムービー
http://bitlife.me/archives/date/2011/05

今回、実際にコードを実行できるように、プログラムを用意しました。(恥をさらすようですが・・)
これはiPhoneアプリで使われているものから該当部分だけをピックアップしました。
構文解析とかせず、ベタに文字列操作しています。
https://gist.github.com/systemsblue/70833556ba4678e508d9

実行結果です。
LMC01

赤枠がアプリで実行している部分と同じ部分ですが、他にもいくつかサンプルを用意しました。
プログラムコードというほどではないと思いますが、少ない記述で多くを表現することに、興味をもっています。

プログラムって自由ですね。