Angular meetup #2での資料です
AngularJSͱWeb Audio API͡ΊͯΈ·ͨ͠
View Slide
ࣗݾհ
pastelIncژࡏॅࣄͰPHPΑΖ͓͘͠ئ͍͠·͢
ࠓͷඪ
• Web Audio APIͷϫΫϫΫΛײͯ͡Β͏• AngularͰ͑Δ͜ͱΛͬͯΒ͏• Web Audio APIΛҰճ৮Γ͍ͨͱࢥͬͯΒ͏
Web Audio APIͷ৺͕༂ΔαʔϏεୡ
X-Soundhttps://github.com/Korilakkuma/X-Sound
Audio Trackrhttps://github.com/chrisbateman/Audio-Trackr
ઌͷYAPCʹͯ
WebAudio 300bps FSKmodemhttps://github.com/cho45/WebAudio-Modemhttp://cho45.stfuawsc.com/WebAudio-Modem/FSK/modem.html
AngularҎ֎ʹͪΖΜ͋Γ·͢http://chromium.googlecode.com/svn/trunk/samples/audio/index.html
Web Audio APIͷ͜ͱΛΔ
Web Audio APIͷඪ• WebϕʔεͷήʔϜɺΠϯλϥΫςΟϒͳମݧΛఏڙ͢Δ• ϛΩγϯάɺϓϩηγϯάɺϑΟϧλϦϯάॲཧػೳΛͨͤΔ
Web Audio APIͷػೳ• ϨΠςϯγʔͳԻͷ࠶ੜ• JavaScriptͰͷΦʔσΟΦετϦʔϜͷ߹ͱՃ• ҟͳΔAudioNodeΛҙʹܨ͛Δػೳ ʢϞδϡϥʔϧʔςΟϯάʣ• 3DήʔϜΛαϙʔτ͢ΔۭؒԻڹʹυοϓϥʔͱ͔• ΦγϨʔλʹൃৼث ʢपظੑΛͭ࣋ଓతͳৼಈΛൃੜͤ͞Δஔʣ
ϞδϡϥʔϧʔςΟϯάʁ
ྫ
ϞδϡϥʔϧʔςΟϯά• ͯ͢ͷଓAudioContext෦ͰߦΘΕΔ• ιʔεϊʔυʹೖྗ͕ͳ͍• σΟεςΟωʔγϣϯϊʔυʹग़ྗ͕ͳ͍• σΟεςΟωʔγϣϯϊʔυ͕࠷ऴతͳΦʔσΟΦϋʔυΣΞʹͭͳ͕Δ• ϑΟϧλͳͲͷϊʔυ͜ͷ̎ͭͷؒʹஔ͢Δ
AudioNode• ೖྗग़ྗΛ࣋ͭ• ೖྗΛॲཧ͠ɺग़ྗʹΦʔσΟΦ৴߸ΛૹΓग़͢• ग़ྗ1ͭҎ্ͷνϟϯωϧΛ࣋ͭ• ෳͷೖྗʹରͯ͋͠͠ΘͤΛߦ͏
ιʔεͱͳΔAudioNode• OscillatorNode ʹൃৼثɻपظతͳܗΛग़ྗɻपͱܗઃఆ͕Ͱ͖Δ• AudioBufferSourceNode ʹόοϑΝσʔλΛग़ྗɻ࠶ੜɺϧʔϓઃఆ͕Ͱ͖Δ• MediaElementAudioSourceNode ʹaudioλάΛιʔεʹͯ͠ग़ྗɻ• MediaStreamAudioSourceNode =WebRTCͷMediaStreamΛιʔεʹग़ྗɻϚΠΫ৴߸ͳͲ
AudioContext• Web Audio APIͷى• AudioNodeͷ࡞Λ੍ޚ͢Δ• ೖग़ྗ༻ͷAudioNodeͷੜ͔͜͜Β• ҰͭͷΠϯελϯεͰෳͷೖྗʹରԠͰ͖Δ
Πϝʔδͣ͠Β͍ͱࢥͬͨΒ
Web Audio PlayGroundhttps://github.com/cwilso/WebAudio
Web Audio APIͷ͡Ί͔ͨin Angular
ࡐ• ਖ਼ݭϓϨΠϠʔ• ؆୯ͳྫͰϞδϡϥʔϧʔςΟϯάΛཧղ͢Δ• start/stopϘλϯͰൃੜΛίϯτϩʔϧ• ৼ෯ௐઅػೳ͚ͭΔ
ܨ͛Δϊʔυͨͪ• ιʔεϊʔυ ʹOscillatorNode• ϘϦϡʔϜૢ࡞ ʹGainNode• σεςΟωʔγϣϯϊʔυ ʹAudioDestinationNode
ਤʹ͢Δͱ
context• factoryϝιουͰAudioContextΛαʔϏεʹొ• ҰΠϯελϯεΛ࡞ͨ͠ΒͦΕ͖ͬΓͰ͍͍• AudioContextΛϥοϓͯ͋͛͠Δ͚ͩ
oscillator• ਖ਼ݭΛίϯτϩʔϧ͢ΔαʔϏε• start/stop/volumeΛίϯτϩʔϧͰ͖Δ
player• ΧελϜdirectiveʹ࣮• ϢʔβʔͷϘλϯΫϦοΫʹ߹ΘͤͯΦγϨʔλΛ͏
ਖ਼ݭฉ͑ͨ͜ʂ
stopͯ͠࠶start
Ͱ͖ͳ͍ʂ
ͳͥͳΒ• Ұstart→stopͤͨ͞ιʔεϊʔυ࠶࡞ͬͯଓͯ͋͛͠ͳ͍ͱ͍͚ͳ͍• Ұstartͨ͠ιʔεϊʔυʹ࠶startΛ͢ΔͱΤϥʔͳͷͰ࠶start͢ΔલʹstopΛߦ͏
Ͳ͏͢Δ͔• stopͨ͠λΠϛϯάͰ࠶ΦγϨʔλͷ࡞ɺଓΛߦ͏• $watchͰϓϨΠϠʔͷ࠶ੜঢ়گΛνΣοΫͯ͠stopͨ͠λΠϛϯάʹˢΛߦ͏• playerʹ࣮ͨ͠
݁Ռ
ࠔͬͨ• GainNodeҎ֎ͷAudioNode͕૿͑ͨͱ͖Ͳ͏͢Δͷ͔• start/stopͷνΣοΫdirective?service?ͲͪΒʹॻ͘ͷ͔໎ͬͨ• Իָ৴߸ॲཧͷઐ༻ޠ͕ଟͯ͘ΦʔσΟΦɺԻʹؔ͢Δ͕ࣝٻΊΒΕΔ
·ͱΊ• Web Audio API͢Ͱʹଟ࣮͘ྫ͕͋Δ ϥΠϒϥϦزΒ͔͋Δ• AudioContext͕ར༻ͷىʹͳΔ• OscillatorNodestopΛ࣮ߦ͢Δͱ࠶ੜͯ͋͛͠Δඞཁ͕͋Δ
ษڧͨ͠ใݩ• https://webmusicdevelopers.appspot.com/codelabs/webaudio/index.html?ja-jp• http://g200kg.github.io/web-audio-api-ja/• http://mmckegg.github.io/web-audio-school/• http://qiita.com/mohayonao/items/d79e9fc56b4e9c157be1
͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ