楽譜をプログラミングで再現!〜マインクラフトとアーテックでやってみた

音楽は芸術的なもので、プログラミングとは親和性がないもの、というイメージを持っている人もいるかもしれません。今回はちょっとそのイメージを変えるお話です。音楽の授業でプログラミングを取り入れるヒントにもなります。

楽譜はプログラミングに似ている!?

音楽の楽譜は音の高さと長さが五線譜上の音符という記号で示されていて、演奏者はその記号を頭の中で瞬時に演奏方法に変換して楽器を奏でたり歌を歌ったりしています。これ、作曲者が、演奏者に対して演奏のための指示書を表記したもの、と考えるとちょっとプログラミングに似ていると思いませんか?

楽譜に記された時点で、演奏のための指示書がすでに記号化されているわけですから、逆に楽譜をプログラムに置き換えるのも簡単です。楽譜のルールで書かれた記号を数値で表現して、その数値を使用するプログラミングツールのルールに置き換えてあげればいいだけです。

マインクラフトで音楽を再現する!

例えばマインクラフト(Minecraft)で、以前息子と「誕生日おめでとう」作品を作ったことがあります。先に完成品をお見せしましょう。

BGMも入っているので少しわかりづらいかもしれません。最後の花火はお祝い用の効果。

「音ブロック」を順番に並べ、「レッドストーンの回路」で音が順に鳴る仕組みが作られています。詳しい仕組みは、ここではわからなくて大丈夫です。

音ブロックの音の高さは、配置したあとに右クリックで音程を上げていき、あらかじめ鳴らしたい音にセッティングしておきます。1回のクリックで半音ずつ上がっていくので、何回クリックすれば何の音になるかを一覧にしておけば、対照表として使えます。最初の音を探し当てて鍵盤で表現するとこうなりました。

kenban

次に音の長さです。「レッドストーンのリピーターの遅延数」で音の出るタイミングを変えられるのでこれで長さをセットします。この「レッドストーンのリピーターの遅延数」の意味はわからなくて構いません。とにかく、音を鳴らすタイミングを数値で設定できる箇所があるわけです。

曲のスピードによりますが、例えば「遅延数」1を16分音符と決めたら、8分音符なら「遅延数」2、付点8分音符なら「遅延数」3、4分音符なら「遅延数」4だな、という風に、音の長さに合わせて設定すればよいだけです。

音の高さと音の長さをマインクラフト上で必要な設定数値に置き換えると、例えばこんなふうに変換できます。

shikumi

さて、今回はハッピーバースデーのメロディーを作る必要があったので、こんなふうに楽譜を数字化してみました。これは、マインクラフトの音ブロックでメロディーを作るための楽譜といってもいいでしょう。

happybirthday

この作品では、親の私は息子からマインクラフトで音ブロックを扱う理屈だけを聞いて、最初の音を探したり長さの変換ルールを決めてメロディーを数値化し紙で指示するところまでを担当。マインクラフト上の操作は全て息子が担当し、この表を見ながらひたすら地道に作成作業をして完成させました。

アーテックロボで音楽を再現する!

アーテックのロボット教材の場合は、ブザーのパーツを使います。このブザーに音の高さと長さを指示するだけで、メロディーを作れます。

こちらは以前、息子とクリスマスに作ったクリスマスパーティー用ジングルベルマシン。

アーテックロボのプログラミング画面で、ジングルベルのメロディー再生の部分だけを作ると、出だしはこうなります。

music-robo

白い文字は後から説明用に追加

このプログラム上では、音の高さは「ブザーXXから『57』をだす」という風に数値で、音符の長さは「0.25びょうまつ」という風に秒数で表現しています。音の高さは半音で1ずつ数字が変わり、直接数値で指定できるので、マインクラフトで音ブロックを複数回右クリックをして設定するよりは、はるかに楽で明示的です。

音の長さは、曲のスピードに応じて、例えば8分音符を0.25秒とするなら4分音符は0.5秒で……と秒数に置き換えればよいだけです。

この作品は、音のプログラムは全部私が作り、その音の指示の間に息子がLEDやサーボモーターなど好きな効果をはさみこんでいくということにして作りました。上記のプログラムはLED等の効果が入る前のメロディーだけの状態です。

ちなみにデモムービーの後半、LEDも動きもなく、音だけがしばらく再生されて終わるのは、息子が制作時に前半に効果を追加したところで力尽きて完成品としたからです。

暗号解読のような楽しみ方も!音楽に興味をもつひとつの入り口

これらの例では、親の私が完全な指示書にしたり、プログラムを作って渡してしまったりしましたが、子どもの年齢や理解力に応じて、鍵盤と数値の対照表、音符と数値の対照表だけを作って、実際の五線譜上の楽譜を渡して、照らし合わせながら暗号解読のように置き換えていくという楽しみ方もできるでしょう。

こんな風に指示書や暗号解読、プログラムという視点で楽譜を紐解いてみると急に興味が持てる子どももいるかもしれません。

音楽のおもしろさや楽しさには、こういう方向性ではないところから入って欲しいとは思うので、「音楽の教育」という点ではふさわしくないかもしれません。音を出すというアウトプットの部分の人間の表現力が音楽の面白さの大きな部分なので、音楽表現と機械音のアウトプットを同列に扱うこともしたくはありません。

ただ、こういうアプローチがきっかけで音楽に興味をもつ子どもがいるとしたら、それはその個人の可能性が広がることになるので、大きなプラスです。

また、音楽の中でちょっと退屈で苦手意識を持ちやすい「音符や楽譜のルールを学ぶ」という点に限定すれば、楽譜をプログラミングに変換するという作業は、子どもの理解を助けることになるでしょう。

今回の学びの内容は、必ずしもマインクラフトやアーテックロボを使う必要はなく、音を出す仕組みのあるプログラミングツールなら何を使っても同じことができます。本当に学校の音楽の授業でやるなら、ちょっとマインクラフトは向かないでしょうし、アーテックロボは作業工程が多すぎてしまうでしょう。

学びのアイディアを実現するツールは、どれでも大丈夫。より扱いやすいものを選んでチャレンジしてみてはどうでしょうか。

狩野 さやか

株式会社Studio947のライター、ウェブデザイナー。技術書籍の他、学校のICT活用やプログラミング教育に関する記事を多数執筆している。著書に「デジタル世界の歩き方」(ほるぷ出版)、「ひらめき!プログラミングワールド」(小学館)、「見た目にこだわるJimdo入門」(技術評論社)ほか。翻訳・解説に「お話でわかるプログラミング」シリーズ(ほるぷ出版)。

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です