クモのようにコツコツと

フロントエンドエンジニア イイダリョウの技術ブログ。略称「クモコツ」

【Tone.js & Next.js】Tone.jsでシンセジェネレーターを作った

Tone.jsでシンセサイザーの音作りができるシンセジェネレーターを作りました。シンセサイザーの音の作り方を理解したい&Tone.jsでシンセサイザーの音作りがどこまでできるのかを検証する目的です。当初思い描いていたものは一通り実現できました!

【目次】

作ったもの

synth-generator.vercel.app

  • VCO(3OSC + Noise)、VCF、VCA、3EG、3LFO、Effectorのシンセサイザー
  • Tone.jsのシンセ機能でブラウザのみでシンセ音を出すことができる
  • パラメーターをどのように変えたらどういう音が出るかを調べることができる

※使い方:このアプリについて | シンセジェネレーター

コード

リポジトリ

github.com

  • Tone.js(Web Audio API)の情報は少なく、Tone.jsのドキュメントは体系的ではなく網羅的で結構難産だった
  • ChatGPTにもいろいろ質問しながら進めた。解決やヒントになった回答も多いが間違った回答も結構あった
  • EG、LFOなおを個別に設定するためにSynthではなくOscilatorを大元の音源にした
  • そこからアナログシンセサイザーの仕組みを再現するためにFilter、Gain、Envelope、LFOなどに接続した
  • 接続に重要なのはconnectでconnectの流れ&繋ぎ方を理解することが重要とわかった
  • そして一番最後に音を出したい箇所でtoDestination()を実行するとそこでの結果を聞くことができる
  • 最終的にシンセサイザーの音をTone.jsだけでも実現することができた

検討したこと、手こずったこと ※イシュー:Issues · ryo-i/synth-generator · GitHub

今回の経験を元に来年以降、電子音も凝ったコンテンツを作っていく所存です!

参考文献

昔、電子音楽をやろうとして買ってみた本、今回の経験で当時よりも理解が進みました♪

  • シンセサイザー入門 音作りが分かるシンセの教科書(松前公高, 2007)
  • エンジニア直伝!エフェクト・テクニック基礎講座(2004)