UNPKG

genish.js

Version:
58 lines (45 loc) 1.55 kB
audiofile = data( './resources/audiofiles/dead-presidents.wav' ).then( ()=> { damp1 = param( 'damp1', .25 ) damp2 = param( 'damp2', .25 ) maindamp = param( 'maindamp', .5 ) period1 = param( 'period1', 11025 ) period2 = param( 'period2', 11025 ) in1 = peek( audiofile, // data accum( 1,0,{ max:audiofile.buffer.length } ), // indexing { interp:'none', mode:'samples' } // attributes ) fbL1 = ssd() fbL2 = ssd() fbR1 = ssd() fbR2 = ssd() delayL1 = delay( add( fbL1.out, in1 ), period1, {size:44100}) delayL2 = delay( add( fbL2.out, in1 ), period2, {size:44100}) delayR1 = delay( add( fbR1.out, in1 ), period1, {size:44100}) delayR2 = delay( add( fbR2.out, in1 ), period2, {size:44100}) delayL1F = fold( delayL1, -1,1 ) delayL2F = fold( delayL2, -1,1 ) delayR1F = fold( delayR1, -1,1 ) delayR2F = fold( delayR2, -1,1 ) mixL1 = memo( mix( delayL1F, fbL1.out, damp1 ) ) mixL2 = memo( mix( delayL2F, fbL2.out, damp2 ) ) mixR1 = memo( mix( delayR1F, fbR1.out, damp1 ) ) mixR2 = memo( mix( delayR2F, fbR2.out, damp2 ) ) fbL1.in( mixL1 ) fbL2.in( mixL2 ) fbR1.in( mixR1 ) fbR2.in( mixR2 ) fbL = ssd() fbR = ssd() mainL = memo( mix( mul( add( mixL1, mixL2 ), .5 ), fbL.out, maindamp ) ) mainR = memo( mix( mul( add( mixR1, mixR2 ), .5 ), fbR.out, maindamp ) ) fbL.in( mainL ) fbR.in( mainR ) cb = play( [mainL, mainR] ) gui = new dat.GUI() gui.add( cb, 'damp1', 0, 1 ) gui.add( cb, 'damp2', 0, 1 ) gui.add( cb, 'maindamp', 0, 1 ) gui.add( cb, 'period1', 64, 22050 ).step(1) gui.add( cb, 'period2', 64, 22050 ).step(1) })