1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
import Tone from 'tone'
import JSZip from 'jszip'
import FileSaver from 'file-saver'
import 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()
|