Skip to content

Instantly share code, notes, and snippets.

@NHQ
Created January 22, 2016 22:28
Show Gist options
  • Save NHQ/0dad72a4a8d7841da81a to your computer and use it in GitHub Desktop.
Save NHQ/0dad72a4a8d7841da81a to your computer and use it in GitHub Desktop.
requirebin sketch
setTimeout(function(){context = (AudioContext) ? AudioContext : webkitAudioContext
master = new context
SAMPLERATE = samplerate = master.sampleRate
jsynth = require('jsynth')
nvelope = require('nvelope')
sync = require('jsynth-sync')
oz = require('oscillators')
jdelay = require('jdelay')
amod = require('amod')
chronotrigger = require('jigger')
generator = new chronotrigger()
music = function(time, sample, input){
timer.tick.call(timer, time)
return generator.tick(time, sample, input)
}
timer = sync(115/2, master.sampleRate)
gong0 = timer.on(1/8, function(_t, b){
var opts = {}
opts.c = 1;
opts.a = 1;
opts.m = 2;
opts.f = 61.74 * 4
opts.wave = 'triangle'
var dingdong = makeBells(opts)
var attack = [[2,0],[0,1],[2,1], [1,1]]
var release= [[1,1],[1,0], [1,0]]
var curves = [attack, release]
var durs = [.03, .03]
var mods = {curves: curves, durations: durs}
var synth = function(t,s,i){
return dingdong(t) * ((1 + (b%2))/2) * amod(1, .5, t * 115/60/2, 1/4)
}
var gen = generator.set(_t, synth, mods)
})
var delay = jdelay(Math.floor(master.sampleRate * 115/60/24), 2/3, 1)
gong = timer.on(1/4, function(_t, b){
var x = Math.floor((_t % 64 % 32 % 16 % 4))
if(b%x==3||b%1/2==0){
// this should pribibli get the other stringy synth!
var delay = jdelay(master.sampleRate * 60 / 64 / 8, .75, .75)
var attack = [[0,1],[2,1], [1,1]]
var release= [[1,1],[1,0], [1,0]]
var curves = [attack, release]
var durs = [.05, .5]
var mods = {curves: curves, durations: durs}
var synth = function(t,s,i){
return delay(oz.sine(t, oz.sine(t, amod(3, 3/2, t* 155/60/2, 1/64)) + 61.74 * 4 * 2) *
amod(1, .5, t, 1/16)) * 3 / 4
}
generator.set(_t, synth, mods)
}
if(!(b%2==0)){
console.log(b%4)
var opts = {}
opts.c = 1;
opts.a = 1;
opts.m = 2;
opts.f = 440 ;
opts.wave = 'square'
var ddingdong = makeBells(opts)
var attack = [[0,1],[2,1], [1,1]]
var release= [[1,1],[1,0], [1,0]]
var curves = [attack, release]
var durs = [.05, 60/64 / 4]
var mods = {curves: curves, durations: durs}
var synth = function(t,s,i){
return oz.sine(t, Math.random()) * amod(1.5, .5, t, 32*2*2) / 2 // + oz.saw(t, oz.sine(t, 60/124/2) * 61.74 * 4 * 4 * 2)
}
var gen = generator.set(_t, synth, mods)
}
if((b%3==0||b%15==14||b%15===13)){
console.log(b%4)
var opts = {}
opts.c = 3;
opts.a = 1;
opts.m = 1.67;
opts.f = 61.74;
opts.wave = 'square'
var dingdong = makeBells(opts)
var attack = [[0,1],[0,1],[2,1], [1,1]]
var release= [[1,1],[1,0], [1,0]]
var curves = [attack, release]
var durs = [.05, 60/124-.05]
var mods = {curves: curves, durations: durs}
var synth = function(t,s,i){
return dingdong(t) //* amod(.5, .1, t, 33)
}
var gen = generator.set(_t, synth, mods)
}
})
dsp = function(t, s, i){
time = t
return music(t, s, i) * .17
}
synth = jsynth(master, music)
synth.connect(master.destination)
function makeBells(opts){
var f = opts.f
var g = createGause(opts)
var m = opts.m || 2;
var wave = opts.wave || 'sine';
return function(time, _m, c, a){
var x = f
var y = oz[wave](time, f);
while(x <= 11000){
y += g(x, c, a);
x = Math.pow(x, m)
}
return y
}
}
function createGause(opts){
opts = opts || {}
var c = opts.c || 100
var a = opts.a || 1
var u = opts.u || 0
return (function (delta, _c, _a, _u){
a = _a || a
c = _c || c
u = _u || u
return +
a *
Math.pow(
Math.E,
(
-Math.pow(
delta - u,
2 ) /
Math.pow(
2 * c,
2 )
)
)
})
}},0)
require=function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}({oscillators:[function(require,module,exports){var OZ=module.exports;var tau=Math.PI*2;OZ.sine=sine;OZ.saw=saw;OZ.saw_i=saw_i;OZ.triangle=triangle;OZ.triangle_s=triangle_s;OZ.square=square;function sine(t,f){return Math.sin(t*tau*f)}function saw(t,f){var n=t%(1/f)*f%1;return-1+2*n}function saw_i(t,f){var n=t%(1/f)*f%1;return 1-2*n}function triangle(t,f){var n=t%(1/f)*f%1;return n<.5?-1+2*(2*n):1-2*(2*n)}function triangle_s(t,f){var n=t%(1/f)*f%1;var s=Math.abs(Math.sin(t));return n<s?-1+2*(2*(n/s)):1-2*(2*(n/s))}function square(t,f){return t%(1/f)*f%1>.5?1:-1}},{}]},{},[]);require=function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}({jsynth:[function(require,module,exports){module.exports=function(context,fn,bufSize){if(typeof context==="function"){fn=context;context=new webkitAudioContext}if(!bufSize)bufSize=4096;var self=context.createScriptProcessor(bufSize,1,1);self.fn=fn;var tt=0;var ii=0;const rate=context.sampleRate;self.i=self.t=0;window._SAMPLERATE=self.sampleRate=self.rate=context.sampleRate;self.duration=Infinity;self.recording=false;self.onaudioprocess=function(e){var output=e.outputBuffer.getChannelData(0),input=e.inputBuffer.getChannelData(0);self.tick(output,input)};self.tick=function(output,input){for(var i=0;i<output.length;i+=1){tt=ii/rate;ii=ii+1;output[i]=self.fn(tt,ii,input[i])}return output};self.stop=function(){self.disconnect();self.playing=false;if(self.recording){}};self.play=function(opts){if(self.playing)return;self.connect(self.context.destination);self.playing=true;return};self.record=function(){};self.reset=function(){self.i=self.t=0};self.createSample=function(duration){self.reset();var buffer=self.context.createBuffer(1,duration,self.context.sampleRate);var blob=buffer.getChannelData(0);self.tick(blob);return buffer};return self};function mergeArgs(opts,args){Object.keys(opts||{}).forEach(function(key){args[key]=opts[key]});return Object.keys(args).reduce(function(acc,key){var dash=key.length===1?"-":"--";return acc.concat(dash+key,args[key])},[])}function signed(n){if(isNaN(n))return 0;var b=Math.pow(2,15);return n>0?Math.min(b-1,Math.floor(b*n-1)):Math.max(-b,Math.ceil(b*n-1))}},{}]},{},[]);require=function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}({1:[function(require,module,exports){function EventEmitter(){this._events=this._events||{};this._maxListeners=this._maxListeners||undefined}module.exports=EventEmitter;EventEmitter.EventEmitter=EventEmitter;EventEmitter.prototype._events=undefined;EventEmitter.prototype._maxListeners=undefined;EventEmitter.defaultMaxListeners=10;EventEmitter.prototype.setMaxListeners=function(n){if(!isNumber(n)||n<0||isNaN(n))throw TypeError("n must be a positive number");this._maxListeners=n;return this};EventEmitter.prototype.emit=function(type){var er,handler,len,args,i,listeners;if(!this._events)this._events={};if(type==="error"){if(!this._events.error||isObject(this._events.error)&&!this._events.error.length){er=arguments[1];if(er instanceof Error){throw er}else{throw TypeError('Uncaught, unspecified "error" event.')}return false}}handler=this._events[type];if(isUndefined(handler))return false;if(isFunction(handler)){switch(arguments.length){case 1:handler.call(this);break;case 2:handler.call(this,arguments[1]);break;case 3:handler.call(this,arguments[1],arguments[2]);break;default:len=arguments.length;args=new Array(len-1);for(i=1;i<len;i++)args[i-1]=arguments[i];handler.apply(this,args)}}else if(isObject(handler)){len=arguments.length;args=new Array(len-1);for(i=1;i<len;i++)args[i-1]=arguments[i];listeners=handler.slice();len=listeners.length;for(i=0;i<len;i++)listeners[i].apply(this,args)}return true};EventEmitter.prototype.addListener=function(type,listener){var m;if(!isFunction(listener))throw TypeError("listener must be a function");if(!this._events)this._events={};if(this._events.newListener)this.emit("newListener",type,isFunction(listener.listener)?listener.listener:listener);if(!this._events[type])this._events[type]=listener;else if(isObject(this._events[type]))this._events[type].push(listener);else this._events[type]=[this._events[type],listener];if(isObject(this._events[type])&&!this._events[type].warned){var m;if(!isUndefined(this._maxListeners)){m=this._maxListeners}else{m=EventEmitter.defaultMaxListeners}if(m&&m>0&&this._events[type].length>m){this._events[type].warned=true;console.error("(node) warning: possible EventEmitter memory "+"leak detected. %d listeners added. "+"Use emitter.setMaxListeners() to increase limit.",this._events[type].length);if(typeof console.trace==="function"){console.trace()}}}return this};EventEmitter.prototype.on=EventEmitter.prototype.addListener;EventEmitter.prototype.once=function(type,listener){if(!isFunction(listener))throw TypeError("listener must be a function");var fired=false;function g(){this.removeListener(type,g);if(!fired){fired=true;listener.apply(this,arguments)}}g.listener=listener;this.on(type,g);return this};EventEmitter.prototype.removeListener=function(type,listener){var list,position,length,i;if(!isFunction(listener))throw TypeError("listener must be a function");if(!this._events||!this._events[type])return this;list=this._events[type];length=list.length;position=-1;if(list===listener||isFunction(list.listener)&&list.listener===listener){delete this._events[type];if(this._events.removeListener)this.emit("removeListener",type,listener)}else if(isObject(list)){for(i=length;i-->0;){if(list[i]===listener||list[i].listener&&list[i].listener===listener){position=i;break}}if(position<0)return this;if(list.length===1){list.length=0;delete this._events[type]}else{list.splice(position,1)}if(this._events.removeListener)this.emit("removeListener",type,listener)}return this};EventEmitter.prototype.removeAllListeners=function(type){var key,listeners;if(!this._events)return this;if(!this._events.removeListener){if(arguments.length===0)this._events={};else if(this._events[type])delete this._events[type];return this}if(arguments.length===0){for(key in this._events){if(key==="removeListener")continue;this.removeAllListeners(key)}this.removeAllListeners("removeListener");this._events={};return this}listeners=this._events[type];if(isFunction(listeners)){this.removeListener(type,listeners)}else{while(listeners.length)this.removeListener(type,listeners[listeners.length-1])}delete this._events[type];return this};EventEmitter.prototype.listeners=function(type){var ret;if(!this._events||!this._events[type])ret=[];else if(isFunction(this._events[type]))ret=[this._events[type]];else ret=this._events[type].slice();return ret};EventEmitter.listenerCount=function(emitter,type){var ret;if(!emitter._events||!emitter._events[type])ret=0;else if(isFunction(emitter._events[type]))ret=1;else ret=emitter._events[type].length;return ret};function isFunction(arg){return typeof arg==="function"}function isNumber(arg){return typeof arg==="number"}function isObject(arg){return typeof arg==="object"&&arg!==null}function isUndefined(arg){return arg===void 0}},{}],"jsynth-sync":[function(require,module,exports){var emitter=require("events").EventEmitter;module.exports=sync;var $=module.exports;function sync(bpm,sampleRate){if(!(this instanceof sync))return new sync(bpm,sampleRate);this.bpm=bpm;this.beatsPerSecond=bpm/60;this.sampleRate=sampleRate;this.spb=Math.round(sampleRate/this.beatsPerSecond);this.s=0;this.t=0;this.index=[];this.beatIndex=new Array}$.prototype.clearAll=function(bpm,samplerate){this.index=this.index.map(function(){return undefined})};$.prototype.tick=function(t,i){++this.s;for(var n=0;n<this.index.length;n++){if(this.index[n])this.index[n](t,i,this.s)}};$.prototype.off=function(i){this.index.splice(i,1,undefined)};$.prototype.on=function(beats,fn){var i=Math.ceil(this.spb*beats);var l=this.index.length;var self=this;var off=function(){self.off(l)};var delta=0;var skipNext=false;var skip=false;function swing(beat){delta=Math.abs(Math.floor(self.spb*beat));skipNext=beat===0?false:true}var emit=new emitter;emit.on("stop",off);this.index.push(function(b,fn,beats,off){return function(t,a,f){if(f%(i+delta)==0){if(skip){skip=false;return}if(skipNext){skipNext=false;skip=true;if(delta>=i){skip=false}}fn.apply(fn,[t,++b,off,swing]);emit.emit("beat",b)}}}(0,fn,beats,off));return emit};function amilli(t){return[Math.floor(t),t%1*1e3]}},{events:1}]},{},[]);require=function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}({1:[function(require,module,exports){var OZ=module.exports;var tau=Math.PI*2;OZ.sine=sine;OZ.saw=saw;OZ.saw_i=saw_i;OZ.triangle=triangle;OZ.triangle_s=triangle_s;OZ.square=square;function sine(t,f){return Math.sin(t*tau*f)}function saw(t,f){var n=t%(1/f)*f%1;return-1+2*n}function saw_i(t,f){var n=t%(1/f)*f%1;return 1-2*n}function triangle(t,f){var n=t%(1/f)*f%1;return n<.5?-1+2*(2*n):1-2*(2*n)}function triangle_s(t,f){var n=t%(1/f)*f%1;var s=Math.abs(Math.sin(t));return n<s?-1+2*(2*(n/s)):1-2*(2*(n/s))}function square(t,f){return t%(1/f)*f%1>.5?1:-1}},{}],amod:[function(require,module,exports){var oz=require("oscillators");module.exports=function(c,r,t,f){return c+r*oz.sine(t,f)}},{oscillators:1}]},{},[]);require=function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}({1:[function(require,module,exports){module.exports=function(obj,fn){var f=function(){if(typeof fn!=="function")return;return fn.apply(obj,arguments)};function C(){}C.prototype=Object.getPrototypeOf(obj);f.__proto__=new C;Object.getOwnPropertyNames(Function.prototype).forEach(function(key){if(f[key]===undefined){f.__proto__[key]=Function.prototype[key]}});Object.getOwnPropertyNames(obj).forEach(function(key){f[key]=obj[key]});return f}},{}],jdelay:[function(require,module,exports){var funstance=require("funstance");module.exports=function(delay,feedback,mix,bufferSize){var delay=Math.floor(delay);var feedback=feedback;var mix=mix;var bufferSize=bufferSize||delay*2;if(bufferSize<delay*2)bufferSize=delay*2;var d=new Delay(delay,feedback,mix,bufferSize);var fn=funstance(d,Sample);return fn;function Delay(delay,feedback,mix,bufferSize){this.feedback=feedback;this.mix=mix;this.delay=delay;this.buffer=new Float32Array(bufferSize);this.writeOffset=0;this.endPoint=this.delay*2;this.readOffset=this.delay+1;this.readZero=0}function Sample(sample,_delay,feedback,mix){var s=sample;if(feedback)this.feedback=feedback;if(mix)this.mix=mix;if(_delay&&_delay!==this.delay){_delay=Math.max(0,Math.floor(_delay));if(_delay*2>this.buffer.length){var nb=new Float32Array(_delay*2);nb.set(this.buffer,0);this.buffer=nb}this.delay=_delay;this.endPoint=this.delay*2}if(this.readOffset>=this.endPoint)this.readOffset=0;s=this.buffer[this.readOffset];var write=sample+s*this.feedback;this.buffer[this.writeOffset]=write;this.writeOffset++;this.readOffset++;if(this.writeOffset>=this.endPoint)this.writeOffset=0;return(sample+s)*this.mix}}},{funstance:1}]},{},[]);require=function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}({1:[function(require,module,exports){module.exports=function(pts){return function(t){for(var a=pts;a.length>1;a=b){for(var i=0,b=[],j;i<a.length-1;i++){for(b[i]=[],j=1;j<a[i].length;j++){b[i][j]=a[i][j]*(1-t)+a[i+1][j]*t}}}return a[0][1]}}},{}],2:[function(require,module,exports){module.exports=solver;function beezn(scale){var fn="";for(var x=0;x<=scale;x++){fn+="(Math.pow(1 - x, "+(scale-x)+") * Math.pow(x, "+x+") * y["+x+"] ";if(x>0&&x<scale)fn+="* "+scale+") ";else fn+=") ";if(x<scale)fn+="+ "}return new Function("x,y","return "+fn)}function solver(curves){var scale=curves.length;curves=curves.reverse();var fn=beezn(scale-1);var x=curves.map(function(e){return e[0]});var y=curves.map(function(e){return e[1]});return function(t){return fn(fn(t,x),y)}}},{}],3:[function(require,module,exports){module.exports=function(start,dur,min,max){if(!min)min=0;if(!max)max=1;var end=start+dur;var d=end-start;var r=max-min;return function(time){x=min+(time-start)*r/d;if(x>1){if(time<end)x=Number("."+x.toString().split(".").join(""))}return x}}},{}],nvelope:[function(require,module,exports){var amod=require("./amod.js");var tnorm=require("normalize-time");var beezy=require("beezy");module.exports=function(pts,durs){pts=pts.map(beezy);var t=0;var totalDuration=durs.reduce(function(e,i){return e+i},0);var tdNormFN=tnorm(t,totalDuration);var s=0;var end=t+totalDuration;var durFNS=durs.map(function(e,i){var x=tnorm(t+s,e);s+=e;return x});var dp=0;var durpercent=durs.map(function(e,i){var x=e/totalDuration+dp;dp+=e/totalDuration;return x});var tn,n,i,v=0,fn=0;var envelope=function(t){tn=tdNormFN(t);if(0>tn||tn>1)return 0;fn=durpercent.reduce(function(p,e,i,d){return(d[i-1]||0)<=tn&&tn<=e?i:p},0);v=pts[fn](durFNS[fn](t));return v};return envelope;function xenvelope(t,sustain){tn=tdNormFN(t);if(0>=tn||tn>=1)return 0;if(tn>durpercent[fn])fn=fn+1>pts.length-1?0:fn+1;v=pts[fn](durFNS[fn](t));return v}}},{"./amod.js":1,beezy:2,"normalize-time":3}]},{},[]);require=function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}({1:[function(require,module,exports){module.exports=function(pts){return function(t){for(var a=pts;a.length>1;a=b){for(var i=0,b=[],j;i<a.length-1;i++){for(b[i]=[],j=1;j<a[i].length;j++){b[i][j]=a[i][j]*(1-t)+a[i+1][j]*t}}}return a[0][1]}}},{}],2:[function(require,module,exports){var amod=require("./amod.js");var tnorm=require("normalize-time");module.exports=function(pts,durs){pts=pts.map(amod);var t=0;var totalDuration=durs.reduce(function(e,i){return e+i},0);var tdNormFN=tnorm(t,totalDuration);var s=0;var end=t+totalDuration;var durFNS=durs.map(function(e,i){var x=tnorm(t+s,e);s+=e;return x});var dp=0;var durpercent=durs.map(function(e,i){var x=e/totalDuration+dp;dp+=e/totalDuration;return x});var tn,n,i,v=0,fn=0;var envelope=function(t){tn=tdNormFN(t);if(0>tn||tn>1)return 0;fn=durpercent.reduce(function(p,e,i,d){return(d[i-1]||0)<=tn&&tn<=e?i:p},0);v=pts[fn](durFNS[fn](t));return v};return envelope;function xenvelope(t,sustain){tn=tdNormFN(t);if(0>=tn||tn>=1)return 0;if(tn>durpercent[fn])fn=fn+1>pts.length-1?0:fn+1;v=pts[fn](durFNS[fn](t));return v}}},{"./amod.js":1,"normalize-time":3}],3:[function(require,module,exports){module.exports=function(start,dur,min,max){if(!min)min=0;if(!max)max=1;var end=start+dur;var d=end-start;var r=max-min;return function(time){x=min+(time-start)*r/d;if(x>1){if(time<end)x=Number("."+x.toString().split(".").join(""))}return x}}},{}],jigger:[function(require,module,exports){var nvelope=require("nvelope");module.exports=chrono;function chrono(_time){if(!(this instanceof chrono))return new chrono(_time);var self=this;this.ret={};this.gens=[];this.time=_time||0;this.start=_time||0;this.set=function(time,synth,mods){var x;self.gens.push(x=new generate(time,synth,mods));return x};this.tick=function(t,s,i){self.time=t;gc(t);return self.gens.reduce(function(a,e){return a+e.signal(t,s,i)},0)};function gc(t){self.gens=self.gens.filter(function(e){if(e.start+e.dur<t)return false;else return true})}}function generate(_time,synth,mod){if(!(this instanceof generate))return new generate(_time,synth,mod);var self=this;this.start=_time;this.dur=mod.durations.reduce(function(acc,e){return acc+e},0);this.synth=synth;this.env=nvelope(mod.curves,mod.durations);this.signal=function(t,s,i){return self.synth(t,s,i)*self.env(t-self.start)}}},{nvelope:2}]},{},[]);setTimeout(function(){context=AudioContext?AudioContext:webkitAudioContext;master=new context;SAMPLERATE=samplerate=master.sampleRate;jsynth=require("jsynth");nvelope=require("nvelope");sync=require("jsynth-sync");oz=require("oscillators");jdelay=require("jdelay");amod=require("amod");chronotrigger=require("jigger");generator=new chronotrigger;music=function(time,sample,input){timer.tick.call(timer,time);return generator.tick(time,sample,input)};timer=sync(115/2,master.sampleRate);gong0=timer.on(1/8,function(_t,b){var opts={};opts.c=1;opts.a=1;opts.m=2;opts.f=61.74*4;opts.wave="triangle";var dingdong=makeBells(opts);var attack=[[2,0],[0,1],[2,1],[1,1]];var release=[[1,1],[1,0],[1,0]];var curves=[attack,release];var durs=[.03,.03];var mods={curves:curves,durations:durs};var synth=function(t,s,i){return dingdong(t)*((1+b%2)/2)*amod(1,.5,t*115/60/2,1/4)};var gen=generator.set(_t,synth,mods)});var delay=jdelay(Math.floor(master.sampleRate*115/60/24),2/3,1);gong=timer.on(1/4,function(_t,b){var x=Math.floor(_t%64%32%16%4);if(b%x==3||b%1/2==0){var delay=jdelay(master.sampleRate*60/64/8,.75,.75);var attack=[[0,1],[2,1],[1,1]];var release=[[1,1],[1,0],[1,0]];var curves=[attack,release];var durs=[.05,.5];var mods={curves:curves,durations:durs};var synth=function(t,s,i){return delay(oz.sine(t,oz.sine(t,amod(3,3/2,t*155/60/2,1/64))+61.74*4*2)*amod(1,.5,t,1/16))*3/4};generator.set(_t,synth,mods)}if(!(b%2==0)){console.log(b%4);var opts={};opts.c=1;opts.a=1;opts.m=2;opts.f=440;opts.wave="square";var ddingdong=makeBells(opts);var attack=[[0,1],[2,1],[1,1]];var release=[[1,1],[1,0],[1,0]];var curves=[attack,release];var durs=[.05,60/64/4];var mods={curves:curves,durations:durs};var synth=function(t,s,i){return oz.sine(t,Math.random())*amod(1.5,.5,t,32*2*2)/2};var gen=generator.set(_t,synth,mods)}if(b%3==0||b%15==14||b%15===13){console.log(b%4);var opts={};opts.c=3;opts.a=1;opts.m=1.67;opts.f=61.74;opts.wave="square";var dingdong=makeBells(opts);var attack=[[0,1],[0,1],[2,1],[1,1]];var release=[[1,1],[1,0],[1,0]];var curves=[attack,release];var durs=[.05,60/124-.05];var mods={curves:curves,durations:durs};var synth=function(t,s,i){return dingdong(t)};var gen=generator.set(_t,synth,mods)}});dsp=function(t,s,i){time=t;return music(t,s,i)*.17};synth=jsynth(master,music);synth.connect(master.destination);function makeBells(opts){var f=opts.f;var g=createGause(opts);var m=opts.m||2;var wave=opts.wave||"sine";return function(time,_m,c,a){var x=f;var y=oz[wave](time,f);while(x<=11e3){y+=g(x,c,a);x=Math.pow(x,m)}return y}}function createGause(opts){opts=opts||{};var c=opts.c||100;var a=opts.a||1;var u=opts.u||0;return function(delta,_c,_a,_u){a=_a||a;c=_c||c;u=_u||u;return+a*Math.pow(Math.E,-Math.pow(delta-u,2)/Math.pow(2*c,2))}}},0);
{
"name": "requirebin-sketch",
"version": "1.0.0",
"dependencies": {
"oscillators": "1.0.0",
"jsynth": "2.8.0",
"jsynth-sync": "0.14.0",
"amod": "2.0.0",
"jdelay": "9.1.0",
"nvelope": "0.12.0",
"jigger": "1.0.0"
}
}
<!-- contents of this file will be placed inside the <body> -->
<!-- contents of this file will be placed inside the <head> -->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment