node-red-contrib-midiをRaspberry Piにインストールするときにハマったこと
node-red-contrib-midi
NODE-REDでMIDIが使えるのかなと思って検索したらnode-red-contrib-midiというノードを見つけたのでインストールしてみたのだが、一筋縄ではいかなかったので記録。
環境
- Raspberry Pi 4 Model B
- Raspbian buster
- NODE-RED v1.1.3
インストール手順
普通にインストールしてみると失敗する
パレットの管理>ノードを追加 から midi で検索すると node-red-contrib-midi が出てくるのでここからインストールしてみる。
しかし失敗。
ログの調査→libasound2-devのインストールが必要
ログを見てみる。
2020-08-13T15:26:49.876Z 追加 : node-red-contrib-midi 1.0.1
2020-08-13T15:26:49.903Z npm install --no-audit --no-update-notifier --save --save-prefix="~" --production [email protected]
2020-08-13T15:27:06.398Z [out]
2020-08-13T15:27:06.398Z [out] > [email protected] install /home/pi/.node-red/node_modules/midi
2020-08-13T15:27:06.398Z [out] > node-gyp rebuild
2020-08-13T15:27:06.398Z [out]
2020-08-13T15:27:14.202Z [out] make: ディレクトリ '/home/pi/.node-red/node_modules/midi/build' に入ります
2020-08-13T15:27:14.205Z [out] CXX(target) Release/obj.target/midi/src/node-midi.o
2020-08-13T15:27:14.509Z [err] In file included from ../src/node-midi.cpp:6:
2020-08-13T15:27:14.509Z [err] ../src/lib/RtMidi/RtMidi.cpp:1095:10: fatal error: alsa/asoundlib.h: そのようなファイルやディレクトリはありません
2020-08-13T15:27:14.509Z [err] #include <alsa/asoundlib.h>
2020-08-13T15:27:14.509Z [err] ^~~~~~~~~~~~~~~~~~
(以下略)
asoundlib.hが無いと怒られている。検索してみると、ALSAというLinux用サウンドドライバーの関係ファイルの模様。
もう一度よくログを見てみると、node-red-contrib-midi をインストールする中で midi というNode.jsモジュールをnpmでインストールしようとしている。
npmのmidiのページ を見ると、以下の記載がある。
Linux
A C++ compiler
You must have installed and configured ALSA. Without it this module will NOT build.
Install the libasound2-dev package.
Python (for node-gyp)
libasound2-devをインストールしろと書いてある。
libasound2-devをインストール後再試行→まだ失敗する
libasound2-devをインストールしてみる。
sudo apt update
sudo apt install libasound2-dev
再び パレットの管理>ノードを追加 から node-red-contrib-midi をインストールしてみる。
しかしまたもや失敗。
ログ調査→npmのmidiのバージョンが古いことが判明
ログを見てみる
2020-08-13T15:56:44.714Z 追加 : node-red-contrib-midi 1.0.1
2020-08-13T15:56:44.725Z npm install --no-audit --no-update-notifier --no-fund --save --save-prefix="~" --production [email protected]
2020-08-13T15:56:53.480Z [out]
2020-08-13T15:56:53.480Z [out] > [email protected] install /home/pi/.node-red/node_modules/midi
2020-08-13T15:56:53.480Z [out] > node-gyp rebuild
2020-08-13T15:56:53.480Z [out]
2020-08-13T15:56:55.819Z [out] make: ディレクトリ '/home/pi/.node-red/node_modules/midi/build' に入ります
2020-08-13T15:56:55.821Z [out] CXX(target) Release/obj.target/midi/src/node-midi.o
2020-08-13T15:56:57.282Z [err] In file included from ../src/node-midi.cpp:1:
2020-08-13T15:56:57.282Z [err] ../../nan/nan.h: In function ‘void Nan::AsyncQueueWorker(Nan::AsyncWorker*)’:
2020-08-13T15:56:57.282Z [err] ../../nan/nan.h:2298:62: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type]
2020-08-13T15:56:57.282Z [err] , reinterpret_cast<uv_after_work_cb>(AsyncExecuteComplete)
2020-08-13T15:56:57.282Z [err] ^
2020-08-13T15:56:57.717Z [err] ../src/node-midi.cpp: At global scope:
2020-08-13T15:56:57.717Z [err] ../src/node-midi.cpp:14:26: error: ‘v8::Handle’ has not been declared
2020-08-13T15:56:57.717Z [err] static void Init(v8::Handle<v8::Object> target)
2020-08-13T15:56:57.717Z [err] ^~~~~~
以前とエラーメッセージが変わっている。npm midiでエラーが出ているところは同じ。
npmのmidiのgithubのissueを見ていたら、https://github.com/justinlatimer/node-midi/issues/136 というのを発見した。内容を要約すると以下。
- Node.jsのv12だとインストールができない
- v1.0.0でこの問題を解決した
node-red-contrib-midiのインストール時のログには[email protected] install /home/pi/.node-red/node_modules/midi
とあるのでnode-red-contrib-midiがv1.0.0を参照するようにすれば解決しそうな予感。
node-red-contrib-midiのpackage.jsonの修正後再試行→インストール成功
node-red-contrib-midiをgithubからローカルにクローンする
cd ~/.node-red
git clone https://github.com/urbiworx/node-red-contrib-midi.git
package.jsonを修正する
"dependencies": {
- "midi": "~0.9.5"
+ "midi": "~1.0.0"
},
修正したnode-red-contrib-midiをインストールする
npm install ./node-red-contrib-midi
エラーなくインストールできました。
Node-REDを再起動する
node-red-restart
無事インストールされていました。
おわりに
1つめのlibasound-devの件は、node-red-contrib-midiのREADMEにでも書いてあると良いのですが…
2つめのmidiのバージョンの件は、node-red-contrib-midiのgithubのプルリクエストを見たら、同じのがあった。
https://github.com/urbiworx/node-red-contrib-midi/pull/11
マージされれば2つ目の問題は発生しませんね。
Author And Source
この問題について(node-red-contrib-midiをRaspberry Piにインストールするときにハマったこと), 我々は、より多くの情報をここで見つけました https://qiita.com/ktetsuo/items/b68cb78aa6d595e88aea著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .