20 年ほど前に買った HyperCardの本 をパラパラめくっていたら、play
というコマンドが紹介されていた。音色とメロディーを指定して、音楽を再生することができる便利なコマンドだ。
play "harpsichord" "ch d e f g a b c5w"
Web で似たようなことができると面白そうだな、と思いたって Polymer のカスタム要素で同じようなインターフェースを実装してみた。
記述方法はこんな感じ。
<x-play sound="piano" tempo="80" repeat="1" melody="d2 e2 c2 c1 g1"></x-play>
タグを並べて、同時に再生もできるようです (たくさん並べたら音がずれそう…)
<x-play sound="snare" tempo="100" repeat="2" melody="- c4 - c4 - c4 - c4"></x-play>
<x-play sound="kick" tempo="100" repeat="2" melody="c4 c4 c4 c4 c4 c4 c4 c4"></x-play>
動作環境
最新版の Mac Chrome / Safari / Firefox あたりで動作を確認した。iOS の Safari だと音がでないが、まだ原因は調べてない。
音源について
魔王魂 さんの音源を利用させていただきました。
まず最初に断っておきますが、「このページにある素材の使い道は作者の私すら分かりかねます。」
とありますが、まさにぴったりの素材でとても助かりました。
余談
@hideack が HyperTalk の play コマンドよりも歴史の古い MML という言語を教えてくれた。
以下のページによると初期の MML は 1978 年にシャープ社のコンピュータに搭載されたらしい。