【藤本健のDigital Audio Laboratory】ガジェット楽器「かんぷれ」のコンピュータ“M5Stack”で遊んでみた
「かんぷれ」(URL:https://kibidango.com/2473)
クラウドファンディングサイト・Kibidangoで、「かんぷれ」というガジェット的なユニークな楽器のクラウドファンディングが8月5日まで実施されている。
これは、独自の発想で開発された楽器「InstaChord」の開発者である“ゆーいち”さんを筆頭に、日本におけるVRの先駆者であるGOROmanさんなどのチームで開発を進めている楽器なのだが、その中枢部には中国のシンセンにあるベンチャー企業、M5Stack社が開発した小さなコンピュータ「M5Stack」が搭載されている。
ディスプレイに見える部分が「M5Stack」
筆者もこのクラウドファンディングにはもちろん1口参加したが、クラウドファンディングが成功したとして、製品を入手できるまでには、まだしばらくの時間はかかりそう。それまで待ちきれないので、その中枢のM5Stackだけを入手して、これがどんな可能性を持ったコンピュータなのか、ちょっとだけ試してみたので、紹介してみよう。
ガジェット楽器「かんぷれ」とは
かんぷれは「KANTAN Play core」の略であり、電卓のような形の楽器だが、そのテンキーを押すことで、楽器が弾けない人でも簡単に演奏を楽しめるという独自発想の楽器だ。
かんぷれ
基本的な考え方は、開発者のゆーいちさんが特許を持つ“KANTAN Music”という方式に則ったもので、InstaChordとも共通するもの。根底には楽器が弾けない人、音楽理論が分からない人でも簡単に楽器を弾けるようにするというアイディアがあるのだ。
その「かんぷれ」については、クラウドファンディングサイトにもあるYouTubeの動画を見ると、だいたいのニュアンスが分かるので、そちらをご覧いただきたい。
「かんぷれ」携帯ゲーム機みたいな楽器 - KANTAN Play core
また、私の書いているDTMステーションでも、かんぷれの発表会でチェックした内容を詳しく書いているので、参考にしていただきたい。
個人的には絶対に使ってみたい楽器なのだが、クラウドファンディングのほうは、苦戦しているようだ。半分の期間が過ぎ、終了まで1カ月を切った7月7日時点で達成率は54%で、サポーター数819人、集まった金額は27,288,000円。目標の5000万円を達成しなかったら、すべて白紙撤回とのことなので、なんとしても頑張ってもらいたいところ。
筆者としても達成を陰ながら応援しつつ、M5Stackに興味津々であり、かんぷれ発表会の数日前に「M5Stack Basic」という機材を購入した。
購入した「M5Stack Basic」
小さなコンピュータ「M5Stack」に興味津々
M5Stackに興味を抱いたのは、今から遡ること1年前。ゆーいちさん、GOROmanさんと一緒に食事をしたことがあり、その際に、M5Stackの話を初めて聞いて、機会があったら触ってみたい……と思うようになった。
その後、彼らが「かんぷれ」のプロトタイプを昨年のMaker Faire Tokyoで発表。この際、M5Stackの社長であるJimmy Laiさんも来日し、一緒にデモをしており、「かんぷれ」開発チームの一員として参加していることを話していたのだ。
左がJimmyさん、右がゆーいちさん
なんとなくM5Stackを調べてみると、Arduinoの発展形のようなものであり、さらにコンパクトで高機能。たった5cm×5cmというデバイスでありながらカラー液晶もあり、音も鳴らせるらしい。
ただ、ラインナップを見てみると、膨大な数の機器があり、CPUの違いや形状の違い、機能の違いなどがいろいろあって、まず最初に何を入手して、どこから手を付ければいいのかもよくわからない。時間のある時に改めて調べてみよう……と思っているうちに何カ月も経ってしまっていたのだ。
その後も、いろいろなイベントなどで、ゆーいちさんやGOROmanさんがかんぷれのデモを行なっているのを見かけるとともに、徐々にプロトタイプも進化していて、ますます興味をそそられていた。
そうした中、いよいよ、クラウドファンディングスタートに向けての発表会を行なう、という連絡が5月末に到着。「もう少し知識をつけておかなくちゃ」とそこからようやくM5Stackのラインナップを調べてみると、確かに膨大なものがあるけれど、一番最初に使うなら、M5Stack Basicが基本であるということが分かり、さっそくネットで注文してみることに。
ちょうど新バージョンのM5Stack Basic V2.7というのが出たところだったので、その最新版を6,743円、送料無料ということで国内総代理店であるスイッチサイエンスから購入。結果、発表会前日に手元に届いたが、結局、梱包を開ける余裕もないまま、発表会に出席したのだった……。
左からゆーいちさん、スイッチサイエンス・菊地仁さん、necobitカワヅさん、GOROmanさん
かんぷれbaseは“M5Stack CoreS3”以上を推奨
その発表会で一つ判明したことがあった。かんぷれは全部揃った「かんぷれフルセット」と、M5Stackなしの「かんぷれbase」の2種類があるのだが、かんぷれbaseにドッキングできるのはM5Stack CoreS3もしくはそれ以上のスペックのものであって、筆者が購入したM5Stack Basicは対象外なんだとか。
詳細な違いを理解しているわけではないが、M5Stack BasicのCPUでは非力で、それ以上のパワーを持つCPUが必要なため、比較的最近にそのスペックを決めたそうだ。
M5Stackなしの「かんぷれbase」
とはいえ、M5Stack BasicにBottomと呼ばれる裏ぶたがセットになっていて、そこにバッテリーも搭載されているし、一通りのものが揃っているから「最初にM5Stackを使うには絶対それがいいのだ」とかんぷれ開発チームのメンバーの一人とし、発表会の檀上に並んでいたスイッチサイエンスの取締役である菊地さんから聞いて納得したのだった。
そこから1カ月、結局、ドタバタな毎日を送っていたら、せっかく入手したM5Stack Basicの梱包も開けないまま、今日にいたってしまった。
これをネタにDigital Audio Laboratoryの記事を書こうと以前から決めていたのに、準備なしのまま記事掲載前日の7月7日を迎えてしまったわけだ。こんな性格なので、いつも編集部にはご迷惑をかけながら20年以上、この連載を続けているのは、本当に申し訳ない限り。きっと、1日触れば何かが見えてくるだろう……と朝になって、ようやく梱包を開き、自分のM5Stackを取り出したのだ。
いざ、M5Stack Basicで“音出し”に挑戦!
確かに5cm×5cmの小さなボディーで、320×240のカラーディスプレイに3つのボタンがあるほか、サイドパネルにはいろいろな端子があったり、microSDのスロットもある。試しに、そのBottomがどうなっているのだろう……と裏ブタを外してみたら、電池部分も見える。電源を入れると、音が出て何やら表示がされるので、とりあえず動いているらしい。
microSDのスロット
電池部分
電源を入れると、とりあえず動いている……?
実は、どのドタバタな1カ月の間、一つだけ準備したことがある。それはネットの情報だけで操作するのは心元ないので、入門書を一つ購入しておいたのだ。いくつかあるなか、自分にとってわかりやすそうな本を選んでおいたので、これを読み進めながら、操作することにした。
何も読んではいなかったけれど、Digital Audio Laboratoryのネタとして取り上げるので、最低、なんらかの音が出せるところまで行くことが目標。可能であれば、以前、micro:bitを取り上げたときや、TK-80互換機を取り上げたときのように、チープな楽器にまで仕立て上げれたらベスト、ということで読み進めていった。
その本によれば、Arduinoの開発環境と同じArduino IDEを使うことでM5Stackのプログラミングができる、とのこと。
もうすっかり忘れてしまったけど、やはりこの連載の記事で、以前Arduino IDEでシンセサイザを鳴らした際に、Arduino IDEはちょっとだけ扱ったことがあるので、きっとなんとかなるはず、とまずはWindowsマシンへのインストール作業などを開始。
USBーシリアルポート接続での通信も必要になるため、シリアルポートドライバのインストールやM5Stack用のライブラリを読み込むなど、作業を進める。
M5StackがMP3プレイヤーに変身!
そして、最初のプログラミングへ。C言語風なコードを書いていくのだが、マイコンお決まりの「Lチカ」=LEDの点灯/点滅かな、と思ったら、さにあらず。立派なカラー液晶ディスプレイがあるので、ここに「Hello.World」を表示させるプログラムだった。
最初のプログラミングで「Hello.World」の表示に成功
まさにC言語入門みたいだな……と参考書を写経する形で入力。
「printf();じゃなくて、M5.Lcd.println();なのか、ふむふむ」と思いながら入力し、コンパイルを行なうと、エラー。よくみると、ついうっかりセミコロンを入力し忘れていたり、関数の文字が1つ間違えていたりと、まさにド素人な進行で、情けないやら、イライラするやら……。
すごく短いコードなのに、コンパイルに1分近くかかるのは、ゼロからビルドしなおすから、とのこと。ネットで調べると、再ビルドせずに時間節約するワザなどもあるようだが、下手なことをしてグチャグチャになるより、基本に忠実、急がば周れ、ということで進めていくと、画面には緑でHello.Worldの文字が! あまりにも単純なプログラムではあるけれど、ちゃんと動くと、やっぱり感激する。
緑でHello.Worldの文字が!
次に3つあるボタンを押すと、それぞれ違う色が表示されるプログラムを組むというか、写経しつつ、ちょっとしたアレンジを加えると思った通りに動くのは楽しい。
が、本を読んでみると、Arduino IDEのほかにも、M5Stackでプログラムを動かすためのツールはいろいろあることが分かった。中でもM5Burnerというソフトを使うと、さまざまな人が作ったM5Stackのファームウェアイメージを簡単にダウンロード、転送して、M5Stackで楽しむことができるという。
つまりパソコンのフリーウェアのような感覚でゲームやユーティリティとかが使えるというので、プログラム勉強の息抜きに、ちょっと試してみた。すると、確かに簡単にいろいろなプログラムを動作させられる。たとえばBreakoutというゲームを入れると、ブロック崩しのようなゲームが展開される、といった具合。
ブロック崩しのようなゲーム
どんなソフトがあるのだろう……と探していたら、すぐに見つけたのがMP3 Player。これを読み込むと、M5StackがMP3プレイヤーに変身!そうmicroSDにMP3ファイルを入れて挿入すると、これらを演奏できるのだ。
M5StackがMP3プレイヤーに変身!
まあ、お世辞にもいい音とは言えないけれど、M5Stack内蔵のスピーカーからちゃんと音が聴こえる。もともと16bit/44.kHzのデータのはずだが、聴いた感じだと8bit/11kHzといった音で、ノイズも多いけれど、でもちゃんと鳴ってくれるのはすごい。まったくプログラムはしてないけれど、本日の目標はとりあえずこれで達成、といってもいいかな、と。
ChatGPTの力を借りてプログラム作成してみる
とはいえ、やっぱり、自分でプログラムを組んで音を出してみたい。画面表示以外の関数はどうなってるんだろう……と参考書を調べようと思ったときに、ふと頭に浮かんだのは、「ChatGPTに聞いたら、コードを書いてくれるんじゃないか?」ということ。
さっそくChatGPTに「Arduino IDEを使ったM5Stackのプログラムを作ってほしいのですが、できますか?」と聞いてみたら「もちろんです。M5StackのプログラムをArduino IDEで作成するための基本的な手順を説明します」と返ってくる。
すでにその環境は構築できているので、続いて「ボタンを押すと、ピッと音が鳴るプログラムを書いてください」と聞いてみた。すると「もちろんです。以下に、M5Stackのボタンを押すとピッと音が鳴るプログラムを示します」と、即、プログラムが表示されたのだ。
生成されたプログラム
これをさっきのArduino IDEにコピペで貼り付けて、コンパイル&転送してみたのだ。すると、下手くそ写経と違って、一発でコンパイルは通り、M5Stackへプログラムが送られた。画面には「Press any button to beep」と表示され、3つあるボタン、どれを押してもピッとなるようになっていたのだ。
3つのボタンからピッと音が鳴るように!
相当ズルいけれど、これでプログラミングの面でも、目的は達成できた。
が、せっかくなので、コードを読んでみると、なんだ、これはさっきのボタンを押して色が変わるプログラムと似たりよったり。しかも音を鳴らすのは、M5.Speaker.tone(1000, 100);という関数を使っていて、引数が周波数とmsecとなっていることが分かった。
「だったら、この周波数をボタンごとに変えて、ドレミと演奏できるようにすればいいじゃん」と思い、サクッとコードを変更。またセミコロンを忘れてコンパイルエラーなど起こしたものの、4~5分で無事解決。ドレミの演奏ができるようになったのが、このビデオだ。
IMG 9599
もうちょっと楽器的なものにしたい! ……が、エラー連発で撃沈
ここまでくればChatGPTに手伝ってもらいながらでも、もうちょっと楽器的なものに仕立てたいところ。
ここで考えたのがUSB-MIDIキーボードをM5Stackに接続して演奏できるようにするプログラムだ。それをChatGPTにお願いしてみたら、1秒足らずでプログラムが返ってきた。
ChatGPT生成のプログラム
スゴイ。しかもとっても完結で、たった60行ほどのプログラムなのだ。ChatGPTによれば、USB HostとしてM5Stackを機能させるので、OTGケーブルを用意すればいけそうだ。
これが最新のAIの技術なのか、と感激しながら、プログラムをコピペして、Arduino IDEでコンパイルしてみたところ……、エラーが出てしまった。
プログラムをコピペして、Arduino IDEでコンパイルしてみたがエラーに
これはセミコロンがないなどという単純なエラーではなく、「USBHost_t36.hがない」という致命的エラー。なるほど、USB Hostとして使うためのライブラリが入ってなかったので、それを追加せよ、というわけだ。
これをインストールすれば、簡単にうまくいきそう……と思ったのが失敗のはじまり。ChatGPTの指示に従って作業していったのに、その作業途中にも次々とエラーが出る。どうやらPythonの開発環境を整えるとともに、USB Host用のプログラムを作り出そうということなおだが、知識が足りないためか、まったくうまくいかない。
次々とエラーが発生し、思うように動かない……
そもそもChatGPTが言うことが、どこまで正確なことなのか、よくわからないけれど、指示通りに作業したつもりが、何度トライしてもうまくいかず。
途中ChatGPTからはUSB Hostはあきらめて、シリアル-MIDIを利用した方法に乗り換えないか、と提案をしてもらったけれど、せっかくならUSBを使ってみたいと拒否。その判断を後から後悔したのだが、ライブラリインストールのためにChatGPTの指示を仰ぎつつ、作業を進めていったけれど、何度やっても同じエラーが出る堂々巡り。3時間ほど戦ってみて、いったん今日はここまで、となった。
だいぶ悔しい気もするし、あと一歩という気もするのだけど、また改めてチャレンジしてみたいと思う。そのときは、もうちょっと自分の知識、理解度も高めていきたいが、楽しそうな世界が大きく広がっているのは十分感じられたところだ。
なお「かんぷれ」のほうは、プロジェクトが成功したら、プログラムはオープンソースにして公開する、とのこと。多少なりとも知識が深まれば、そのプログラムを自分で改変して遊ぶこともできるのかもしれない。その日のために、いまはM5Stack Basicでもう少し勉強しつつ、クラウドファンディング成功の報を待ちたいところだ。