パソコン初心者でも扱いやすい小型コンピューター「micro:bit(マイクロビット)」。新バージョン「2.0」から搭載された新機能を用いて、記録したリズムをもう一度(ほぼ同じリズムで)micro:bitが奏でる仕組みを作りましょう。ここではmicro:bit初心者が迷わず安心して作れるように、筆者(田中正吾)が用意した無償のプログラムデータも公開しています。
1.micro:bitで「記録したリズムを再度鳴らす」仕組みを作る
micro:bit v2.0の変更点
「micro:bit(マイクロビット)」は、イギリスのBBC(英国放送協会)が中心となって情報教育向けに開発された小型コンピューターです。2022年5月現在、micro:bitの新バージョンが「2.0」(以下、micro:bit v2.0)になります。前バージョンとサイズは同じながら、新たにマイク(マイク入力を示すLEDも追加)とスピーカーを搭載。表面のロゴマークにはタッチ検出機能が加わって、電源供給状態で電源のON/OFFを切り替えられる機能も追加されました。
さまざまなバージョンアップした要素の詳細は、以下の一覧表をご覧ください。
完成イメージを確認する
ここからは、micro:bit v2.0で新搭載されたサウンド機能を活かした仕組み作りについて解説します。今回はmicrobit v2.0に任意のリズムを覚えてもらい、それを再現する仕組みを作ります。
まずAボタンを押してから、micro:bit v2.0に向かってパンパンパンと拍手などでリズムを刻みましょう。プログラムによってリズムを録音し、micro:bit v2.0からも音が鳴るというのが仕組みの全体像です。録音は10秒間まで可能で、「End」という文字が出たら録音終了です。ここまでの手順について、以下の動画で確認してください。
録音終了後、Bボタンを押すとmicro:bit v2.0が先ほどのリズムと“だいたい”同じように、もう一度音を鳴らしてくれます。その模様を以下の動画で確認できます。
micro:bitのメリットは、こうした仕組みをMicrosoft提供の「MakeCodeエディター」を使い、ブロックを用いた初歩的なプログラミングで組めることです。プログラミングに詳しくないユーザーでも、MakeCodeエディターを使えば、難しい言語を使わず音の演出を含めてプログラミングできます。
材料を用意する
まずは必要な材料を揃えましょう。
1 USBケーブル
2 モバイルバッテリー
3 micro:bit v2.0
これら3点と、作業用の任意のパソコンを用意してください。
1.(USBケーブル)は、長さの短いものが使いやすいでしょう。
2.(モバイルバッテリー)は、micro:bitがあまり電力を使わないため、モバイルバッテリーによっては「省電力OFF機能」が働くことがあります。この省電力OFF機能が作動すると、継続的に起動できなくなるので、省電力OFF機能がなく、スイッチのON/OFFで電源が管理できるモバイルバッテリーを用意しましょう。
※もし「省電力OFF機能」が働くバッテリーを使うと、あまり電力を使わない状態を「まったく電力を使わない状態」と捉えて、電源が自動でOFFになる可能性があります。自動でOFFになると、micro:bitの常時起動ができないため、うまく動きません。
3.(micro:bit)の入手先は、Googleなどで検索すれば、初めての人でも特に迷わず入手できるでしょう。
入手前に必ずバージョンを確認してください。2022年5月末時点で最新バージョンは「2.0」です。音の演出は最新バージョンにのみ搭載されているので、必ず「2.0」を入手してください。
micro:bit v2.0は、新たに加わった「マイク」をプログラミングで組むと、音に反応します。下が音に反応したマイク入力を示すLEDの状態です。赤く表示されています。
micro:bitをパソコンにつなぐ
今回のパソコン(PC)作業は、Windows環境で進めていきます。まず、microUSBケーブルでmicro:bitとPCのUSBポートをつなぎます。
※Macなど、他のOSで進めたい場合は以下を参考にしてください。
“Set up | micro:bit”.micro:bit.
https://microbit.org/get-started/first-steps/set-up/
つないだmicro:bitは、コンピューター上では「MICROBIT」という名前のドライブとして表示されます。
micro:bitのプログラムを作る
micro:bitは、Webブラウザだけで簡単にプログラムを作成可能です。micro:bitのWebサイトには、ブラウザ上で操作できるエディター「MakeCodeエディター」が用意されています。
micro:bitのWebサイトにアクセスすると、プロジェクトページが表示されます。
“Microsoft MakeCode for micro:bit”.micro:bit.
https://makecode.microbit.org/
ここで新しいプロジェクトを作り、 micro:bitを動かすプログラムファイルを用意しましょう。
プログラムファイルをシェアする
初めてmicro:bitを使うユーザーでも進めやすいように、今回は筆者が作ったプログラムを用意しています。初めての人やプログラムに慣れていない人は、完成したプログラムを参照し、仕組み作りの考え方に触れながら進めてください。
では筆者が作ったプログラムを取り込んで、動かしてみましょう。今回のサンプルページにアクセスすると、筆者が実装したプログラムが表示されます。
“Rhythm Replay”.Microsoft MakeCode.2022.
https://makecode.microbit.org/23673-43593-75951-31543
表示されているブロックの数々は、編集画面(右上の「Edit Code」ボタンを押すと表示されます)に用意された「ツールボックス」経由で構成。ツールボックスから各種の動きを指定するブロックを選び、組み合わせています。
プログラムの内容を確認する(ボタンAについて)
編集画面に配置されたブロックについて説明します。今回のプログラムの全体が以下になります(赤囲みの番号は解説用に付けたものです)。
NEXMAGでは、これまでもmicro:bitを用いたさまざまなおもちゃ作りの仕組みを解説してきました。中でも今回はやや複雑です。公開プログラムをベースに「さまざまな値を使って、(リズムの)録音と再生ができること」を知ってほしいです。
では、下画像のブロック箇所から説明します。
①は、「最初に任意のアイコンを表示する」という設定個所です。ツールボックスの「基本」ブロックから「最初だけ」と「アイコンを表示」を組み合わせています。
②は、「Aボタンを押すとリズムの録音を開始する」という設定個所です。②全体を、ツールボックスの「入力」ブロックにある「ボタンAが押されたとき」で制御しています。
Aボタンが押された際、ツールボックスの「変数」ブロックから「「変数」を●にする」で設定。この組み方が今回の録音(開始)にあたります。「recording」=「1」という設定が、録音(開始)です。「playing」は、録音開始時点でリズムを奏でる前(プレイ前)のため、「0」と設定されています。
③は、「Bボタンを押すと、記録したリズムを再生する」設定です。録音が終了するため、「recording」=「0」としています。
次に④は、録音中(「recording」が「1」になっている間)、リズムの音に反応するブロック群です。
この指定で、周りの音をmicro:bitが内蔵するマイクが拾って、音が出たら(=「うるさくなった」とき)、「この瞬間、音が出ているよ」という意味で 変数ブロックを用います。ここでは、変数を「clap」と指定し値を「1」にしています。
④全体を制御する入力ブロックの「まわりの音が●●●とき」は、v2.0になってから搭載された新たなブロックです。録音中の状態を「変数」ブロックで指定し、「論理」ブロックの「もし」と組み合わせています。
次に、⑤の前に⑥を先に説明します。
⑥は、録音中(「recording」が「1」になっている間)、リズムを記録する際の内容を設定しています。ここでは、「100」ミリ秒(1秒の10分の1)ごとに、「この瞬間、音が出ているよ」という意味で用いている変数「clap」という値をずっとチェックしています。
「この瞬間、音が出ているよ(clap=1)」となっているとき、リズムを記録する「score」に対して値「1」と記録です。その上で「反応した」という音を鳴らして、次のタイミングで再度「この瞬間、音が出ているよ」という状況を待つために「clap」の値を「0」にします。
一方で、音が鳴っていなければ「score」を「0」と記録する設定もしています。
ここまでを踏まえて、⑤は、Aボタンを押して10秒間(100ミリ秒)記録するブロックのかたまりです。
100ミリ秒(1秒の10分の1)ごとに、「count」という値が「1」ずつ増えていきますが、ちょうど「100」回を数えられると、100ミリ秒が 100回でちょうど10秒になるので、「recording」を「0」にして録音を終わり(「文字列を表示」で「End」)にします。
「recording」という値を「0」にすると、リズム音に反応するブロック群、リズムを記録するブロック群もそれぞれストップします。これで録音が完了です。
プログラムの内容を確認する(ボタンBについて)
録音完了後、Bボタンが押されたとき(③)、「playing」という値が「1」になります。
Bボタンが押された後の設定が⑦になります。⑦は、ここまでの設定でmicro:bitに記録したリズムを再生するためのブロック群です。
Aボタンで録音した記録は「score」という値に記録されていて、ここではscoreを最初から読んでいくことになっています。「count」という値で「今どこまで記録を読んでいるか」を管理。
再生する速度は、Aボタンが記録していたときと同じように「100」ミリ秒(1秒の10分の1)ごとに読んでいき、そのとき「1」であれば、記録していた「この瞬間、音が出ているよ」のタイミングなので、録音時とほぼ同じタイミングで音が鳴るという設定です。
後半の「もし」ブロックは、「count」が「100」になるまで(1ミリ秒が100になるまで)、つまり「10」秒間繰り返してリズムを再現します。
MakeCodeエディターにプログラムを読み込む
実際にプログラムをみなさんの環境に読み込みましょう。「Rhythm Replay」と書かれたタイトルの右にある、グレーの「Edit Code」ボタンを押します。
自分のMakeCodeエディターにプログラム「Rhythm Replay」が読み込まれます。
プログラムファイルをダウンロードする
筆者が用意したプログラム「Rhythm Replay」をダウンロードして、このまま動かしましょう。MakeCodeエディターの左ペイン下にある紫の「ダウンロード」ボタンを押します。
後は、ダウンロードできたファイルをMICROBITのドライブに保存して、micro:bitにプログラムを反映させたら完了です。
プログラムの動作確認
micro:bit v2.0をモバイルバッテリーにつないで、実際にダウンロードしたプログラムを試してみましょう。下の画像のようにつなぎ、電源を入れて起動します。
やがて設定したアイコンが表示されたら、動作確認完了です。以下は動作確認時のムービーです。
2. ブロックエディターを使ってプログラムを変えてみよう
ゆっくり再生させてみる
Bボタンを押すと、Aボタンを押して記録したタイミングと同じ「100」ミリ秒にしているので、記録したリズムが同じように再生されます。もう1度その箇所を確認しましょう。
それでは最後に、記録したリズムに対して、実際よりゆっくり再生されるように、先ほどのプログラムに変更します。
「基本」カテゴリの「ずっと」ブロックの中に組んだ「一時停止(ミリ秒)」の「100」の設定を「200」(ミリ秒)に変更。これで、Aボタンで記録したリズムが半分の速度でゆっくり再生されるようになります。
以下の映像は、実際にプログラムを書き換えて、記録したリズムがゆっくり再生された状態です。
屋号:ワンフットシーバス
2004年よりフリーランス。最近ではWebフロントエンドをベースに、情報とインターフェイスが合わさる視点で、IoTやVRといった技術も取り入れ活動中。