Подтвердить что ты не робот

HTML5 Web Audio - замедленное воспроизведение аудио

Я работаю над веб-секвенсером/трекером в сети, и я заметил, что в моей обычной процедуре воспроизведения аудиоконференции, похоже, существуют только на протяжении всего образца и что API веб-аудио не работает Кажется, чтобы отрегулировать продолжительность воспроизведения, когда я поставлю сдвиг образца. Например, если я переношу записку на октаву, подпрограмма обрабатывает первую половину звука перед отключением. Более интенсивное понижение передачи в результате приводит к еще меньшему воспроизведению звука, и, хотя я не уверен, что могу это подтвердить, я подозреваю, что ускорение звука приводит к относительно длительным периодам молчания, прежде чем звук выйдет из буфера.

Здесь моя процедура воспроизведения звука на данный момент. До сих пор гораздо больше усилий было посвящено тому, чтобы другие функции отправляли нужные данные, а не расширяли функциональность этой процедуры.

function playSound(buffer, pitch, dspEffect, dspValue, volume) {

  var source = audioEngine.createBufferSource();  
  source.buffer = buffer;
  source.playbackRate.value = pitch; 

  // Volume adjustment is handled before other DSP effects are added.
  var volumeAdjustment = audioEngine.createGain();
  source.connect(volumeAdjustment);
  // Very basic error trapping in case of bad volume input.
  if(volume >= 0 && volume <= 1) { 
    volumeAdjustment.gain.value = volume; 
  } else { 
    volumeAdjustment.gain.value = 0.6; 
  }

  switch(dspEffect){
    case 'lowpass':
      var createLowPass = audioEngine.createBiquadFilter();
      volumeAdjustment.connect(createLowPass);
      createLowPass.connect(audioEngine.destination);
      createLowPass.type = 'lowpass';
      createLowPass.frequency.value = dspValue;
      break;
    // There are a couple of other optional DSP effects, 
    // but so far they all operate in about the same fashion.
  }
  source.start();
}

Мое намерение состоит в том, чтобы образцы воспроизводились полностью, независимо от того, сколько применяется сдвиг тона, и, если необходимо, ограничить количество сдвига высоты тона. Я обнаружил, что добавление нескольких секунд молчания к звуку работает вокруг этой проблемы, но это громоздко из-за большого количества звуков, которые мне нужно будет обрабатывать, и я предпочел бы решение на основе кода.

EDIT: из браузеров я могу проверить это, это только кажется проблемой в Google Chrome. Образцы полностью воспроизводятся в Firefox, Internet Explorer пока не поддерживает API веб-аудио, и у меня нет свободного доступа к Safari или Opera. Это определенно меняет характер помощи, которую я ищу.

4b9b3361

Ответ 1

Я обнаружил, что добавление нескольких секунд молчания к звуку работает вокруг этой проблемы, но оно громоздко из-за большого количества звуков, которые мне нужно будет обрабатывать, и я предпочел бы решение на основе кода.

Вы можете загрузить звуковой файл, на который осталось всего несколько секунд, и добавить его в настоящий аудиофайл. Здесь - это ответ SO, который показывает, как это сделать...