import Tone from 'tone' import JSZip from 'jszip' import FileSaver from 'file-saver' import * as draw from './lib/draw' import output from './lib/output' import spectrum from './lib/spectrum' import { lerp, clamp, mod, } from '../util' import { requestAudioContext } from './lib' let buffer let sr = 44100 let last_i = 0 let _r = 8, _i = 8 let files, file_index = 0; const FRAME_LENGTH = 126 * 255 const FRAME_OFFSET = FRAME_LENGTH / 4 function init() { requestAudioContext(ready) draw.resize(256, 256) } function handleFileSelect(e) { files = e.dataTransfer ? e.dataTransfer.files : e.target.files loadNext() } function loadNext() { var file = files[file_index++] if (! file) return load(file) } function load(file) { buffer = new Tone.Buffer( URL.createObjectURL(file), loadBuffer, (err) => console.error('err', err) ) } function loadBuffer() { // dispatch console.log('loaded buffer', buffer) const pcm = buffer._buffer.getChannelData(0) const sr = buffer._buffer.sampleRate if (! pcm) return const zip = new JSZip() const zip_folder = zip.folder("wav2pix_" + name); const offset = 0 for (offset = 0, count = 0, _len = pcm.length - FRAME_LENGTH; offset < _len; offset += FRAME_OFFSET, count += 1 ) { if ((count % 100) === 0) { // dispatch event instead.. console.log(count) } render(pcm.slice(offset, offset+FRAME_LENGTH), count, zip_folder) } // dispatch event console.log('done exporting') zip.generateAsync({ type: "blob" }).then(content => { // dispatch console.log('saving zip') // FileSaver.saveAs(content, "wav2pix_" + name + ".zip") setTimeout(loadNext, 1000) }) // play(0) } init()