Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Genre: Complextro / Trance
- /*Universals*/
- BPM=128,
- sR=48e3,
- sPB=32768,
- tn=444,
- tr=7,
- edo=12,
- gS=(BPM,sR,sPB)=>abs(BPM/((120*sR)/sPB)),
- gP=(sR,tr,tn,edo)=>(1/sR*256)*tn*2**((tr-9)/12),
- r=t*gS(BPM,sR,sPB),
- p=t*gP(sR,tr,tn,edo),
- /*FX Containers*/
- t || (lprfx=[],delayfx=[],cfx=[],sf=[]),lprfxi=0,delayfxi=0,cfxi=0,si=0,
- /*Sequences*/
- s=(x,y,z=0,w=0)=>x[(z?y:(r-(2**y*w))/2**y)%x.length|0]||0,
- ms=(...x)=>p*2**(parseInt(s(...x),36)/12)||0,
- /*Effects*/
- lpr = lowPassResonance = (a, c, r) => (
- lpr_fxii = lprfxi ++,
- lprfx[lpr_fxii] ??= [0, 0, 0, 0],
- lprfx[lpr_fxii][0] += (a - lprfx[lpr_fxii][0] + (r + r / ((1 + .1e-9) - c)) * (lprfx[lpr_fxii][0] - lprfx[lpr_fxii][1])) * c,
- lprfx[lpr_fxii][1] += (a - lprfx[lpr_fxii][1] + (r + r / ((1 + .1e-9) - c)) * (lprfx[lpr_fxii][1] - lprfx[lpr_fxii][2])) * c,
- lprfx[lpr_fxii][2] += (lprfx[lpr_fxii][1] - lprfx[lpr_fxii][2]) * c,
- lprfx[lpr_fxii][3] += (lprfx[lpr_fxii][2] - lprfx[lpr_fxii][3]) * c,
- lprfx[lpr_fxii][3]
- ),
- delayMax = 1e6,
- delay = (signal, time, feedback = .5, dryWet = .5) => (
- delay_fxii = delayfxi ++,
- delayfx[delay_fxii] ??= {
- buf: new Float32Array(delayMax),
- idx: 0
- },
- dLength = min(delayfx[delay_fxii].buf.length, max(1, time | 0)),
- d_out = delayfx[delay_fxii].buf[delayfx[delay_fxii].idx],
- delayfx[delay_fxii].buf[delayfx[delay_fxii].idx] = signal + d_out * feedback,
- delayfx[delay_fxii].idx = (delayfx[delay_fxii].idx + 1) % round(dLength),
- mix = min(1, max(0, dryWet)),
- d_out * mix + signal * (1 - mix)
- ),
- hpr = highPassResonance = (a, c, r) => a - lpr(a, c, r),
- bpr = bandPassResonance = (a, hc, lc, r) => hpr(lpr(a, lc, r), hc, r),
- crs=(In,v,d,e,m=256)=>{
- cfxi++;
- cfx[cfxi]??=Array(n=4096).fill(0);
- cfx[cfxi][t%n]=In;
- var out=0;
- for(let i=1;i<v;i++){
- out+=cfx[cfxi][(t+(e?1:-1)*((t/m*(d+(d*i))-(i/2)))|0)%n]/v||0
- } return out },
- cv=(tone = t, note = [[0]], trnsp = 0, wave = input => (input / 128 % 2 - 1 + input / 256 % 2 - 1)/1.6) => {
- let idx = chr = 0
- let poly = 5
- for (; idx < min(poly, note.length); idx++)
- chr += wave(tone * 2 ** ((note[idx] + trnsp) / 12))
- return poly ? chr / poly : 0
- },
- thr = x => { throw x },
- // Toggle UI / display mode
- disp = 0,
- // Initialize all persistent state arrays on first tick
- // Arrays are kept separate so multiple meters / channels can coexist
- t || ([fxVU, fxVUdB, fxPeak, fxPeakHold, fxPeakVel, fxCorr, fxClipHold, fxVUFrame, ticks]
- = Array.from({ length: 9 }, () => [])),
- // Running indices for meter and correlation instances
- vufxi = 0,
- peakfxi = 0,
- // VU meter configuration
- vuMax = 120, // 0 dBFS maps to this position
- labelWidth = 5, // space reserved for channel labels
- headroom = 6, // extra dB above 0 dBFS shown on the meter
- // High-resolution time source (fallback-safe)
- now = (typeof performance != 'undefined' ? performance.now() : Date.now()),
- // === render helpers: fixed-width VU Meter, peak marker and ruler ===
- // Extra spacing to the right of the meter (labels live here)
- meterPadding = 0,
- // Total visual width of the meter bar area
- meterWidth = (vuMax + headroom) | 0,
- // Complete line width including padding
- totalWidth = meterWidth + meterPadding,
- // --- VU meter core ---
- // Accumulates RMS per frame, smooths it, converts to dBFS,
- // and updates peak hold + decay logic
- vu = vuMeter = input => (
- vu_fxii = vufxi++,
- // RMS smoothing coefficient + visual update FPS
- s = .5, fps = 60,
- // Lazy initialization of per-instance state
- fxVU[vu_fxii] ??=
- fxVUdB[vu_fxii] ??=
- fxPeak[vu_fxii] ??=
- fxPeakHold[vu_fxii] ??=
- fxPeakVel[vu_fxii] ??= 0,
- // Per-frame RMS accumulator (prevents per-sample flicker)
- fxVUFrame ??= [],
- fVU = fxVUFrame[vu_fxii] ??= { sum: 0, count: 0, lastFrame: -1 },
- // Accumulate squared samples for RMS
- fVU.sum += input * input,
- fVU.count ++,
- // Quantize time into visual frames
- frame = floor(now / (1000 / fps)),
- // Only update meter once per frame
- frame !== fVU.lastFrame && fVU.count && (
- // Frame RMS
- aAvg = sqrt(fVU.sum / fVU.count),
- // Reset accumulator for next frame
- fVU.sum = 0,
- fVU.count = 0,
- fVU.lastFrame = frame,
- // Smoothed RMS (energy-domain smoothing)
- fxVU[vu_fxii] = sqrt(
- (1 - s) * fxVU[vu_fxii] ** 2 +
- s * aAvg ** 2
- ),
- // Convert to dBFS (+1e-12 avoids log(0))
- dBFS = 20 * log10(abs(fxVU[vu_fxii] * 2) + 1e-12),
- // Map dBFS into meter coordinates
- vuMapped = max(0, min(meterWidth, vuMax + dBFS)),
- // Smooth visual bar motion
- fxVUdB[vu_fxii] += .5 * (vuMapped - fxVUdB[vu_fxii]),
- isNaN(fxVUdB[vu_fxii]) && (fxVUdB[vu_fxii] = 0),
- // Peak detection and hold timing
- isNew = fxVUdB[vu_fxii] > fxPeak[vu_fxii],
- fxPeakHold[vu_fxii] = isNew ? now + 1e3 : fxPeakHold[vu_fxii],
- // After hold expires, peak decays with increasing velocity
- shouldDecay = now > fxPeakHold[vu_fxii],
- fxPeakVel[vu_fxii] = shouldDecay
- ? fxPeakVel[vu_fxii] + 3.8 / 15
- : 0,
- // Peak update logic (hold or decay)
- fxPeak[vu_fxii] = shouldDecay
- ? max(fxVUdB[vu_fxii], fxPeak[vu_fxii] - fxPeakVel[vu_fxii])
- : max(fxPeak[vu_fxii], fxVUdB[vu_fxii])
- ),
- // Return current visual meter value
- fxVUdB[vu_fxii]
- ),
- // --- Clip detection with short hold ---
- isClipping = i => {
- fxClipHold[i] ??= 0;
- // If meter hits or exceeds 0 dBFS, latch clip indicator
- if (fxVUdB[i] >= vuMax) {
- fxClipHold[i] = now + 150;
- }
- // Clip indicator persists briefly
- return now < fxClipHold[i];
- },
- // --- Render a single VU meter line ---
- renderVUMeter = (input, label = '') => {
- vu(input);
- wd = meterWidth;
- fi = vu_fxii;
- // Determine clipping state
- clip = isClipping(fi);
- // Build label with optional clip marker
- tag = (label + (clip ? ' ‼' : '')).padEnd(labelWidth, ' ');
- // Peak marker and bar length
- p = max(0, min(meterWidth - 1, floor(fxPeak[fi] || 0)));
- v = max(0, min(meterWidth, floor(fxVUdB[fi] || 0)));
- // Initialize blank meter line
- arr = Array.from({ length: totalWidth }, () => ' ');
- // Draw filled bar
- for (let j = 0; j < v; j++) arr[j] = '█';
- // Draw peak marker
- if (p >= 0 && p < meterWidth) arr[p] = '│';
- // Draw label
- for (let j = 0; j < labelWidth; j++) arr[wd + j] = tag[j];
- return arr.join('');
- },
- // --- dBFS ruler below the meters ---
- dBFSRuler = _ => {
- wd = meterWidth;
- a = Array.from({ length: totalWidth }, () => ' ');
- // Major tick marks (musically meaningful points)
- majors = new Set([-10, -6, -3, 0, 3, 6]);
- for (let d = -vuMax; d <= headroom; d++) {
- // Map dB value to horizontal position
- pos = floor(((d + vuMax) / (vuMax + headroom)) * (wd - 1));
- // Major / minor tick logic
- if (majors.has(d)) {
- a[pos] = '┼'
- } else if ((d + vuMax) % 20 === 0) {
- a[pos] = '┼'
- } else a[pos] = "═";
- // Ruler ends
- a[vuMax - 1] = "╬"; a[0] = "├"; a[wd - 1] = "┤";
- }
- return a.join('');
- },
- // --- Numeric dBFS formatting helpers ---
- formatDBFS = v => (
- a = abs(v),
- d = a === 0 ? -Infinity : 20 * log10(a) + 6,
- d <= -120
- ? " -inf dBFS"
- : ((d >= 0 ? ' ' : '') + d.toFixed(1) + 'dBFS')
- ),
- renderDBFS = i =>
- "〈 " +
- formatDBFS(fxVU[i]) +
- " / " +
- ((p = fxPeak[i] - vuMax),
- (p >= 0 ? '+' : '') + p.toFixed(1) + 'dBFS') +
- " 〉",
- // --- Stereo correlation meter ---
- corrfxi = 0,
- correlation = (left, right) => (
- // Unique state per correlation instance
- cfxi = corrfxi++,
- fxCorr ??= [],
- fxCorr[cfxi] ??= { lr: 0, ll: 0, rr: 0 },
- // Smoothing coefficient
- s = .125,
- // Running averages of cross- and auto-correlations
- fxCorr[cfxi].lr += s * (left * right - fxCorr[cfxi].lr),
- fxCorr[cfxi].ll += s * (left * left - fxCorr[cfxi].ll),
- fxCorr[cfxi].rr += s * (right * right - fxCorr[cfxi].rr),
- // Normalize to [-1, 1]
- den = sqrt(fxCorr[cfxi].ll * fxCorr[cfxi].rr) + 1e-12,
- max(-1, min(1, fxCorr[cfxi].lr / den))
- ),
- // --- Render correlation bar ---
- renderCorrelation = (left, right, label = 'CORR') => {
- wd = 50;
- mid = wd >> 1;
- // Map correlation value to screen position
- pos = max(1, min(wd - 1,
- round(mid + correlation(left, right) * mid)
- ));
- // Base line
- a = Array.from({ length: wd }, () => '═');
- // Frame, center, and indicator
- a[0] = '├';
- a[mid] = '┼';
- a[pos] = '║';
- a[wd] = '┤';
- return a.join('') +
- ' ' + label +
- ' 〈 ' + correlation(left, right).toFixed(3) + " 〉";
- },
- // dB → linear gain helper
- // 20 dB per decade (audio standard)
- att = attenuate = (dB = 0) => 10 ** (dB / 20),
- master = lr => (
- r2=r-262144,
- r3=r-524288,
- b=x=>(x)%256/128-1,
- start=(r>>19)==0,
- p0=(r>>19)>-1&&(r>>19)<3,
- p1=(r>>19)>0&&(r>>19)<3,
- p2=(r>>19)>4&&(r>>19)<7,
- p3=(r>>19)>10&&(r>>19)<13,
- sp1=(r>>19)>2&&(r>>19)<6,
- main=
- (r>>19)>2&&(r>>19)<5|
- (r>>19)>8&&(r>>19)<11|
- (r>>19)>12&&(r>>19)<15,
- m2=
- (r>>19)>8&&(r>>19)<11|
- (r>>19)>12&&(r>>19)<15,
- bridge=(r>>19)>6&&(r>>19)<9,
- br2=(r>>19)>7&&(r>>19)<9,
- u1=s('11231248146114121',13),
- u2=s('12131124',14),
- u3=s('11121214',13),
- u4=s([13,15,14,12,11,14,15],14),
- u5=s('1121',14),
- m0=ms('0 C A CF E C A J H F C A C M J H FH J C A C J H F C C CEF H M K J H 7 7 A C E F J H F CF H C A J H F C A C ',12)||0,
- m0_a=p1|bridge?ms((r3>>18)%4>1?
- 'C CEF J H F E C E C E CEE A ACE H F E '
- .concat((r3>>18)%4==3?'A J J J J J ':'C A A C ACC '):
- 'F F F F F F F C F F F F F F F A A A A A C A CCCCC ',12,0,128):0,
- mb0=ms(
- start|p2?'CCCCAAFF8A7C55AA':
- 'CC88AACC'
- ,15)/8,
- m3=ms('7ACF',12),
- m5=ms(
- '07CF'.repeat(8).
- concat(
- '5AEH'.repeat(4),
- '07CF'.repeat(4),
- '38CF'.repeat(2),
- '5AEH'.repeat(2),
- '25AE'.repeat(2),
- '07CF'.repeat(2),
- (r3>>16)%16>13?
- '38CF'.repeat(4).concat('5AEH'.repeat(4))
- :'035A'.repeat(4),
- (r3>>16)%16>13?
- '07CF'.repeat(8):
- '35AC'.repeat(4),
- ),12,0,4),
- // Arp Melody
- ma=ms('037353A5A5A232AC',(lr?(r2&16384?13:10):12),0,128),
- ma2=ms('0357AC',r2&8192?9:10),
- m4=ms('7 CCA C A C F C 7 CCA C F E A C 7 CCA C A C A C 7 CCA C F E A C ',12),
- // Bass Melody
- mb=p3?ms('CA',17)/2:p2?mb0*4:ms('CCCCAAFF8A7C'
- .concat(
- (r3>>16)%16>13?'8ACC':'88AA'),15)/2,
- mb2=ms(
- '07C03F0C'.repeat(4).
- concat(
- '5AE5AH5E'.repeat(2),
- '07C03F0C'.repeat(2),
- '38C38F3C',
- '5AE5AH5E',
- '25A25E2A',
- '07C03F0C',
- (r3>>16)%16>13?'35A35C35'.concat('5AE5AH5E'):
- '35A35C35'.repeat(2),
- (r3>>16)%16>13?'07C03F0C'.repeat(2):'5AE5AH5E'.repeat(2))
- ,12),
- s1=sin((p^r>>12)*PI/(lr?(r&65536?32:4):(r&16384?16:8))/(2**s([8,4,3,1,3,7,6,5],12)/(1+(r>>12&3)*2)))*cos(r%(r&16384?8192:4096)*PI/(r&16384?16384:8192))**(lr?(r*u2&8192?7:(r*u1&16384?3:5)):(r*u1&16384?3:(r&8192?1:5))),
- cp0=cv(p,
- s([
- [0,3,5,7,10,15],[0,3,8,10,12,15],
- [-2,2,5,7,10],
- [0,3,5,7,10,15]
- ],16,0,p2?8:0)
- ),
- cp1=cv(p,
- s([
- [0,3,7,10,12],[0,3,7,10,12],
- [0,3,7,10,12],[0,3,7,10,12],
- [-2,0,3,7,10],[-2,0,3,7,10],
- [3,7,10,12,15],[3,7,10,12,15],
- [-4,0,3,7,12],[-2,0,3,7,10],
- [-2,2,5,7,10],[0,3,7,12,15],
- [5,7,10,12,14],[5,7,10,12,14],
- [-2,0,3,7,10],[-2,0,3,7,10]
- ],15,0,16)
- ),
- cp2=cv(p,
- s([[0,3,5,7,10],[-2,2,5,7,10]],17,0,0)
- )*s('1 11 1 1 1 '.repeat(3).concat('1 1 11 1 1 '),12),
- ss0=p1|p2|bridge?lpr(crs(p2?cp1:cp0,6,lr?1.1:1,1,(lr?255:256))*2*s('1 11 1 1 1 11 ',12),
- p2?.99:((r3>>18)%4==3?sin(r%(2**18)*PI/2**19)*.99+.07:.1),
- p2?0:(r3>>18)%4==3?sin(r%(2**18)*PI/2**19)*.55+.3:.3):0,
- saw=inp=>atan(tan(inp*PI/256))/(PI/2),
- l0=start|p2?lpr(sin(m0*PI/(lr?128:256)+saw(m0*(lr?2:4))+sin(m0*PI/(lr?1024:512))),p2?.95:sin(r%2**19*PI/2**20)**1.2+.008,.7):0||0,
- l0_a=hpr((b((m0_a&64|m0_a/2&64)))+.2,.09,.5)*2,
- b0=lpr((saw(mb0/(lr?2:1))/(lr?3.6:4)+saw(mb0/2^mb0*2)/4)*sin(r%16384*PI/32768)**3,start?sin(r%2**19*PI/2**20)**1.2+.005:1,.3),
- cps=s([
- // Progression: i - II - i - IV7 - II - II - i - IV7 - II
- [0,3,7,10,12],[0,3,7,10,12],
- [-2,0,3,7,10],[0,3,7,10,15],
- s([[-4,0,3,7,12],[-2,2,7,10,14]],15),
- s([[-2,2,5,7,10],[0,3,7,12,15]],15),
- (r3>>16)%16>13?(
- s([[-4,0,3,5,10],[-2,2,5,7,10]],15)
- ):[-4,0,3,5,10],
- (r3>>16)%16>13?(
- [0,3,7,10,12]
- ):[-2,0,5,7,17]
- ],16,0,8),
- ss=crs(cv(p,p2?cp0:cps),6,lr?1.1:1,1,(lr?255:256))*2*
- (uf1=(r3>>15)%16==15?s('1 ',11)*2:(s('111 1 11 11 11 '.repeat(3).concat(' 1 11 11 1 11 1'),12))),
- ss2=cbrt(sin(cv(p,p2?cp0:cps)*PI/128)*2)*
- uf1,
- ss2=sin(cp0)/6*random(),
- ss3=lpr((cp2+sin(cp2*4))/3,.95,.7),
- // Main Melody 1: Vocal Motif
- m1=ms('J F F H C J J F H C J J F F H H M J E F F E C E F H A A O MMJ H J H '
- .concat(
- (r3>>16)%16>13?'F H J H H A A C C C F C ':
- 'F H J H A A MM M M M M M M M '),12,0,128)/2,
- l1=hpr(cbrt(sin(m1*PI/32)+sin(m1*PI/(lr?63:64)))/2,.2,.01,.01)*cos(r%4096*PI/8192)**1.5,
- l2=delay(max(min(sin(m0_a*PI/(lr?64:128)+sin(m0_a*PI/(lr?256:128))*2)*cos(r%8192*PI/16384)**9,.6),-.6)*2,16384,.3,lr?.6:.4)/4,
- l3=saw(m4^m4/(lr?4:2))/2+sin(m4*PI/(lr?128:64)+sin(m4*PI/128))/2,
- l4=saw((m5^m5*2+m5/2)),
- b1=(
- bp1=s('11121113111411111111111311121114',14),
- bp1=='1'?lpr(saw((mb)|mb/(lr?4:2))+saw(mb/8)+sin((r>>10^r>>12^r>>(lr?14:15))%48*cbrt(mb%1024)),abs(cos(r%4096*PI/8192)**3)*s([.3,.6,.4,.75,.6,.95],12),.6)*cos(r%4096*PI/8192)*sin(r%16384*PI/32768)**.7+saw(mb/8)/3:
- bp1=='2'?saw(mb/(lr?4:8)^mb/(mb&128?4:2)^mb*(1+(r>>12&3))/(mb&256?2:4))*s('1 ',11):
- bp1=='3'?sin(((mb*(lr?1.01:1)^mb>>2)+mb)*PI/256)*s('1 ',12):
- bp1=='4'?atan((lr?sin:tan)(sin((mb*(lr?1.01:1))*PI/512)*sin(r*PI/4096)*(lr?32:16)))/(PI/2):
- 0
- )*sin(r%16384*PI/32768)**.6*(bp1=='1'?s(' 11111 1111 11 1',13):1),
- bc=mb-mb%((r&2**u4?(round(abs(sin(r*PI/(65536/u3))**3*64))):
- ((r%(16384/u1))>>8)*(r&8192?1:u3)
- )||r)*(-r&65536/(r&32768?1/u1:u1)?1:sin(r*PI/(16384/u1))*(r&32768?2:4)),
- yi=(lr,y=0,z=1)=>sin((lr*(bc-y)*z)*PI/256)**(abs(sin(r*PI/16384/u1))*(32*(r&32768?1/u1:u1)))*lr,
- b2=((r2&128*u1?yi(1)||yi(-1):yi(1,(r2&16384?64:32)*u2,u3)||yi(-1,(r2&16384?64:32)*u2,u3))*sin(r2%16384*PI/32768)**2.5||0)*s(' 11 11 1 11',13),
- b3=(bc=(saw(mb2/(lr?4:8))+saw(mb2/(lr?8:16)))/1.5*sin(r%16384*PI/32768),
- lpr(bc,abs(cos(r%4096*PI/8192))+.06,.8)/2),
- s1=sin((p^r2>>12)*PI/(lr?(r2&65536?32:4):(r2&16384?16:8))/(2**s([8,4,3,1,3,7,6,5],12)/(1+(r2>>12&3)*2)))*cos(r2%(r2&16384?8192:4096)*PI/(r2&16384?16384:8192))**(lr?(r*u2&8192?7:(r2*u1&16384?3:5)):(r2*u1&16384?3:(r&8192?1:5)))*(main?s(' 11 11 1 1 11',(r&16384?13:12)):1),
- s2=r*u3&8192?0:sin((ma*(1+(r>>10&3^r>>13&1))&r>>6)*PI/(lr?128:64))*sin(r%16384*PI/32768)**1.75*(main?s(' 1 1 11 1 1 ',13):1),
- i1=delay(min(max(sin(m3*(1+(r>>12&3^r>>13&1^t>>15&1))/(r&8192?2:1)*PI/256)*cos(r%4096*PI/8192)**9,-.2),.2),16384,.4,.2)*cos(r%4096*PI/8192)**9*((r3>>18)%4==3?1:sin(r3%2**19*PI/2**20)),
- s3=(
- sp=
- p2?s(' 0 1 23 25 5 2 0 2 32 34 55 2 11 5 12 2 32 ',13)
- :s(' 0 1 30 24 3 0 1 31 33 23'.repeat(3)
- .concat(' 4 1 3 4 2 4 33 22 1 2 3')
- ,13),
- sp=='0'?sin((ma2=ms('030507A',9))*PI/((ma2)&64?64:128))||0/2:
- sp=='1'?sin(p*PI/(r/(p&128?32:64)^r/(p&256?8:16))*cos(r*PI/32768)*64)
- :
- sp=='2'?sin(ma2&(r&4096?64:128))
- :
- sp=='3'?b((p*(r>>(1+(r>>(r&6144?14:13)&15^r>>(r&12288?16:15)&7))^r>>(r&16384?9:12)|r>>(r&12288?12:14)^r>>17)&r)^(r*(1+(r>>(r&8192?(r&49152?10:9):(r&12288?(r&65536?16:14):(r&49152?15:12)))&7))^(r>>(r&4096?2:1))&(r*(1+(r>>12&15))/(1+(r>>12&15^r>>(r&12288?14:15)&3)))))*1.4:
- sp=='4'?b((r^r%16384/(r%16384>>8)*(1+(r*(1+(r>>12&7^r>>15&5)/(r&4096?4:1))>>8&63))*(1+(r>>8&(r>>13&3^r>>15&15^r>>17&7))))^(r&r%16384/(r%16384>>8)*4)|((r&r>>(r&4096?8:(r&2048?10:12)))/(r%16384>>8)*256/(1+(r>>8&7^r>>12&7))^r/262144)):
- sp=='5'?b(((r^r*3)>>12&21)*(mb/4&(mb/4&mb>>1)+(mb/4>>13)))
- :0
- ),
- g1=(
- gp=s(' 11112 2111 1111 2222 212',12),
- gu1=s('1123242',13),
- gp=='1'?sin((mb|mb/(lr?8.01:4.01))*PI/(mb&(lr?384:24)?128:(lr?64:256))+sin((mb*(lr?1.01:1)^mb/(lr?.5:2)+mb)*PI/(lr?511:512)))*cos(s([12,10,20,8],13)*cbrt(mb%(lr?1024:512)))*sin(r*gu1*PI/16384)**3:
- gp=='2'?atan(tan(sin(mb*PI/(lr?1024:2048))*sin(r*gu1*PI/16384)*(lr?32:(mb&128?32:8))))*sin(r*gu1*PI/16384)/1.3:0
- )*1.2*sin(r%16384*PI/32768)**.8,
- g2=atan(atan(tan(sin(mb0*PI/256)*sin(r*PI/4096)*20)))*((r>>14)%4==3?s('1 ',11):sin(r%16384*PI/32768)),
- g3=sin((p|p/4)*PI/(p&64?256:128))*cos((p^p/8)*PI/(p&64?256:128))*2*sin(r*PI/4096)*((r>>16)%4==3?s(' 1 1 1 1 11',12):s(' 1',15)),
- s4=(
- sp2=s(' 000 0 10 1111 1212 212 ',11),
- sp2=='0'?saw((mb^r/2)/(r%2048>>8)*8)||0:
- sp2=='1'?sin((ma2|r>>8)*PI/(ma2?128:64)):
- sp2=='2'?saw(p*p/1024):
- 0
- ),
- sb=sin(mb*PI/1024+sin(mb*PI/2048)),
- ls=(
- lsp=s('1248',17),
- N=1e3*cbrt(r*lsp%8192),
- ((N&128?saw(-N)/2:saw(N))-.5)*sin(r%16384*PI/32768)**3
- ),
- k=tanh(sin(14*cbrt((main?r2:r)*(ku=p1|br2?(r3>>18)%4==3?s('11112248',16):1:1)%16384)**.7)*2/max(r*ku%16384,1)*1024)*cos((main?r2:r)*ku%16384*PI/32768)**9*((z1=(p1|br2?((r3>>16)%16!==8)&(r3>>15)%32!==31:1))?1:0),
- h=max(min(((((t*(441/480))&1)-.5)*random()*sin(t/(lr?1.35:1.3)))/max((r2%(r2&(r&32768?16384:12288)?4096:8192))*96,384)*1e5*s(' 1',13),.65),-.65),
- c0=p0|bridge?b((t*atan(tan(p>>3|t*(lr?1.01:1)>>4))/1.4)+128)*cos(r%8192*PI/16384)**21*s(' 1 ',13):0,
- cl=tanh((((b(t*tan(t*(lr?.99:1)|t*(lr?1.01:1)>>3)+128)*sin(r2|t>>4))*sin(r*PI/8192))/3+sin(13*cbrt(r2%8192))/max((r2%8192),1)*512)*1.5)*s(main?' 1 '.repeat(15).concat(' 1 1'):' 1 ',13)*(!start?1:0)*(z1?1:0),
- cm=(random()-.5)*cos(r2%8192*PI/16384)**.7,
- rs=lpr(atan((random()-.5)/1.5*atan(tan(t))),abs(cos(r*PI/2**20/1.5))**9+.005,.78)*sin((main?r2:r)%16384*PI/32768)**.7,
- rs2=(ps,exp=16)=>(r3>>15)%16==ps?lpr((random()-.5)*atan(tan(t)),abs(cos(r*PI/65536))**.7+.005,abs(cos(r*PI/65536))**.7*.55+.2):0,
- rs3=lpr(random()-.5,abs(cos(r3*PI/2**(main?19:20)))**5*.92+.04,.75),
- /*Master*/
- (r>>19)<16?(tanh(
- /*Mezzo*/(
- tanh((
- g1*3.2+tanh(ss*1.3+ss2)*2.4+b1*1.6
- +delay(l1,16384,lr?.6:.5,lr?.5:.4)*2.6
- +delay(s1+s2*1.5+s3*1.3,16384,lr?.45:.5,lr?.35:.3)*2+sb/5+(k*1.6+h*3+cl*2)*2+cm*1.4+rs/4+rs2(15)*1.3+rs2(0,20)*2+rs3/6
- +(m2?l4+b3*3:0)
- )/32)*4.5*(main?1:0)+
- /*Bridge*/
- tanh(lpr(delay(ss2*(br2?sin(r%16384*PI/32768)**1.5:1),16384,.3,.4)*9,.1,.7)+l2+i1+
- ((z3=(r3>>15)%32!==31)?(rs/4+rs3/3):0)+
- (br2&z3?k+c0+ss0+b0+g2/3:0)
- )*(bridge?1:0)+
- /*Interlude*/
- tanh((ss0*6+b1*3+b0*2+k*9+h*9+cl*6+s3*3+g1*5+sb/2+delay(l0+s1*1.6+s2*1.5,16384,.3,.4)*2.6+rs3*2)/32)*2.3*(p2?1:0)+
- /*Bridge 2*/
- tanh(
- (delay(l3*cos(r%4096*PI/8192),16384,.5,.4)*1.3+g3/1.4+s4+ss3+b0+b1/2
- +k*2+h*1.6+cl+cm/2
- +((r3>>17)%8>3?ls*2+s2+g2/2:0))/8
- )*5*(p3?1:0)+
- /*Intro and Intermezzo*/
- ((r>>15)==47?delay(l0_a/4,16384,.2,.2):(((tanh((l0_comp=delay(l0/3+l0_a/2+(p1?s1:0)/2,16384,.3,.4))+b0*1.4+rs/2+(c0+k)*(start?0:1)/1.5+ss0*1.3))*(p0?1:0))))||
- l0_comp+rs/2+(start?b0:0))/(main|p2?1:1.75)) /*For some reason, the Zeroth lead glitches by displaying NaN values for the first 7 seconds before the Intermezzo starts, so this "||" condition is put there.*/
- /1.2)*1.3:0
- /*2133634 - Mezzo*/
- /*3600514 - Interlude*/
- /*5041923 - Bridge*/
- /*7923585 - Interlude 2*/
- /*9364354 - Ending*/
- ),
- // Metadata
- artist = "Chopstick Brothers",
- title = "小苹果 (Xiǎo píngguǒ) [Little Apple] (Muse Labs remix) - Multilanguage",
- genre = "Complextro / Trance",
- key = ['C','C#/D♭','D','D#/E♭','E','F','F#/G♭','G','G#/A♭','A','A#/B♭','B'][tr%12],
- // Lyrics (taken from the Xongkoro System)
- z5=(r>>19)<16,
- lyrics_zh = z5?s(
- Array(8).fill('*start*').concat([
- '我种下一颗种子',
- '终于长出了果实',
- '今天是个伟大日子',
- '今天是个伟大日子',
- '摘下星星送给你',
- '拽下月亮送给你',
- '让太阳每天为你升起',
- '让太阳每天为你升起',
- '变成蜡烛燃烧自己 只为照亮你',
- '变成蜡烛燃烧自己 只为照亮你',
- '把我一切都献给你 只要你欢喜',
- '把我一切都献给你 只要你欢喜',
- '你让我每个明天都变得有意义',
- '你让我每个明天都变得有意义',
- '生命虽短爱你永远 不离不弃',
- '生命虽短爱你永远 不离不弃',
- ])
- .concat((lzh=[
- '你是我的小呀小苹果儿',
- '你是我的小呀小苹果儿',
- '怎么爱你都不嫌多',
- '怎么爱你都不嫌多',
- '红红的小脸儿温暖我的心窝',
- '红红的小脸儿温暖我的心窝',
- '点亮我生命的火 火火火火',
- '点亮我生命的火 火火火火',
- '你是我的小呀小苹果儿',
- '你是我的小呀小苹果儿',
- '就像天边最美的云朵',
- '就像天边最美的云朵',
- '春天又来到了花开满山坡',
- '春天又来到了花开满山坡',
- '种下希望就会收获',
- '种下希望就会收获']))
- .concat(Array(16).fill('*instrumental*'))
- .concat([
- '从不觉得你讨厌',
- '你的一切都喜欢',
- '有你的每天都新鲜',
- '有你的每天都新鲜',
- '有你阳光更灿烂',
- '有你黑夜不黑暗',
- '你是白云我是蓝天',
- '你是白云我是蓝天',
- '春天和你漫步在盛开的 花丛间',
- '春天和你漫步在盛开的 花丛间',
- '夏天夜晚陪你一起看 星星眨眼',
- '夏天夜晚陪你一起看 星星眨眼',
- '秋天黄昏与你徜徉在 金色麦田',
- '秋天黄昏与你徜徉在 金色麦田',
- '冬天雪花飞舞有你 更加温暖',
- '冬天雪花飞舞有你 更加温暖',
- ])
- .concat(lzh,Array(16).fill('*instrumental*'),lzh,Array(8).fill('*end*'))
- ,16):'*end*',
- lyrics_mnc = z5?s(
- Array(8).fill('*start*').concat([
- 'Emke use tarifi',
- 'Emke pingguri banjiki',
- 'Eneggi absi saikan sembi',
- 'Eneggi absi saikan sembi',
- 'Sinde buhe ningge usiha',
- 'Sinde buhe ningge genggiyen biya',
- 'Sini jalin dekderengge tere xun sembi',
- 'Sini jalin dekderengge tere xun sembi',
- 'Yendere ergen banjirengge turgun ai seci',
- 'Yendere ergen banjirengge turgun ai seci',
- 'Yendere mini beye saikan i simde eldeki sembi',
- 'Yendere mini beye saikan i simde eldeki sembi',
- 'Jidere unde ineggi labdu sini jalin banjimbi',
- 'Jidere unde ineggi labdu sini jalin banjimbi',
- 'Jilakan i sinde hvlaha ningge mini sargan obuki',
- 'Jilakan i sinde hvlaha ningge mini sargan obuki',
- ])
- .concat((lm=[
- 'Haji mini mini aijige pingguri',
- 'Haji mini mini aijige pingguri',
- 'Hasa mini jakade tucinjiki',
- 'Hasa mini jakade tucinjiki',
- 'Sini cira be emgeri sabuha bisi',
- 'Sini cira be emgeri sabuha bisi',
- 'Simbe onggome muterakv oho ho ho ho ho',
- 'Simbe onggome muterakv oho ho ho ho ho',
- 'Haji mini mini aijige pingguri',
- 'Haji mini mini aijige pingguri',
- 'Hasa mini ubade sujume jiki',
- 'Hasa mini ubade sujume jiki',
- 'Alin tala de ilha ilaka erin de',
- 'Alin tala de ilha ilaka erin de',
- 'Age simbe gaifi boode bedereme genembi',
- 'Age simbe gaifi boode bedereme genembi',]))
- .concat(Array(16).fill('*instrumental*'))
- .concat([
- 'Simbe daci eimerakv',
- 'Simbe sindame jenderakv',
- 'Sinderi fakcara kooli akv',
- 'Sinderi fakcara kooli akv',
- 'Simbe emu mudan sabuha de',
- 'Simbe emu mudan ojo de',
- 'Sinderi fakcame muterav oho',
- 'Sinderi fakcame muterav oho',
- 'Muse saske yabure jugvn de niyengniyeri edun bi',
- 'Muse saske yabure jugvn de niyengniyeri edun bi',
- 'Muse saske uculere jilgan juwari agai adali',
- 'Muse saske uculere jilgan juwari agai adali',
- 'Muse saske maksire okson de bolori i bargiyan bi',
- 'Muse saske maksire okson de bolori i bargiyan bi',
- 'Muse saske tebliyeci tuweri ele halukan sembi',
- 'Muse saske tebliyeci tuweri ele halukan sembi'
- ])
- .concat(lm,Array(16).fill('*instrumental*'),lm,Array(8).fill('*end*'))
- ,16):'*end*',
- lyrics_en = z5?s(
- Array(8).fill('*start*').concat([
- 'I sowed a seed',
- 'It finally yields fruit',
- 'Today is a great day',
- 'Today is a great day',
- 'I pluck stars down for you',
- 'I pluck the moon down for you',
- 'I let the sun rise up for you every day',
- 'I let the sun rise up for you every day',
- 'I turn into a candle to burn myself, only to light you up',
- 'I turn into a candle to burn myself, only to light you up',
- 'I dedicate my everything to you whatever you like',
- 'I dedicate my everything to you whatever you like',
- 'You make my every tomorrow meaningful',
- 'You make my every tomorrow meaningful',
- 'Life it short, but I\u0027ll love you forever never giving you up',
- 'Life it short, but I\u0027ll love you forever never giving you up',
- ])
- .concat((len=[
- 'You are my little apple',
- 'You are my little apple',
- 'I can never love you too much',
- 'I can never love you too much',
- 'Your red face warms my heart',
- 'Your red face warms my heart',
- 'Lighting the fire, fire, fire, fire, fire in my life',
- 'Lighting the fire, fire, fire, fire, fire in my life',
- 'You are my little apple',
- 'You are my little apple',
- 'Like the most beautiful cloud in the sky',
- 'Like the most beautiful cloud in the sky',
- 'Spring arrives again, and flowers bloom all over the mountainside',
- 'Spring arrives again, and flowers bloom all over the mountainside',
- 'I reap the hopes that I sowed',
- 'I reap the hopes that I sowed']))
- .concat(Array(16).fill('*instrumental*'))
- .concat([
- 'I never dislike you',
- 'I like your everthing',
- 'Every day is fresh when you\u0027re there',
- 'Every day is fresh when you\u0027re there',
- 'The sun shines brighter when you\u0027re there',
- 'Dark nights are no longer dark when you\u0027re there',
- 'You\u0027re the cloud and I\u0027m the sky',
- 'You\u0027re the cloud and I\u0027m the sky',
- 'In spring we walk among the blossoming flowers',
- 'In spring we walk among the blossoming flowers',
- 'At summer nights we watch the twinkling stars together',
- 'At summer nights we watch the twinkling stars together',
- 'At autumn dusks we enjoy the golden wheat fields',
- 'At autumn dusks we enjoy the golden wheat fields',
- 'In winter when snowflakes are flying, it feels warmer when you\u0027re there',
- 'In winter when snowflakes are flying, it feels warmer when you\u0027re there',
- ])
- .concat(len,Array(16).fill('*instrumental*'),len,Array(8).fill('*end*'))
- ,16):'*end*',
- lyrics_ug = z5?s(
- Array(8).fill('*start*').concat([
- 'مەن بىر ئۇرۇق چاچتىم',
- 'ئاخىرى مېۋە بەردى',
- 'بۈگۈن ئېسىل كۈن',
- 'بۈگۈن ئېسىل كۈن',
- 'مەن سەن ئۈچۈن يۇلتۇزلارنى ئۈزۈۋەتتىم',
- 'مەن سەن ئۈچۈن ئاينى ئۈزۈۋەتتىم',
- 'مەن ھەر كۈنى قۇياشنىڭ سەن ئۈچۈن چىقىشىغا يول قويدۇم',
- 'مەن ھەر كۈنى قۇياشنىڭ سەن ئۈچۈن چىقىشىغا يول قويدۇم',
- 'مەن ئۆزۈمنى كۆيدۈرۈش ئۈچۈن بىر شامغا ئايلىنىمەن، پەقەت سېنى يورۇتۇش ئۈچۈن',
- 'مەن ئۆزۈمنى كۆيدۈرۈش ئۈچۈن بىر شامغا ئايلىنىمەن، پەقەت سېنى يورۇتۇش ئۈچۈن',
- 'مەن ھەممە نەرسىنى ساڭا بېغىشلايمەن، سەن خالىغان نەرسەڭگە',
- 'مەن ھەممە نەرسىنى ساڭا بېغىشلايمەن، سەن خالىغان نەرسەڭگە',
- 'سەن مېنىڭ ھەر بىر ئەتىمنى مەنىلىك قىلىسەن',
- 'سەن مېنىڭ ھەر بىر ئەتىمنى مەنىلىك قىلىسەن',
- 'ھاياتىم قىسقا، ئەمما مەن سېنى مەڭگۈ سۆيىمەن، ھەرگىز سەندىن ۋاز كەچمەيمەن',
- 'ھاياتىم قىسقا، ئەمما مەن سېنى مەڭگۈ سۆيىمەن، ھەرگىز سەندىن ۋاز كەچمەيمەن',
- ])
- .concat((lug=[
- 'سەن مېنىڭ كىچىك ئالمامسەن',
- 'سەن مېنىڭ كىچىك ئالمامسەن',
- 'مەن سېنى ھەرگىز بەك سۆيەلمەيمەن',
- 'مەن سېنى ھەرگىز بەك سۆيەلمەيمەن',
- 'قىزىل يۈزۈڭ مېنىڭ قەلبىمنى ئىللىتىدۇ',
- 'قىزىل يۈزۈڭ مېنىڭ قەلبىمنى ئىللىتىدۇ',
- 'ھاياتىمدىكى ئوت، ئوت، ئوت، ئوت، ئوتنى ياق',
- 'ھاياتىمدىكى ئوت، ئوت، ئوت، ئوت، ئوتنى ياق',
- 'سەن مېنىڭ كىچىك ئالمامسەن',
- 'سەن مېنىڭ كىچىك ئالمامسەن',
- 'ئاسماندىكى ئەڭ گۈزەل بۇلۇتقا ئوخشاش',
- 'ئاسماندىكى ئەڭ گۈزەل بۇلۇتقا ئوخشاش',
- 'يەنە باھار كېلىدۇ، تاغ باغرىدا گۈللەر ئېچىلىدۇ',
- 'يەنە باھار كېلىدۇ، تاغ باغرىدا گۈللەر ئېچىلىدۇ',
- 'مەن تېرىغان ئۈمىدلىرىمنى يىغىۋالىمەن',
- 'مەن تېرىغان ئۈمىدلىرىمنى يىغىۋالىمەن']))
- .concat(Array(16).fill('*instrumental*'))
- .concat([
- 'مەن سىزنى ھەرگىز ياقتۇرمايمەن',
- 'مەن سىزنىڭ ھەممە نەرسىڭىزنى ياقتۇرىمەن',
- 'سىز بار بولسىڭىز ھەر بىر كۈن يېڭى',
- 'سىز بار بولسىڭىز ھەر بىر كۈن يېڭى',
- 'سىز بار بولسىڭىز قۇياش تېخىمۇ پارقىرايدۇ',
- 'سىز بار بولسىڭىز قاراڭغۇ كېچىلەر ئەمدى قاراڭغۇ ئەمەس',
- 'سىز بۇلۇت، مەن ئاسمان',
- 'سىز بۇلۇت، مەن ئاسمان',
- 'اھاردا بىز گۈل ئېچىۋاتقان گۈللەر ئارىسىدا ماڭىمىز',
- 'اھاردا بىز گۈل ئېچىۋاتقان گۈللەر ئارىسىدا ماڭىمىز',
- 'ياز كېچىلىرىدە بىز بىللە چاقناپ تۇرغان يۇلتۇزلارنى كۆرىمىز',
- 'ياز كېچىلىرىدە بىز بىللە چاقناپ تۇرغان يۇلتۇزلارنى كۆرىمىز',
- 'كۈزلۈك قاراڭغۇ چۈشكەندە بىز ئالتۇن رەڭلىك بۇغداي ئېتىزلىرىدىن ھۇزۇرلىنىمىز',
- 'كۈزلۈك قاراڭغۇ چۈشكەندە بىز ئالتۇن رەڭلىك بۇغداي ئېتىزلىرىدىن ھۇزۇرلىنىمىز',
- 'قىشتا قار ئۇچقۇنلىرى ئۇچۇپ يۈرگەندە، سىز بار بولسىڭىز ئىللىق ھېس قىلىنىدۇ',
- 'قىشتا قار ئۇچقۇنلىرى ئۇچۇپ يۈرگەندە، سىز بار بولسىڭىز ئىللىق ھېس قىلىنىدۇ'
- ])
- .concat(lug,Array(16).fill('*instrumental*'),lug,Array(8).fill('*end*'))
- ,16):'*end*',
- // =======================================================
- // Output + UI refresh (console meter)
- // =======================================================
- out = lr =>
- disp
- // Refresh UI roughly once per second
- ? (t / 48e3) * 60 % 1
- ? master(lr)
- : (
- left = master(0),
- right = master(1),
- thr(
- `\n
- ══════════════════════
- Priscilla's Volume Meter
- ══════════════════════ v1.0
- ※ Licensed under CC-BY-SA-4.0 ║ https://creativecommons.org/licenses/by-sa/4.0
- \n˚₊‧꒰ა ☆彡 Now Playing: ${artist} - ${title} ♪ ☆彡 ໒꒱ ‧₊˚\n₊‧꒰ Time: `
- + floor(t / 48e3) + '.'
- + "".padStart(3, (floor(t / 48e3 * 1e3) % 1000)) + ' ・.Bars/Beats/Steps: '
- + ((r>>16)+1) + " | "
- + ((r>>14)%4+1) + " | "
- + ((r>>12)%4+1) + " |"
- + " ꒱‧₊"
- + `\n\n 𓆩ᥫ᭡𓆪 Samplerate: ${sR}hz ׂׂ°。BPM: ${BPM} ׂׂ°。Key: ${key} \n ׂׂ°。Tuning System: ${edo}edo ׂׂ°。Standard Tuning: ${tn}hz \n ・❥・ Genre: ${genre}`
- + '\n\n——— LYRICS ———\n'
- + "‧꒰ Chinese: " + lyrics_zh + " ꒱‧₊\n"
- + "‧꒰ Manchu: " + lyrics_mnc + " ꒱‧₊\n"
- + "‧꒰ English: " + lyrics_en + " ꒱‧₊\n"
- + "‧꒰ Uyghur: " + lyrics_ug
- + ' ꒱‧₊\n\n——— MASTER ———\n'
- + renderVUMeter(left, ' L') + renderDBFS(0) + '\n'
- + dBFSRuler() + '\n'
- + renderVUMeter(right, ' R') + renderDBFS(1)
- + '\n\nNEW: Correlation Meter\n'
- + 'Correlation measures the similarity or phase relationship between two signals,\n'
- + 'usually the left and right channels of a stereo track,\n'
- + 'using a meter from -1 (opposite phase) to +1 (identical phase/mono)\n'
- + "\n" + renderCorrelation(left, right)
- + "\n"
- + (r>>19)
- )
- )
- // Audio-only mode
- : master(lr),
- // Stereo output
- [out(0), out(1)]
Add Comment
Please, Sign In to add comment