Upgrade to Pro — share decks privately, control downloads, hide ads and more …

WebAudioと音の話

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.

 WebAudioと音の話

WebAudioの初歩の初歩

Avatar for kalibora

kalibora

July 28, 2015
Tweet

More Decks by kalibora

Other Decks in Programming

Transcript

  1. ·ͣ͸ԻΛग़ͯ͠ΈΑ͏ var  ctx  =  new  AudioContext();   var  osc  =

     ctx.createOscillator();   osc.connect(ctx.destination);   osc.start(0);   osc.stop(ctx.currentTime  +  0.5); IUUQTHJTUHJUIVCDPNLBMJCPSBDGCEBFCB
  2. 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 ԻΛग़͢ ૷ஔ εϐʔΧʔ ͷΑ͏ͳ ΋ͷ
  3. 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
  4. 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
  5. 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
  6. 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 ϘϦϡʔϜ ϑΣʔμʔΈ ͍ͨͳ΋ͷ
  7. DUY"VEJP$POUFYU ιʔεϊʔυ " σεςΟωʔ γϣϯϊʔυ ϊʔυ " ϊʔυ # ιʔεϊʔυ

    # ϊʔυ $ ੨͍࢛֯͸ϊʔυͱ ݺ͹ΕΔ΋ͷͰ ͦΕΒΛෳ਺૊Έ߹Θͤͯ ͍ΖΜͳԻ͕࡞ΕΔΈ͍ͨͰ͢