Я генерирую звуковой сигнал, используя AudioBufferSourceNode в Javascript. Я хочу, чтобы этот сигнал был «услышан» человеком-слушателем ровно через N секунд в единицах AudioContext.currentTime. Заметьте, я не говорю «играл», а скорее «слышал». Таким образом, я хочу учитывать задержки так, чтобы выводимый звук выстраивался ровно в N секунд на человеческую интерпретацию.
Мои текущие интерпретации «baseLatency» и «outputLatency» следующие:
- «baseLatency» — это количество времени, необходимое для передачи аудиосигнала из Javascript в аудиобуфер ОС. По сути, если бы я выдал звуковую команду в Javascript во время «сейчас», она была бы получена звуковым буфером моей ОС в «сейчас + baseLatency». НО - если бы я вызвал AudioBufferSrcNode.start(будущее время), тот факт, что я планирую воспроизведение звука в достаточное время в будущем, эта baseLatency по существу игнорируется.
- 'outputLatency' - это количество времени, в течение которого звуковой буфер ОС будет слышен слушателем. То есть, если предположить, что ОС уже получила мой сигнал и решила воспроизвести его, то потребуется «outputLatency», пока звук не пройдет через динамики.
Подводя итог, я рассматриваю свою baseLatency как меру того, насколько рано мне нужно запустить мой метод .start() относительно N, а затем мне нужно использовать outputLatency для настройки значения, с которым он воспроизводится (т.е. N - outputLatency)
Подробнее здесь: https://stackoverflow.com/questions/798 ... calling-au
Мобильная версия