はじめに
沖縄で毎年開催される**ハッカーズチャンプルー2019**というカンファレンスで「ラズパイは〇〇」という
タイトルでLTしたのですが、ちょっと分かりづらかったかなー、という反省もあり解説を残しておきます。
(将来、再度作りたくなった時の自分用のメモも兼ねて)
LT内容
要約すると
ギタープレイヤーが1人バンド演奏するために必要なものを全てラズパイ上で動かしてみたよ
という内容です。
- 1人バンドやりたい場合に必要なもの
- リズムサンプラー
- ドラムの役割
- ルーパー
- 録音した音声をループ再生するもの
- 1人バンドでは、ベース/ギターを同時演奏できないので、音を重ねていく際に必要
- エフェクター
- ギターの音声に、ディストーション、ワウ、ディレイ、コーラスなど音響効果を与える役割
- リズムサンプラー
これらを、Pure Dataというソフトウェアで実現しました。(説明後述)
また、リズムサンプラーやルーパーの開始終了を手元で操作したいので、ラズパイをギターにマジック
テープで装着し、タクトスイッチで制御できるようにしました。
さらに、ラズパイはいろいろなセンサーを扱えるので、加速度センサーを付けて、ギターのジェスチャー
でエフェクトの切り替えやワウのような音響効果を実現しました。
(ワウについては、思いつきでしたが予想以上に滑らかないい感じのワウが出来ました。←lineオブジェクトのおかげ)
Pure Data
音声をグラフィカルにプログラミングして加工・保存(録音)・再生できるソフトウェアです。
macOS, Windows, Linuxでも動きます。もちろんラズパイも。
詳細は下記サイトを参照ください。
本家(英語)
日本語紹介サイト
以下の画像のように四角い枠を線で繋いでいろいろな加工・録音・再生ができます。
スライド中にも書きましたが、PureDataには netreceiveというオブジェクトを使用してOSCという
プロトコルでネットワーク越しにPureDataを制御可能、という特徴があります。
これにより、センサーから取得した値やタクトスイッチなど、GPIOからの信号を判定するプログラム経由で
外からPureDataを制御することができます。
デモ動画
どんなものを作ったのか、見てもらった方が早いので動画をYoutubeにあげました。
(スライド中にも同じリンクがあります)
-
エフェクターデモ
- ギターのジェスチャー(ヘッドを縦 or 前後に振る動作)を加速度センサーで検知してPureDataを制御
- ヘッドを縦に振る動作 :エフェクト切り替え
- ヘッドを前後に振る動作:ワウエフェクト。「ワウ・ジャイロ」と勝手に名付けています^^
- ギターのジェスチャー(ヘッドを縦 or 前後に振る動作)を加速度センサーで検知してPureDataを制御
-
1⼈バンド演奏デモ
- リズムサンプラー開始ボタンでドラム演奏開始
- 録音ボタンでベースライン・バッキング・リフを順番に録音しルーパーで再生しつつ、音を重ねていきます
- 最後はディストーションで自由にソロパートの練習(これが気持ちいい!!
バッキングのリズムが少し遅れていることは、ご容赦ください。(1発撮りなので ^^;
制作物について
名称(オレオレ定義)
マルチエフェクターにも、リズムサンプラーにも、ルーパーにもなる。これを的確に表す言葉が見当たらない
ので、とりあえず「ラズパイエフェクター」と呼んでいます。
また、これを取り付けたギターを「ラズパイギター」と呼んでいます。
制作目的
ギターを使って作曲やフレーズ作りをしたい場合に、いい感じのベースラインやバッキングが流れていると
捗ると思います。
通常は、オーディオプレイヤーを使って誰かの曲を流しながらやる、もしくは専用のツール(ルーパーなど)を
持っていればそれ使うと思いますが、ベースやバッキングをプレイヤーが自由につくり直せるツールがあると
さらに捗ると思い作りました。
また、そういうインスピレーションに任せて創作する段階では、音質などにこだわる必要はないので、
リズムサンプラー+ルーパーで出力される音声とギター+エフェクターの音声が一つのアンプから出せた方が
必要な機材も少なくて済み、手軽に使えると思いました。
必要なもの
- エレキギター
- アンプ
- モバイルバッテリー
- Raspberry Pi 3 Model B+
- NOOBS v3.0.0(Raspbian-Stretch 2018-11-13)
- 裸のままだと装着しにくいのでクリアケース付きを買うとよい
- ブレッドボード・ジャンパーワイヤ
-
加速度センサー
- 実際には、加速度検出、角度検出、方位検出ができます。それでこの値段はめっちゃ安い!!
- 購入時は半田付けされていない状態ですので、半田ごてで半田付けしてください!!
-
サウンドカード
- USBに挿して使用
- Input側にギター、Output側にアンプに繋ぐ3.5mmステレオミニプラグを接続
- 3.5mm ステレオミニプラグ オーディオケーブル x 2
- 6.3mmモノラル(オス)-3.5mmステレオ(メス) 変換アダプター x 2
- ギター/アンプのジャックが6.3mmモノラル端子の場合に必要。イヤホンを使う場合などは1つでOK
装着した様子
加速度センサーとラズパイをギターにつけて、ギター - ラズパイ - アンプって感じでシールド繋げてます。
(配線図は割愛、読み取ってください^^)
使用しているGPIOは、以下の通り
GPIO | 用途 |
---|---|
GPIO04 | リズムサンプラー開始(=Pdプロセス再起動)/終了ボタン 6秒以上長押しするとラズパイOS停止 片方は3V3へ繋ぐ |
GPIO17 | 録音ボタン、押すごとに3つのトラックを順番に切り替えてそこに録音 片方は3V3へ繋ぐ |
GPIO27 | エフェクトの切り替えボタン(=ギターを縦に振るジェスチャーと同じ効果) 片方は3V3へ繋ぐ |
3V3 | MPU9250 - VCC |
GPIO02 | MPU9250 - SDA |
GPIO03 | MPU9250 - SCL |
GND | MPU9250 - GND |
※MPU9250は加速度センサーです。
制作手順
手順
OS最新化
PureDataインストール
sudo apt install puredata
# => 0.47.1 pd vanilla が入ります
deken&Gemを導入
dekenはPdライブラリ(externals)を選択的に追加して管理できるプラグインプログラムです。
今回は、counterオブジェクトが含まれるcycloneというGemを入れます。
まず、GUI(vnc可)でpdを実行します。(ターミナルから pd &
実行)
- pdメニューから
Help -> Find externals
選択 -
cyclone
を検索してインストール - パスは
/home/pi/pd/externals
を指定 -
Preferences -> Path..
を開きNew..
をクリックし追加したパッケージを指定
-> これでCycloneに入っているcounterオブジェクトが使えます
参考)http://nakagaw.hateblo.jp/entry/2016/12/31/030951
加速度センサーセットアップ
# I2C有効化
sudo raspi-config
# => I2C有効化して保存
# 再起動
sudo reboot
# 加速度センサーを使えるようにする
sudo apt install i2c-tools
sudo i2cdetect -y 1
# => 68が表示されることを確認
sudo apt install python-pip python-smbus
sudo pip install FaBo9Axis_MPU9250
# 加速度センサーの動作確認
mkdir ~/mpu9250
wget https://raw.githubusercontent.com/FaBoPlatform/FaBo9AXIS-MPU9250-Python/master/example/read9axis.py
python read9axis.py
# => ラズパイを動かして数値が変わることを確認
センサーやタクトスイッチからの入力をPureDataに繋げるデーモンの準備
# OCSプロトコルを扱うモジュールインストール
sudo python -m pip install pyOSC
# 自作コードをgit cloneして配置
cd /tmp
git clone https://github.com/miyaz/raspi-guitar.git
cd raspi-guitar
mv home/pi/* ~/
sudo vi /etc/rc.local
以下2行を追加し、OS起動時に自動実行されるようにする
(〜省略〜)
sudo su - pi -c "python /home/pi/pd-ctlr.py" &
sudo su - pi -c "python /home/pi/effect-ctlr.py" &
exit 0
あとはOS再起動するだけで自動的に起動します
3つのボタンを操作して、リズムサンプラーを開始したり、録音したり、エフェクトを切り替えたりできるはずです。
パッチ修正方法
パッチファイルは /home/pi/pd/hcmpl_lt1.pd
にあります。
編集したい場合は pkill pd
してからGUI環境で、pd /home/pi/pd/hcmpl_lt1.pd
して編集してください。
細かい説明は割愛しますが、パッチの機能ごとの配置は以下のようになっています。
LTの反応
LTに反応していただいたツイートを抜粋(ありがたや〜
ラズパイをギターにくっつけてエフェクターにして、加速度センサでエフェクトを変えてサンプリングもできるようにしたのすごい。未来の楽器感がある。#hcmpl
— hikalium (@hikalium) 2019年6月29日
加速度センサーとラズパイで、マルチエフェクターより強い何か(なんと形容していいのかわからん)もの作ってるのマジですごいし、欲しい
— つはゆうや@まごころポスト (@tsuhha) 2019年6月29日
#hcmpl
うわ!!!めっちゃいい!!!!!欲しい!!!!! #hcmpl
— かび@𝐻𝑎𝑐𝑘𝑒𝑟𝑠𝐶ℎ𝑎𝑚𝑝𝑙𝑜𝑜 (@aokabin_) 2019年6月29日
ほんと一部(たぶんギターやっている人)には支持されていますが、反応の格差が顕著で面白いです(ネタ選択ミスw
LTを通して言いたいこと
(途中音声トラブル等でLT完走できず、まとめまで話せなかったので言いたかったことをここに書いておきます)
今回、LTタイトルを「ラズパイは〇〇」としました。
で、LTスライドの最後の方にこう書きました。(LTなので誇張気味ですが)
今の時代、あらゆるものがソフトウェアで制御できるようになっています。
その多くがLinux(≒ラズパイ)上でも動きます。
ラズパイはコンパクトなので、従来のLinuxサーバ
と違いいろいろな場所に取り付けることができ
電力消費が小さく数時間であればモバイルバッテリーに繋いで動かすことができます。
また、ラズパイは、温度・光・加速度などのセンサーやカメラモジュールの映像を扱うことができます。
ラズパイをギターにつけよう、と発想する人はあまりいないと思います。
でも、常識的には考えないかもしれませんが、作ってみてとても有用だと実感しました。
ラズパイって、アイデア次第で次のイノベーションやその種・卵を産み出せる可能性があると思うので、
もっと普及して、学校などでも使われるようになるといいなぁ、と思ってLTしました!
(会場が琉球大学で学生の参加者が多そうだったのもあります)