summaryrefslogtreecommitdiff
path: root/app/client/audio
diff options
context:
space:
mode:
authorJules Laplace <julescarbon@gmail.com>2018-06-06 15:36:03 +0200
committerJules Laplace <julescarbon@gmail.com>2018-06-06 15:36:03 +0200
commitfc1c3835501b97e5d15ac33bd812cd87b20aabad (patch)
tree31f3a97d274d9236a4332c903acb3622395e73ca /app/client/audio
parent87c606ed3b8c9867418e412044af871fe6447700 (diff)
compute number of frames that will be generated
Diffstat (limited to 'app/client/audio')
-rw-r--r--app/client/audio/pix2wav.js19
-rw-r--r--app/client/audio/wav2pix.js24
2 files changed, 27 insertions, 16 deletions
diff --git a/app/client/audio/pix2wav.js b/app/client/audio/pix2wav.js
index 1b103b4..beccc56 100644
--- a/app/client/audio/pix2wav.js
+++ b/app/client/audio/pix2wav.js
@@ -1,11 +1,19 @@
-function play(i) {
- // console.log('play', i)
- last_i = i
- let player = players[clamp(i, 0, players.length)]
+import types from '../types'
+
+import Tone from 'tone'
+
+import * as draw from './lib/draw'
+import output from './lib/output'
+import spectrum from './lib/spectrum'
+
+const _r = 8
+const _i = 8
+
+function play(frame) {
// const { canvas, imageData } = draw.raw_spectrum(fft, 0, 256, 0, 256, 1, 1)
// console.log(_r, _i)
// const { canvas, imageData } = draw.raw_spectrum(player.fft, 0, 256, 0, 256, _r, _i)
- const new_fft = spectrum.fromImageData(player.imageData, 44100, _r, _i)
+ const new_fft = spectrum.fromImageData(frame.imageData, 44100, _r, _i)
// gallery.innerHTML = ''
// console.log(player.fft.data, new_fft.data)
@@ -18,4 +26,3 @@ function play(i) {
function redraw(new_fft){
const { canvas, imageData } = draw.raw_spectrum(new_fft, 0, 256, 0, 256, _r, _i)
}
-
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,