diff options
Diffstat (limited to 'app/client/audio/wav2pix.js')
| -rw-r--r-- | app/client/audio/wav2pix.js | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/app/client/audio/wav2pix.js b/app/client/audio/wav2pix.js index baba776..48ca140 100644 --- a/app/client/audio/wav2pix.js +++ b/app/client/audio/wav2pix.js @@ -49,19 +49,20 @@ export const loadPCM = (file) => { }) } -export const renderFrames = (file, { frame_step=FRAME_STEP, max=10 }) => dispatch => { +export const renderFrames = (file, { frame_step=FRAME_STEP, max=12 }) => dispatch => { return new Promise((resolve, reject) => { loadPCM(file).then(({ buffer, pcm, sr }) => { - dispatch({ type: types.wav2pix.loaded_buffer }) + dispatch({ type: types.wav2pix.load }) let canvases = [] - for (let offset = 0, count = 0, _len = pcm.length - FRAME_LENGTH; + let offset = 0, count = 0, _len = pcm.length - FRAME_LENGTH + for (; offset < _len && count < max; offset += frame_step, count += 1 ) { - canvases.push(render(pcm.slice(offset, offset+FRAME_LENGTH), sr, count)) + frames.push(render(pcm.slice(offset, offset+FRAME_LENGTH), sr, count)) } - dispatch({ type: types.wav2pix.draw_finish }) - resolve(canvases) + dispatch({ type: types.wav2pix.finish, message: 'Rendered ' + count + ' images' }) + resolve(frames) }) }) } @@ -69,26 +70,29 @@ export const renderFrames = (file, { frame_step=FRAME_STEP, max=10 }) => dispatc export const buildZip = (name, file, { frame_step=FRAME_STEP, max=10000 }) => dispatch => { return new Promise((resolve, reject) => { loadPCM(file).then(({ buffer, pcm, sr }) => { - dispatch({ type: types.wav2pix.loaded_buffer }) + dispatch({ type: types.wav2pix.load }) const zip = new JSZip() const zip_folder = zip.folder("wav2pix_" + name); + let steps = (pcm.length - FRAME_LENGTH) / frame_step + console.log(steps) + let offset = 0, count = 0, _len = pcm.length - FRAME_LENGTH for (; offset < _len && count < max; offset += frame_step, count += 1 ) { if ((count % 10) === 0) { - dispatch({ type: types.wav2pix.draw_progress, count }) + dispatch({ type: types.wav2pix.progress, progress: { i: count / steps * 6, n: 6 } }) } render(pcm.slice(offset, offset+FRAME_LENGTH), sr, count, zip_folder) } // dispatch event - dispatch({ type: types.wav2pix.draw_finish }) + dispatch({ type: types.wav2pix.finish, message: 'Rendered ' + count + ' images' }) zip.generateAsync({ type: "blob" }).then(content => { - dispatch({ type: types.wav2pix.load_zip }) + dispatch({ type: types.wav2pix.zip }) // FileSaver.saveAs(content, "wav2pix_" + name + ".zip") resolve({ zip: content, |
