av/cmd/audio-player/main.js

58 lines
1.5 KiB
JavaScript
Raw Normal View History

/*
NAME
main.js
AUTHOR
Trek Hopton <trek@ausocean.org>
LICENSE
This file is Copyright (C) 2018 the Australian Ocean Lab (AusOcean)
It is free software: you can redistribute it and/or modify them
under the terms of the GNU General Public License as published by the
Free Software Foundation, either version 3 of the License, or (at your
option) any later version.
It is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License in gpl.txt.
If not, see [GNU licenses](http://www.gnu.org/licenses).
*/
window.onload = function () {
2019-08-11 10:24:30 +03:00
document.getElementById('input').addEventListener('change', processData)
}
2019-08-11 10:24:30 +03:00
function processData() {
const input = event.target.files[0]
const reader = new FileReader()
2019-08-11 10:24:30 +03:00
reader.onload = event => {
bytes = new Uint8Array(event.target.result)
2019-08-11 10:24:30 +03:00
// decode adpcm to pcm
var decoded = decode(Array.from(bytes))
2019-08-11 10:24:30 +03:00
// convert raw pcm to wav
var wav = pcmToWav(decoded, 48000, 1, 16);
2019-08-11 10:24:30 +03:00
// play wav data in player
const blob = new Blob([Uint8Array.from(wav)], {
type: 'audio/wav'
});
const url = URL.createObjectURL(blob);
2019-08-11 10:24:30 +03:00
const audio = document.getElementById('audio');
const source = document.getElementById('source');
2019-08-11 10:24:30 +03:00
source.src = url;
audio.load();
audio.play();
}
reader.onerror = error => reject(error)
reader.readAsArrayBuffer(input)
2019-07-18 09:34:50 +03:00
}