Stuff

My first ditty
idk what i am doing.

Log in to post a comment.

class Imprint {
    constructor(frequancy, absorbsion, weight=1) {
    	this.x = 0;
        this.v = 0;
        this.a = 0;
        this.weight= weight;
        this.frequancy = frequancy;
        this.absorbsion = absorbsion;
    }
    sample(s) {
        this.v *= this.absorbsion;
        this.v += s;//Math.max(Math.min(s*50, 1), -1);
        this.v -= this.x;
        this.x += this.v*this.frequancy;
        return this.x*this.weight;
    }
}
let reverb = filter.def(class {
	constructor(options) {
    	this.mem = [];
    	this.max =0;
        for (let i = 0; i < 256; i++) {
            let res = Math.random()*options.frequancy/44000;
            let weight = 1/res;
            this.max += weight;
        	this.mem.push(new Imprint(res,1-options.decay, weight));
        }
    }
    process(input) {
        let s = input[0] // actual sound
    	let out = 0;
    	for (let i of this.mem) {
        	out += i.sample(s);
        }
        out /= this.max;
        return [out, out];
    }
})
function mix(a, b, x) {
    return a+x*(b-a)
}
class testS {
    constructor(opt) {
        this.t = 0;
    }
    process(note, env, tick, opt) {
        this.t += midi_to_hz(note) * ditty.dt;
        var r = Math.random()*Math.random();
        var t = this.t*10;
        t *= (Math.floor(tick*r*3)*(4/3));
        return Math.sin(t)*env.value;
    }
}

var test = synth.def(testS, {attack: 0.001, release: 1, duration: 1, freq: 65});
function hash(x) {
    x *= 999;
    return Math.sin(x*345.34+Math.sin(5345.345*x+345.3453*Math.sin(534.3634*x))*634.6345);
}
function noise(x) {
    return mix(hash(Math.floor(x)), hash(Math.floor(x)+1), x%1);
}
class baseS {
    constructor(opt) {
        this.t = 0;
    }
    process(note, env, tick, opt) {
        var m = 5*(Math.floor(tick*4)%Math.floor( hash(Math.floor(tick/2+10))*5+2 ))+(hash(Math.floor(tick/5))>0.5);
        var s = Math.exp(-(tick%1))*noise(tick*500*m)*Math.exp(-(tick%5)*0.5);
        return s;
    }
}

var base = synth.def(baseS, {attack: 0.001, release: 1, duration: 100, freq: 65});
base.play();


var dur = 2.0;
var slp = 1.5;
var k = 0;
var m = 0;
loop( () => {
  test.play(c4, { attack: 0.01, release: 0.5,  duration: dur });
  sleep(slp);
  if (m != 1) {
      test.play(d4, { attack: 0.01, release: 0.5,  duration: dur });
      sleep(slp);
      test.play(e4, { attack: 0.01, release: 0.5,  duration: dur });
      sleep(slp);
  } else {
      m = 0;
      test.play(e4, { attack: 0.01, release: 1.0,  duration: dur*2+Math.random() });
      sleep(slp);
  }

  test.play(g4, { attack: 0.01, release: 0.5,  duration: dur });
  sleep(slp*0.5);
  if (k++ == 1) {
      k = 0;
      m += 1;
      test.play(d4, { attack: 0.01, release: 1,  duration: dur*3.0 });
     sleep(slp*2.0);
  }

}, { name: 'test' }).connect(reverb.create({frequancy:3000, decay:0.001}));
loop( () => {
    base.play();
    sleep(100000);

}, { name: 'test1' }).connect(reverb.create({frequancy:2000, decay:0.0001}));