Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
WebAudioと音の話
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
kalibora
July 28, 2015
Programming
460
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
WebAudioと音の話
WebAudioの初歩の初歩
kalibora
July 28, 2015
More Decks by kalibora
See All by kalibora
QA環境で誰でも自由自在に現在時刻を操って検証できるようにした話
kalibora
0
560
PHPのアノテーション(アトリビュート)からOpenAPIのドキュメントを出力し、レスポンスもそれを元にシリアライズすることで仕様と実装を乖離させず、色々楽できたよって話
kalibora
0
260
Swagger (OpenAPI) と PHPStan で REST API でも型安全っぽく使う
kalibora
0
3.5k
Symfony2 の Functional Test のメモリ使用量と実行時間を削減した話
kalibora
0
25
Other Decks in Programming
See All in Programming
Loosening the Reins: Go Generics Get More Flexible
kuro_kurorrr
0
360
Hono + Inertia + React で LP を構築した話
oukayuka
2
190
go-spidermonkeyでAIエージェントのCode Modeを実装する
syumai
3
1.5k
仕様駆動開発の消費期限
watany
20
9.2k
[DroidKaigi 26] How We Moved from Android Studio to Slack
thisaay
0
140
Claude Code全社展開のためにやったことn選~プラグイン302個・コミッター271人を支えるために~
kenchan
5
1.8k
in-process GraphQL のすすめ #ginzajs
izumin5210
4
1.5k
AIを上手に使っていこうとしたら越境せざるを得なくなった話 〜実践1年で見えた境界を越えなければならない理由と進め方〜 / Crossing borders with AI
tomoyakitaura
2
910
Hello, Hiroshima Geospatial Data! — Exploring DoboX with Python
ra0kley
0
150
AIと壁打ちしながら進めるコスト管理
fufuhu
2
1.9k
源内ハンズオン概要編
hideg
0
240
不幸な GC
chencmd
0
850
Featured
See All Featured
Heart Work Chapter 1 - Part 1
lfama
PRO
8
36k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
270
Code Reviewing Like a Champion
maltzj
528
40k
GitHub's CSS Performance
jonrohan
1033
470k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.3k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
67
57k
What does AI have to do with Human Rights?
axbom
PRO
1
2.3k
Evolving SEO for Evolving Search Engines
ryanjones
0
270
How STYLIGHT went responsive
nonsquared
100
6.3k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
490
Agile that works and the tools we love
rasmusluckow
331
22k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
440
Transcript
8FC"VEJPͱԻͷ
8FC"VEJPͬͯ ͬͯ·͔͢ʁ
8FC"VEJPͱʁ w 8FC"VEJP"1*8$ʹΑͬͯ։ൃ͞Ε͍ͯ ΔɺΣϒΞϓϦέʔγϣϯ༻ͷԻॲཧͱԻ ߹ͷͨΊͷߴϨϕϧ+BWB4DSJQU"1* w ओཁͳઃܭύϥμΠϜɺ"VEJP/PEFΦϒδΣ ΫτΛͭͳ͗ɺԻϧʔτάϥϑΛ࡞Δܗɻ࣮ ࡍͷॲཧɺओʹΣϒϒϥβͷ࣮Ͱߦ ΘΕΔ͕ɺ+BWB4DSJQUͰॲཧͯ͠߹͢Δ
͜ͱՄೳ
None
+BWB4DSJQUͰʂ ϒϥβ্Ͱʂ Ի͕ग़ͤΔʂ
Ͱ୯७ʹ XBWͱ͔NQͱ͔Λ ࠶ੜ͢ΔΘ͚͡Όͳ͍Α
ԻΛ߹ͨ͠Γͯ͠ ͲΜͳԻͰग़ͤΔΑ ʢཧ্ʣ
·ͣԻΛग़ͯ͠ΈΑ͏ var ctx = new AudioContext(); var osc =
ctx.createOscillator(); osc.connect(ctx.destination); osc.start(0); osc.stop(ctx.currentTime + 0.5); IUUQTHJTUHJUIVCDPNLBMJCPSBDGCEBFCB
Ͳ͏Ͱ͔͢ʁʂ Ի͕Ͱ·͔ͨ͠ʁ
DUY"VEJP$POUFYU ίʔυΛղઆ PTD var ctx = new AudioContext(); var
osc = ctx.createOscillator(); osc.connect(ctx.destination); osc.start(0); osc.stop(ctx.currentTime + 0.5); EFTUJOBUJPO DPOOFDU TUBSU TUPQ ԻΛग़͢ ஔ εϐʔΧʔ ͷΑ͏ͳ ͷ
ͱ͜ΖͰɺԻۭͬͯؾ தΛΘΔͰ͢ΑͶʁ
͖ͬ͞ग़ͨ͠Իͬͯ ͲΜͳͷܗʢܗʣ Λ͍ͯ͠Δͱࢥ͍·͔͢ʁ
͜ΜͳܗΛ͍ͯ͠·͢
͜ͷܗΛ ਖ਼ݭʢTJOFʣ ͱݴ͍·͢
දతͳܗҰཡ TRVBSFʢۣܗʣ TJOFʢਖ਼ݭʣ USJBOHMFʢࡾ֯ʣ TBXUPPUIʢڒࣃঢ়ʣ
ͲΕ໊લ௨ΓͷܗΛ ͍ͯ͠·͢
࣮ࡍʹͦΕͧΕͷ ܗΛ໐Βͯ͠ΈΑ͏
var ctx = new AudioContext(); var osc = ctx.createOscillator();
var types = ['sine', 'square', 'triangle', 'sawtooth']; var typeIdx = 0; var timerId = setInterval(function () { if (typeIdx >= types.length) { clearInterval(timerId); return; } console.log(types[typeIdx]); osc.type = types[typeIdx]; // set waveform here if (typeIdx === 0) { osc.start(0); osc.stop(ctx.currentTime + types.length * 1); } typeIdx++; }, 1000); osc.connect(ctx.destination); IUUQTHJTUHJUIVCDPNLBMJCPSBCGCDBBEGBBG
ؙ͍ܗؙ͍Ի ΪβΪβͷܗΪβΪβͨ͠Ի ʹฉ͑͜·ͤΜ͔ʁ
ͱ͍͏Θ͚Ͱɺ
Ի৭ͷܗʢܗʣ Ͱܾ·Γ·͢
ͱ͜ΖͰɺ
Իͱ͍͏ͷͷཁૉ Ի৭͚ͩͰ͋Γ·ͤΜ
Իͷཁૉ w Ի৭ʢUJNCSF UPOFʣ w େ͖͞ʢMPVEOFTTʣ w ߴ͞ʢQJUDIʣ
Ͱେ͖͞ͱߴ͞Կ Ͱܾ·ΔͷͰ͠ΐ͏͔ʁ
ج४ͱͳΔԻ
େ͖͍Ի ৼ෯
ߴ͍Ի प
Ͱɺ पΛมߋͯ͠ Իͷߴ͞Λมߋͯ͠Έ·͢
var ctx = new AudioContext(); var osc = ctx.createOscillator();
var freqs = [261.63, 293.67, 329.63, 349.23, 392.00, 440.00, 493.88, 523.23]; var freqIdx = 0; var timerId = setInterval(function () { if (freqIdx >= freqs.length) { clearInterval(timerId); return; } console.log(freqs[freqIdx]); osc.frequency.value = freqs[freqIdx]; // set frequency if (freqIdx === 0) { osc.start(0); osc.stop(ctx.currentTime + freqs.length * 1); } freqIdx++; }, 1000); osc.connect(ctx.destination); IUUQTHJTUHJUIVCDPNLBMJCPSBDEGC
࣍ʹɺ ৼ෯Λίϯτϩʔϧͯ͠ɺ Իͷେ͖͞Λมߋͯ͠Έ·͢
var ctx = new AudioContext(); var osc = ctx.createOscillator();
var gain = ctx.createGain(); var levels = [1.0, 0.9, 0.8, 0.7, 0.6, 0.5, 0.4, 0.3, 0.2, 0.1]; var levelIdx = 0; var timerId = setInterval(function () { if (levelIdx >= levels.length) { clearInterval(timerId); return; } console.log(levels[levelIdx]); gain.gain.value = levels[levelIdx]; // set gain if (levelIdx === 0) { osc.start(0); osc.stop(ctx.currentTime + levels.length * 0.5); } levelIdx++; }, 500); osc.connect(gain); gain.connect(ctx.destination); IUUQTHJTUHJUIVCDPNLBMJCPSBGCFGGBCB
DUY"VEJP$POUFYU ίʔυΛղઆ PTD var ctx = new AudioContext(); var
osc = ctx.createOscillator(); var gain = ctx.createGain(); (snip) gain.gain.value = levels[levelIdx]; // set gain (snip) osc.connect(gain); gain.connect(ctx.destination); EFTUJOBUJPO DPOOFDU HBJO DPOOFDU ϘϦϡʔϜ ϑΣʔμʔΈ ͍ͨͳͷ
DUY"VEJP$POUFYU ιʔεϊʔυ " σεςΟωʔ γϣϯϊʔυ ϊʔυ " ϊʔυ # ιʔεϊʔυ
# ϊʔυ $ ੨͍࢛֯ϊʔυͱ ݺΕΔͷͰ ͦΕΒΛෳΈ߹Θͤͯ ͍ΖΜͳԻ͕࡞ΕΔΈ͍ͨͰ͢
͓͠·͍
TJOFΛ߹͍ͯ͠Ζ Μͳܗ͕࡞ΕΔ https://www.google.co.jp/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=sin(x) %2Bsin(2x)*(1%2F2)%2Bsin(3x)*(1%2F3)%2Bsin(4x)*(1%2F4)%2Bsin(5x)*(1%2F5)%2Bsin(6x)*(1%2F6)%2Bsin(7x)*(1%2F7) https://www.google.co.jp/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=sin(x) %2Bsin(3x)*(1%2F3)%2Bsin(5x)*(1%2F5)%2Bsin(7x)*(1%2F7)%2Bsin(9x)*(1%2F9)%2Bsin(11x)*(1%2F11)