藤本健のDigital Audio Laboratory

第760回

プログラミングしたい熱再び! ローランド「GO:KEYS ScratchX Extension」に大人も夢中

 最近、コンピュータでプログラムを組んだことはあるだろうか? 本職のみなさんはともかくとして、「昔、少しやった経験はあるけど、最近はさっぱり」、「何か難しそうで、よくわからない」、「とくに必要性も感じないし……」なんて方も多いのではないだろうか?でも、ちょっとしたプログラミングって、結構楽しい遊びになるし、プログラムを音と絡めると、さらにその面白さは飛躍的に向上する。

Rolandの「GO:KEYS」

 先日、Rolandは同社の「GO:KEYS」というキーボードとPCをUSB接続した状態で、楽しくプログラミングできるユニークな環境を構築し、リリースした。ここではScratchというプログラミング言語が使われているのだが、試してみたところとても面白いものだったので、これがどんなものなのか紹介してみよう。

日本語も使える、楽しいプログラミング言語

 ScratchというのはMITメディアラボが開発した子供用のプログラミング言語で、ブロックを組み合わせる操作だけで簡単にプログラムを作れるシステム。テキストエディタでプログラムを書いて、コンパイルして……なんて難しいものではなく、子供が初めて触っても、直感的にプログラミングを覚えられる分かりやすい言語だ。

ブロックを組み合わせる操作だけで簡単にプログラムを作れる

 動作環境は、Google Chromeなどのブラウザ。ここにAdobe Flashをインストールしておく必要はあるが、準備すべきはそれだけ。あとはScratchサイトに行けば、もうすぐにプログラム可能となっている。

 各国語対応となっており、標準設定の英語だけでなく、日本語でも使うことができる。日本語に設定すると「もし~なら~でなければ」、「表示する」、「スペースキーが押されたとき」……といったコマンドを使うことになるのだ。ただプログラムをかじったことのある人なら「IF~THEN~ELSE」といった表示になる英語のほうがしっくりくるかもしれない。

日本語でプログラムする事もできる

 このScratchは、テンプレートからキャラクタを表示させた上で、そのキャラクタを動かしたり、回転させたりといったことが手軽にできるし、サンプリングされている素材をベースとして簡単に音を鳴らせるのも、いまどきのプログラミング言語といった感じだ。こうしたプログラミングもすべてブロックを順番に並べるだけでできる。だからこそ、子供が楽しみながらプログラムができるというわけなのだ。

 もっとも子供用とはいえ、Scratchのブロックには分岐やループ、条件を元にした判定など、プログラムの基本はすべてそろっている。また、いわゆる「イベントドリブン型プログラミング」となっていて、すべて上から順番に処理していかなくてはならないのと違う点もわかりやすそうだ。

 さて、そのScratchには、拡張版ともいえる「SctachX」というシステムがある。これも基本的にSctachと同じなのだが、標準のScratchにはないブロックを自作したり、誰かが作ったブロックを利用してプログラムすることが可能となっている。

ScratchXの拡張機能を読み込むところ

 そのScratchXの拡張機能を用いて、今回ローランドがユニークなものを作ってきたのだ。「GO:KEYS ScratchX Extension」というのがそれ。先日行なわれたローランドの発表会において、GO:KEYS ScratchX Extensionを開発した渡邊正和は「Web MIDI APIの機能を利用しながら、ScrachXでGO:KEYSとやりとりできるようにしました。やっていること自体はとてもシンプルで単にMIDIのノート情報などを入出力しているだけです。ただGO:KEYSは指1本でループミックスをしていく機能を搭載していることもあって、簡単なプログラミングでかなり凝った演奏をすることも可能になっています」と説明してくれた。

GO:KEYS ScratchX Extension
GO:KEYS ScratchX Extensionを開発した渡邊正和氏

 実際、そのデモビデオがあるので、ご覧いただくと雰囲気がわかるだろう。

「GO:KEYS ScratchX Extension」のデモビデオ

GO:KEYSとは

 具体的に、このGO:KEYS ScratchX Extensionの説明に入る前に、GO:KEYSについて、少し紹介しておこう。GO:KEYSはローランドが昨年発売した61鍵盤の軽量なキーボード楽器。電池もしくはACアダプタで動作させることが可能で、ステレオのスピーカーが内蔵されているから、どこへども持ち運んで気軽に演奏できるというもの。

GO:KEYS
ステレオのスピーカーが内蔵されている

 実売価格も税抜き4万円弱と手ごろな楽器なのだが、最大の特徴は指1本で本格的な演奏ができる「ループ・ミックス」機能というものを備えている点だ。Loop Mixというボタンを押してループ・ミックス・モードにするともに、演奏ジャンルを選択した上でエリア1の鍵盤を1つ押すとドラムパターンが鳴り出す。さらにエリア2の鍵盤を押すとベースのパターンが鳴り出し、エリア3を押すとシンセのパターンが鳴り出すのだが、適当に押してもすべてが同期して鳴るため、まったく楽器演奏の経験がない人でも、一発で本格的な演奏ができてしまうのだ。

Loop Mixボタンを押すとループ・ミックス・モードに
演奏ジャンルを選択した上でエリア1の鍵盤を1つ押すとドラムパターンが鳴り出す

 もちろん、こうしたループ演奏をしながら、好きな音色を選んで自由に演奏をかぶせることも可能になっているなど、なかなか面白い楽器なのだ。以下のビデオを見てみると、だいたいの雰囲気が分かるだろう。

ループ・ミックス・モードを使ったデモ

 こんな機能を持つGO:KEYSをPCからコントロールできるようにしようというのが、GO:KEYS ScratchX Extensionなのだ。あらかじめUSBケーブルでGO:KEYSとPCを接続し、GO:KEYS ScratchX Extensionを起動する。12種類のブロックが追加されているのが分かる。これをScratchのブロックとともに利用していくのだが、ローランドが4つのサンプルプログラムを公開してくれているので、これをちょっと試してみた。サンプル1を読み込むと、このような画面が表示される。左上が実行画面で、右側がプログラムだ。まさにブロックが順番に並んでいるのが分かるだろう。

USBケーブルでGO:KEYSとPCを接続
サンプル1を読み込んでいるところ

 一番上に「key on」というのがあるが、これはGO:KEYSの鍵盤が押されたことを検知し、プログラムを実行するというもの。次のオレンジのブロックで「time」という変数に0を代入し、「forever」という構えがこの中身を何度も繰り返すループ構造を意味する。その中のオレンジのブロックでtimeを1つ増やし、0.03秒ほど待つ。そしてtimeが14より大きければ終了。そうでなければリンゴの表示される高さ=y座標を設定する、という形になっている。計算としては

 y=(70*time-(4.9*time*time))-140

 となっているが、要するに高さにおける放物線の計算をしているわけだ。日本語表示にするとこんな表記になるが、初めての人の場合、このほうが分かりやすいかもしれない。

 これを実行すると、以下のビデオのようになる。

「y=(70*time-(4.9*time*time))-140」を実行したところ

 シンプルなプログラムだけど、これで鍵盤を押すとリンゴが飛び跳ねるアニメーションができてしまうわけだ。

 ここで、このプログラムをちょっと改変。何でも鍵盤を押せば跳ねるのではなく、「key on C」というブロックを使ってCのキーが押されたら跳ねるようにする。さらに背景を設定するとともに、バナナのキャラクタも並べ、こちらはDのキーを押すと跳ねるようにしてみた。こんなことが簡単にできてしまうのは、やはり楽しい。

「key on C」というブロックを使ってCのキーが押されたら跳ねるように
バナナのキャラクタを並べる
Dのキーを押すと跳ねる!

 続いてサンプル2も読み込んでみた。今度のは音が出るプログラムだ。これは旗がクリックされると動き出すようになっており、まずループ・ミックスのジャンルをPopに設定。続いてiというカウンターの変数に1を代入。そこから8回のループをするがループを繰り返す都度、iが1増えていくようになっていて、そのiの番号のドラムを1小節鳴らすというもの。つまり8小節異なるドラムが鳴って止まるわけだ。

サンプル2は音が出るプログラム

 当然、ループ・ミックスをほかのジャンルにしたらどうなるのか、ドラム以外にベースやシンセサイザを使ったらどんな風になるのか、さらには複数パート同時に鳴らしたら……など、改変するところもいっぱい。

 もちろん、これをアニメーションと組み合わせていくといったこともできるので、久しぶりにプログラミングしたい欲求が湧いてくる。大人でもかなり熱中できると思うが、もともとScratchが子供用プログラミング言語であることを考えれば、子供のコンピュータ教育用としても使えそうだ。お子さんのいる家庭であれば、それを理由にこの楽しいキーボードを1つ買ってみるというのもよさそうだ。

 なお、本気のプログラマの方であれば、GO:KEYS ScratchX ExtensionのソースコードがGithubで公開されているので、それを元にエンジン部分を改良してみるというのも面白そうだ。

GO:KEYS ScratchX ExtensionのソースコードがGithubで公開されている

藤本健

 リクルートに15年勤務した後、2004年に有限会社フラクタル・デザインを設立。リクルート在籍時代からMIDI、オーディオ、レコーディング関連の記事を中心に執筆している。以前にはシーケンスソフトの開発やMIDIインターフェイス、パソコン用音源の開発に携わったこともあるため、現在でも、システム周りの知識は深い。  著書に「コンプリートDTMガイドブック」(リットーミュージック)、「できる初音ミク&鏡音リン・レン 」(インプレスジャパン)、「MASTER OF SONAR」(BNN新社)などがある。またブログ型ニュースサイトDTMステーションを運営するほか、All AboutではDTM・デジタルレコーディング担当ガイドも務めている。Twitterは@kenfujimoto