+ // http://lilting.ch/3323.html
+ // 【間に合わせ】iOS9系でのWebAudioの音割れ対処について
+ /*
+ if( X_WebAudio_needRateFix ){
+ X_WebAudio_context.close();
+ X_WebAudio_context = new X_WebAudio_Context;
+ }; */
+
+ /*
+ * TODO X_TEMP へ
+ * http://qiita.com/simiraaaa/items/79a9ac972cc76fb58d93
+ * [WebAudio API] iOS9で音が歪む、遅い、低い、割れる等の回避方法
+ */
+ if( X_WebAudio_needRateFix ){
+ X_TEMP.webAudioSampleRateFix = function( sampleRate ){
+ X_TEMP.webAudioDummyPlay( sampleRate );
+
+ if( true || X_WebAudio_context[ 'sampleRate' ] !== sampleRate ){
+ // alert( '[debug]iOSで音割れを検知、修復コードを実施 ctxSR:' + X_WebAudio_context[ 'sampleRate' ] + ' abfSR:' + sampleRate );
+
+ X_WebAudio_context.close && X_WebAudio_context.close();
+ X_WebAudio_context = new X_WebAudio_Context;
+
+ X_TEMP.webAudioDummyPlay( sampleRate );
+ };
+
+ delete X_TEMP.webAudioSampleRateFix;
+ delete X_TEMP.webAudioDummyPlay;
+ };
+ X_TEMP.webAudioDummyPlay = function( sampleRate, source ){
+ source = X_WebAudio_context[ 'createBufferSource' ]();
+ source.buffer = X_WebAudio_context[ 'createBuffer' ]( 1, 1, sampleRate );
+ source[ 'connect' ]( X_WebAudio_context[ 'destination' ] );
+ source.start ? source.start( 0 ) : source[ 'noteOn' ] ? source[ 'noteOn' ]( 0 ) : source[ 'noteGrainOn' ]( 0 );
+ };
+ };