summaryrefslogtreecommitdiff
path: root/client
diff options
context:
space:
mode:
authorJules Laplace <julescarbon@gmail.com>2018-05-17 20:41:59 +0200
committerJules Laplace <julescarbon@gmail.com>2018-05-17 20:41:59 +0200
commit5b1a3cf86590bb33f06adedff482fc932fb57c8b (patch)
treed36952b83e4a5de8d1c69c53da0ba785235789a5 /client
parent99c9ec8e78803f6b8a4b06abe625ab29ba33cc43 (diff)
save zip and stuff
Diffstat (limited to 'client')
-rw-r--r--client/draw.js2
-rw-r--r--client/index.js28
2 files changed, 23 insertions, 7 deletions
diff --git a/client/draw.js b/client/draw.js
index a732745..8caf8d8 100644
--- a/client/draw.js
+++ b/client/draw.js
@@ -239,7 +239,7 @@ function raw_spectrum(spec, x0, y0, ww, hh, def_min_r, def_min_i){
// hsl = color.hsl2rgb((_i + 1) / 2, 1.0, 1 - Math.abs(_r / 10))
pixels[u+0] = _r
pixels[u+1] = _i
- pixels[u+2] = 0 // hsl[2]
+ pixels[u+2] = 127 // hsl[2]
pixels[u+3] = 255
// min_r = Math.min(min_r, col[v])
diff --git a/client/index.js b/client/index.js
index 18e94da..2fc20bb 100644
--- a/client/index.js
+++ b/client/index.js
@@ -1,4 +1,8 @@
import Tone from 'tone'
+import JSZip from 'jszip'
+import { sprintf } from 'sprintf-js'
+import FileSaver from 'file-saver'
+
import draw from './draw'
import keys from './lib/keys'
import mouse from './lib/mouse'
@@ -76,18 +80,28 @@ function loadBuffer(){
if (! pcm) return
const FRAME_LENGTH = 126 * 255
- const FRAME_OFFSET = FRAME_LENGTH
+ const FRAME_OFFSET = FRAME_LENGTH / 4
+
+ var zip = new JSZip()
+
+ var zip_folder = zip.folder("images");
for (var offset = 0, count = 0, _len = pcm.length; offset < _len; offset += FRAME_OFFSET, count += 1) {
// console.log('generating', count, offset)
- let player = render(pcm.slice(offset, offset+FRAME_LENGTH))
+ let player = render(pcm.slice(offset, offset+FRAME_LENGTH), count, zip_folder)
register(player, count)
if (count > 20) break
// break
}
+
+ console.log('done exporting')
+ zip.generateAsync({type:"blob"}).then(function(content) {
+ console.log('saving zip')
+ FileSaver.saveAs(content, "img2pix.zip")
+ });
play(0)
}
-function render(pcm){
+function render(pcm, count, zip){
const fft = spectrum.toSpectrum(pcm, sr)
// console.log('render', fft)
// const pcm_rev = pcm.slice().reverse()
@@ -96,6 +110,10 @@ function render(pcm){
draw.clear()
const { canvas, imageData } = draw.raw_spectrum(fft, 0, 256, 0, 256, _r, _i)
const dataURL = canvas.toDataURL("image/png")
+ if (zip) {
+ const fn = sprintf('frame_%05d.png', count)
+ zip.file(fn, dataURL.split(',')[1], {base64: true})
+ }
return { fft, canvas, imageData, dataURL }
}
function play(i) {
@@ -107,7 +125,6 @@ function play(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)
gallery.innerHTML = ''
- gallery.appendChild(canvas)
// console.log(player.fft.data, new_fft.data)
const buf = spectrum.fromSpectrum(new_fft)
@@ -118,7 +135,6 @@ function play(i) {
}
function redraw(new_fft){
const { canvas, imageData } = draw.raw_spectrum(new_fft, 0, 256, 0, 256, _r, _i)
- gallery.appendChild(canvas)
}
function register(player, i){
// console.log('register', player)
@@ -126,6 +142,6 @@ function register(player, i){
player.canvas.addEventListener('click', () => {
play(i)
})
- // gallery.appendChild(player.canvas)
+ gallery.appendChild(player.canvas)
}
init()