本記事ではmicro:bit(V2)のマイクを使いこなせるようになることを目指して解説します。
- 【microbit】マイクの使い方【騒音検知、録音と再生】
実際のプログラム例と実行結果を示しながら解説します。
【microbit】マイクの使い方【騒音検知、録音と再生】
micro:bitには周囲の音を検出するマイクがあります。マイクはV2以降の機種のみ搭載しています。V1.5には搭載していません。
マイクを使ってできること
マイクを使うと下記のようなことができます。
- 周囲の音がうるさくなったこと、静かになったことを検出する
- 音声を録音して再生する
- 周囲の音の大きさに応じて動作を変える
上記のとおりです。ぜひ、使い方をマスターしましょう!
「まわりの音の大きさ」ブロック(マイクで検出した値)
マイクで取得した音の大きさは「まわりの音の大きさ」ブロックに数値で保存されています。
マイクで取得した音の大きさは0~255の256段階で保存されます。
「なんで、最大が255なの?100の方がキリ良くない?」と思われるかもですが、コンピューターはデータを2進法で表現しているので、実はキリが良いんです。
音の大きさを表示
実際にマイクで取得した値をLEDディスプレイに表示してみましょう。
作ったプログラムはこんな感じです。マイクで検出した音の大きさをLEDディスプレイに表示しています。
シミュレーターを使う場合はバーを動かすとマイクで検出した値を変えることができます。
「まわりの音がうるさくなったとき」ブロック
この命令はまわりの音がうるさくなったとき/静かになったときをきっかけに動作するプログラムを作る開始命令です。
また、「うるさくなった」の部分は次の2種類から選べます。
- うるさくなった
- 静かになった
例えば、次のようにすると「まわりがうるさくなったときに×マークを表示」します。
「うるさい/静か」の基準値(しきい値)
ここで気になるのは「うるさくなった/静かになったって人それじゃない?」ってことですよね?
なので、プログラム上では基準の値が決めてあります。これを「しきい値」といい、具体的には次のとおりです。
- うるさくなった:165以上
- 静かになった:86以下
上記のとおりです。
検出タイミング
また、「まわりの音がうるさくなったとき」ブロックは開始命令なので、うるさくなったことを検出したタイミングだけ動作します。
つまり、音の大きさが165未満から165以上に変わったタイミングのみ動作します。例えば、170から225に変わったタイミングでは動作しないということです。
「うるさいかどうかのしきい値を設定する」ブロック
この命令は「うるさくなった/静かになった」のしきい値を変更できる命令です。
先程、しきい値は次のとおりだと述べました。
- うるさくなった:165以上
- 静かになった:86以下
この値を変更できるということです。
例えば次のように使います。最初にしきい値を変更すれば、それ以降はその値が適用されます。
マイクを使う例 ~音のグラフ~
例として、取得した音の大きさに応じてLEDディスプレイに棒グラフを表示するプログラムを作ります。
プログラムの考え方としては次のとおりです。
- マイクでまわりの音の大きさを検出する
- 音の大きさに応じてLEDディスプレイの明るさ設定を変える
- 音の大きさに応じてLEDディスプレイに棒グラフを表示する
これをプログラムにするとこんな感じです。
プログラムの実行結果例は次のとおりです。
【拡張機能】Recordの使い方
拡張機能に音声を録音・再生するための機能があります。
追加手順
追加手順は次のとおりです。
[拡張機能]をクリックします。
[audio-recording]をクリックします。
すると「Record」が追加されます。
命令ブロックは5種類あります。
上から3つを詳しく紹介します。下の2つはちょっと難しいので割愛します。
「record audio clip」ブロック
この命令は最大3秒間の音を録音する命令です。録音できる音は1つだけで、もう一度実行すると上書きされます。
また、この命令は2つのパラメーターを指定できます。
- until done・・・録音が終わるまで次の命令を実行しない
- in background・・・録音しながら次の命令を実行する
それぞれでプログラムを作るとこんな感じです。
「play audio clip」ブロック
この命令は録音した音を再生する命令です。「record audio clip」ブロックで録音した音が再生されます。
また、録音と同じで2つのパラメーターを指定できます。
- until done・・・再生が終わるまで次の命令を実行しない
- in background・・・再生しながら次の命令を実行する
それぞれでプログラムを作るとこんな感じです。
「audio is playing」ブロック
この命令は録音した音が再生中かどうかを判定する命令です。
また、次の通り、再生以外の状態も判定することができます。
- playing・・・再生中(「play audio clip」命令実行中)
- recording・・・録音中(「record audio clip」命令実行中)
- stopped・・・停止中(再生中でも録音中でも空でもない状態)
- empty・・・空(録音されている音がない状態)
例えば、「再生中の間は♪マークを表示する」とか、「録音中はマイクマークを表示する」とかできます。
Record系を使う例
以上のRecord関連命令を使って録音・再生プログラムを作ります。
考え方は次のとおりです。
- 最初に♪マークを表示する
- ボタンAが押されたときに録音を開始する
- ボタンBが押されたときに再生を開始する
- それぞれの状態(空/録音中/再生中/停止中/)で各アイコンを表示する
上記のとおりです。この考え方で作ったプログラムは次のとおりです。
※実行結果はmicro:bitに書き込んでから確認してみてください。
少し詳しく解説しますね。
▼「ボタンAが押されたときに録音を開始する」部分
▼「ボタンBが押されたときに再生を開始する」部分
▼「それぞれの状態(空/録音中/再生中/停止中/)でアイコンを表示する」部分
まとめ
本記事のおさらいです。
- マイク機能はmicro:bitの本体がV2以降のみに対応(V1.5非対応)
- 検出した音の大きさは「まわりの音の大きさ」ブロックに数値で保存される
- 数値の範囲は0(無音)~255(一番大きい)
- 「うるさくなったとき/静かになったとき」をきっかけに動作可能
- 「うるさい/静か」の基準は「しきい値」で設定可能
- 音を「録音/再生」可能
- 音の状態(再生中/録音中/停止中/空)を条件分岐に使うと便利
上記のとおりです。
それでは、micro:bitを楽しんでください(^_^)/~