Изменения в веб-аудио
Мы в Google любим стандарты. Наша цель — создать веб-платформу, соответствующую стандартам. Одним из небольших недостатков в течение некоторого времени была реализация API веб-аудио с префиксом webkit (в частности, объекта webkitAudioContext) и некоторые устаревшие части веб-аудио, которые мы продолжаем поддерживать.
Первоначально планировалось, что в Chrome 36 будет удалена поддержка объекта webkitAudioContext с префиксом, поскольку мы начали поддерживать объект AudioContext без префикса. Это оказалось более проблематичным, чем ожидалось, поэтому Chrome 36 поддерживает как префиксы, так и префиксы — однако даже в вновь представленном webkitAudioContext несколько устаревших методов и атрибутов, таких как createGainNode и createJavaScriptNode, были удалены. Короче говоря, в Chrome 36 webkitAudioContext и AudioContext являются псевдонимами друг друга; между ними нет никакой разницы в функциональности.
Мы полностью удалим поддержку префикса после Chrome 36, вероятно, через пару релизов. Мы объявим здесь, когда изменение станет неизбежным, и продолжаем обращаться к авторам с просьбой исправить их приложения веб-аудио.
Почему мы сделали это, а не вернулись к предыдущей реализации? Ну, отчасти мы не хотели отходить слишком далеко назад; мы уже удалили эти API, и в качестве приятного побочного эффекта этого псевдонимирования приложения могут прекрасно работать в Firefox, который никогда не поддерживал объект AudioContext с префиксом (и это совершенно правильно!) в своей поддержке веб-аудио, первоначально выпущенной прошлой осенью.
Остальная часть этого обновления содержит руководство по исправлению ошибок в вашем коде из-за этого изменения. Самое замечательное в решении этих проблем заключается в том, что ваш код, скорее всего, будет работать и в Firefox! (Долгое время я думал, что мое приложение Vocoder сломалось из-за реализации Firefox, но оказалось, что это одна из этих проблем!)
Если вы просто хотите приступить к работе, вы можете взглянуть на библиотеку обезьяньих патчей, которую я написал для приложений, написанных на старом коде веб-аудио - это может помочь вам начать работу за минимальное время, поскольку она будет соответствующим образом назначать псевдонимы объектам и методам. Действительно, патчи, перечисленные в библиотеке, являются хорошим путеводителем по тому, что изменилось.
Прежде всего
Любые ссылки на window.webkitAudioContext вместо этого следует делать на window.AudioContext . Часто это исправляется с помощью простого:
window.AudioContext = window.AudioContext || window.webkitAudioContext;
Если ваше приложение отвечает что-то вроде «К сожалению, ваш браузер не поддерживает веб-аудио. Пожалуйста, используйте Chrome или Safari». - вполне вероятно, что он явно ищет webkitAudioContext . Плохой разработчик! Вы могли бы поддерживать Firefox месяцами!
Но есть и другие, более тонкие удаления кода, некоторые из которых могут быть менее очевидными.
- Константы перечисляемого типа BiquadFilter для атрибута
.type(который теперь является строкой) больше не отображаются в объектеBiquadFilterNode, и мы не поддерживаем их в атрибуте.type. Таким образом, вы больше не используете.LOWPASS(или 0) — вы устанавливаете его на «lowpass». - Кроме того, атрибут
Oscillator.typeтеперь также является строковым перечисляемым типом — не более.SAWTOOTH. -
PannerNode.typeтеперь также является строковым перечисляемым типом. -
PannerNode.distanceModelтеперь также является строковым перечисляемым типом. -
createGainNodeпереименован вcreateGain -
createDelayNodeбыл переименован вcreateDelay -
createJavaScriptNodeбыл переименован вcreateScriptProcessor -
AudioBufferSourceNode.noteOn()теперь заменен наstart() -
AudioBufferSourceNode.noteGrainOn()теперь также заменен наstart() -
AudioBufferSourceNode.noteOff()переименован вstop() -
OscillatorNode.noteOn()переименован вstart() -
OscillatorNode.noteOff()переименован вstop() -
AudioParam.setTargetValueAtTime()переименован вsetTargetAtTime() -
AudioContext.createWaveTable()иOscillatorNode.setWaveTable()теперь переименованы вcreatePeriodicWave() andsetPeriodicWave()`. -
AudioBufferSourceNode.loopingбыл удален в пользу.loop -
AudioContext.createBuffer(ArrayBuffer, boolean)для синхронного декодирования фрагмента закодированных аудиоданных был удален. Синхронные вызовы, выполнение которых занимает много времени, являются плохой практикой кодирования; вместо этого используйте асинхронный вызов decodeAudioData. Это одно из наиболее сложных изменений — вам нужно фактически изменить логический поток — но это гораздо лучшая практика. Эхсан Ангкари из Mozilla написал хороший пример того, как это сделать, в своем посте о преобразовании в стандартное веб-аудио .
Многие из них (например, переименование createGainNode и удаление синхронного декодирования в createBuffer), очевидно, будут отображаться в консоли инструментов разработчика как ошибка, однако некоторые другие, например, такое использование:
MULTI_LINE_CODE_PLACEHOLDER_1
не будет отображаться вообще и произойдет молчаливый сбой (теперь myFilterNode.BANDPASS будет разрешен в неопределенное значение, а попытка установить .type в неопределенное значение просто не приведет к какому-либо эффекту. Это, кстати, и было причиной сбоя вокодера.) Аналогично, простое присвоение filter.type числу раньше работало:
myFilterNode.type = 2;
Но теперь вам нужно использовать перечисление строк:
myFilterNode.type = “bandpass”;
Итак, вы можете захотеть просмотреть свой код по следующим терминам:
-
webkitAudioContext -
.LOWPASS -
.HIGHPASS -
.BANDPASS -
.LOWSHELF -
.HIGHSHELF -
.PEAKING -
.NOTCH -
.ALLPASS -
.SINE -
.SQUARE -
.SAWTOOTH -
.TRIANGLE -
.noteOn -
.noteGrainOn -
.noteOff -
.setWaveTable -
.createWaveTable -
.looping -
.EQUALPOWER -
.HRTF -
.LINEAR -
.INVERSE -
.EXPONENTIAL -
createGainNode -
createDelayNode -
.type(да, здесь будет много ложных срабатываний, но это единственный способ уловить последний пример выше!)
Еще раз: если вы спешите и хотите приступить к работе, просто возьмите копию моей библиотеки Monkeypatch webkitAudioContext и включите ее в свое приложение. Удачного аудио взлома!
,Изменения в веб-аудио
Мы в Google любим стандарты. Наша цель — создать веб-платформу, соответствующую стандартам. Одним из небольших недостатков в течение некоторого времени была реализация API веб-аудио с префиксом webkit (в частности, объекта webkitAudioContext) и некоторые устаревшие части веб-аудио, которые мы продолжаем поддерживать.
Первоначально планировалось, что в Chrome 36 будет удалена поддержка объекта webkitAudioContext с префиксом, поскольку мы начали поддерживать объект AudioContext без префикса. Это оказалось более проблематичным, чем ожидалось, поэтому Chrome 36 поддерживает как префиксы, так и префиксы — однако даже в вновь представленном webkitAudioContext несколько устаревших методов и атрибутов, таких как createGainNode и createJavaScriptNode, были удалены. Короче говоря, в Chrome 36 webkitAudioContext и AudioContext являются псевдонимами друг друга; между ними нет никакой разницы в функциональности.
Мы полностью удалим поддержку префикса после Chrome 36, вероятно, через пару релизов. Мы объявим здесь, когда изменение станет неизбежным, и продолжаем обращаться к авторам с просьбой исправить их приложения веб-аудио.
Почему мы сделали это, а не вернулись к предыдущей реализации? Ну, отчасти мы не хотели отходить слишком далеко назад; мы уже удалили эти API, и в качестве приятного побочного эффекта этого псевдонимирования приложения могут прекрасно работать в Firefox, который никогда не поддерживал объект AudioContext с префиксом (и это совершенно правильно!) в своей поддержке веб-аудио, первоначально выпущенной прошлой осенью.
Остальная часть этого обновления содержит руководство по исправлению ошибок в вашем коде из-за этого изменения. Самое замечательное в решении этих проблем заключается в том, что ваш код, скорее всего, будет работать и в Firefox! (Долгое время я думал, что мое приложение Vocoder сломалось из-за реализации Firefox, но оказалось, что это одна из этих проблем!)
Если вы просто хотите приступить к работе, вы можете взглянуть на библиотеку обезьяньих патчей, которую я написал для приложений, написанных на старом коде веб-аудио - это может помочь вам начать работу за минимальное время, поскольку она будет соответствующим образом назначать псевдонимы объектам и методам. Действительно, патчи, перечисленные в библиотеке, являются хорошим путеводителем по тому, что изменилось.
Прежде всего
Любые ссылки на window.webkitAudioContext вместо этого следует делать на window.AudioContext . Часто это исправляется с помощью простого:
window.AudioContext = window.AudioContext || window.webkitAudioContext;
Если ваше приложение отвечает что-то вроде «К сожалению, ваш браузер не поддерживает веб-аудио. Пожалуйста, используйте Chrome или Safari». - вполне вероятно, что он явно ищет webkitAudioContext . Плохой разработчик! Вы могли бы поддерживать Firefox месяцами!
Но есть и другие, более тонкие удаления кода, некоторые из которых могут быть менее очевидными.
- Константы перечисляемого типа BiquadFilter для атрибута
.type(который теперь является строкой) больше не отображаются в объектеBiquadFilterNode, и мы не поддерживаем их в атрибуте.type. Таким образом, вы больше не используете.LOWPASS(или 0) — вы устанавливаете его на «lowpass». - Кроме того, атрибут
Oscillator.typeтеперь также является строковым перечисляемым типом — не более.SAWTOOTH. -
PannerNode.typeтеперь также является строковым перечисляемым типом. -
PannerNode.distanceModelтеперь также является строковым перечисляемым типом. -
createGainNodeпереименован вcreateGain -
createDelayNodeбыл переименован вcreateDelay -
createJavaScriptNodeбыл переименован вcreateScriptProcessor -
AudioBufferSourceNode.noteOn()теперь заменен наstart() -
AudioBufferSourceNode.noteGrainOn()теперь также заменен наstart() -
AudioBufferSourceNode.noteOff()переименован вstop() -
OscillatorNode.noteOn()переименован вstart() -
OscillatorNode.noteOff()переименован вstop() -
AudioParam.setTargetValueAtTime()переименован вsetTargetAtTime() -
AudioContext.createWaveTable()иOscillatorNode.setWaveTable()теперь переименованы вcreatePeriodicWave() andsetPeriodicWave()`. -
AudioBufferSourceNode.loopingбыл удален в пользу.loop -
AudioContext.createBuffer(ArrayBuffer, boolean)для синхронного декодирования фрагмента закодированных аудиоданных был удален. Синхронные вызовы, выполнение которых занимает много времени, являются плохой практикой кодирования; вместо этого используйте асинхронный вызов decodeAudioData. Это одно из наиболее сложных изменений — вам нужно фактически изменить логический поток — но это гораздо лучшая практика. Эхсан Ангкари из Mozilla написал хороший пример того, как это сделать, в своем посте о преобразовании в стандартное веб-аудио .
Многие из них (например, переименование createGainNode и удаление синхронного декодирования в createBuffer), очевидно, будут отображаться в консоли инструментов разработчика как ошибка, однако некоторые другие, например, такое использование:
MULTI_LINE_CODE_PLACEHOLDER_1
не будет отображаться вообще и произойдет молчаливый сбой (теперь myFilterNode.BANDPASS будет разрешен в неопределенное значение, а попытка установить .type в неопределенное значение просто не приведет к какому-либо эффекту. Это, кстати, и было причиной сбоя вокодера.) Аналогично, простое присвоение filter.type числу раньше работало:
myFilterNode.type = 2;
Но теперь вам нужно использовать перечисление строк:
myFilterNode.type = “bandpass”;
Итак, вы можете захотеть просмотреть свой код по следующим терминам:
-
webkitAudioContext -
.LOWPASS -
.HIGHPASS -
.BANDPASS -
.LOWSHELF -
.HIGHSHELF -
.PEAKING -
.NOTCH -
.ALLPASS -
.SINE -
.SQUARE -
.SAWTOOTH -
.TRIANGLE -
.noteOn -
.noteGrainOn -
.noteOff -
.setWaveTable -
.createWaveTable -
.looping -
.EQUALPOWER -
.HRTF -
.LINEAR -
.INVERSE -
.EXPONENTIAL -
createGainNode -
createDelayNode -
.type(да, здесь будет много ложных срабатываний, но это единственный способ уловить последний пример выше!)
Еще раз: если вы спешите и хотите приступить к работе, просто возьмите копию моей библиотеки Monkeypatch webkitAudioContext и включите ее в свое приложение. Удачного аудио взлома!
,Изменения в веб-аудио
Мы в Google любим стандарты. Наша цель — создать веб-платформу, соответствующую стандартам. Одним из небольших недостатков в течение некоторого времени была реализация API веб-аудио с префиксом webkit (в частности, объекта webkitAudioContext) и некоторые устаревшие части веб-аудио, которые мы продолжаем поддерживать.
Первоначально планировалось, что в Chrome 36 будет удалена поддержка объекта webkitAudioContext с префиксом, поскольку мы начали поддерживать объект AudioContext без префикса. Это оказалось более проблематичным, чем ожидалось, поэтому Chrome 36 поддерживает как префиксы, так и префиксы — однако даже в вновь представленном webkitAudioContext несколько устаревших методов и атрибутов, таких как createGainNode и createJavaScriptNode, были удалены. Короче говоря, в Chrome 36 webkitAudioContext и AudioContext являются псевдонимами друг друга; между ними нет никакой разницы в функциональности.
Мы полностью удалим поддержку префикса после Chrome 36, вероятно, через пару релизов. Мы объявим здесь, когда изменение станет неизбежным, и продолжаем обращаться к авторам с просьбой исправить их приложения веб-аудио.
Почему мы сделали это, а не вернулись к предыдущей реализации? Ну, отчасти мы не хотели отходить слишком далеко назад; мы уже удалили эти API, и в качестве приятного побочного эффекта этого псевдонимирования приложения могут прекрасно работать в Firefox, который никогда не поддерживал объект AudioContext с префиксом (и это совершенно правильно!) в своей поддержке веб-аудио, первоначально выпущенной прошлой осенью.
Остальная часть этого обновления содержит руководство по исправлению ошибок в вашем коде из-за этого изменения. Самое замечательное в решении этих проблем заключается в том, что ваш код, скорее всего, будет работать и в Firefox! (Долгое время я думал, что мое приложение Vocoder сломалось из-за реализации Firefox, но оказалось, что это одна из этих проблем!)
Если вы просто хотите приступить к работе, вы можете взглянуть на библиотеку обезьяньих патчей, которую я написал для приложений, написанных на старом коде веб-аудио - это может помочь вам начать работу за минимальное время, поскольку она будет соответствующим образом назначать псевдонимы объектам и методам. Действительно, патчи, перечисленные в библиотеке, являются хорошим путеводителем по тому, что изменилось.
Прежде всего
Любые ссылки на window.webkitAudioContext вместо этого следует делать на window.AudioContext . Часто это исправляется с помощью простого:
window.AudioContext = window.AudioContext || window.webkitAudioContext;
Если ваше приложение отвечает что-то вроде «К сожалению, ваш браузер не поддерживает веб-аудио. Пожалуйста, используйте Chrome или Safari». - вполне вероятно, что он явно ищет webkitAudioContext . Плохой разработчик! Вы могли бы поддерживать Firefox месяцами!
Но есть и другие, более тонкие удаления кода, некоторые из которых могут быть менее очевидными.
- Константы перечисляемого типа BiquadFilter для атрибута
.type(который теперь является строкой) больше не отображаются в объектеBiquadFilterNode, и мы не поддерживаем их в атрибуте.type. Таким образом, вы больше не используете.LOWPASS(или 0) — вы устанавливаете его на «lowpass». - Кроме того, атрибут
Oscillator.typeтеперь также является строковым перечисляемым типом — не более.SAWTOOTH. -
PannerNode.typeтеперь также является строковым перечисляемым типом. -
PannerNode.distanceModelтеперь также является строковым перечисляемым типом. -
createGainNodeпереименован вcreateGain -
createDelayNodeбыл переименован вcreateDelay -
createJavaScriptNodeбыл переименован вcreateScriptProcessor -
AudioBufferSourceNode.noteOn()теперь заменен наstart() -
AudioBufferSourceNode.noteGrainOn()теперь также заменен наstart() -
AudioBufferSourceNode.noteOff()переименован вstop() -
OscillatorNode.noteOn()переименован вstart() -
OscillatorNode.noteOff()переименован вstop() -
AudioParam.setTargetValueAtTime()переименован вsetTargetAtTime() -
AudioContext.createWaveTable()иOscillatorNode.setWaveTable()теперь переименованы вcreatePeriodicWave() andsetPeriodicWave()`. -
AudioBufferSourceNode.loopingбыл удален в пользу.loop -
AudioContext.createBuffer(ArrayBuffer, boolean)для синхронного декодирования фрагмента закодированных аудиоданных был удален. Синхронные вызовы, выполнение которых занимает много времени, являются плохой практикой кодирования; вместо этого используйте асинхронный вызов decodeAudioData. Это одно из наиболее сложных изменений — вам нужно фактически изменить логический поток — но это гораздо лучшая практика. Эхсан Ангкари из Mozilla написал хороший пример того, как это сделать, в своем посте о преобразовании в стандартное веб-аудио .
Многие из них (например, переименование createGainNode и удаление синхронного декодирования в createBuffer) очевидно будут отображаться в консоли инструментов разработчика как ошибка, однако некоторые другие, например, такое использование:
MULTI_LINE_CODE_PLACEHOLDER_1
не будет отображаться вообще и произойдет молчаливый сбой (теперь myFilterNode.BANDPASS будет разрешен в неопределенное значение, а попытка установить .type в неопределенное значение просто не приведет к какому-либо эффекту. Это, кстати, и было причиной сбоя вокодера.) Аналогично, простое присвоение filter.type числу раньше работало:
myFilterNode.type = 2;
Но теперь вам нужно использовать перечисление строк:
myFilterNode.type = “bandpass”;
Итак, вы можете захотеть просмотреть свой код по следующим терминам:
-
webkitAudioContext -
.LOWPASS -
.HIGHPASS -
.BANDPASS -
.LOWSHELF -
.HIGHSHELF -
.PEAKING -
.NOTCH -
.ALLPASS -
.SINE -
.SQUARE -
.SAWTOOTH -
.TRIANGLE -
.noteOn -
.noteGrainOn -
.noteOff -
.setWaveTable -
.createWaveTable -
.looping -
.EQUALPOWER -
.HRTF -
.LINEAR -
.INVERSE -
.EXPONENTIAL -
createGainNode -
createDelayNode -
.type(да, здесь будет много ложных срабатываний, но это единственный способ уловить последний пример выше!)
Еще раз: если вы спешите и хотите приступить к работе, просто возьмите копию моей библиотеки Monkeypatch webkitAudioContext и включите ее в свое приложение. Удачного аудио взлома!
,Изменения в веб-аудио
Мы в Google любим стандарты. Наша цель — создать веб-платформу, соответствующую стандартам. Одним из небольших недостатков в течение некоторого времени была реализация API веб-аудио с префиксом webkit (в частности, объекта webkitAudioContext) и некоторые устаревшие части веб-аудио, которые мы продолжаем поддерживать.
Первоначально планировалось, что в Chrome 36 будет удалена поддержка объекта webkitAudioContext с префиксом, поскольку мы начали поддерживать объект AudioContext без префикса. Это оказалось более хлопотным, чем ожидалось, поэтому Chrome 36 поддерживает как префиксы, так и префиксы — однако даже в вновь представленном webkitAudioContext несколько устаревших методов и атрибутов, таких как createGainNode и createJavaScriptNode, были удалены. Короче говоря, в Chrome 36 webkitAudioContext и AudioContext являются псевдонимами друг друга; между ними нет никакой разницы в функциональности.
Мы полностью удалим поддержку префикса после Chrome 36, вероятно, через пару релизов. Мы объявим здесь, когда изменение станет неизбежным, и продолжаем обращаться к авторам с просьбой исправить их приложения веб-аудио.
Почему мы сделали это, а не вернулись к предыдущей реализации? Ну, отчасти мы не хотели отходить слишком далеко назад; мы уже удалили эти API, и в качестве приятного побочного эффекта этого псевдонимирования приложения могут прекрасно работать в Firefox, который никогда не поддерживал объект AudioContext с префиксом (и это тоже совершенно правильно!) в своей поддержке веб-аудио, первоначально выпущенной прошлой осенью.
Остальная часть этого обновления содержит руководство по исправлению ошибок в вашем коде из-за этого изменения. Самое замечательное в решении этих проблем заключается в том, что ваш код, скорее всего, будет работать и в Firefox! (Долгое время я думал, что мое приложение Vocoder сломалось из-за реализации Firefox, но оказалось, что это одна из этих проблем!)
Если вы просто хотите приступить к работе, вы можете взглянуть на библиотеку обезьяньих патчей, которую я написал для приложений, написанных на старом коде веб-аудио - это может помочь вам начать работу за минимальное время, поскольку оно будет соответствующим образом назначать псевдонимы объектам и методам. Действительно, патчи, перечисленные в библиотеке, являются хорошим путеводителем по тому, что изменилось.
Прежде всего
Любые ссылки на window.webkitAudioContext вместо этого следует делать на window.AudioContext . Часто это исправляется с помощью простого:
window.AudioContext = window.AudioContext || window.webkitAudioContext;
Если ваше приложение отвечает что-то вроде «К сожалению, ваш браузер не поддерживает веб-аудио. Пожалуйста, используйте Chrome или Safari». - вполне вероятно, что он явно ищет webkitAudioContext . Плохой разработчик! Вы могли бы поддерживать Firefox месяцами!
Но есть и другие, более тонкие удаления кода, некоторые из которых могут быть менее очевидными.
- Константы перечисляемого типа BiquadFilter для атрибута
.type(который теперь является строкой) больше не отображаются в объектеBiquadFilterNode, и мы не поддерживаем их в атрибуте.type. Таким образом, вы больше не используете.LOWPASS(или 0) — вы устанавливаете его на «lowpass». - Кроме того, атрибут
Oscillator.typeтеперь также является строковым перечисляемым типом — не более.SAWTOOTH. -
PannerNode.typeтеперь также является строковым перечисляемым типом. -
PannerNode.distanceModelтеперь также является строковым перечисляемым типом. -
createGainNodeпереименован вcreateGain -
createDelayNodeбыл переименован вcreateDelay -
createJavaScriptNodeбыл переименован вcreateScriptProcessor -
AudioBufferSourceNode.noteOn()теперь заменен наstart() -
AudioBufferSourceNode.noteGrainOn()теперь также заменен наstart() -
AudioBufferSourceNode.noteOff()переименован вstop() -
OscillatorNode.noteOn()переименован вstart() -
OscillatorNode.noteOff()переименован вstop() -
AudioParam.setTargetValueAtTime()переименован вsetTargetAtTime() -
AudioContext.createWaveTable()иOscillatorNode.setWaveTable()теперь переименованы вcreatePeriodicWave() andsetPeriodicWave()`. -
AudioBufferSourceNode.loopingбыл удален в пользу.loop -
AudioContext.createBuffer(ArrayBuffer, boolean)для синхронного декодирования фрагмента закодированных аудиоданных был удален. Синхронные вызовы, выполнение которых занимает много времени, являются плохой практикой кодирования; вместо этого используйте асинхронный вызов decodeAudioData. Это одно из наиболее сложных изменений — вам нужно фактически изменить логический поток — но это гораздо лучшая практика. Эхсан Ангкари из Mozilla написал хороший пример того, как это сделать, в своем посте о преобразовании в стандартное веб-аудио .
Многие из них (например, переименование createGainNode и удаление синхронного декодирования в createBuffer) очевидно будут отображаться в консоли инструментов разработчика как ошибка, однако некоторые другие, например, такое использование:
MULTI_LINE_CODE_PLACEHOLDER_1
не будет отображаться вообще и произойдет молчаливый сбой (теперь myFilterNode.BANDPASS будет разрешен в неопределенное значение, а попытка установить .type в неопределенное значение просто не приведет к какому-либо эффекту. Это, кстати, и было причиной сбоя вокодера.) Аналогично, простое присвоение filter.type числу раньше работало:
myFilterNode.type = 2;
Но теперь вам нужно использовать перечисление строк:
myFilterNode.type = “bandpass”;
Итак, вы можете захотеть просмотреть свой код по следующим терминам:
-
webkitAudioContext -
.LOWPASS -
.HIGHPASS -
.BANDPASS -
.LOWSHELF -
.HIGHSHELF -
.PEAKING -
.NOTCH -
.ALLPASS -
.SINE -
.SQUARE -
.SAWTOOTH -
.TRIANGLE -
.noteOn -
.noteGrainOn -
.noteOff -
.setWaveTable -
.createWaveTable -
.looping -
.EQUALPOWER -
.HRTF -
.LINEAR -
.INVERSE -
.EXPONENTIAL -
createGainNode -
createDelayNode -
.type(да, здесь будет много ложных срабатываний, но это единственный способ уловить последний пример выше!)
Еще раз: если вы спешите и хотите приступить к работе, просто возьмите копию моей библиотеки Monkeypatch webkitAudioContext и включите ее в свое приложение. Удачного аудио взлома!