14
Oscillator で 楽器をつくりたい! 2

Oscillatorで楽器をつくりたい 2

Embed Size (px)

Citation preview

Page 1: Oscillatorで楽器をつくりたい 2

Oscillator で楽器をつくりたい!

2

Page 2: Oscillatorで楽器をつくりたい 2

自己紹介

まっは@mach3ss

Page 3: Oscillatorで楽器をつくりたい 2

前回までのあらすじ

・Web Audio API の Oscillator で楽器をつくってみた

- http://mach3.github.com/oscy.js ( デモ)

- http://github.com/mach3/oscy.js (リポジトリ)

・わりとフリーダムな感じ

・音階を意識して演奏とか無理(幼少からの訓練が必要)

Page 4: Oscillatorで楽器をつくりたい 2

今回は、思い通りの音階で弾けるやつをつくりたい

Page 5: Oscillatorで楽器をつくりたい 2

音階をつけれるようにする

・インターフェースはピアノの鍵盤風の物を採用。

・ただ鍵盤をおして音階を奏でるのでは普通のシンセなので、

弦楽器のように中間音を出せるようにしたい。

A B C

Page 6: Oscillatorで楽器をつくりたい 2

音階の変更のおさらい

周波数(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

どの音階がどの周波数なのか?

Page 8: Oscillatorで楽器をつくりたい 2

音階と周波数の関係

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

つまりきっとこんなかんじ

a = arn n-1

周波数 = 440 * Math.pow(1.05946309436, n-1)

Page 10: Oscillatorで楽器をつくりたい 2

実装してみよう

Page 11: Oscillatorで楽器をつくりたい 2

・Canvas で鍵盤を描き、触ったポジ

ションによって周波数を切り替える

・鍵盤の中心がそのキーの音に合うよ

うにし、その周辺は中間音にする

A B C D

A

Page 12: Oscillatorで楽器をつくりたい 2

やってみた結果

・むずかしい

・ちょっとキーの中心からずれると音痴に聞こえる

・訓練が必要(幼少からでなくてもよい)

Page 13: Oscillatorで楽器をつくりたい 2

おまけ

・iOS8になっても、まだ接頭辞をつけなければいけない模様。

( webkitAudioContext)

・ iOS8になっても、やっぱりユーザーアクション(タッチイベント

等)を起点にしないと音を鳴らせない模様。

Page 14: Oscillatorで楽器をつくりたい 2

ご清聴ありがとうございました。