4.2.4 音楽プレーヤー

4.2.4.1 概要

Img

ここでは、micro:bitボードの内蔵ブザーを介して音を生成する音楽プレーヤー(ボーカル音楽は再生しません)を構築します。20の短いトラックのライブラリを備え、シーケンシャル再生とランダム再生の両方をサポートしています。

シーケンシャルモードでは、C(前の曲)またはE(次の曲)ボタンを押すと、プリセットされたシーケンスに従ってトラックが切り替わり、リストの最後まで到達します。一方、ランダムモードでは、押すたびに20のサウンドからランダムにトラックが選択され、カラーライトが点滅し、1曲が終わるとすぐに停止します。

同時に、micro:bit LEDマトリックスは現在の再生モードをリアルタイムで表示します。

Img

4.2.4.2 必要な部品

Img

Img

Img

micro:bit V2 ボード (自己調達) ×1

micro:bit スマートゲームパッド (組み立て済み) ×1

単4電池 (自己調達) ×4

4.2.4.3 コードフロー

Img

4.2.4.4 テストコード

完全なコード:

Img

Img

簡単な説明:

① LEDマトリックスと音量を初期化し、RGBピンをP8に接続し、RGBの数を4に設定します。

Img

② メロディの配列を20に初期化し、詳細なトラックを追加し、初期音量を設定します。

Img

③ ボタンDまたはFが押されているかを確認します。Dを押すと「0-シーケンシャル再生」、Fを押すと「1-ランダム再生」になります。

Img

④ シーケンシャルモードでは、Cを押すと前の曲、Eを押すと次の曲にスキップします。

Img

配列には20トラックしかないので、N.O. 0-19の音楽しか再生できません。そのため、配列のオーバーランとアンダーランを避けるためにif条件を追加します。

Img

ただし、ランダムモードでは、C/Eを押すとこれら20曲すべてがシャッフルされます。

Img

⑤ 前の曲が現在の曲と一致しないかどうかを判断します。一致する場合は、まず現在の曲を停止してからその曲を再生します。

Img

⑥ モードが「0-シーケンシャル再生」の場合は「Img」、または「1-ランダム再生」の場合は「Img」を表示し、100msの遅延を設けます。

Img

⑦ RGBライトをバックグラウンドで呼吸させます。

Img

⑧ Aを押すと音量を上げ(+10)、Bを押すと音量を下げます(-10)。micro:bitブザーの音量は、内部接続されたピンの出力電圧によって決定されます。DACを介してデジタル値0〜255をアナログ値に変換することで音量を制御できます。

Img

4.2.4.5 テスト結果

Img

コードを書き込んだ後、micro:bitボードをゲームパッドのスロットに挿入し(電池が取り付けられていることを確認)、「ON」に切り替えます。

電源投入後、デフォルトでシーケンシャルモードになり、N.O.「0」の曲が再生されます。終了したら、Cを押して前の曲、またはEを押して次の曲に進むことができます。

Fを押すとランダムモードに切り替わります。Dを押すとシーケンシャルモードに戻ります。Fモードでは、C/Eを押すと20曲の中からランダムなトラックが再生されます。終了すると停止します。

RGBライトは電源投入時から常に呼吸しています。同時に、micro:bit LEDマトリックスはシーケンシャルモードでは「Img」、ランダムモードでは「Img」を表示します。

音量については、Aを押すと上がり、Bを押すと下がります。

Img

ヒント: ボードが応答しない場合は、micro:bitボードの背面にあるリセットボタンを押してください。

Img