動きを音楽に!装着型楽器『arm』

Created Date: 2017-10-11/ updated date: 2017-10-17
Owner & Collaborators
License
Summary
FAB甲子園『未来楽器を作ろう』に向けて、加速度センサーを使った装着型の楽器『arm』を作るプロジェクト。
自分の腕の動きを加速度センサーで読み取ってMozziを用いて色々な周波数の音に変化させる。装着して動かしてみれば、今までにない楽器となりその時だけのメロディーを奏でる。

Materials

    Tools

      Blueprints

        Making

        • 課題は『未来の楽器を作る』

          重要なのは
          • 未来を感じさせる
          • 3D技術

          また、自分の強みを活かしたものを作りたい
          • 電子工作
          • プログラミング

          • 未来と言ったら何があるか
            僕のなかで未来は技術が発展してそうなイメージ

            技術的なものを使ってみたい
             センサーとかを使ってみるといいかも!

            やっぱり好きな電子工作もしたい!

            センサーの値を音に変える電子楽器を作ろう!
            腕とかにくっつけて使えたら、今までにない感じでおもしろいかも!
          • センサーの値から音を生み出すと考えると、気温のような動きの少ないものより、動作や明るさなどのように瞬間的に大きく値が変わるセンサーの方が、周波数の変化(音の変化)を起こしやすいのでよさそう!
            →候補
            • 加速度センサー
            • 距離センサー
            • 光センサー

            距離センサーの制御は割と簡単だし、光は屋内外での扱いが難しそう
            比べると結構難しそうだけど加速度センサーに挑戦することに!

            加速度センサーは腕にくっつけたら音を変えるのもやりやすそう
            腕に着けるデバイス型の楽器にする!

            使用する加速度センサー(写真)
          • センサーとかの制御には以前も使ったことがあり、小さくていろいろ使いやすい
            Arduino NANOを使用することに決定。

            音はArduinoを通してスピーカーから出す。
        • やること
          • センサーの値を読み、その値に応じて音を出すプログラムを作る
          • ブレッドボード上でセンサー,Arduino,スピーカーをつなぐ

          全部うまくいけば音が鳴るはず!
          • Arduino のシリアルモニタで値を読む。
            X,Y,Z軸ごとの加速度の値が大体50~50000くらいで出てくる。
            →このままでは幅が大きすぎてスピーカーに直接使えない
             範囲の縮小が必要

            ①対数を使う→×
            対数を取って、縮小してみる
            底をいじって範囲の調節をしてみるが、次は小さくなりすぎてうまくいかない。

            MAP関数を使う→〇
            調べていくうちにArduino にはMAP関数という、ある範囲からある範囲へ値を比例して変化させる関数があることを知る。とりあえずPWM出力に合わせて50~50000の値を0~1023の値に変えて、スピーカーに流してみる。
            音が鳴った!センサーを動かすと音の高さとかも変わる!
          • 音は出せたけど、なんか違和感が...

            PWM出力は矩形波で波が出てくる。
            音が途切れて聞こえる

            矩形波以外の波にしたらもっといい音が出るのでは!?
            正弦波とかで出力する方法を探す
        • 矩形波以外の波(特に正弦波)を出す方法を探していたら、FABLAB鎌倉の山本さんにMozziという音合成ライブラリを教えていただいた。
          • センサーの値を読み取るプログラムにMozziの正弦波を出すプログラムを合体させて動かしてみる。うまくいけば、きれいな音が出るはず。

            →errorが出る。動かない

            原因は?
            山本さんに協力いただきながら調べるとセンサーとMozziのプログラム同士が干渉して、シリアル通信が二重定義されていることが原因と分かる。
            いくつかのファイルの消去により解決!
            (これだけで半日かかった....)

            直した後また動かしてみると、途切れる感覚のないきれいな音が鳴った!
            MAP関数で範囲を変えることで音域を色々いじってみる
          • Mozziを使うことにしたため、
            • アンプ
            • 保護抵抗
            などを追加で使うことに

            写真はアンプ
            信号線,VCC,GND,出力の端子がついている
          • プログラム流れ
            ①加速度センサーからの値を読み込む
             この時はXYZ軸方向に50~50000程度の値

            ②XYZ軸方向の値を足し合わせ、それをMap関数でMozziに合うように範囲を変える。
             足し合わせにより、各方向への偏りなどがなくなる。ある方向のみを使うと、一気に値が変わってしまうので、メロディーとして聞きずらいと考えた。

            ③Mozziのライブラリで先ほどの値を周波数に変換し、出力する。

            ④出力された値は、アンプを通してスピーカーを鳴らす

            全文はMEMOに入ってるのでよければ(^▽^)/
            (センサーなどの定義式が多く、800行を超える長いものになってしまったが)
        • Mozziを使って音を出すことにも成功したので、実際に基板上に実装してみる。

          基板化する利点
          • 回路の小型化ができる
           腕に着けるので、極力小さい方がいい

          • はんだ付けすることで、ブレッドボードで起きる接触不良などが起きる可能性を減らせる
          • できる限り回路を小型化したいので、配置などを入念に考える。

            ブレッドボードからの改良点
             タッチセンサーを触ったときだけ音が鳴るように、そのための条件分岐プログラム(if)を追加
          • 工夫したこと
            • 整流用の回路をArduinoの下に組み込み、コンパクトに配置する

            • センサー,アンプ,Arduinoをすべてオスメスピンで基板につなぎ、
             故障などの際すぐに取り外して交換できるようにする。

            • 小型化のため、回路を組んだ後基板のいらない部分をすべてカット
             角もやすりがけして、危なくないように

            失敗したこと
            • 接続するピンを間違える
            • アンプの接続で±を間違えて、ショートさせてしまう(相当熱くなった)

            気を付けなければ
        • 3Dプリンターを使って、腕に着ける部分を作る
          • 紙粘土で腕に合う形を考えてみる(ちょっと雑だけど)
            この時は上の穴を指に通して、指の部分で支えて着けるイメージ

            腕にぴったり合う形がほしい
            FUSION360でスカルプトとか使って作るのは難しそう
            3Dスキャナーを使えばいいかも
          • FabLabにある3Dスキャナー(sense)を借りて、腕の形をスキャンしてみる
            腕のデータで物体をくりぬけば、腕にぴったり合う形のものが作れるのでは?
          • 使ってみると、相当難しい
            背景にものがあるとそっちも読み取ってしまうし、とてもゆっくり動かさないとすぐに読み取りができなくなってしまう。
            しかもスキャンするのが右腕なので、左腕だけでスキャナーをもって腕の周りを回すのは無理がある。

            そこで3Dスキャナーを三脚で固定し、腕を回して読み取ることに

            読み取ったデータをsenseのソフトで修正して、FUSION360に移してみる。
            写真はFUSIONに移した後の僕の腕のデータ
          • 直方体をスキャンした腕のデータで切り取れば、腕に沿った形が作れるはず!

            しかしここで問題が
            3Dスキャナーで作ったデータはメッシュデータ(面の集まりで構成)
            一方FUSIONで直方体を作ると、ソリッドデータ(中身が詰まっている)

            このデータの種類の違いのせいで切り取りができない

            色々調べると基準フューチャーという機能のなかで、データを変換できるらしい
            データの変換はすごい処理が重くて、CPU落ちそうにもなったけど、無事切り取りに成功
            画像は切り取った3Dデータ

            とりあえず試験的に3Dプリンターで印刷してみることに

          • 印刷したものに回路を入れる構想を練る

            最初なので、カッターとかペンチを使って強引にくり抜いて基板の入れ方を考えてみる。

            結果として
            写真のように入れることにした。これだと腕に当たらないし、回路を外から隠せる。また、机などにぶつかって故障したりしないよう保護することができる。

            また、装着の仕方は指つけるのはタッチセンサーやスピーカーの配置を考えると難しそうなので、後述するようにゴムバンドを用いることにする。
          • デジタルノギスで正確に基板の大きさを測り取って、
            その寸法に合わせた大きさの直方体で切り抜く

            その際にはできるだけ腕に接触する曲面が消えないように注意!
            曲面を削りすぎると、腕につく面積が減って3Dスキャンした意味がなくなってしまう。

            タッチセンサーを配置する用に30*10*3㎜のへこみも作った
          • スピーカー(直径50㎜)はトーラス型をくりぬいてはめることに(写真の中央の穴にスピーカーがはまる)

            装着すると、手のひらに内側にスピーカーが来るイメージ

            実際に着けたものは別の画像に記載
          • ひとまず形が決まって、3Dデータとして作れたので、試しに縮小して印刷。
            失敗してもフィラメントの無駄遣いを減らせる。
            サイズは大体50%くらい
        • 小さく印刷してみたら、まだまだ改良するところが見つかったので再度修正を行う。

          こんな感じでプロトタイプを作りながらいろいろ改良していくのが面白い!
          • スピーカーのトーラスの部分が細くて、弱いので太くすることに。
            太さを10㎜→15㎜に変更

            また印刷したものを見てると、側面にまだスペースがありそうなので
            内側にへこんだ部分をつくって回路を収納することに(写真断面左側)

            写真は印刷の際に失敗して真ん中で割れてしまったものAdd an Image
          • 改良したものを実際に実物大で印刷してみる
            腕にはぴったりと合った。

            しかしなぜか上面の印刷がなされず、ハチの巣構造(写真右下)がでてしまった
            またいくつか気になることもあったので修正することに
        • 実物大で印刷してみて、気になったところをさらに改良していく


          • 電源コード用の穴をあけるのを忘れてしまったので、開ける(写真中央)
            (Arduinoなど回路を動かすように電源が必要なので、モバイルバッテリーからコードを引く)

            実際に使ってみるとぴったりだった
          • ①プロトタイプを見せたところ、角がとがっていると言われたので
             強めにフィレットをつけて丸みをつけていく(→R20㎜)

            ②実際に直径50㎜の穴に50㎜のスピーカーを入れようとしたら
             なんとはまらない!

             そこで微妙に修正し、穴を直径51㎜
          • おまけで、名前を刻印しておく
            FUSIONのテキスト機能を使えば簡単にできた

            3Dプリンターはこんなことも楽にできるのがすごい
        • ここまで長かったが、ついに納得のいくものが完成した。
          名前はわかりやすく『arm』に

          今までにない腕に装着するという楽器を作れた。加速度センサーの値を用いることで、腕を
          動かすと様々な周波数のが鳴る。
          腕を早くふれば、瞬時に加速度が大きく変わり、周波数(音)も変わり続けるので、不思議なメロディーも作れる。

          この楽器は同じ音楽が続くのではなく、その時だけの音楽を生み出すことができる。
          • ノギスで測っておいたおかげで、基板はぴったりとはまった

            スピーカー,タッチセンサーの配置も想定通り仕上がった
            それらを内側に両面テープを張って固定
          • 腕に着ける部分は、シンプルにゴムバンドを使うことに
            簡単につけれて、割と安定するので採用。
          • 実際に演奏してみる

            動画を見ると、動かし方によってころころ音が変わっていくのがわかるはず
        • とりあえずは完成したが、まだまだ改良したいところもある
          • 腕に着ける機構の考案
           画像は一案(腕のデータを使って腕輪のような形を試作)

          • 腕と基板の間にふたをつけて、基板との接触を防ぐ

          • スピーカー裏側の固定機構をつける
           スピーカーが外れる可能性を消すため、さらに補強

          • 今回未来の楽器を作るという課題で、難しいこともたくさんあったがFabLab鎌倉の多くの方の助けを借り時間をかけて丁寧に取り組むことができた。
            カッコイイ音という基準は人によって違うと思うが、動きを音に変えるという楽器は今まであまりなかったものであるし、僕はその音の出し方も含めてカッコイイものになったのかなと思えた。

            3Dプリンターという新しい技術を使ってプロトタイピングを繰り返し、より理想的なものを作っていく過程はとても面白かった

            これからも今回学んだことを生かして、製作に取り組んでいきたい
            Add Card Order

            References

              Project comments