exponentialRampToValueAtTime не исчезает с Safari

#javascript #audio

#javascript #Аудио

Вопрос:

Я только изучаю аудио в JavaScript, и у меня возникли проблемы с тем, что звук не трескается.

Я пытаюсь использовать exponentialRampToValueAtTime, но, похоже, он только регулирует время, без затухания, и, следовательно, все еще слышен треск.

Это мой код:

         const AudioContext = window.AudioContext || window.webkitAudioContext;
        let context = new AudioContext()
        let o = context.createOscillator()
        let g = context.createGain()
        
        o.connect(g)
        g.connect(context.destination)
         
      g.gain.exponentialRampToValueAtTime(0.00001, 0.04);
        o.start(0)

  

Комментарии:

1. эта проблема только с safari?

2. Похоже, этого не происходит. Я только что протестировал его в Firefox, и у меня тоже такая же проблема.

3. насколько я читал, firefox «частично поддерживает» этот метод, поэтому, возможно, не лучший другой браузер для проверки — вы пробовали запускать g.gain.exponentialRampToValueAtTime(0.00001, 0.04); после o.start(0) ? — тем не менее, в любом случае вы получите 0.04 секунды быстрого затухания звука (при 1 условии, что gain по умолчанию, конечно)

4. Кстати, большое спасибо за помощь! Я попытался разместить его позже, и все та же проблема. Я пробовал это как в Opera, так и в Chrome, и у меня другая проблема в том, что они будут издавать звук только в ответ на действие пользователя. Для справки, я использую код с этого сайта, чтобы попытаться внедрить звук в мою игру: marcgg.com/blog/2016/11/01/javascript-audio

5. Хорошо, итак, я решил проблему, похоже, это проблема с ботом Firefox и Safari. Мне нужно было добавить: ` g.gain.setValueAtTime(1, context.currentTime); `