JSFiddle - React, Tailwind, and code Playground
Seismic web audio in stereo using horizontal channels from the IRIS API
by nathansnider
HTML
<script src="http://www.html5rocks.com/en/tutorials/webaudio/intro/js/buffer-loader.js"></script>
<input type="button" id="playButton" value="Play">
JavaScript
//web audio BufferLoader for seismic stereo
var network = 'IU',
station = 'LCO',
location = '10',
channel = 'HH',
ch1 = '1',
ch2 = '2',
starttime = '2015-09-16T22:50:00',
endtime = '2015-09-17T00:50:00';
var context= new AudioContext();
var bufferLoader;
window.onload = init();
window.AudioContext = window.AudioContext || window.webkitAudioContext;
function init() {
// Fix up prefixing
bufferLoader = new BufferLoader(
context, [
'http://service.iris.edu/irisws/timeseries/1/query?net=' + network + '&sta=' + station + '&loc=' + location + '&cha=' + channel + ch1 + '&starttime=' + starttime + '&endtime=' + endtime + '&output=audio&audiosamplerate=44100',
'http://service.iris.edu/irisws/timeseries/1/query?net=' + network + '&sta=' + station + '&loc=' + location + '&cha=' + channel + ch2 + '&starttime=' + starttime + '&endtime=' + endtime + '&output=audio&audiosamplerate=44100'
],
playStereoBuffer
);
bufferLoader.load();
}
function playStereoBuffer(bufferList) {
// create two buffer sources, one for each channel
var source1 = context.createBufferSource();
var source2 = context.createBufferSource();
source1.buffer = bufferList[0];
source2.buffer = bufferList[1];
//merge channels into stereo for playback
var merger = context.createChannelMerger(2);
source1.connect(merger, 0, 0);
source2.connect(merger, 0, 1);
merger.connect(context.destination);
//play the buffers
source1.start(0);
source2.start(0);
}
document.getElementById("playButton").addEventListener("click", function() {
playStereoBuffer(bufferLoader.bufferList);
});