見出し画像

Arduinoワークショップ - デジタルシンセサイザーを作ってみる

はじめに

初めまして、Think & Craftアルバイトの石井飛鳥です。テクニカルディレクターの村田と社内向けに開催したArduinoワークショップの内容をアーカイブの意味合いも込めてnote化しようと思います。


モチベーションとやったこと

きっかけは去年、上司の村田が「今年の目標は音をやる」と言い続けたまま年を越してしまったことにあります。僕もちょうど去年からAbletonとMaxを触り始めたところでした。そこで社内向けのワークショップをすることによって、締切を作って無理やり音の勉強をしつつ、知識を共有していこう、という算段で本企画が始まりました。

確かに、音作りを通してマイコンの基礎をエンジニアに限らず社内の様々な立場の人が理解できると、仕事的にもみんな嬉しいはずです。

こういうワークショップで個人的に重要だと思うのは「手を動かして作る、出来上がった小さい成果に大きく喜ぶ」ことです。

今回のワークショップでは、自分でブレッドボードで配線をしてみる、タクトスイッチを押してシリアルモニターを確認する、音をスピーカーから出してみる、そういったハードウェアが動く気持ちよさを味わってもらうために、参加者全員分の機材を用意して、各々が一つのシンセサイザーを作り上げるということをしました。

ワークショップにはエンジニアに加えて、電子工作に触れたことのないプランナー、プロデューサーも参加しました。したがって内容は電子工作って何?どんなことができるの?から始まり、スイッチやボリューム(可変抵抗)の基礎的理解、音出し、エンベロープの実装、最後にFMシンセを実装する、という流れで進めました。

時間が限られている中、初学者はソフトよりもハードに触ることを優先した方が短い時間で体験できる物事の量も多いと判断し、実装コードの詳細な解説や写経は省き、回路の実装やFMを使った音作りに時間を多く割きました。

ソースコード

ワークショップで利用したコードは以下です。

こんな感じで音が鳴ります。配線は見なかったことにしてください。


機材構成

機材を貸し出すのではなく、みなさんに持って帰ってもらって少しでも次に繋がる可能性を作っておくことは特に初学者向けワークショップで重要だと思います。なので、操作性を担保しつつとにかくコスパ良く仕上げるのが今回の機材選定における目標です。

配線図と機材構成
  • ブレッドボード: ELEGOO 830タイポイント x1

  • マイコン: Waveshare RP2040-Zero x1

    • USB-C接続が可能なRaspberry Pi Picoの互換機です。小さいわりにADCピンが4つ使え、ADSRそれぞれに割り当てられるため今回はこちらを採用しました。

  • ボリューム: 小型ボリューム 100kΩB x4

    • よくある青い半固定ボリュームは操作性が悪いのでもう少しノブが大きいものを採用しました。ブレッドボードに直挿しできるように、ワークショップ前にピンヘッダを半田付けしておきました。

  • タクトスイッチ: タクトスイッチ: 12mm TVGP01-G73BB(黒) x9

    • ドレミファソラシドの8鍵分に加えて、ボリューム調整する値を変更するためのスイッチが追加で1個あります。これは、ワークショップのパート3でFMのモジュレータを2個直列に繋ぎそれぞれのHarmonicity Ratio, Modulator Indexを変えるためです。また、ボリュームと同様の理由で、操作性の良い大きめのスイッチを採用しています。そのままブレッドボードに載せると列からはみ出してしまうので、ピンの片側2本を上に折り曲げています。

  • オーディオジャック: Youmile TTRS 3.5mm x1

    • 今回は節約のためにDACを使わず、RP2040の0番ピンを直接tip, ring1に接続することで音を出します。こちらもピンヘッダをワークショップ前に半田付けしています。

  • アクティブスピーカー: ダイソーのミニスピーカー x1

    • 税込330円で買えるものとしては十分良く、アンプも内蔵しているのでスピーカーはこちらを採用しました。

  • (余力があれば)USB A メスソケット: KKHMF USBタイプA メスソケット

    • アクティブスピーカー用の電源を供給するためのUSBソケットです。利用するピンはVBUSとGNDのみとなっています。こちらもピンヘッダをワークショップ前に半田付けしています。ただワークショップ本番で人によって給電がうまく行ったり行かなかったりしたので、スピーカーの給電はRP2040経由でやらないで、PCやコンセントからの方が良さそうです。

基本を理解する - パート1

パート1では、電子工作の基本の理解と、実際何ができるのか?というところを中心に手を動かしながら学びます。
作品紹介では、Arduinoを使ったハード寄りのDIYチックな作品や、CGツールとの連携、メディアアート、弊社の作品でどのように電子工作がなされているのかを改めて確認してみる、ということをしました。

Arduino BoardとIDEの違い
環境構築も各々やってもらいました

また、タクトスイッチやボリューム(可変抵抗)がどのような仕組みで動作するのかをブレッドボード上に回路を実装しながら、開放を避けるためのプルアップ回路の理解など、重要な原理を確認していきました。8鍵分の回路の実装が想像していたよりもかなり時間がかかってしまったのが反省です。

(参考動画)

音を出す - パート2

基礎を理解したところで、次は音出しに入っていきます。今回はMozziというライブラリを利用した実装に取り組むため、GitHubから環境構築を行うという少々ややこしい作業も参加者自身で取り組みました。振幅、周波数、波形の関係、ADSRフィルターの再現、MIDIのNote numberを使えばタクトスイッチを鍵盤として用いることができることなどをMaxを用いてグラフィカルに解説し、サンプルファイルを動かしながら確認しました。

FMシンセサイザーを作る - パート3

音が出せたので、今回の目標であるFMシンセの実装に入ります。
はじめに、そもそも音を合成するとはなんなのか?合成の仕方(加算合成、減算合成、変調合成)の違いの確認、変調合成のパラメータを解説しました。

(参考動画)

Harmonicity ratio, Modulator indexの関係とその作用

最終的には、モジュレーターを2個直列にして2段のFMを作り、それで音を鳴らしてみる、ということをしました。

ワークショップを開いてみて

とりあえず、全員が音を出して演奏ができた状態まで持って行けて、各々黙々と楽しそうにボリュームをいじっているところを見れたことがとても嬉しかったです。

一方で、パート1でブレッドボードへの回路の実装を行ったのですが、時間が大幅に押してしまい後々の解説の時間が取られてしまったことが一番大きな反省でした。今後はレクチャーする要素を絞りつつ、今年の目標である「音をやる」をまたチームで実践できたらもっと楽しそうです。

可変抵抗をボリュームから感圧センサーや、身近にある通電性のある物に変えて、楽器然としている設から遠く離れていけたら面白い体験が生まれそうだなと思います。一方で、基盤から制作して一つのガジェットを完成させる、みたいなことにも興味があり…ワークショップの範囲を超えているのかもしれませんが、機会があれば是非やってみたいです。



Think & Craftでは現在メンバー募集中です。
是非お気軽にご連絡ください。


Think & Craft 公式SNS
X:https://twitter.com/thinkandcraft
Instagram:https://www.instagram.com/_thinkandcraft/
Facebook:https://www.facebook.com/thinkandcrafttokyo/
YouTube:https://www.youtube.com/@thinkandcrafttokyo

Think & Craft Webサイト