Last active
August 14, 2017 12:39
-
-
Save SergProduction/3ee274d00954c892ed18eb773aa8a276 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<audio src="song.mp3" id="myAudio"></audio> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var audioElement = document.getElementById('myAudio') | |
var audioCtx = new (window.AudioContext || window.webkitAudioContext)() | |
// ^ как контекст в канвасе, только для аудио дорожки. | |
// Он работает как посредник, между аудио инфой и ее выходом перед озвучиванием в колнках | |
// можем получать инфу, изменять, например усилить низкие частоты или высокие | |
var audioSrc = audioCtx.createMediaElementSource(audioElement) | |
// нужен чтоб потом прокинуть измененный аудио контекст обратно в исходный аудио элемент(<audio/>) | |
var analyser = audioCtx.createAnalyser() | |
// один из многих методов аудио контекста, служит только для получения текущих частот | |
// транформировать и вернуть обратно в аудио поток их нельзя, для этого есть другие методы | |
audioSrc.connect(analyser) | |
// чтоб все извениеня в аудио контексте применить, прокидываем его обратно в аудио поток | |
audioSrc.connect(audioCtx.destination) | |
// что это - не помню) | |
var frequencyData = new Uint8Array(200) | |
// заранее создадим массив куда будем получать частоты аудио в реальном времени | |
function getAudioData() { | |
requestAnimationFrame(getAudioData) | |
analyser.getByteFrequencyData(frequencyData) // записывает частоты в frequencyData | |
/* | |
* вот и все, теперь все что нам нужно находиться в массиве frequencyData | |
* теперь можно это отрендерить любым удобным способом для вас | |
* это удобно делать на d3 в svg | |
*/ | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Пример визуализации частот на D3
https://jsfiddle.net/sarg/xmzv98mu/