summaryrefslogtreecommitdiff
path: root/app/client/audio
diff options
context:
space:
mode:
authorJules Laplace <julescarbon@gmail.com>2018-06-06 16:13:52 +0200
committerJules Laplace <julescarbon@gmail.com>2018-06-06 16:13:52 +0200
commit1ba1d455167bfd507d3cf14d43fbd430caeb7fe7 (patch)
treed3665883c8f505b51eef24b7e3268d42b52cbd03 /app/client/audio
parentfc1c3835501b97e5d15ac33bd812cd87b20aabad (diff)
update spectrogram delta
Diffstat (limited to 'app/client/audio')
-rw-r--r--app/client/audio/lib/spectrum.js1
-rw-r--r--app/client/audio/wav2pix.js21
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 })
})
})
}