2016-06-05 10 views
1

В настоящее время я пытаюсь создать аудио визуализацию с помощью веб-аудио api, а именно, я пытаюсь создать фигуры Лиссажу из данного источника звука.API веб-аудио, получить getByteTimeDomainData для левого/правого канала в двух массивах.

Я столкнулся с этим post, но у меня отсутствуют некоторые предварительные условия. Как я могу получить данные временной области для левого/правого каналов? В настоящее время кажется, что я получаю только объединенные данные.

Любая помощь или подсказка были бы высоко оценены.

$(document).ready(function() { 

    var audioCtx = new (window.AudioContext || window.webkitAudioContext)(); 
    var audioElement = document.getElementById('audioElement'); 
    var audioSrc = audioCtx.createMediaElementSource(audioElement); 
    var analyser = audioCtx.createAnalyser(); 

    // Bind analyser to media element source. 
    audioSrc.connect(analyser); 
    audioSrc.connect(audioCtx.destination); 

    //var timeDomainData = new Uint8Array(analyser.frequencyBinCount); 
    var timeDomainData = new Uint8Array(200); 

    // loop and update time domain data array. 
    function renderChart() { 
    requestAnimationFrame(renderChart); 

    // Copy frequency data to timeDomainData array. 
    analyser.getByteTimeDomainData(timeDomainData); 

    // debugging: print to console 
    console.log(timeDomainData); 

    } 

    // Run the loop 
    renderChart(); 

}); 

ответ

1

Замечание верно, форма волны является результатом смешения. Из current spec (курсив мой):

Копии текущих понижающего микширования во временной области (формы сигнала) данных в пройденному беззнаковое массив байтов . [...]

Чтобы обойти это, вы можете использовать разделитель каналов (createChannelSplitter()) и назначить каждый канал двум отдельным узлам анализатора.

Для получения дополнительной информации о createChannelSplitter() см. this link.

+0

Спасибо за ответ, предоставленные ссылки и подсказку к решению, ответы на мой вопрос действительно. – user1514