このエントリはSUZURI Advent Calendar 2021の23日目です。
昨日はSUZURI事業部マネージャーすっしーの「(WIP)はじめてのニードルフェルト
」でした。ニードルフェルト、完成したのかお正月明けに聞いてみようと思います。
タイトルに驚かれた方。なにかの打ち間違いやエンコーディングを誤ったものではないのでご安心ください。
さて、私はGMOペパボでSUZURI事業部とEC事業部の部長を担当していて今日はSUZURI事業部のアドベントカレンダーに参加しています。
SUZURI事業部はエンジニア、デザイナー、そしてディレクターなどの総合職の方で構成されていますがSUZURIというサービスの色合いも相まって、業務以外においてもたくさんのアウトプットをされている方も多く、趣味が少ない私はどういったトピックがよいかなぁ。と悩んだのですが、元エンジニア(あ、今もエンジニアのつもりの気分ではいます)というところもあるので、少し前...いや、一昔前のプログラミングのトピックで投稿することにしました。昔話にお付き合いください。
遡ること随分さかのぼって、ざっくりと30年前。
当時の自分が夢中になっていたものが2つあって「音楽」と「コンピューター」でした。
音楽は、当時通っていた小学校のブラスバンド部でチューバを担当していて伸長が140cmくらいしかないのに同じくらいの大きさの楽器を吹いていました。ブラスバンドやオーケストラを経験された方はご存知かとは思いますが、チューバはベースラインの担当のため、トランペットやトロンボーンといった楽器と比較するとかなり地味ではありましたが、音楽全体を支えている感があり面白いと感じていたのでした。
もうひとつの夢中になっていたことが家にあったPC-9801というデスクトップパソコンでプログラミングをすることでした。まだインターネットは普及しておらず、多くのパソコンはネットワークに接続せず、販売されていたパッケージのソフトを利用するのが当たり前の時代でした。また、当時のパソコンにはBASIC言語と呼ばれるプログラミングをするための環境が標準でついており、そのBASIC言語を使ってプログラムを作ってみたり当時販売されていたBASICマガジンという「プログラムのコードが印刷されている紙面」の内容を写経したりしていたのでした。(そして大抵写経中にtypoしていてSyntax errorになって一発では絶対に動かない)
さて、その自分が夢中になっていた2つのことをマージさせたものが、いわゆるDTM(Desk Top Music(デスクトップミュージック)の略)で、当時、既にDTMをするにはローランドやヤマハが発売していたMIDI音源とPC-9801用のシーケンスソフトで実現はできていたのですが、それ自体も高価だったため実現するのが難しかったのでした。
ただ、先程書いたとおり、当時のパソコンにはBASIC言語と呼ばれるプログラミングをするための環境が標準でついていたので、プログラム中に「音楽を鳴らす」というプログラミングの記述を行えば、プログラムを実行することでパソコンについているFM音源を利用して音を鳴らすことができました。確か当時利用していたPC-9801の場合、同時に鳴らすことができたのは3音だったので旋律とベースとリズムを1音ずつ入れたら使い切る形だった記憶があります。
例えば
と書くと画面上に文字で「X'mas」と表示され、パソコンから「ドレミ♪」と再生されます。(当時のPC-9801についていたN-88日本語BASICというBASIC言語は 行番号の入力が必要 だったので行番号を入れたらgistでも行番号がついて不思議な感じになった...)
上のBASIC言語で書かれたプログラム中に書いた "PLAY" という命令の横に記述した "cde" という文字列がMusic Macro Language(ミュージック・マクロ・ランゲージ)という記法で音階を表現をすることができ、これを記述することで音楽をパソコン上で再生することができたのでした。いくつか記法の例を書くと以下の様な形になります。
MMLのコマンド例
- cdefgab
- 音階のドレミファソラシに対応, アルファベットのドレミ表記
- r
- 休符
- 数字
- 音階表記や休符表記を指定の数で伸ばす(8だと8分音符, 4だと4分音符, 2だと2分音符)
+
(または#)- 直前に指定された音を半音上げる (シャープ)
-
- 直前に指定された音を半音下げる (フラット)
>
,<
- 直後から1オクターブ上げる(>) or 下げる(<)
t
- 以後の再生時のテンポを指定 (t120だとbpm120)
さて、お気づきの方もいるかもしれませんが、このエントリのタイトルに書いた不穏な文字列を更に続けてみます。
t90g4.a8g4e2.g4.a8g4e2.
>d2d4<b2.>c2c4<g2.a2a4>c4.<b8a4g4.a8g4e2.
a2a4>c4.<b8a4g4.a8g4e2.
>d2d4f4.d8<b4>c2.e2.
c4<g4e4g4.f8d4c1
これをMMLとしてPLAY関数に渡すと何が再生されるでしょうか。
頭の中で再生できた方が読者の方の中に居られるかも知れません。
どうやって答え合わせをするとよいかなと思ったのですが、https://github.com/mohayonao/mml-emitter という実装を見つけたのでこちらを使ってWordpress上で再生することにしました。音を鳴らしてもよい環境に居られる方で再生をしてみたい方はこちらで。
散文になりましたが、このエントリーはここで終わります。
自分は現在マネジメント職という立場ではありますが、自分自身が体験したプログラミングすることや音楽を演奏を介してアウトプットしたときの子供の頃からの喜びを忘れずに、ペパボのプロダクトとインターネットを介してアウトプットをされるすべての人の支援を引き続きしていきたいなと、昔を顧みつつ改めて思うのでした。
それでは、来年もSUZURIをはじめとするGMOペパボのプロダクトをご利用頂いているすべての方にとって素敵な一年になります様に。
Merry X'mas!!
明日のSUZURI Advent Calendar 2021 24日目はGMOペパボCS室のなっちょさんです。
えーーーなにこれめっちゃエモい…😂
おぉ、感想ありがとうございます!!