22
15

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 5 years have passed since last update.

ラズパイ+加速度センサー+PureDataで作る1人バンド演奏ツール

Last updated at Posted at 2019-07-04

はじめに

沖縄で毎年開催される**ハッカーズチャンプルー2019**というカンファレンスで「ラズパイは〇〇」という
タイトルでLTしたのですが、ちょっと分かりづらかったかなー、という反省もあり解説を残しておきます。
(将来、再度作りたくなった時の自分用のメモも兼ねて)

LT内容

スライドはこちら

要約すると
ギタープレイヤーが1人バンド演奏するために必要なものを全てラズパイ上で動かしてみたよ
という内容です。

  • 1人バンドやりたい場合に必要なもの
    • リズムサンプラー
      • ドラムの役割
    • ルーパー
      • 録音した音声をループ再生するもの
      • 1人バンドでは、ベース/ギターを同時演奏できないので、音を重ねていく際に必要
    • エフェクター
      • ギターの音声に、ディストーション、ワウ、ディレイ、コーラスなど音響効果を与える役割

これらを、Pure Dataというソフトウェアで実現しました。(説明後述)

また、リズムサンプラーやルーパーの開始終了を手元で操作したいので、ラズパイをギターにマジック
テープで装着し、タクトスイッチで制御できるようにしました。
さらに、ラズパイはいろいろなセンサーを扱えるので、加速度センサーを付けて、ギターのジェスチャー
でエフェクトの切り替えやワウのような音響効果を実現しました。
(ワウについては、思いつきでしたが予想以上に滑らかないい感じのワウが出来ました。←lineオブジェクトのおかげ)

Pure Data

音声をグラフィカルにプログラミングして加工・保存(録音)・再生できるソフトウェアです。
macOS, Windows, Linuxでも動きます。もちろんラズパイも。
詳細は下記サイトを参照ください。
本家(英語)
日本語紹介サイト

以下の画像のように四角い枠を線で繋いでいろいろな加工・録音・再生ができます。
patch.jpg

スライド中にも書きましたが、PureDataには netreceiveというオブジェクトを使用してOSCという
プロトコルでネットワーク越しにPureDataを制御可能、という特徴があります。
これにより、センサーから取得した値やタクトスイッチなど、GPIOからの信号を判定するプログラム経由で
外からPureDataを制御することができます。

デモ動画

どんなものを作ったのか、見てもらった方が早いので動画をYoutubeにあげました。
(スライド中にも同じリンクがあります)

  • エフェクターデモ
    • ギターのジェスチャー(ヘッドを縦 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最新化

raspberrypiのOSを更新する方法を参考に

PureDataインストール

sudo apt install puredata
# => 0.47.1 pd vanilla が入ります

deken&Gemを導入

dekenはPdライブラリ(externals)を選択的に追加して管理できるプラグインプログラムです。
今回は、counterオブジェクトが含まれるcycloneというGemを入れます。

まず、GUI(vnc可)でpdを実行します。(ターミナルから pd &実行)

  1. pdメニューからHelp -> Find externals選択
  2. cycloneを検索してインストール
  3. パスは /home/pi/pd/externalsを指定
  4. 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起動時に自動実行されるようにする

/etc/rc.local
(〜省略〜)
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して編集してください。
細かい説明は割愛しますが、パッチの機能ごとの配置は以下のようになっています。

pdのコピー.png

LTの反応

LTに反応していただいたツイートを抜粋(ありがたや〜

ほんと一部(たぶんギターやっている人)には支持されていますが、反応の格差が顕著で面白いです(ネタ選択ミスw

LTを通して言いたいこと

(途中音声トラブル等でLT完走できず、まとめまで話せなかったので言いたかったことをここに書いておきます)

今回、LTタイトルを「ラズパイは〇〇」としました。
で、LTスライドの最後の方にこう書きました。(LTなので誇張気味ですが)

raspi.jpg

今の時代、あらゆるものがソフトウェアで制御できるようになっています。
その多くがLinux(≒ラズパイ)上でも動きます。
ラズパイはコンパクトなので、従来のLinuxサーバと違いいろいろな場所に取り付けることができ
電力消費が小さく数時間であればモバイルバッテリーに繋いで動かすことができます。
また、ラズパイは、温度・光・加速度などのセンサーやカメラモジュールの映像を扱うことができます。

ラズパイをギターにつけよう、と発想する人はあまりいないと思います。
でも、常識的には考えないかもしれませんが、作ってみてとても有用だと実感しました。

ラズパイって、アイデア次第で次のイノベーションやその種・卵を産み出せる可能性があると思うので、
もっと普及して、学校などでも使われるようになるといいなぁ、と思ってLTしました!
(会場が琉球大学で学生の参加者が多そうだったのもあります)

22
15
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
22
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?