2017年3月2日木曜日

Raspberry Pi と Arduino で楽器作り(4) - ラズパイの音出しとシリアル通信

センサから情報を受けとり、Raspberry Pi で音を出すにはどうすればいいのか調べました。


1. どんな楽器にするのか

とりあえずテルミンみたいな楽器を目指します。演奏者が本体に手を近づけたり話したりして音を出す楽器ですね。
参考:5188円で始めるフィジカルコンピューティング 最終回 〜テルミンつくってみるミン まとめの巻〜
karaage 氏が Arduino を使ったテルミンの作り方を投稿しています。ラズパイを使って無駄に複雑にしてる以上、コード丸写しみたいなことはできないのですが、参考にしました。同じ赤外線近接センサを使って手と Arduino 間の距離情報をもってきています。

2. Arduino - Raspberry Pi 間の通信

Arduino にはシリアル通信やI2C通信といろいろ通信方式があるみたいですが、USBでつなぐだけですむシリアル通信を使いたいと思います。Arduino から送られてきた情報をどうやって処理しようか?というところですが、 いろいろなプログラミング言語でこれを行うライブラリがちゃんとあるようです。

3. Raspberry Pi で音を出す

Raspberry Pi のジャックにイヤホンやスピーカをつなげば音が出ます。問題は何のソフトを使うかということですが、「Raspberry Pi シンセ」とかで検索してみるといろいろあるみたいですね。Raspberry Pi のOS Raspbian には、最初から Sonic Pi というコードを書いて音を出すソフトが入っていますので、これを使えたら楽だなと考えました。Arduino からの情報をもとに Sonic Pi を介して音を出すのですが、これをソフトの外で行うプログラミング言語が必要ですね。それでいろいろ調べてみると python-sonic という Python*1 で Sonic Pi を動かす Python ライブラリがありました!なんてすばらしい!
この時点をもって、Python でプログラミングを行うことが決まりました。Python は全然やったことないのですが、Raspberry Pi では最初から Python 環境が整っているので頑張ればなんとかなりそうです。2.のシリアル通信は、pyserial というライブラリでできるようですね。
参考:Pythonでシリアル通信
ここまでまとめると下のような通信をします。
図です
Python ってすごいんだなーと思いました。次から実際にコードを書くところを……。


*1: Python 3系でのみ動くようです。

0 件のコメント:

コメントを投稿