藤本健のDigital Audio Laboratory
第760回
プログラミングしたい熱再び! ローランド「GO:KEYS ScratchX Extension」に大人も夢中
2018年3月26日 11:42
最近、コンピュータでプログラムを組んだことはあるだろうか? 本職のみなさんはともかくとして、「昔、少しやった経験はあるけど、最近はさっぱり」、「何か難しそうで、よくわからない」、「とくに必要性も感じないし……」なんて方も多いのではないだろうか?でも、ちょっとしたプログラミングって、結構楽しい遊びになるし、プログラムを音と絡めると、さらにその面白さは飛躍的に向上する。
先日、Rolandは同社の「GO:KEYS」というキーボードとPCをUSB接続した状態で、楽しくプログラミングできるユニークな環境を構築し、リリースした。ここではScratchというプログラミング言語が使われているのだが、試してみたところとても面白いものだったので、これがどんなものなのか紹介してみよう。
日本語も使える、楽しいプログラミング言語
ScratchというのはMITメディアラボが開発した子供用のプログラミング言語で、ブロックを組み合わせる操作だけで簡単にプログラムを作れるシステム。テキストエディタでプログラムを書いて、コンパイルして……なんて難しいものではなく、子供が初めて触っても、直感的にプログラミングを覚えられる分かりやすい言語だ。
動作環境は、Google Chromeなどのブラウザ。ここにAdobe Flashをインストールしておく必要はあるが、準備すべきはそれだけ。あとはScratchサイトに行けば、もうすぐにプログラム可能となっている。
各国語対応となっており、標準設定の英語だけでなく、日本語でも使うことができる。日本語に設定すると「もし~なら~でなければ」、「表示する」、「スペースキーが押されたとき」……といったコマンドを使うことになるのだ。ただプログラムをかじったことのある人なら「IF~THEN~ELSE」といった表示になる英語のほうがしっくりくるかもしれない。
このScratchは、テンプレートからキャラクタを表示させた上で、そのキャラクタを動かしたり、回転させたりといったことが手軽にできるし、サンプリングされている素材をベースとして簡単に音を鳴らせるのも、いまどきのプログラミング言語といった感じだ。こうしたプログラミングもすべてブロックを順番に並べるだけでできる。だからこそ、子供が楽しみながらプログラムができるというわけなのだ。
もっとも子供用とはいえ、Scratchのブロックには分岐やループ、条件を元にした判定など、プログラムの基本はすべてそろっている。また、いわゆる「イベントドリブン型プログラミング」となっていて、すべて上から順番に処理していかなくてはならないのと違う点もわかりやすそうだ。
さて、そのScratchには、拡張版ともいえる「SctachX」というシステムがある。これも基本的にSctachと同じなのだが、標準のScratchにはないブロックを自作したり、誰かが作ったブロックを利用してプログラムすることが可能となっている。
そのScratchXの拡張機能を用いて、今回ローランドがユニークなものを作ってきたのだ。「GO:KEYS ScratchX Extension」というのがそれ。先日行なわれたローランドの発表会において、GO:KEYS ScratchX Extensionを開発した渡邊正和は「Web MIDI APIの機能を利用しながら、ScrachXでGO:KEYSとやりとりできるようにしました。やっていること自体はとてもシンプルで単にMIDIのノート情報などを入出力しているだけです。ただGO:KEYSは指1本でループミックスをしていく機能を搭載していることもあって、簡単なプログラミングでかなり凝った演奏をすることも可能になっています」と説明してくれた。
実際、そのデモビデオがあるので、ご覧いただくと雰囲気がわかるだろう。
GO:KEYSとは
具体的に、このGO:KEYS ScratchX Extensionの説明に入る前に、GO:KEYSについて、少し紹介しておこう。GO:KEYSはローランドが昨年発売した61鍵盤の軽量なキーボード楽器。電池もしくはACアダプタで動作させることが可能で、ステレオのスピーカーが内蔵されているから、どこへども持ち運んで気軽に演奏できるというもの。
実売価格も税抜き4万円弱と手ごろな楽器なのだが、最大の特徴は指1本で本格的な演奏ができる「ループ・ミックス」機能というものを備えている点だ。Loop Mixというボタンを押してループ・ミックス・モードにするともに、演奏ジャンルを選択した上でエリア1の鍵盤を1つ押すとドラムパターンが鳴り出す。さらにエリア2の鍵盤を押すとベースのパターンが鳴り出し、エリア3を押すとシンセのパターンが鳴り出すのだが、適当に押してもすべてが同期して鳴るため、まったく楽器演奏の経験がない人でも、一発で本格的な演奏ができてしまうのだ。
もちろん、こうしたループ演奏をしながら、好きな音色を選んで自由に演奏をかぶせることも可能になっているなど、なかなか面白い楽器なのだ。以下のビデオを見てみると、だいたいの雰囲気が分かるだろう。
こんな機能を持つGO:KEYSをPCからコントロールできるようにしようというのが、GO:KEYS ScratchX Extensionなのだ。あらかじめUSBケーブルでGO:KEYSとPCを接続し、GO:KEYS ScratchX Extensionを起動する。12種類のブロックが追加されているのが分かる。これをScratchのブロックとともに利用していくのだが、ローランドが4つのサンプルプログラムを公開してくれているので、これをちょっと試してみた。サンプル1を読み込むと、このような画面が表示される。左上が実行画面で、右側がプログラムだ。まさにブロックが順番に並んでいるのが分かるだろう。
一番上に「key on」というのがあるが、これはGO:KEYSの鍵盤が押されたことを検知し、プログラムを実行するというもの。次のオレンジのブロックで「time」という変数に0を代入し、「forever」という構えがこの中身を何度も繰り返すループ構造を意味する。その中のオレンジのブロックでtimeを1つ増やし、0.03秒ほど待つ。そしてtimeが14より大きければ終了。そうでなければリンゴの表示される高さ=y座標を設定する、という形になっている。計算としては
y=(70*time-(4.9*time*time))-140
となっているが、要するに高さにおける放物線の計算をしているわけだ。日本語表示にするとこんな表記になるが、初めての人の場合、このほうが分かりやすいかもしれない。
これを実行すると、以下のビデオのようになる。
シンプルなプログラムだけど、これで鍵盤を押すとリンゴが飛び跳ねるアニメーションができてしまうわけだ。
ここで、このプログラムをちょっと改変。何でも鍵盤を押せば跳ねるのではなく、「key on C」というブロックを使ってCのキーが押されたら跳ねるようにする。さらに背景を設定するとともに、バナナのキャラクタも並べ、こちらはDのキーを押すと跳ねるようにしてみた。こんなことが簡単にできてしまうのは、やはり楽しい。
続いてサンプル2も読み込んでみた。今度のは音が出るプログラムだ。これは旗がクリックされると動き出すようになっており、まずループ・ミックスのジャンルをPopに設定。続いてiというカウンターの変数に1を代入。そこから8回のループをするがループを繰り返す都度、iが1増えていくようになっていて、そのiの番号のドラムを1小節鳴らすというもの。つまり8小節異なるドラムが鳴って止まるわけだ。
当然、ループ・ミックスをほかのジャンルにしたらどうなるのか、ドラム以外にベースやシンセサイザを使ったらどんな風になるのか、さらには複数パート同時に鳴らしたら……など、改変するところもいっぱい。
もちろん、これをアニメーションと組み合わせていくといったこともできるので、久しぶりにプログラミングしたい欲求が湧いてくる。大人でもかなり熱中できると思うが、もともとScratchが子供用プログラミング言語であることを考えれば、子供のコンピュータ教育用としても使えそうだ。お子さんのいる家庭であれば、それを理由にこの楽しいキーボードを1つ買ってみるというのもよさそうだ。
なお、本気のプログラマの方であれば、GO:KEYS ScratchX ExtensionのソースコードがGithubで公開されているので、それを元にエンジン部分を改良してみるというのも面白そうだ。