どんな楽器を作ろうか?

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

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

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

未来を感じるものって?

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

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

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

センサーの値を音に変える電子楽器を作ろう!
腕とかにくっつけて使えたら、今までにない感じでおもしろいかも!

どんなセンサーを使おうか

センサーの値から音を生み出すと考えると、気温のような動きの少ないものより、動作や明るさなどのように瞬間的に大きく値が変わるセンサーの方が、周波数の変化(音の変化)を起こしやすいのでよさそう!
→候補
  • 加速度センサー
  • 距離センサー
  • 光センサー

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

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

使用する加速度センサー(写真)
・GY‐521

ほかの部品

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

音はArduinoを通してスピーカーから出す。

とりあえず音を出してみよう!

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

全部うまくいけば音が鳴るはず!

加速度センサーの値をシリアル通信で読み取ってみる

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

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

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

もっときれいな音にならない?

音は出せたけど、なんか違和感が...

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

矩形波以外の波にしたらもっといい音が出るのでは!?
→正弦波とかで出力する方法を探す

Mozziを使う

矩形波以外の波(特に正弦波)を出す方法を探していたら、FABLAB鎌倉の山本さんにMozziという音合成ライブラリを教えていただいた。

問題発生(Mozziが動かない)

センサーの値を読み取るプログラムにMozziの正弦波を出すプログラムを合体させて動かしてみる。うまくいけば、きれいな音が出るはず。

→errorが出る。動かない

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

直した後また動かしてみると、途切れる感覚のないきれいな音が鳴った!
MAP関数で範囲を変えることで音域を色々いじってみる

その他部品

Mozziを使うことにしたため、
  • アンプ
  • 保護抵抗
などを追加で使うことに

写真はアンプ
信号線,VCC,GND,出力の端子がついている

プログラム

プログラム流れ
①加速度センサーからの値を読み込む
 この時はXYZ軸方向に50~50000程度の値

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

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

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

全文はMEMOに入ってるのでよければ(^▽^)/
(センサーなどの定義式が多く、800行を超える長いものになってしまったが)

回路を組んでみる

Mozziを使って音を出すことにも成功したので、実際に基板上に実装してみる。

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

  • はんだ付けすることで、ブレッドボードで起きる接触不良などが起きる可能性を減らせる
はんだこて

回路作成①

できる限り回路を小型化したいので、配置などを入念に考える。

ブレッドボードからの改良点
  • 半固定抵抗を組み込み、音の大きさを制御できるようにする
  • 動作確認のために一度外していたタッチセンサーを再度組み込む
 タッチセンサーを触ったときだけ音が鳴るように、そのための条件分岐プログラム(if)を追加

回路作成②

全ての部品をはんだ付けする
センサー,アンプ周辺は複雑なので慎重に

はんだ付けはもともとよくやっているので、サクサク進む
( ´∀` )

はんだごて
ラジオペンチ
ニッパー

回路作成③

工夫したこと
  • 整流用の回路をArduinoの下に組み込み、コンパクトに配置する

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

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

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

気を付けなければ

腕へのつけ方を考える

3Dプリンターを使って、腕に着ける部分を作る

どんな感じでつけようか

紙粘土で腕に合う形を考えてみる(ちょっと雑だけど)
この時は上の穴を指に通して、指の部分で支えて着けるイメージ

腕にぴったり合う形がほしい
FUSION360でスカルプトとか使って作るのは難しそう
→3Dスキャナーを使えばいいかも

3Dスキャナーを使う

FabLabにある3Dスキャナー(sense)を借りて、腕の形をスキャンしてみる
腕のデータで物体をくりぬけば、腕にぴったり合う形のものが作れるのでは?

腕のスキャン

使ってみると、相当難しい
背景にものがあるとそっちも読み取ってしまうし、とてもゆっくり動かさないとすぐに読み取りができなくなってしまう。
しかもスキャンするのが右腕なので、左腕だけでスキャナーをもって腕の周りを回すのは無理がある。

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

読み取ったデータをsenseのソフトで修正して、FUSION360に移してみる。
写真はFUSIONに移した後の僕の腕のデータ

データ変換

直方体をスキャンした腕のデータで切り取れば、腕に沿った形が作れるはず!

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

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

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

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

くりぬいてみる,装着方法

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

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

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

また、装着の仕方は指つけるのはタッチセンサーやスピーカーの配置を考えると難しそうなので、後述するようにゴムバンドを用いることにする。

3Dプリンティング


回路用のスペースを作る

デジタルノギスで正確に基板の大きさを測り取って、
その寸法に合わせた大きさの直方体で切り抜く

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

タッチセンサーを配置する用に30*10*3㎜のへこみも作った

スピーカーをつける

スピーカー(直径50㎜)はトーラス型をくりぬいてはめることに(写真の中央の穴にスピーカーがはまる)

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

実際に着けたものは別の画像に記載

形の作成完了(仮)

ひとまず形が決まって、3Dデータとして作れたので、試しに縮小して印刷。
失敗してもフィラメントの無駄遣いを減らせる。
サイズは大体50%くらい

改良

小さく印刷してみたら、まだまだ改良するところが見つかったので再度修正を行う。

こんな感じでプロトタイプを作りながらいろいろ改良していくのが面白い!

スピーカー部分の改良,スリム化

スピーカーのトーラスの部分が細くて、弱いので太くすることに。
太さを10㎜→15㎜に変更

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

写真は印刷の際に失敗して真ん中で割れてしまったものAdd an Image

実物大で印刷

改良したものを実際に実物大で印刷してみる
腕にはぴったりと合った。

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

さらに改良

実物大で印刷してみて、気になったところをさらに改良していく

完成版3Dデータ

電源コードの穴

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

実際に使ってみるとぴったりだった

丸み,スピーカー用の穴の調整

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

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

 そこで微妙に修正し、穴を直径51㎜に

名前を彫る

おまけで、名前を刻印しておく
FUSIONのテキスト機能を使えば簡単にできた

3Dプリンターはこんなことも楽にできるのがすごい

完成!!

ここまで長かったが、ついに納得のいくものが完成した。
名前はわかりやすく『arm』に

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

この楽器は同じ音楽が続くのではなく、その時だけの音楽を生み出すことができる。

回路を組み込む

ノギスで測っておいたおかげで、基板はぴったりとはまった

スピーカー,タッチセンサーの配置も想定通り仕上がった
それらを内側に両面テープを張って固定

装着

腕に着ける部分は、シンプルにゴムバンドを使うことに
簡単につけれて、割と安定するので採用。

演奏!!

実際に演奏してみる

動画を見ると、動かし方によってころころ音が変わっていくのがわかるはず

これから

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

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

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

最後に

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

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

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