Simple oscillator, but no sound with web audio API on IOS

javascript, web-audio-api

Solution

iOS will only let you start playing sound with the Web Audio API as a result of a user action.

Try putting that code inside of some kind of event handler.

var elem = document.getElementById('play'),
  audioContext = new (window.AudioContext || window.webkitAudioContext),
  osc = audioContext.createOscillator();

osc.connect(audioContext.destination);
if (osc.noteOn) osc.start = osc.noteOn
osc.frequency.value = 440;

play.addEventListener('click', function() {
  osc.start(0);
}, false);

Problem

Here is a super simple example that I am trying to run on an iphone in chrome. Other web audio API examples like this one http://alxgbsn.co.uk/wavepad/ work, but not mine :( ``` <!DOCTYPE html> <html> <head> <title></title> </head> <body> <script> var audioContext, osc audioContext = new (window.AudioContext || window.webkitAudioContext); osc = audioContext.createOscillator() osc.connect(audioContext.destination) if (osc.noteOn) osc.start = osc.noteOn osc.start(0) osc.frequency.value = 440 </script> </body> </html> ``` Any idea what's wrong? EDIT To summarize the answer : - start the audio in response to user interaction - check that mute switch is off

Original source