3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

M5StackAdvent Calendar 2022

Day 10

ハッピークリスマス!Node-RED MCU Editionでaudiooutノードを試してみた。

Last updated at Posted at 2022-12-24

はじめに

Node-RED MCU (Moddable)でクリチカを試したという記事が流れてきた。

巨大なNode-REDフローの中にaudiooutノードが含まれており、クリスマスの定番音楽が流れていたので、さっそく試してみた。
注意点として、サンプルではESP32-S3(Flash 8MBメモリ)を使用しており、M5Stack Core2(ESP32 Flash 4MBメモリ)ではメモリ不足エラー(cannot allocate SharedArrayBuffer)が出やすいです。

前提条件

ビルド・インストール環境

  • Intel MacBook Pro (2017)

マイコンデバイス

  • M5Stack Core2

手順

以下を参考にNode-RED Dashboardを使用できるようにします。

1. audiooutノードをインストールする。

Node-REDとnode-red-mcu-pluginをインストールしたディレクトリで以下のコマンドを実行します。

$ npm install node_modules/\@ralphwetzel/node-red-mcu-plugin/node-red-mcu/nodes/audioout

2. Node-REDを起動する。

新しいモジュール(今回はaudiooutノード)をインストールすると、Node-RED起動時のエラー(node-red-mcu-pluginがパッチを適用するutils.jsが存在しない)が発生するため、node_modules/node-redディレクトリで必要なモジュールをインストールしてからNode-REDを起動します。

$ cd node_modules/node-red
$ npm install
$ cd ../..
$ node node_modules/node-red/red.js -u ./

3. 音声ファイルを用意する

効果音ラボの「クリスマスの鈴」(シャンシャン)を使用させていただきました。

audiooutノードがサポートしているフォーマットはサンプリングレート(16bit, 16kHz)のモノラルWAV形式、または、SBC形式です。ffmpegコマンドを使用してフォーマットを変換します。

$ ffmpeg -i santaclaus-bell1.mp3 -acodec pcm_s16le -ac 1 -ar 16000 santaclaus-bell1.wav
$ ffmpeg -i santaclaus-bell1.mp3 -acodec sbc -ac 1 -ar 16000 -b:a 32k santaclaus-bell1.sbc

出力された音声ファイルをHTTPでアクセスできるウェブサイトへ置きます。

Node-REDフロー

Node-RED MCUのDashboardサンプルフローに「change」ノードと「audioout」ノードを追加し、ノード間を接続します。

スクリーンショット 2022-12-24 13.33.42.png

「change」ノードはmsg.waveにWAVファイルのURLを、msg.sbcにSBCファイルのURLを設定します。

(msg.waveの例)
スクリーンショット 2023-02-26 8.51.37.png

(msg.sbcの例)
スクリーンショット 2023-02-26 8.51.10.png

「audioout」ノードは再生するボリュームを設定します。

スクリーンショット 2022-12-24 14.01.53.png

サンプルフロー

flows.json
[{"id":"5ed813308402a4b0","type":"tab","label":"フロー 1","disabled":false,"info":"","env":[],"_mcu":{"mcu":true}},{"id":"3c6c04d315fddf06","type":"ui_button","z":"5ed813308402a4b0","name":"A","group":"88ee1734c254e1cb","order":0,"width":0,"height":0,"passthru":false,"label":"A","tooltip":"","color":"","bgcolor":"","className":"","icon":"","payload":"A","payloadType":"str","topic":"topic","topicType":"msg","_mcu":{"mcu":true},"x":70,"y":40,"wires":[["def69a7b250c2736","172e2f277f989576"]]},{"id":"def69a7b250c2736","type":"ui_text","z":"5ed813308402a4b0","group":"88ee1734c254e1cb","order":1,"width":0,"height":0,"name":"","label":"Song","format":"{{msg.payload}}","layout":"row-spread","className":"","_mcu":{"mcu":true},"x":270,"y":80,"wires":[]},{"id":"2c72b81b70d481d9","type":"ui_button","z":"5ed813308402a4b0","name":"B","group":"88ee1734c254e1cb","order":0,"width":0,"height":0,"passthru":false,"label":"B","tooltip":"","color":"","bgcolor":"","className":"","icon":"","payload":"B","payloadType":"str","topic":"topic","topicType":"msg","_mcu":{"mcu":true},"x":70,"y":120,"wires":[["def69a7b250c2736","b1bc49e3731414ac"]]},{"id":"172e2f277f989576","type":"change","z":"5ed813308402a4b0","name":"","rules":[{"t":"set","p":"wave","pt":"msg","to":"http://host01.norahack.tk/bell.wav","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"_mcu":{"mcu":true},"x":300,"y":220,"wires":[["93893f1b5c7f304e"]]},{"id":"b1bc49e3731414ac","type":"change","z":"5ed813308402a4b0","name":"","rules":[{"t":"set","p":"wave","pt":"msg","to":"http://test.moddable.com/audio/ChristmasMusic/god_rest.wav","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"_mcu":{"mcu":true},"x":300,"y":280,"wires":[["93893f1b5c7f304e"]]},{"id":"93893f1b5c7f304e","type":"audioout","z":"5ed813308402a4b0","name":"","volume":"1.5","_mcu":{"mcu":true},"x":520,"y":220,"wires":[]},{"id":"88ee1734c254e1cb","type":"ui_group","name":"Happy X'mas!","tab":"5a15d716f5894281","order":1,"disp":true,"width":"6","collapse":false,"className":"","_mcu":{"mcu":false}},{"id":"5a15d716f5894281","type":"ui_tab","name":"home","icon":"dashboard","disabled":false,"hidden":false,"_mcu":{"mcu":false}}]

動作確認

Dashboardのボタンを押すと、「クリスマスの鈴」が再生されます。

(参考) メモリ不足エラー(cannot allocate SharedArrayBuffer)

error_1.png

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?