diff options
| author | Jules Laplace <julescarbon@gmail.com> | 2018-06-06 16:13:52 +0200 |
|---|---|---|
| committer | Jules Laplace <julescarbon@gmail.com> | 2018-06-06 16:13:52 +0200 |
| commit | 1ba1d455167bfd507d3cf14d43fbd430caeb7fe7 (patch) | |
| tree | d3665883c8f505b51eef24b7e3268d42b52cbd03 /app/client/audio | |
| parent | fc1c3835501b97e5d15ac33bd812cd87b20aabad (diff) | |
update spectrogram delta
Diffstat (limited to 'app/client/audio')
| -rw-r--r-- | app/client/audio/lib/spectrum.js | 1 | ||||
| -rw-r--r-- | app/client/audio/wav2pix.js | 21 |
2 files changed, 15 insertions, 7 deletions
diff --git a/app/client/audio/lib/spectrum.js b/app/client/audio/lib/spectrum.js index c7252f1..a60cdcf 100644 --- a/app/client/audio/lib/spectrum.js +++ b/app/client/audio/lib/spectrum.js @@ -266,6 +266,7 @@ function reorderBins(spec, order){ } export default { + fft_size, fft_overlap, toSpectrum, fromSpectrum, fromImageData, binToHz, fadeInOut, cloneSpectrum, diff --git a/app/client/audio/wav2pix.js b/app/client/audio/wav2pix.js index 48ca140..5f48814 100644 --- a/app/client/audio/wav2pix.js +++ b/app/client/audio/wav2pix.js @@ -2,7 +2,6 @@ import types from '../types' import Tone from 'tone' import JSZip from 'jszip' -import FileSaver from 'file-saver' import { sprintf } from 'sprintf-js' import * as draw from './lib/draw' @@ -17,6 +16,7 @@ export const FRAME_STEP = Math.round(FRAME_LENGTH / 4) const _r = 8 const _i = 8 +export { spectrum } // requestAudioContext(() => {}) export const loadBuffer = file => { @@ -39,22 +39,29 @@ export const loadBuffer = file => { export const loadPCM = (file) => { return new Promise((resolve, reject) => { + // if we've already fetched this file... + if (file.pcm) { + return resolve(file) + } loadBuffer(file).then(buffer => { const pcm = buffer._buffer.getChannelData(0) const sr = buffer._buffer.sampleRate if (! pcm) return reject() - console.log(buffer, pcm, sr) - resolve({ buffer, pcm, sr }) + console.log(pcm.length, sr) + resolve({ file, buffer, pcm, sr }) }) }) } export const renderFrames = (file, { frame_step=FRAME_STEP, max=12 }) => dispatch => { return new Promise((resolve, reject) => { - loadPCM(file).then(({ buffer, pcm, sr }) => { + loadPCM(file).then((pcmProps) => { + const { file, buffer, pcm, sr } = pcmProps dispatch({ type: types.wav2pix.load }) - let canvases = [] - let offset = 0, count = 0, _len = pcm.length - FRAME_LENGTH + let frames = [] + let count = 0 + let _len = pcm.length - FRAME_LENGTH + let offset = _len / 4 for (; offset < _len && count < max; offset += frame_step, count += 1 @@ -62,7 +69,7 @@ export const renderFrames = (file, { frame_step=FRAME_STEP, max=12 }) => dispatc frames.push(render(pcm.slice(offset, offset+FRAME_LENGTH), sr, count)) } dispatch({ type: types.wav2pix.finish, message: 'Rendered ' + count + ' images' }) - resolve(frames) + resolve({ pcm: pcmProps, frames }) }) }) } |
