Raspberry PiのScratchで、USBウェブカメラを活用する方法を発見!

  • 12
    いいね
  • 0
    コメント

ラズパイのScratchで録音/再生がしたい!

ラズパイクラスの子どもたちとScratch、Sonic Pi、Minecraftなどを楽しんでいるわけですが、Scratchで録音/再生がしたくて、ずっとできずにいました。USBサウンドカードを繋いで、マイクを刺せばできそうなんだけど、どれがいいのかよくわからない。

USBウェブカメラがいいのでは?

一方、写真も取り込みたいのでカメラが必要。でも、ラズパイ専用カメラは高いし、ケーブルがやわなので、パス。おっ、サウンドカードとマイクを買うより、USBウェブカメラが安い。そして、音声も取れるやんか。一石二鳥。
とりあえず、買ってみたけど、なかなか時間が取れない。。
https://www.logicool.co.jp/ja-jp/product/hd-webcam-c270
https://www.logicool.co.jp/ja-jp/product/hd-webcam-c310

標準のオーディオ出力を使いながら、USBウェブカメラで録音するのは難しい?

最近、音声合成や音声認識でALSA関係をいじくり始めていて、USBウェブカメラをマイクとして使うのはいい感じ。それなら、やっぱりScratchもなんとかしたいと、いよいよ本腰を入れることに。

ところが、インターネットをかなり彷徨ったところ、USBウェブカメラで録音しつつ、標準のオーディオ出力を使いつつという例がない。ラズパイ財団の仕事としてラズパイ用のScratchをバリバリ整備/改造しているTim Rowledgeさんとやりとりしたけど、ALSAの設定がわけわかんない!というところで止まっている模様。掲示板などでも、世界的に皆さん困っている感じ?

何度このメッセージを見たことか。
no device.png
これをググって、Tim Rowledgeさんとつながることができたわけですが。彼は、ガシガシのSqueaker/Smalltalkerで、ラズパイ用のVMの高速化、ラズパイ用のScratchイメージの改良をやっている人です。最近の高速化はこの人のおかげ!!!

というわけで、ScratchもSqueakもオープンソースだから、好きにしていいよと言われつつ、ALSA設定の深い森へ。。。。。。もうだめだ、遭難するー。と思ったら、、、できました!

ALSAの秘密の設定

デフォルトの「再生」を標準オーディオ出力、0番のサウンドカード(ALSA用語)にしたまま、デフォルトのキャプチャー(録音)としてUSBウェブカメラのマイク、1番のサウンドカードを指定、という、合わせ技。コントロールのデフォルト設定は特に必要ないです。あと、よくある、ドライバーの読み込み順を入れ替える作戦も不要。

Scratchは、とにかく、システムのデフォルトの入出力を見ています。なので、今回のような場合は、 type asym を使った合わせ技が必要でした。

nano ~/.asoundrc で編集します。

pcm.!default {
    type asym
    playback.pcm {
        type hw
        card 0
    }
    capture.pcm {
        type hw
        card 1
    }
}

ctl.!default {
    type hw
    card 0
}

このファイルは消しても自動的にできるし、ある環境では、せっかく書いた設定にテンプレートを必ず追加してくるという不思議な動きをしていました。そういう時は、chmod 444 でpiさんに触らせなくするとオッケー。

$ alsamixer で、音量調節をすると、やったー。録音できた。

PreviewScreenSnapz006.png

USBウェブカメラで写真も撮りたい。

さて、こちらの方が先にできていました。もしかすると何もしないでも使えていたかも。Scratchでコスチュームのタブを開くと、なんと [カメラ]ボタン出現。新しいコスチュームとして撮った写真を使えます。

PreviewScreenSnapz007.png

PreviewScreenSnapz010.png

もう一つの使い方は、[( gpioserveron ) を送る]でGPIOサーバーを起動しておいて、[( photo ) を送る]ブロックでシャッターを切る方法。スクリプト中に使えます。

FinderScreenSnapz006.png

ラズパイ財団のページにも説明されています。「Scratch GPIO」
https://www.raspberrypi.org/documentation/usage/scratch/gpio/README.md
このページは、当然ながらTim Rowledgeさんもコミットしています。

Scratch以外にも使えるのでラズパイ財団の「USING A STANDARD USB WEBCAM」ページをみて、fswebcamというツールをインストールしておきます。
https://www.raspberrypi.org/documentation/usage/webcams/

sudo apt-get install fswebcam

以上!

参考ページ
Advanced Linux Sound Architecture/Troubleshooting
  2.2 Setting the default microphone/capture device
https://wiki.archlinux.org/index.php/Advanced_Linux_Sound_Architecture/Troubleshooting#Setting_the_default_microphone.2Fcapture_device