oscillatorで楽器をつくりたい 2
TRANSCRIPT
![Page 1: Oscillatorで楽器をつくりたい 2](https://reader034.vdocuments.site/reader034/viewer/2022042512/55a36b0a1a28ab38108b4751/html5/thumbnails/1.jpg)
Oscillator で楽器をつくりたい!
2
![Page 2: Oscillatorで楽器をつくりたい 2](https://reader034.vdocuments.site/reader034/viewer/2022042512/55a36b0a1a28ab38108b4751/html5/thumbnails/2.jpg)
自己紹介
まっは@mach3ss
![Page 3: Oscillatorで楽器をつくりたい 2](https://reader034.vdocuments.site/reader034/viewer/2022042512/55a36b0a1a28ab38108b4751/html5/thumbnails/3.jpg)
前回までのあらすじ
・Web Audio API の Oscillator で楽器をつくってみた
- http://mach3.github.com/oscy.js ( デモ)
- http://github.com/mach3/oscy.js (リポジトリ)
・わりとフリーダムな感じ
・音階を意識して演奏とか無理(幼少からの訓練が必要)
![Page 4: Oscillatorで楽器をつくりたい 2](https://reader034.vdocuments.site/reader034/viewer/2022042512/55a36b0a1a28ab38108b4751/html5/thumbnails/4.jpg)
今回は、思い通りの音階で弾けるやつをつくりたい
![Page 5: Oscillatorで楽器をつくりたい 2](https://reader034.vdocuments.site/reader034/viewer/2022042512/55a36b0a1a28ab38108b4751/html5/thumbnails/5.jpg)
音階をつけれるようにする
・インターフェースはピアノの鍵盤風の物を採用。
・ただ鍵盤をおして音階を奏でるのでは普通のシンセなので、
弦楽器のように中間音を出せるようにしたい。
A B C
![Page 6: Oscillatorで楽器をつくりたい 2](https://reader034.vdocuments.site/reader034/viewer/2022042512/55a36b0a1a28ab38108b4751/html5/thumbnails/6.jpg)
音階の変更のおさらい
周波数(frequency)を指定する事で、音階を変更する事ができる
var ctx = new AudioContext();var osc = ctx.createOscillator();var gain = ctx.createGain();
osc.frequency.value = 440; // A の音
osc.connect(gain);gain.connect(ctx.destination);osc.start(0);
![Page 7: Oscillatorで楽器をつくりたい 2](https://reader034.vdocuments.site/reader034/viewer/2022042512/55a36b0a1a28ab38108b4751/html5/thumbnails/7.jpg)
どの音階がどの周波数なのか?
![Page 8: Oscillatorで楽器をつくりたい 2](https://reader034.vdocuments.site/reader034/viewer/2022042512/55a36b0a1a28ab38108b4751/html5/thumbnails/8.jpg)
音階と周波数の関係
A0220Hz
A1440Hz
A2880Hz
オクターブ(12音)
オクターブ(12音)
・基本となる A の音が 440Hz
・オクターブ(12音)下がると1/2の 220Hz、上がると2倍の880Hz になる
・あがるごとに2の 12乗根(1.05946309436)が乗算されていく(via 知恵袋)
・初項440、公比1.05946309436の等比数列になる
![Page 9: Oscillatorで楽器をつくりたい 2](https://reader034.vdocuments.site/reader034/viewer/2022042512/55a36b0a1a28ab38108b4751/html5/thumbnails/9.jpg)
つまりきっとこんなかんじ
a = arn n-1
周波数 = 440 * Math.pow(1.05946309436, n-1)
![Page 10: Oscillatorで楽器をつくりたい 2](https://reader034.vdocuments.site/reader034/viewer/2022042512/55a36b0a1a28ab38108b4751/html5/thumbnails/10.jpg)
実装してみよう
![Page 11: Oscillatorで楽器をつくりたい 2](https://reader034.vdocuments.site/reader034/viewer/2022042512/55a36b0a1a28ab38108b4751/html5/thumbnails/11.jpg)
・Canvas で鍵盤を描き、触ったポジ
ションによって周波数を切り替える
・鍵盤の中心がそのキーの音に合うよ
うにし、その周辺は中間音にする
A B C D
A
![Page 12: Oscillatorで楽器をつくりたい 2](https://reader034.vdocuments.site/reader034/viewer/2022042512/55a36b0a1a28ab38108b4751/html5/thumbnails/12.jpg)
やってみた結果
・むずかしい
・ちょっとキーの中心からずれると音痴に聞こえる
・訓練が必要(幼少からでなくてもよい)
![Page 13: Oscillatorで楽器をつくりたい 2](https://reader034.vdocuments.site/reader034/viewer/2022042512/55a36b0a1a28ab38108b4751/html5/thumbnails/13.jpg)
おまけ
・iOS8になっても、まだ接頭辞をつけなければいけない模様。
( webkitAudioContext)
・ iOS8になっても、やっぱりユーザーアクション(タッチイベント
等)を起点にしないと音を鳴らせない模様。
![Page 14: Oscillatorで楽器をつくりたい 2](https://reader034.vdocuments.site/reader034/viewer/2022042512/55a36b0a1a28ab38108b4751/html5/thumbnails/14.jpg)
ご清聴ありがとうございました。