// +---------------------------------------------+
// * 2024 nabr ^;.;^ *
// * https://dittytoy.net/ditty/bc2c18eddd *
// +---------------------------------------------+
function inst(rt, t, msb, hrb, phb )
{
let y = 0., an = 0.,
p = 15. * elem((mod(1. * t, 4.) > 3. ? 10.97 : 8.26),(mod(2. * t, 4.) > 2. ? 9.28 : 12.25),10.85,12.25)[int(.5 * t) % 4],
en = fract(t);
an = en * exp(1.7 + log2(1. - en));
y = mod( an + p * t , 1. / 10.);
y *= cos( msb - 3.0 * mod( .1 * an + phb * p * t, 1. / hrb ));
return pow(an, 4. ) * y;
}
synth.def(class
{
constructor(){}
process()
{
let t = ditty.time;
this.printmsg(2.*t);
let o = { x : 0, y : 0 };
let tmx = 0.5, // time speed
dmx = 1.0, // delay speed
msb = 1.5, // mix bass
hrb = 4.0, // subharmonic bass
phb = .25; // pitch bass
if( t > 22. && t < 38.5)
{
tmx = (t > 31.) ? .0625 : .25 ;
dmx = 2. ;
msb = (t > 31.) ? (.5 + exp(-1.5 * fract(t))) : 1.;
hrb = 8.;
phb = .5;
t = t + 25.;
};
let dlt = (tmx * t);
let ya = [0, 0, 0, 0, 0, 0, 0, 0];
for (let i = 0; i < 32; ++i)
{
dlt += exp2( - (i%4) * (1 + i % 12) );
ya[i % 8] = inst( t, (dmx * dlt), msb, hrb, phb );
dlt -= .2694 * exp2( 1./16. * (1 + i % 2) );
//handpicked some polarities integer bits unpacked
o.x += ya[i % 8] * ((0 < ((60958) & 1 << 15 - int(i) % 16 )) ? -1. : 1.);
o.y += ya[i % 8] * ((0 < ((47947) & 1 << 15 - int(i) % 16 )) ? -1. : 1.);
}
return [o.x, o.y];
}
// enter the void radio on yt inspired
printmsg(t)
{
const msg = " • In the grand tapestry of existence, you have a unique and irreplaceable role, contributing to the intricate beauty and harmony of the whole • In the symphony of life, every note, every chord, every silence holds profound significance, waiting to be deciphered by the discerning ear";
let result = '';
[...msg].forEach( (v, i) =>
{
if(i % 98 === 0) result += "\n";
result += msg[ ((t | 0) + i) % msg.length];
});
debug.log(" ", result );
};
}).play(0,{duration:240});
//_________UTILITIES
const{abs,acos,asin,atan,atan2,ceil,clz32,cos,exp,floor,imul,fround,log,max,min,pow,random,round,sin,sqrt,tan,log10,log2,log1p,expm1,cosh,sinh,tanh,acosh,asinh,atanh,hypot,trunc,sign,cbrt,/*E,*/LOG2E,LOG10E,LN2,LN10,PI,SQRT2,SQRT1_2}=Math;
const int = (x) => x|0;
const tau = PI*2.0;
const fract = (x) => (x-floor(x));
const mod = (x,y) => (x-floor(x/y)*y);
const exp2 = (x) => exp(x*log(2.0));
const dbg = (x) => debug.warn(' ',x);
const elem = (...args) => [...args];