PageSourceSearch

https://tonesmatch.com/_next/static/chunks/3125.1025e1e88913cd43.js

js tonesmatch.com collected 2026-10-10 00:10:29 UTC 52,902 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3125],{93125:function(e,t,a){a.d(t,{processTrackV2:function(){return ey}});let r="https://cdn.jsdelivr.net/npm/[email protected]/dist/ort.webgpu.bundle.min.mjs",n="./htdemucs_embedded.onnx",l=Object.freeze(["drums","bass","other","vocals"]),o=Object.freeze({spotify:-14,apple_music:-16,youtube:-14,soundcloud:-9,tiktok:-13,amazon_music:-14,tidal:-14,dolby_atmos:-18}),i=Object.freeze({MASTER:"master",MIX_MASTER:"mix-master"});Object.freeze({[i.MASTER]:"Mastering",[i.MIX_MASTER]:"Mix + Master"});let s=Object.freeze({Pop:"pop","Hip-Hop":"hip-hop","Trap / Drill":"trap","R&B":"rnb",Rock:"rock",Metal:"metal",EDM:"edm","Lo-Fi":"lo-fi",Country:"country",Jazz:"jazz","Acoustic / Folk":"country",Latin:"pop",Afrobeats:"afrobeats","K-Pop":"k-pop",Indie:"rock","Classical Crossover":"jazz"}),h=Object.freeze({"hip-hop":{lowFreq:80,lowGain:2.5,midFreq:2500,midQ:.9,midGain:1.5,highFreq:1e4,highGain:1,compThreshold:-16,compRatio:3.5,compAttack:.01,compRelease:.1,compKnee:6},trap:{lowFreq:60,lowGain:3,midFreq:3e3,midQ:.9,midGain:1,highFreq:12e3,highGain:1.5,compThreshold:-14,compRatio:4,compAttack:.005,compRelease:.08,compKnee:4},pop:{lowFreq:100,lowGain:1.5,midFreq:3e3,midQ:.7,midGain:2,highFreq:1e4,highGain:2,compThreshold:-14,compRatio:3,compAttack:.01,compRelease:.12,compKnee:8},rock:{lowFreq:100,lowGain:1,midFreq:2e3,midQ:.7,midGain:1.5,highFreq:8e3,highGain:1,compThreshold:-16,compRatio:3,compAttack:.02,compRelease:.15,compKnee:6},edm:{lowFreq:60,lowGain:3,midFreq:1e3,midQ:.8,midGain:-1,highFreq:8e3,highGain:2.5,compThreshold:-12,compRatio:4,compAttack:.005,compRelease:.08,compKnee:4},house:{lowFreq:80,lowGain:2.5,midFreq:1e3,midQ:.8,midGain:-.5,highFreq:8e3,highGain:2,compThreshold:-14,compRatio:3.5,compAttack:.01,compRelease:.1,compKnee:6},techno:{lowFreq:60,lowGain:3.5,midFreq:1500,midQ:.9,midGain:.5,highFreq:8e3,highGain:1.5,compThreshold:-12,compRatio:4,compAttack:.005,compRelease:.08,compKnee:4},rnb:{lowFreq:100,lowGain:1.5,midFreq:2500,midQ:.6,midGain:1,highFreq:1e4,highGain:1.5,compThreshold:-18,compRatio:2.5,compAttack:.02,compRelease:.15,compKnee:8},"neo-soul":{lowFreq:90,lowGain:1.5,midFreq:2500,midQ:.6,midGain:.8,highFreq:1e4,highGain:1,compThreshold:-18,compRatio:2.5,compAttack:.03,compRelease:.2,compKnee:10},"lo-fi":{lowFreq:120,lowGain:.5,midFreq:1e3,midQ:.5,midGain:-1,highFreq:6e3,highGain:-1.5,compThreshold:-20,compRatio:2,compAttack:.04,compRelease:.2,compKnee:12},country:{lowFreq:100,lowGain:.5,midFreq:2500,midQ:.7,midGain:1.5,highFreq:1e4,highGain:1.5,compThreshold:-18,compRatio:2.5,compAttack:.02,compRelease:.18,compKnee:8},metal:{lowFreq:100,lowGain:1,midFreq:2e3,midQ:.7,midGain:2.5,highFreq:8e3,highGain:1.5,compThreshold:-14,compRatio:4,compAttack:.005,compRelease:.08,compKnee:4},jazz:{lowFreq:100,lowGain:.5,midFreq:2e3,midQ:.5,midGain:.5,highFreq:1e4,highGain:1,compThreshold:-22,compRatio:1.8,compAttack:.05,compRelease:.3,compKnee:14},phonk:{lowFreq:60,lowGain:3.5,midFreq:2500,midQ:.9,midGain:1.5,highFreq:8e3,highGain:1,compThreshold:-12,compRatio:4.5,compAttack:.005,compRelease:.08,compKnee:4},afrobeats:{lowFreq:80,lowGain:2,midFreq:2e3,midQ:.8,midGain:1,highFreq:8e3,highGain:2,compThreshold:-14,compRatio:3,compAttack:.01,compRelease:.1,compKnee:6},amapiano:{lowFreq:80,lowGain:2.5,midFreq:1500,midQ:.7,midGain:.5,highFreq:8e3,highGain:1.5,compThreshold:-14,compRatio:3,compAttack:.01,compRelease:.12,compKnee:6},drill:{lowFreq:60,lowGain:3,midFreq:2500,midQ:.9,midGain:1,highFreq:1e4,highGain:1,compThreshold:-14,compRatio:4,compAttack:.005,compRelease:.08,compKnee:4},synthwave:{lowFreq:80,lowGain:2,midFreq:1e3,midQ:.6,midGain:.5,highFreq:8e3,highGain:2.5,compThreshold:-14,compRatio:3,compAttack:.01,compRelease:.1,compKnee:6},"k-pop":{lowFreq:100,lowGain:1.5,midFreq:3e3,midQ:.7,midGain:2,highFreq:1e4,highGain:2.5,compThreshold:-12,compRatio:3.5,compAttack:.005,compRelease:.08,compKnee:4},hyperpop:{lowFreq:80,lowGain:2.5,midFreq:4e3,midQ:.9,midGain:2,highFreq:12e3,highGain:3,compThreshold:-10,compRatio:5,compAttack:.003,compRelease:.06,compKnee:2}}),f=Object.freeze({warm:{low:1.5,high:-1,sat:1.35,width:.92,air:.35},balanced:{low:0,high:0,sat:1,width:1,air:.6},open:{low:-.5,high:1.8,sat:.8,width:1.18,air:1}});Object.freeze({masteringIntensity:2,compressorIntensity:2,eqIntensity:2,stereoWidth:2,volume:2}
1),Object.freeze([.35,.55,.78,.9,1]),Object.freeze([.5,.75,1,1.4,1.9]),Object.freeze([.4,.7,1,1.4,1.8]),Object.freeze([.7,.85,1,1.2,1.4]),Object.freeze([-3,-1.5,0,1.5,3]);let u=new Map,m=new Map,c=new Map,d=null;function p(e){let t=c.get(e);if(t)return t;let a=new Float32Array(e);for(let t=0;t<e;t+=1)a[t]=.5*(1-Math.cos(2*Math.PI*t/e));return c.set(e,a),a}function g(e,t){let a=0;for(let r=0;r<t;r+=1)a=a<<1|1&e,e>>=1;return a}function b(e,t,a){let r=Math.floor((e.length-t)/a)+1,n=t/2+1,l=p(t),o=1/Math.sqrt(t),i=new Float32Array(r*n),s=new Float32Array(r*n),h=new Float32Array(t),f=new Float32Array(t),m=new Float32Array(t);for(let c=0;c<r;c+=1){let r=c*a;for(let a=0;a<t;a+=1)m[a]=e[r+a]*l[a];!function(e,t,a,r){let n=0|Math.log2(r),l=function(e){let t=u.get(e);if(t)return t;let a=new Float32Array(e/2),r=new Float32Array(e/2);for(let t=0;t<e/2;t+=1){let n=-2*Math.PI*t/e;a[t]=Math.cos(n),r[t]=Math.sin(n)}let n={real:a,imag:r};return u.set(e,n),n}(r);for(let l=0;l<r;l+=1){let r=g(l,n);e[l]=a[r],t[l]=0}for(let a=2;a<=r;a*=2){let n=a/2,o=r/a;for(let i=0;i<r;i+=a)for(let a=0;a<n;a+=1){let r=a*o,s=l.real[r],h=l.imag[r],f=i+a,u=f+n,m=e[f],c=t[f],d=e[u]*s-t[u]*h,p=e[u]*h+t[u]*s;e[f]=m+d,t[f]=c+p,e[u]=m-d,t[u]=c-p}}}(h,f,m,t);let d=c*n;for(let e=0;e<n;e+=1)i[d+e]=h[e]*o,s[d+e]=f[e]*o}return{real:i,imag:s,numFrames:r,numBins:n}}function w(e,t,a,r,n,l,o){let i=o||(a-1)*l+n,s=new Float32Array(i),h=new Float32Array(i),f=p(n),u=Math.sqrt(n),c=new Float32Array(n),d=new Float32Array(n),b=new Float32Array(n),w=new Float32Array(n);for(let o=0;o<a;o+=1){c.fill(0),d.fill(0);let a=o*r;for(let n=0;n<r;n+=1)c[n]=e[a+n],d[n]=t[a+n];for(let e=1;e<r-1;e+=1)c[n-e]=c[e],d[n-e]=-d[e];!function(e,t,a,r,n){let l=0|Math.log2(n),o=function(e){let t=m.get(e);if(t)return t;let a=new Float32Array(e/2),r=new Float32Array(e/2);for(let t=0;t<e/2;t+=1){let n=2*Math.PI*t/e;a[t]=Math.cos(n),r[t]=Math.sin(n)}let n={real:a,imag:r};return m.set(e,n),n}(n);for(let o=0;o<n;o+=1){let n=g(o,l);e[o]=a[n],t[o]=r[n]}for(let a=2;a<=n;a*=2){let r=a/2,l=n/a;for(let i=0;i<n;i+=a)for(let a=0;a<r;a+=1){let n=a*l,s=o.real[n],h=o.imag[n],f=i+a,u=f+r,m=e[f],c=t[f],d=e[u]*s-t[u]*h,p=e[u]*h+t[u]*s;e[f]=m+d,t[f]=c+p,e[u]=m-d,t[u]=c-p}}for(let a=0;a<n;a+=1)e[a]/=n,t[a]/=n}(b,w,c,d,n);let p=o*l;for(let e=0;e<n&&p+e<i;e+=1)s[p+e]+=b[e]*f[e]*u,h[p+e]+=f[e]*f[e]}for(let e=0;e<i;e+=1)h[e]>1e-8&&(s[e]/=h[e]);return s}function M(e,t,a){let r=e.length,n=new Float32Array(t+r+a);for(let a=0;a<t;a+=1){let l=Math.min(t-a,r-1);n[a]=e[l]}n.set(e,t);for(let l=0;l<a;l+=1){let a=Math.max(0,r-2-l);n[t+r+l]=e[a]}return n}async function y(e,t){if(e instanceof ArrayBuffer)return e;if(ArrayBuffer.isView(e))return e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength);if(e instanceof Blob)return e.arrayBuffer();let a=await fetch(e||n);if(!a.ok)throw Error("Model download failed: ".concat(a.status," ").concat(a.statusText));let r=a.headers.get("Content-Length");if(!r||!a.body)return a.arrayBuffer();let l=Number.parseInt(r,10),o=a.body.getReader(),i=[],s=0;for(;;){let{done:e,value:a}=await o.read();if(e)break;i.push(a),s+=a.length,null==t||t(s,l)}let h=new Uint8Array(s),f=0;for(let e of i)h.set(e,f),f+=e.length;return h.buffer}async function F(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:r,{cache:t=!0,wasmThreads:a,wasmPaths:n,wasmProxy:l}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=()=>import(e).then(e=>{var t,r,o,i;let s=null!==(i=e.default)&&void 0!==i?i:e;return Number.isInteger(a)&&(null===(t=s.env)||void 0===t?void 0:t.wasm)&&(s.env.wasm.numThreads=a),n&&(null===(r=s.env)||void 0===r?void 0:r.wasm)&&(s.env.wasm.wasmPaths=n),"boolean"==typeof l&&(null===(o=s.env)||void 0===o?void 0:o.wasm)&&(s.env.wasm.proxy=l),s});return t?(d||(d=o()),d):o()}class v{async loadModel(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.modelPath;if(!this.ort)throw Error("ONNX Runtime is missing. Pass an ORT module to the constructor.");this.onLog("model","Loading model...");let t=await y(e,this.onDownloadProgress);return this.session=await this.ort.InferenceSession.create(t,{executionProviders:["webgpu","wasm"],graphOptimizationLevel:"basic",...this.sessionOptions}),this.onLog("model","Model loaded successfully"),this.session}async separate(e,t){if(!this.session)throw Error("Model is not loaded. Call loadModel() first.");let a=e.length,r=Math.floor(257985),n=Math.ceil((a-343980)/r)+1,o=l.map(()=>({left:new Float32Array(a),right:new Float32Array(a)})),i=new Float32Array(a),s=0;for(let l=0;l<a;l+=r){let h=Math.min(l+343980,a)-l,f=new Float32Array(343980),u=new Float32Array(343980);for(let a=0;a<h;a+=1)f[a]=e[l+a],u[a]=t[l+a];let m=function(e,t){let a=new Float32Array(343980),r=new Float32Array(343980),n=Math.min(e.length,343980);a.set(e.subarray(0,n)),r.set(t.subarray(0,n));let l=3*Math.floor(512),o=l+1024*Math.ceil(335.91796875)-343980,i=M(a,l,o),s=M(r,l,o),h=M(i,2048,2048),f=M(s,2048,2048),u=b(h,4096,1024),m=b(f,4096,1024),c=new Float32Array(2752512);for(let e=0;e<336;e+=1){let t=e+2;for(let a=0;a<2048;a+=1){let r=t*u.numBins+a;c[0+336*a+e]=u.real[r],c[688128+336*a+e]=u.imag[r],c[1376256+336*a+e]=m.real[r],c[2064384+336*a+e]=m.imag[r]}}let d=new Float32Array(687960);return d.set(a,0),d.set(r,343980),{waveform:d,magnitudeSpectrum:c,originalLength:e.length}}(f,u),c=new this.ort.Tensor("float32",m.waveform,[1,2,343980]),d=new this.ort.Tensor("float32",m.magnitudeSpectrum,[1,4,2048,336]),p={};p[this.session.inputNames[0]]=c,this.session.inputNames.length>1&&(p[this.session.inputNames[1]]=d);let g=await this.session.run(p),y=null,F=null,v=null;for(let e of this.session.outputNames){let t=g[e];4===t.dims.length&&2===t.dims[2]?(y=t.data,F=t.dims):5===t.dims.length&&4===t.dims[2]&&(v=t.data)}if(!y||!F)throw Error("Could not find the model time-domain output tensor.");let R=null;if(v){let e=function(e){let t=[];for(let a=0;a<4;a+=1){let r={leftReal:new Float32Array(688128),leftImag:new Float32Array(688128),rightReal:new Float32Array(688128),rightImag:new Float32Array(688128)};for(let t=0;t<336;t+=1)for(let n=0;n<2048;n+=1){let l=336*n+t,o=4*a*688128;r.leftReal[l]=e[o+0+l],r.leftImag[l]=e[o+688128+l],r.rightReal[l]=e[o+1376256+l],r.rightImag[l]=e[o+2064384+l]}t.push(r)}return t}(v);R=[];for(let t=0;t<4;t+=1){let a=function(e,t){function a(e,t){let a=new Float32Array(696660),r=new Float32Array(696660);for(let n=0;n<336;n+=1)for(let l=0;l<2048;l+=1){let o=336*l+n,i=(n+2)*2049+l;a[i]=e[o],r[i]=t[o]}return{real:a,imag:r}}let r=a(e.leftReal,e.leftImag),n=a(e.rightReal,e.rightImag),l=w(r.real,r.imag,340,2049,4096,1024,351232),o=w(n.real,n.imag,340,2049,4096,1024,351232),i=2048+3*Math.floor(512),s=l.subarray(i,i+343980),h=o.subarray(i,i+343980);return{left:new Float32Array(s),right:new Float32Array(h)}}(e[t],0),r=F[2],n=F[3],l=new Float32Array(n),o=new Float32Array(n);for(let e=0;e<n;e+=1)l[e]=y[t*r*n+0*n+e],o[e]=y[t*r*n+1*n+e];let i={left:new Float32Array(n),right:new Float32Array(n)};for(let e=0;e<n;e+=1)i.left[e]=l[e]+(a.left[e]||0),i.right[e]=o[e]+(a.right[e]||0);R.push(i)}}let A=F[1],x=F[2],D=F[3],C=new Float32Array(h);for(let e=0;e<h;e+=1){let t=Math.min(e/(.5*r),1),a=Math.min((h-e)/(.5*r),1);C[e]=Math.min(t,a)}for(let e=0;e<A;e+=1)for(let t=0;t<h&&l+t<a;t+=1){let a,r;R?(a=R[e].left[t],r=R[e].right[t]):(a=y[e*x*D+0*D+t],r=y[e*x*D+1*D+t]);let n=C[t];o[e].left[l+t]+=a*n,o[e].right[l+t]+=r*n}for(let e=0;e<h&&l+e<a;e+=1)i[l+e]+=C[e];s+=1,this.onProgress({progress:s/n,currentSegment:s,totalSegments:n})}for(let e of o)for(let t=0;t<a;t+=1)i[t]>0&&(e.left[t]/=i[t],e.right[t]/=i[t]);return{drums:o[0],bass:o[1],other:o[2],vocals:o[3]}}constructor({ort:e=null,modelPath:t=n,sessionOptions:a={},onProgress:r=()=>{},onLog:l=()=>{},onDownloadProgress:o=()=>{}}={}){this.ort=e,this.session=null,this.modelPath=t,this.sessionOptions=a,this.onProgress=r,this.onLog=l,this.onDownloadProgress=o}}async function R(e){!function(){if(!globalThis.AudioContext&&!globalThis.webkitAudioContext)throw Error("AudioContext is not available in this browser.");if(!globalThis.OfflineAudioContext)throw Error("OfflineAudioContext is not available in this browser.")}();let t=await e.arrayBuffer(),a=new(globalThis.AudioContext||globalThis.webkitAudioContext),r=await a.decodeAudioData(t);if(await a.close(),44100!==r.sampleRate){let e=new OfflineAudioContext(2,Math.ceil(44100*r.duration),44100),t=e.createBufferSource();t.buffer=r,t.connect(e.destination),t.start(),r=await e.startRendering()}let n=r.getChannelData(0).slice(),l=r.numberOfChannels>1?r.getChannelData(1).slice():n.slice();return{left:n,right:l,length:r.length,buffer:r}}async function A(e){let{onProgress:t=()=>{},model:a=n,modelUrl:o,ort:i=null,ortModuleUrl:s=r,executionProviders:h=["webgpu","wasm"],graphOptimizationLevel:f="basic",sessionOptions:u={},wasmThreads:m,wasmPaths:c,wasmProxy:d}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};
1t({phase:"decode",ratio:0});let{left:p,right:g}=await R(e);t({phase:"decode",ratio:1});let b=new v({ort:null!=i?i:await F(s,{wasmThreads:m,wasmPaths:c,wasmProxy:d}),sessionOptions:{executionProviders:h,graphOptimizationLevel:f,...u},onDownloadProgress:(e,a)=>{t({phase:"download",ratio:a?e/a:0})},onProgress:e=>{let{progress:a}=e;t({phase:"separate",ratio:a})}});await b.loadModel(null!=o?o:a);let w=await b.separate(p,g),M=Math.max(...l.map(e=>w[e].left.length));return{stems:w,length:M,sampleRate:44100}}function x(e,t,a){return Math.max(t,Math.min(a,e))}function D(e){return 10**(e/20)}function C(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:-180;return!Number.isFinite(e)||e<=0?t:20*Math.log10(e)}function k(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:-180;return!Number.isFinite(e)||e<=0?t:10*Math.log10(e)}function q(e,t){var a;if(!e.length)return 0;let r=Array.from(e).sort((e,t)=>e-t),n=x(t,0,100)/100*(r.length-1),l=Math.floor(n),o=Math.ceil(n);return l===o?r[l]:(a=r[l])+(r[o]-a)*(n-l)}function T(){let e=globalThis.OfflineAudioContext||globalThis.webkitOfflineAudioContext;if(!e)throw Error("This browser does not provide OfflineAudioContext.");return e}function O(e,t){if(!Array.isArray(e)||!e.length)throw TypeError("channels must contain at least one channel.");let a=e[0].length;if(!a)throw Error("Audio buffer cannot be empty.");let r=new(T())(Math.max(1,e.length),a,t).createBuffer(e.length,a,t);return e.forEach((e,t)=>{if(e.length!==a)throw Error("All channels must have the same length.");r.copyToChannel(e instanceof Float32Array?e:Float32Array.from(e),t)}),r}function G(e){let t=[];for(let a=0;a<e.numberOfChannels;a+=1)t.push(new Float32Array(e.getChannelData(a)));return O(t,e.sampleRate)}async function E(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{sampleRate:a=null,maxChannels:r=2}=t;if("undefined"!=typeof AudioBuffer&&e instanceof AudioBuffer){let t=e;if(a&&t.sampleRate!==a&&(t=await P(t,a)),t.numberOfChannels>r){let e=[];for(let a=0;a<r;a+=1)e.push(new Float32Array(t.getChannelData(a)));t=O(e,t.sampleRate)}return t}if(!(e instanceof Blob))throw TypeError("Audio input must be a File, Blob, or AudioBuffer.");let n=new(function(){let e=globalThis.AudioContext||globalThis.webkitAudioContext;if(!e)throw Error("This browser does not provide AudioContext.");return e}())(a?{sampleRate:a}:void 0);try{let t=await e.arrayBuffer(),l=await n.decodeAudioData(t.slice(0));if(a&&l.sampleRate!==a&&(l=await P(l,a)),l.numberOfChannels>r){let e=[];for(let t=0;t<r;t+=1)e.push(new Float32Array(l.getChannelData(t)));l=O(e,l.sampleRate)}return l}finally{await n.close().catch(()=>{})}}async function P(e,t){let a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},{channels:r=Math.min(2,e.numberOfChannels)}=a;if(e.sampleRate===t&&e.numberOfChannels<=r)return G(e);let n=new(T())(r,Math.max(1,Math.ceil(e.duration*t)),t),l=n.createBufferSource();return l.buffer=e,l.connect(n.destination),l.start(),n.startRendering()}function B(e,t){let a=D(t);for(let t=0;t<e.numberOfChannels;t+=1){let r=e.getChannelData(t);for(let e=0;e<r.length;e+=1)r[e]*=a}return e}function L(e){let t=0,a=0,r=0,n=0;for(let l=0;l<e.numberOfChannels;l+=1){let o=e.getChannelData(l),i=0;for(let e=0;e<o.length;e+=1){let a=o[e],n=Math.abs(a);n>r&&(r=n),t+=a*a,i+=a}a+=o.length,n=Math.max(n,Math.abs(i/Math.max(1,o.length)))}let l=Math.sqrt(t/Math.max(1,a));return{peak:r,peakDbfs:C(r),rms:l,rmsDbfs:C(l),dcPeak:n,dcDbfs:C(n)}}function S(e){if(e.numberOfChannels<2)return{correlation:1,sideMidDb:-180,monoFoldLossDb:0};let t=e.getChannelData(0),a=e.getChannelData(1),r=0,n=0,l=0,o=0,i=0,s=0,h=0,f=Math.max(1,Math.floor(t.length/15e5));for(let e=0;e<t.length;e+=f){let f=t[e],u=a[e];r+=f*f,n+=u*u,l+=f*u;let m=.5*(f+u),c=.5*(f-u);o+=m*m,i+=c*c,s+=.5*(f*f+u*u),h+=m*m}return{correlation:x(l/Math.sqrt(Math.max(1e-12,r*n)),-1,1),sideMidDb:k(i/Math.max(1e-12,o)),monoFoldLossDb:k(h/Math.max(1e-12,s))}}function z(e,t,a){let r,n,l,o,i,s,h=arguments.length>3&&void 0!==arguments[3]?arguments[3]:Math.SQRT1_2,f=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,u=2*Math.PI*x(a,5,.495*t)/t,m=Math.cos(u),c=Math.sin(u),d=c/(2*Math.max(.05,h)),p=10**(f/40),g=Math.sqrt(p);switch(e){case"lowpass":r=(1-m)/2,n=1-m,l=(1-m)/2,o=1+d,i=-2*m,s=1-d;break;case"highpass":r=(1+m)/2,n=-(1+m),l=(1+m)/2,o=1+d,i=-2*m,s=1-d;break;case"bandpass":r=d,n=0,l=-d,o=1+d,i=-2*m,s=1-d;break;case"peaking":r=1+d*p,n=-2*m,l=1-d*p,o=1+d/p,i=-2*m,s=1-d/p;break;case"lowshelf":{let e=2*g*(c/2*Math.sqrt(2));r=p*(p+1-(p-1)*m+e),n=2*p*(p-1-(p+1)*m),l=p*(p+1-(p-1)*m-e),o=p+1+(p-1)*m+e,i=-2*(p-1+(p+1)*m),s=p+1+(p-1)*m-e;break}case"highshelf":{let e=2*g*(c/2*Math.sqrt(2));r=p*(p+1+(p-1)*m+e),n=-2*p*(p-1+(p+1)*m),l=p*(p+1+(p-1)*m-e),o=p+1-(p-1)*m+e,i=2*(p-1-(p+1)*m),s=p+1-(p-1)*m-e;break}default:throw Error("Unsupported biquad type: ".concat(e))}return{b0:r/o,b1:n/o,b2:l/o,a1:i/o,a2:s/o}}function Q(e,t){let a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,r=a||new Float32Array(e.length),{b0:n,b1:l,b2:o,a1:i,a2:s}=t,h=0,f=0;for(let t=0;t<e.length;t+=1){let a=e[t],u=n*a+h;h=l*a-i*u+f,f=o*a-s*u,r[t]=u}return r}function I(e,t,a){let r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:Math.SQRT1_2,n=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,l=z(t,e.sampleRate,a,r,n);for(let t=0;t<e.numberOfChannels;t+=1){let a=e.getChannelData(t);Q(a,l,a)}return e}function _(e,t,a){let r=z("lowpass",t,a,Math.SQRT1_2),n=Q(e,r);return Q(n,r)}function K(e,t){let a=new Float32Array(e.length);for(let r=0;r<e.length;r+=1)a[r]=e[r]-t[r];return a}function W(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(e.numberOfChannels<2)return{applied:!1,before:S(e),after:S(e)};let{monoBassHz:a=90,lowMidWidth:r=.96,midWidth:n=1,highWidth:l=1.02,referenceBandFactors:o=null,maximumWidth:i=1.12}=t,s=S(e),h=e.getChannelData(0),f=e.getChannelData(1),u=new Float32Array(e.length),m=new Float32Array(e.length);for(let t=0;t<e.length;t+=1)m[t]=.5*(h[t]+f[t]),u[t]=.5*(h[t]-f[t]);let c=x(a||90,50,140),d=_(u,e.sampleRate,c),p=K(u,d),g=_(p,e.sampleRate,500),b=K(p,g),w=_(b,e.sampleRate,5e3),M=K(b,w),y=o||[1,1,1,1],F=[0,x(r*y[1],.75,1.05),x(n*y[2],.85,i),x(l*y[3],.85,i)];for(let t=0;t<e.length;t+=1){let e=d[t]*F[0]+g[t]*F[1]+w[t]*F[2]+M[t]*F[3];h[t]=m[t]+e,f[t]=m[t]-e}let v=S(e);if(v.correlation<-.05||v.monoFoldLossDb<-4.5){let t=x((v.correlation+.2)/.15,0,1);for(let a=0;a<e.length;a+=1){var R;let e=.5*(h[a]+f[a]),r=.5*(h[a]-f[a]),n=(R=u[a])+(r-R)*t;h[a]=e+n,f[a]=e-n}v=S(e)}return{applied:!0,widths:F,before:s,after:v}}function N(e,t,a,r,n,l){let o=0,i=0,s=0,h=0;for(let f=0;f<e.length;f+=1){let u=e[f],m=t*u+a*o+r*i-n*s-l*h;i=o,o=u,h=s,s=m,e[f]=m}}async function U(e){let t=48e3===e.sampleRate?e:await P(e,48e3),a=[];for(let e=0;e<Math.min(2,t.numberOfChannels);e+=1){let r=new Float32Array(t.getChannelData(e));N(r,1.53512485958697,-2.69169618940638,1.19839281085285,-1.69065929318241,.73248077421585),N(r,1,-2,1,-1.99004745483398,.99007225036621),a.push(r)}return{channels:a,sampleRate:48e3,length:t.length}}function j(e,t,a){let r=0;for(let n of e)for(let e=t;e<t+a;e+=1)r+=n[e]*n[e];return -.691+10*Math.log10(Math.max(r/=Math.max(1,a),1e-12))}async function H(e){let{channels:t,sampleRate:a,length:r}=await U(e),n=Math.round(.4*a),l=Math.round(.1*a),o=[];for(let e=0;e+n<=r;e+=l)o.push(j(t,e,n));let i=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:10,a=e.filter(e=>e>-70);if(!a.length)return -70;let r=e=>-.691+10*Math.log10(Math.max(e.reduce((e,t)=>
1e+10**((t+.691)/10),0)/e.length,1e-12)),n=r(a),l=a.filter(e=>e>n-t);return r(l.length?l:a)}(o,10),s=Math.round(3*a),h=Math.round(.1*a),f=[];for(let e=0;e+s<=r;e+=h){let a=j(t,e,s);a>-70&&a>i-20&&f.push(a)}return{integratedLufs:i,lra:f.length>=4?q(f,95)-q(f,10):0,momentary:o,shortTerm:f}}let X=new Map;function V(e){let t=Math.abs(e);if(t<3.75){let e=(t/3.75)**2;return 1+e*(3.5156229+e*(3.0899424+e*(1.2067492+e*(.2659732+e*(.0360768+.0045813*e)))))}let a=3.75/t;return Math.exp(t)/Math.sqrt(t)*(.39894228+a*(.01328592+a*(.00225319+a*(-.00157565+a*(.00916281+a*(-.02057706+a*(.02635537+a*(-.01647633+.00392377*a))))))))}async function J(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{includeIntervals:a=!1,tapsPerSide:r=12,beta:n=8.6,candidateThresholdLinear:l=null}=t,o=e.sampleRate>=88200?2:4,i=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:12,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:8.6,r="".concat(e,":").concat(t,":").concat(a);if(X.has(r))return X.get(r);let n=[],l=V(a);for(let r=1;r<e;r+=1){let o=new Float64Array(2*t+1),i=0;for(let n=-t;n<=t;n+=1){let s=n+r/e,h=s/(t+.5),f=(1e-12>Math.abs(s)?1:Math.sin(Math.PI*s)/(Math.PI*s))*(1>=Math.abs(h)?V(a*Math.sqrt(Math.max(0,1-h*h)))/l:0);o[n+t]=f,i+=f}for(let e=0;e<o.length;e+=1)o[e]/=Math.max(1e-12,i);n.push(o)}let o={factor:e,tapsPerSide:t,phases:n};return X.set(r,o),o}(o,r,n),{channels:s,samplePeak:h}=function(e){let t=[],a=0;for(let r=0;r<e.numberOfChannels;r+=1){let n=e.getChannelData(r);t.push(n);for(let e=0;e<n.length;e+=1)a=Math.max(a,Math.abs(n[e]))}return{channels:t,samplePeak:a}}(e),f=a?new Float32Array(e.length):null,u=null!=l?l:Math.max(.08,Math.min(.35,.12*h)),m=h,c=e.length;for(let e=0;e<c;e+=1){let t=0;for(let a of s)t=Math.max(t,Math.abs(a[e]||0),Math.abs(a[Math.min(c-1,e+1)]||0));if(f&&(f[e]=t),!(e<r)&&!(e>=c-r-1)&&!(t<u))for(let t of i.phases)for(let a of s){let n=0,l=0;for(let o=-r;o<=r;o+=1)n+=a[e-o]*t[l++];let o=Math.abs(n);o>m&&(m=o),f&&o>f[e]&&(f[e]=o)}}return{peak:m,truePeakDbtp:C(m),intervalPeaks:f,oversamplingFactor:o,interpolation:"kaiser-sinc-".concat(2*r+1,"tap")}}async function Y(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{ceilingDbtp:a=-1.2,lookaheadMs:r=2,releaseMs:n=80,safetyMarginDb:l=.07,maximumPasses:o=3,onProgress:i=null}=t,s=D(a-l),h=0,f=0,u=null;for(let t=0;t<o&&(null==i||i("True-peak pass ".concat(t+1),t/o),!((u=await J(e,{includeIntervals:!0,candidateThresholdLinear:Math.max(.12,.22*D(a))})).truePeakDbtp<=a-.02));t+=1){let t=function(e,t,a){let r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},{lookaheadMs:n=2,releaseMs:l=80}=r,o=new Float32Array(e.length);for(let t=0;t<e.length;t+=1){let r=e[t];o[t]=r>a?a/r:1}let i=Math.max(1,Math.round(.001*n*t)),s=new Float32Array(o.length),h=new Int32Array(o.length+1),f=0,u=0;for(let e=o.length-1;e>=0;e-=1){for(;u>f&&h[f]>e+i;)f+=1;for(;u>f&&o[h[u-1]]>=o[e];)u-=1;h[u++]=e,s[e]=o[h[f]]}let m=Math.exp(-1/(.001*l*t)),c=new Float32Array(o.length),d=1,p=1;for(let e=0;e<o.length;e+=1){let t=s[e];d=t<d?t:t+(d-t)*m,c[e]=d,p=Math.min(p,d)}return{envelope:c,maxReductionDb:-C(p)}}(u.intervalPeaks,e.sampleRate,s,{lookaheadMs:r,releaseMs:n});!function(e,t){for(let a=0;a<e.numberOfChannels;a+=1){let r=e.getChannelData(a);for(let e=0;e<r.length;e+=1)r[e]*=t[Math.min(e,t.length-1)]}}(e,t.envelope),f=Math.max(f,t.maxReductionDb);let o=await J(e);if(u=o,o.truePeakDbtp>a){let t=a-l-o.truePeakDbtp;B(e,t),h+=-t}}if((u=await J(e)).truePeakDbtp>a){let t=a-l-u.truePeakDbtp;B(e,t),h+=-t,u=await J(e)}return{...u,maximumReductionDb:f,totalGlobalAttenuationDb:h,ceilingDbtp:a}}async function Z(e){var t,a,r,n,l;let o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{targetLufs:i=-14,ceilingDbtp:s=-1.2,compressor:h=null,limiter:f=null,clipper:u=null}=o,[m,c]=await Promise.all([H(e),J(e)]),d=L(e),p=S(e),g=c.truePeakDbtp-m.integratedLufs,b=m.integratedLufs-i,w=[{name:"true_peak",status:c.truePeakDbtp<=s+.1?"pass":"fail",message:"".concat(c.truePeakDbtp.toFixed(2)," dBTP; ceiling ").concat(s.toFixed(1)," dBTP.")},{name:"loudness",status:.5>=Math.abs(b)?"pass":1>=Math.abs(b)?"warn":"fail",message:"".concat(m.integratedLufs.toFixed(2)," LUFS;
1 target ").concat(i.toFixed(1)," LUFS.")},{name:"phase_correlation",status:p.correlation>=0?"pass":p.correlation>=-.1?"warn":"fail",message:"Correlation ".concat(p.correlation.toFixed(3),"; mono fold ").concat(p.monoFoldLossDb.toFixed(2)," dB.")},{name:"dc_offset",status:d.dcDbfs<=-70?"pass":d.dcDbfs<=-55?"warn":"fail",message:"Maximum channel DC ".concat(d.dcDbfs.toFixed(1)," dBFS.")},{name:"dynamics",status:(null!==(t=null==h?void 0:h.maxReductionDb)&&void 0!==t?t:0)<=4.5&&(null!==(a=null==f?void 0:f.maximumReductionDb)&&void 0!==a?a:0)<=5.5?"pass":"warn",message:"PLR ".concat(g.toFixed(1)," dB; LRA ").concat(m.lra.toFixed(1)," LU; compressor GR ").concat((null!==(r=null==h?void 0:h.maxReductionDb)&&void 0!==r?r:0).toFixed(1)," dB; limiter GR ").concat((null!==(n=null==f?void 0:f.maximumReductionDb)&&void 0!==n?n:0).toFixed(1)," dB.")}];return{overall:w.some(e=>"fail"===e.status)?"fail":w.some(e=>"warn"===e.status)?"warn":"pass",checks:w,measured:{integratedLufs:m.integratedLufs,lraLu:m.lra,truePeakDbtp:c.truePeakDbtp,samplePeakDbfs:d.peakDbfs,rmsDbfs:d.rmsDbfs,targetLufs:i,plrDb:g,correlation:p.correlation,sideMidDb:p.sideMidDb,monoFoldLossDb:p.monoFoldLossDb,dcDbfs:d.dcDbfs,channels:e.numberOfChannels,sampleRate:e.sampleRate,clipperReductionDb:null!==(l=null==u?void 0:u.reductionDb)&&void 0!==l?l:0}}}function $(e,t){let a=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=e.length;if((r&r-1)!=0)throw Error("FFT length must be a power of two.");for(let a=1,n=0;a<r;a+=1){let l=r>>1;for(;n&l;)n^=l,l>>=1;a<(n^=l)&&([e[a],e[n]]=[e[n],e[a]],[t[a],t[n]]=[t[n],t[a]])}for(let n=2;n<=r;n<<=1){let l=(a?2:-2)*Math.PI/n,o=Math.cos(l),i=Math.sin(l);for(let a=0;a<r;a+=n){let r=1,l=0,s=n>>1;for(let n=0;n<s;n+=1){let h=a+n,f=h+s,u=e[f]*r-t[f]*l,m=e[f]*l+t[f]*r,c=e[h],d=t[h];e[h]=c+u,t[h]=d+m,e[f]=c-u,t[f]=d-m;let p=r*o-l*i;l=r*i+l*o,r=p}}}if(a)for(let a=0;a<r;a+=1)e[a]/=r,t[a]/=r}function ee(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{bandCount:a=32,minimumHz:r=30,maximumHz:n=Math.min(2e4,.48*e.sampleRate),fftSize:l=4096,hopSize:o=4096,maxFrames:i=420,activeRangeDb:s=30,absoluteFloorDb:h=-55}=t,f=function(e,t,a,r){let n=[],l=Math.max(0,Math.floor((e.length-t)/a)+1);if(l<=r){for(let e=0;e<l;e+=1)n.push(e*a);return n}let o=l/r;for(let e=0;e<r;e+=1)n.push(Math.floor(e*o)*a);return n}(e,l,o,i),u=new Float64Array(f.length),m=-1/0;for(let t=0;t<f.length;t+=1){let a=f[t],r=0;for(let t=0;t<e.numberOfChannels;t+=1){let n=e.getChannelData(t);for(let e=0;e<l;e+=1){let t=n[a+e]||0;r+=t*t}}let n=C(Math.sqrt(r/Math.max(1,l*e.numberOfChannels)));u[t]=n,m=Math.max(m,n)}let c=Math.max(h,m-s),d=function(e,t,a){let r=new Float64Array(e+1),n=(a/t)**(1/e);r[0]=t;for(let t=1;t<=e;t+=1)r[t]=r[t-1]*n;return r}(a,r,n),p=new Float64Array(a),g=new Float64Array(a),b=new Float64Array(a),w=new Float32Array(l);for(let e=0;e<l;e+=1)w[e]=.5-.5*Math.cos(2*Math.PI*e/(l-1));let M=0;for(let t=0;t<f.length;t+=1){if(u[t]<c)continue;let o=f[t],i=D(-u[t]),s=new Float64Array(l),h=new Float64Array(l),m=new Float64Array(l),y=new Float64Array(l),F=e.getChannelData(0),v=e.numberOfChannels>1?e.getChannelData(1):F;for(let e=0;e<l;e+=1)s[e]=(F[o+e]||0)*w[e]*i,m[e]=(v[o+e]||0)*w[e]*i;$(s,h),$(m,y);let R=0;for(let t=1;t<l/2;t+=1){let o=t*e.sampleRate/l;for(;R<a-1&&o>=d[R+1];)R+=1;if(o<r||o>=n)continue;let i=s[t],f=h[t],u=m[t],c=y[t],w=.5*(i*i+f*f+u*u+c*c),M=.5*(i+u),F=.5*(f+c),v=.5*(i-u),A=.5*(f-c);p[R]+=w,g[R]+=M*M+F*F,b[R]+=v*v+A*A}M+=1}let y=Array.from(p,e=>k(e/Math.max(1,M))),F=[];for(let e=0;e<a;e+=1)F.push(Math.sqrt(d[e]*d[e+1]));let v=y.filter((e,t)=>F[t]>=200&&F[t]<=5e3&&Number.isFinite(e)),R=v.length?v.reduce((e,t)=>e+t,0)/v.length:0,A=y.map(e=>e-R),x=Array.from(b,(e,t)=>k(e/Math.max(1e-12,g[t])));return{bandCount:a,edges:Array.from(d),centers:F,rawDb:y,relativeDb:A,sideMidDb:x,usedFrames:M,activeThresholdDb:c}}async function et(e,t){let a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},{matchAmount:r=.6,maxEqDb:n=5,widthAmount:l=.4,dynamicsAmount:o=.3,followReferenceLoudness:i=!1,platformTargetLufs:s=-14}=a,[h,f,u,m,c,d]=await Promise.all([Promise.resolve(ee(e)),Promise.resolve(ee(t)),H(e),H(t),J(e),J(t)]),p=(function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2,a=Array.from(e);for(let e=0;e<t;e+=1){let e=a.slice();for(let t=0;t<a.length;t+=1){let r=a[Math.max(0,t-1)],n=a[t],l=a[Math.min(a.length-1,t+1)];e[t]=.25*r+.5*n+.25*l}a=e}return a})(h.relativeDb.map((e,t)=>f.relativeDb[t]-e),2).map(e=>x(e,-n,n)*x(r,0,1)),g=[55,90,160,315,630,1250,2500,5e3,9e3,14500],b=g.map(e=>(function(e,t,a){if(a<=e[0])return t[0];if(a>=e[e.length-1])return t[t.length-1];let r=Math.log(a);for(let l=0;l<e.length-1;
1l+=1)if(a>=e[l]&&a<=e[l+1]){var n;let a=Math.log(e[l]),o=(r-a)/Math.max(1e-12,Math.log(e[l+1])-a);return(n=t[l])+(t[l+1]-n)*o}return 0})(h.centers,p,e));for(let e=1;e<b.length;e+=1)b[e]=x(b[e],b[e-1]-2.25,b[e-1]+2.25);for(let e=b.length-2;e>=0;e-=1)b[e]=x(b[e],b[e+1]-2.25,b[e+1]+2.25);let w=[[20,120],[120,500],[500,5e3],[5e3,2e4]].map(e=>{let[t,a]=e,r=h.centers.map((e,t)=>({frequency:e,index:t})).filter(e=>{let{frequency:r}=e;return r>=t&&r<a}).map(e=>{let{index:t}=e;return t});if(!r.length)return 1;let n=r.reduce((e,t)=>e+h.sideMidDb[t],0)/r.length;return x(1+(D(r.reduce((e,t)=>e+f.sideMidDb[t],0)/r.length-n)-1)*l,.82,1.16)}),M=c.truePeakDbtp-u.integratedLufs,y=d.truePeakDbtp-m.integratedLufs,F=x(1+.045*(M-y)*x(o,0,1),.75,1.3),v=i?x(m.integratedLufs,-16,-8):s;return{targetSpectrum:h,referenceSpectrum:f,matchCurveDb:p,filters:g.map((e,t)=>({frequency:e,gainDb:b[t],type:0===t?"lowshelf":t===g.length-1?"highshelf":"peaking",q:0===t||t===g.length-1?Math.SQRT1_2:1.05})),widthFactors:w,dynamicsScale:F,targetLufs:v,metrics:{targetLufs:u.integratedLufs,referenceLufs:m.integratedLufs,targetCrestDb:M,referenceCrestDb:y},settings:{matchAmount:r,maxEqDb:n,widthAmount:l,dynamicsAmount:o,followReferenceLoudness:i}}}function ea(e,t,a,r,n){let l=arguments.length>5&&void 0!==arguments[5]?arguments[5]:Math.SQRT1_2,o=z(r,a,n,l),i=Q(e,o),s=Q(t,o),h=0;for(let e=0;e<i.length;e+=1)h+=.5*(i[e]*i[e]+s[e]*s[e]);return Math.sqrt(h/Math.max(1,i.length))}function er(e,t){let a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:8e3,r=z("highpass",t,a,Math.SQRT1_2),n=Q(e,r);return Q(n,r)}async function en(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{model:a="./model/htdemucs_embedded.onnx",modelUrl:r,ort:n=null,ortModuleUrl:l,executionProviders:o=["webgpu","wasm"],graphOptimizationLevel:i="basic",sessionOptions:s={},wasmThreads:h,wasmPaths:f,wasmProxy:u,vocalUpfrontDb:m=1.5,genreSlug:c="pop",residualAirAmount:d=.72,dryBlend:p=.035,separationResult:g=null,originalBuffer:b=null,onProgress:w=()=>{}}=t,M=null!=g?g:await A(e,{model:a,modelUrl:r,ort:n,ortModuleUrl:l,executionProviders:o,graphOptimizationLevel:i,sessionOptions:s,wasmThreads:h,wasmPaths:f,wasmProxy:u,onProgress:e=>w({scope:"mix",section:"mix",...e})});w({scope:"mix",section:"mix",phase:"analyze-stems",ratio:.72});
1let y=null!=b?b:await E(e,{sampleRate:M.sampleRate,maxChannels:2}),F=Math.min(y.length,M.length),v=["drums","bass","other","vocals"],R={},k=0;for(let e of v)R[e]=function(e,t){let a=function(e,t){let a=0,r=0,n=Math.min(e.length,t.length);for(let l=0;l<n;l+=1){let n=e[l],o=t[l];a+=.5*(n*n+o*o),r=Math.max(r,Math.abs(n),Math.abs(o))}let l=Math.sqrt(a/Math.max(1,n));return{rms:l,rmsDb:C(l),peak:r,peakDb:C(r),crestDb:C(r/Math.max(1e-12,l))}}(e.left,e.right),r=ea(e.left,e.right,t,"lowpass",180),n=ea(e.left,e.right,t,"highpass",6e3),l=ea(e.left,e.right,t,"bandpass",2700,.85);return{...a,lowRatio:r/Math.max(1e-12,a.rms),highRatio:n/Math.max(1e-12,a.rms),presenceRatio:l/Math.max(1e-12,a.rms)}}(M.stems[e],M.sampleRate),k+=R[e].rms*R[e].rms;for(let e of v)R[e].share=R[e].rms*R[e].rms/Math.max(1e-12,k);let q=R.vocals.share,T=x((q-.025)/.12*x(R.vocals.presenceRatio/.24,.4,1.2),0,1),G=/(trap|drill|phonk|edm|house|techno|hip-hop|afrobeats|amapiano)/.test(c)?.23:/(rock|metal|k-pop|pop|rnb)/.test(c)?.18:.14,P=x((G-R.bass.share)*7,-1.4,1.4),B=x((.24-R.drums.share)*4.5,-1,1),S=T<.08?0:x(m+(.16-q)*4,-.8,2.4),I=x(-(Math.max(0,S)*T*.12),-.4,0),_={vocals:{gainDb:S,filters:T<.08?[]:[{type:"peaking",frequency:3e3,q:1,gainDb:x(.4+.9*T,0,1.3)},{type:"highshelf",frequency:9e3,gainDb:R.vocals.highRatio<.2?.8:.3}]},bass:{gainDb:P,filters:[{type:"lowshelf",frequency:90,gainDb:x((G-R.bass.share)*5,-.7,1.2)},{type:"peaking",frequency:300,q:1.1,gainDb:R.bass.lowRatio>.75?-1:-.35}]},drums:{gainDb:B,filters:[{type:"highshelf",frequency:8e3,gainDb:R.drums.highRatio<.22?.8:0}]},other:{gainDb:I,filters:T<.08?[]:[{type:"peaking",frequency:2500,q:1.2,gainDb:-.9*T}]}};w({scope:"mix",section:"mix",phase:"adaptive-remix",ratio:.82});let K={};for(let e of v)K[e]=function(e,t,a){let r=new Float32Array(e.left),n=new Float32Array(e.right);for(let e of a.filters||[]){var l,o;if(.02>Math.abs(null!==(l=e.gainDb)&&void 0!==l?l:0))continue;let a=z(e.type,t,e.frequency,null!==(o=e.q)&&void 0!==o?o:Math.SQRT1_2,e.gainDb);r=Q(r,a),n=Q(n,a)}let i=D(a.gainDb||0);for(let e=0;e<r.length;e+=1)r[e]*=i,n[e]*=i;return{left:r,right:n}}(M.stems[e],M.sampleRate,_[e]);let W=y.getChannelData(0),N=y.numberOfChannels>1?y.getChannelData(1):W,U=new Float32Array(F),j=new Float32Array(F);for(let e of v){let t=M.stems[e];for(let e=0;e<F;e+=1)U[e]+=t.left[e]||0,j[e]+=t.right[e]||0}let H=new Float32Array(F),X=new Float32Array(F);for(let e=0;e<F;e+=1)H[e]=W[e]-U[e],X[e]=N[e]-j[e];let V=er(H,M.sampleRate,8e3),J=er(X,M.sampleRate,8e3),Y=new Float32Array(F),Z=new Float32Array(F);for(let e=0;e<F;e+=1){let t=0,a=0;for(let r of v)t+=K[r].left[e]||0,a+=K[r].right[e]||0;Y[e]=t+V[e]*x(d,0,1)+W[e]*x(p,0,.12),Z[e]=a+J[e]*x(d,0,1)+N[e]*x(p,0,.12)}let $=O([Y,Z],M.sampleRate),ee=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:.98,{peak:a}=L(e);if(a<=t||a<=1e-12)return{gainDb:0,peak:a};let r=t/a;for(let t=0;t<e.numberOfChannels;t+=1){let a=e.getChannelData(t);for(let e=0;e<a.length;e+=1)a[e]*=r}return{gainDb:C(r),peak:a}}($,.98);return w({scope:"mix",section:"mix",phase:"adaptive-remix",ratio:1}),{buffer:$,stems:M.stems,analyses:R,settings:_,vocalConfidence:T,residualAirAmount:d,dryBlend:p,normalization:ee,sampleRate:M.sampleRate}}function el(e,t,a){for(let r=0;r<a.length;r+=1)e.setUint8(t+r,a.charCodeAt(r))}function eo(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{bitDepth:a=24,float:r=32===a,dither:n=a<32,ditherSeed:l=1296908594}=t,o=e.numberOfChannels,i=e.length,s=a/8*o,h=i*s,f=new ArrayBuffer(44+h),u=new DataView(f);el(u,0,"RIFF"),u.setUint32(4,36+h,!0),el(u,8,"WAVE"),el(u,12,"fmt "),u.setUint32(16,16,!0),u.setUint16(20,r?3:1,!0),u.setUint16(22,o,!0),u.setUint32(24,e.sampleRate,!0),u.setUint32(28,e.sampleRate*s,!0),u.setUint16(32,s,!0),u.setUint16(34,a,!0),el(u,36,"data"),u.setUint32(40,h,!0);let m=[];for(let t=0;t<o;t+=1)m.push(e.getChannelData(t));let c=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1831565813,t=e>>>0;return()=>(t^=t<<13,t^=t>>>17,((t^=t<<5)>>>0)/4294967296)}(l),d=16===a?1/32768:1/8388608,p=44;for(let e=0;e<i;e+=1)for(let t=0;t<o;t+=1){let l=m[t][e];if(!r&&n&&(l+=(c()-c())*d),l=x(l,-1,1),r)u.setFloat32(p,l,!0),p+=4;else if(16===a)u.setInt16(p,l<0?32768*l:32767*l,!0),p+=2;else if(24===a){let e=(l<0?8388608*l:8388607*l)|0;u.setUint8(p,255&e),u.setUint8(p+1,e>>8&255),u.setUint8(p+2,e>>16&255),p+=3}else throw Error("Unsupported WAV bit depth: ".concat(a))}return new Blob([f],{type:"audio/wav"})}async function ei(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{bitrateKbps:a=320}=t;if(!globalThis.AudioEncoder||!globalThis.AudioData)return null;let r={codec:"mp3",sampleRate:e.sampleRate,numberOfChannels:e.numberOfChannels,bitrate:1e3*a};try{if(!(await AudioEncoder.isConfigSupported(r)).supported)return null}catch(e){return null}let n=[],l=null,o=new AudioEncoder({output(e){let t=new Uint8Array(e.byteLength);e.copyTo(t),n.push(t)},error(e){l=e}});o.configure(r);let i=0;for(let t=0;t<e.length;t+=9216){let a=Math.min(9216,e.length-t),r=new Float32Array(a*e.numberOfChannels);for(let n=0;n<e.numberOfChannels;n+=1){let l=e.getChannelData(n);r.set(l.subarray(t,t+a),n*a)}let n=new AudioData({format:"f32-planar",sampleRate:e.sampleRate,numberOfFrames:a,numberOfChannels:e.numberOfChannels,timestamp:i,data:r});o.encode(n),n.close(),i+=Math.round(a/e.sampleRate*1e6)}if(await o.flush(),o.close(),l)throw l;return n.length?new Blob([function(e){let t=new Uint8Array(e.reduce((e,t)=>
1e+t.length,0)),a=0;for(let r of e)t.set(r,a),a+=r.length;return t}(n)],{type:"audio/mpeg"}):null}async function es(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{bitrateKbps:a=320,endpoint:r="/api/encode-mp3"}=t,n=eo(e,{bitDepth:24,dither:!1}),l=await fetch("".concat(r,"?bitrate=").concat(encodeURIComponent(a)),{method:"POST",headers:{"Content-Type":"audio/wav"},body:n});if(!l.ok){let e=await l.text().catch(()=>"");throw Error("MP3 encoding failed (".concat(l.status,"): ").concat(e||l.statusText))}return l.blob()}async function eh(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{bitrateKbps:a=320,serverFallback:r=!0,endpoint:n="/api/encode-mp3",codecHeadroomDb:l=.5}=t,o=G(e);if(l>0&&B(o,-l),(o.sampleRate>48e3||![32e3,44100,48e3].includes(o.sampleRate))&&(o=await P(o,48e3)),o.numberOfChannels>2)throw Error("MP3 export supports mono or stereo only.");let i=await ei(o,{bitrateKbps:a});if(i)return{blob:i,encoder:"webcodecs",sampleRate:o.sampleRate,bitrateKbps:a};if(!r)throw Error("This browser does not expose an MP3 WebCodecs encoder. Start the included Node server or enable a browser encoder.");return{blob:await es(o,{bitrateKbps:a,endpoint:n}),encoder:"ffmpeg-server",sampleRate:o.sampleRate,bitrateKbps:a}}async function ef(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{wavBitDepth:a=24,hdSampleRate:r=96e3,mp3BitrateKbps:n=320,mp3CodecHeadroomDb:l=.5,includeMp3:o=!0,includeHdWav:i=!1,mp3ServerFallback:s=!1,onProgress:h=()=>{}}=t;h({scope:"export",phase:"wav",ratio:.1});let f=eo(e,{bitDepth:a,float:!1,dither:!0}),u=null,m=null;i&&(h({scope:"export",phase:"hd-resample",ratio:.35}),m=eo(u=e.sampleRate===r?e:await P(e,r),{bitDepth:32,float:!0,dither:!1}));let c=null,d=null;if(o){h({scope:"export",phase:"mp3",ratio:.72});let t=await eh(e,{bitrateKbps:n,codecHeadroomDb:l,serverFallback:s});c=t.blob,d=t}return h({scope:"export",phase:"done",ratio:1}),{wav:f,hdWav:m,mp3:c,mp3Info:d,formats:{wav:{mimeType:"audio/wav",sampleRate:e.sampleRate,bitDepth:a,encoding:"PCM"},hdWav:m?{mimeType:"audio/wav",sampleRate:u.sampleRate,bitDepth:32,encoding:"IEEE float"}:null,mp3:d?{mimeType:"audio/mpeg",sampleRate:d.sampleRate,bitrateKbps:d.bitrateKbps,encoder:d.encoder}:null}}}let eu=Object.freeze({MASTER:"master",MIX_MASTER:"mix-master",REFERENCE_MASTER:"reference-master"});function em(e,t){var a;return t||(e?null!==(a=s[e])&&void 0!==a?a:String(e).toLowerCase().replace(/\s+/g,"-"):"pop")}function ec(e,t){return Number.isFinite(t)?t:Number.isFinite(o[e])?o[e]:-14}function ed(e){return/(trap|drill|phonk)/.test(e)?{saturation:.5,monoBassHz:110}:/(edm|house|techno|hyperpop|synthwave)/.test(e)?{saturation:.45,monoBassHz:100}:/(metal|rock)/.test(e)?{saturation:.42,monoBassHz:80}:/(hip-hop|afrobeats|amapiano|k-pop)/.test(e)?{saturation:.38,monoBassHz:100}:/(jazz|lo-fi|neo-soul|country)/.test(e)?{saturation:.16,monoBassHz:70}:{saturation:.28,monoBassHz:88}}function ep(e,t,a,r){return function(n){var l;let o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,i="string"==typeof n?{phase:n,ratio:null!=o?o:0}:n;e({scope:t,section:t,...i,ratio:a+r*x(null!==(l=i.ratio)&&void 0!==l?l:0,0,1)})}}async function eg(e){var t,a,r,n,l,o;let i,s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{genre:u="Pop",genreSlug:m=null,platform:c="spotify",targetLufs:d=null,style:p="balanced",intensity:g=.85,loudnessProfile:b="dynamic",truePeakCeilingDbtp:w=-1.2,outputSampleRate:M=48e3,dynamicsScale:y=1,referenceMode:F=!1,stereoAlreadyMatched:v=!1,includeMp3:R=!0,includeHdWav:A=!1,mp3ServerFallback:T=!1,hdSampleRate:O=96e3,mp3BitrateKbps:E=320,onProgress:_=()=>{}}=s,K=em(u,m),N=null!==(t=h[K])&&void 0!==t?t:h.pop,U=null!==(a=f[p])&&void 0!==a?a:f.balanced,j=ed(K),X=(o=ec(c,d),"competitive"===b?Math.min(-9.5,o+(/(edm|house|techno|trap|drill|phonk|hyperpop|metal)/.test(K)?3:2.2)):"maximum"===b?Math.min(-7.5,o+(/(edm|house|techno|trap|drill|phonk|hyperpop|metal)/.test(K)?5:4)):o),V=x(g,.1,1);_({scope:"master",phase:"prepare",ratio:.02});let J=e.sampleRate===M?G(e):await P(e,M),$=J.duration;_({scope:"master",phase:"analyze",ratio:.08});let ee=await H(J),et=L(J).peakDbfs-ee.integratedLufs,ea=function(e){let t=e.sampleRate,a=Math.floor(e.length/512);if(a<80)return null;let r=new Float32Array(a),n=0;for(let t=0;t<a;t+=1){let a=0,l=512*t;
1for(let t=0;t<512;t+=1){let r=0;for(let a=0;a<e.numberOfChannels;a+=1)r+=e.getChannelData(a)[l+t];r/=e.numberOfChannels,a+=r*r}r[t]=Math.max(0,a-n),n=a}let l=t/512,o=Math.floor(60*l/190),i=Math.ceil(60*l/65),s=0,h=-1/0;for(let e=o;e<=i;e+=1){let t=0;for(let a=0;a+e<r.length;a+=1)t+=r[a]*r[a+e];t>h&&(h=t,s=e)}if(!s)return null;let f=60*l/s;for(;f<80;)f*=2;for(;f>180;)f/=2;return Math.round(f)}(J);_({scope:"master",phase:"tone-eq",ratio:.17}),function(e,t){var a,r;let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},{style:l={low:0,high:0},intensity:o=.85,eqScale:i=1,referenceMode:s=!1}=n,h=x(o*i*(s?.28:1),0,1.5);(function(e,t){for(let l of t){var a,r,n;!l||1e-6>Math.abs(null!==(a=l.gainDb)&&void 0!==a?a:1)&&["peaking","lowshelf","highshelf"].includes(l.type)||I(e,l.type,l.frequency,null!==(r=l.q)&&void 0!==r?r:Math.SQRT1_2,null!==(n=l.gainDb)&&void 0!==n?n:0)}})(e,[{type:"highpass",frequency:25,q:Math.SQRT1_2},{type:"lowshelf",frequency:t.lowFreq,gainDb:(t.lowGain+(null!==(a=l.low)&&void 0!==a?a:0))*h},{type:"peaking",frequency:t.midFreq,q:t.midQ,gainDb:t.midGain*h},{type:"highshelf",frequency:t.highFreq,gainDb:(t.highGain+(null!==(r=l.high)&&void 0!==r?r:0))*h}])}(J,N,{style:U,intensity:V,eqScale:1,referenceMode:F}),_({scope:"master",phase:"dynamic-deharsh",ratio:.27});let er=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{intensity:a=.85,bands:r=[{name:"presence",low:2500,high:5e3,maxReductionDb:2,attackMs:5,releaseMs:100,percentile:76},{name:"sheen",low:6e3,high:1e4,maxReductionDb:2.5,attackMs:3,releaseMs:125,percentile:74}]}=t,n=[],l=e.sampleRate,o=[];for(let t=0;t<e.numberOfChannels;t+=1)o.push(e.getChannelData(t));for(let t of r){let r=Math.sqrt(t.low*t.high),i=r/Math.max(1,t.high-t.low),s=function(e,t,a){let r=z("bandpass",e.sampleRate,t,a),n=[];for(let t=0;t<e.numberOfChannels;t+=1)n.push(Q(e.getChannelData(t),r));return n}(e,r,i),h=Math.exp(-1/(.008*l)),f=0,u=[],m=Math.max(32,Math.round(l/400));for(let t=0;t<e.length;t+=1){let e=0;for(let a of s)e+=a[t]*a[t];e/=s.length,f=h*f+(1-h)*e,t%m==0&&u.push(k(f))}let c=q(u.filter(Number.isFinite),t.percentile),d=Math.exp(-1/(.001*t.attackMs*l)),p=Math.exp(-1/(.001*t.releaseMs*l)),g=t.maxReductionDb*x(a,.1,1);f=0;let b=0,w=0,M=0;for(let t=0;t<e.length;t+=1){let e=0;for(let a of s)e+=a[t]*a[t];e/=s.length;let a=x((k(f=h*f+(1-h)*e)-c)*.48,0,g),r=a>b?d:p,n=D(-(b=r*b+(1-r)*a))-1;for(let e=0;e<o.length;e+=1)o[e][t]+=s[e][t]*n;w=Math.max(w,b),M+=b}n.push({name:t.name,lowHz:t.low,highHz:t.high,thresholdDb:c,maxReductionDb:w,averageReductionDb:M/Math.max(1,e.length)})}return n}(J,{intensity:V});_({scope:"master",phase:"compression",ratio:.37});let en=function(e,t){let{thresholdDb:a,ratio:r,attackMs:n,releaseMs:l,kneeDb:o,detectorMs:i=10,maxGainReductionDb:s=4}=t,h=e.sampleRate,f=[];for(let t=0;t<e.numberOfChannels;t+=1)f.push(e.getChannelData(t));let u=e.length,m=Math.exp(-1/(.001*Math.max(.5,i)*h)),c=Math.exp(-1/(.001*Math.max(.2,n)*h)),d=Math.exp(-1/(.001*Math.max(5,l)*h)),p=0,g=0,b=0,w=0;for(let e=0;e<u;e+=1){let t=0;for(let a of f)t+=a[e]*a[e];t/=f.length;let n=function(e,t,a,r){let n=e-t,l=Math.max(0,r),o=1-1/Math.max(1,a);if(l<=0)return n>0?-o*n:0;if(n<=-l/2)return 0;if(n>=l/2)return-o*n;let i=n+l/2;return-o*i*i/(2*l)}(k(p=m*p+(1-m)*t),a,r,o),l=(n=Math.max(-s,n))<g?c:d,i=D(g=l*g+(1-l)*n);for(let t of f)t[e]*=i;let h=-g;h>b&&(b=h),w+=h}return{...t,maxReductionDb:b,averageReductionDb:w/Math.max(1,u)}}(J,function(e){var t,a,r,n,l;let{preset:o,intensity:i=.85,sourceCrestDb:s=12,bpm:h=null,dynamicsScale:f=1,presetBlend:u=.38}=e,m=x(i,.1,1),c=x(f*(s<7?.5:s<10?.75:s>16?1.12:1),.45,1.35),d={thresholdDb:-24+(1-m)*6-(c-1)*4,ratio:Math.max(1,1+(.6+.4*m)*c),attackMs:30,releaseMs:250,kneeDb:12},p=Number.isFinite(h)&&h>30?x(6e4/h/2,80,300):1e3*o.compRelease,g=x(u,0,.6);return{thresholdDb:(t=d.thresholdDb)+(o.compThreshold-t)*g,ratio:x((a=d.ratio)+(o.compRatio-a)*g,1,4.5),attackMs:x((r=d.attackMs)+(1e3*o.compAttack-r)*g,5,60),releaseMs:x((n=d.releaseMs)+(p-n)*g,70,350),kneeDb:x((l=d.kneeDb)+(o.compKnee-l)*g,3,16),detectorMs:10,maxGainReductionDb:x(3.2+1.2*m,3.2,4.4)}}({preset:N,intensity:V,sourceCrestDb:et,bpm:ea,dynamicsScale:y,presetBlend:F?.25:.38}));_({scope:"master",phase:"harmonics",ratio:.47});let el=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:.2,a=x(t,0,1);if(a<.001)return{drive:0,peakBefore:L(e).peak};let r=1+1.6*a,n=0;for(let t=0;t<e.numberOfChannels;t+=1){let a=e.getChannelData(t);for(let e=0;e<a.length;e+=1){let t=a[e];n=Math.max(n,Math.abs(t)),a[e]=Math.tanh(r*t)/r}}return{drive:a,peakBefore:n}}(J,x(j.saturation*(null!==(r=U.sat)&&void 0!==r?r:1)*V*.66,0,.34));!function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:.025,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:8e3,r=x(t,0,.08);if(r<=0)return;let n=z("highpass",e.sampleRate,a,Math.SQRT1_2);for(let t=0;t<e.numberOfChannels;t+=1){let a=e.getChannelData(t),l=Q(a,n);for(let e=0;e<a.length;e+=1){let t=Math.tanh(2.44*l[e])/2.44;a[e]+=t*r}}}(J,.036*(null!==(n=U.air)&&void 0!==n?n:.6)*V,8e3);let eo={applied:!1,before:S(J),after:S(J)};if(!v){_({scope:"master",phase:"stereo",ratio:.54});let e=x(null!==(l=U.width)&&void 0!==l?l:1,.9,1.1);eo=W(J,{monoBassHz:j.monoBassHz,lowMidWidth:.96,midWidth:e,highWidth:x(e+.02,.9,1.12),maximumWidth:1.12})}_({scope:"master",phase:"loudness",ratio:.61});let ei=await H(J);B(J,x(X-ei.integratedLufs,-18,18)),_({scope:"master",phase:"soft-clip",ratio:.67});let es=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:-1.1,a=D(t),r=0,n=0;for(let t=0;t<e.numberOfChannels;t+=1){let l=e.getChannelData(t);for(let e=0;e<l.length;e+=1){let t=l[e],o=Math.abs(t);if(r=Math.max(r,o),o>a){let r=x((o-a)/Math.max(1e-12,1-a),0,1),n=a+(1-a)*(r-r*r*r/3)*.72;
1l[e]=Math.sign(t)*Math.min(n,a+(1-a)*.48)}n=Math.max(n,Math.abs(l[e]))}}return{thresholdDb:t,reductionDb:Math.max(0,C(r/Math.max(1e-12,n)))}}(J,"maximum"===b?-3:"competitive"===b?-2:-1.1);_({scope:"master",phase:"true-peak-limit",ratio:.72});let eh=await Y(J,{ceilingDbtp:w,lookaheadMs:2,releaseMs:"maximum"===b?60:85});for(let e=0;e<2;e+=1){let e=X-(ei=await H(J)).integratedLufs;if(.22>=Math.abs(e))break;B(J,x(e,-2,2)),eh=await Y(J,{ceilingDbtp:w,lookaheadMs:2,releaseMs:"maximum"===b?60:85})}_({scope:"master",phase:"qc",ratio:.84});let eu=await Z(J,{targetLufs:X,ceilingDbtp:w,compressor:en,limiter:eh,clipper:es});_({scope:"master",phase:"export",ratio:.9});let eg=null;try{i=await ef(J,{includeMp3:R,includeHdWav:A,mp3ServerFallback:T,hdSampleRate:O,mp3BitrateKbps:E,onProgress:ep(_,"export",.9,.1)})}catch(e){eg=e instanceof Error?e.message:String(e),i=await ef(J,{includeMp3:!1,mp3ServerFallback:T,hdSampleRate:O,mp3BitrateKbps:E,includeHdWav:A,onProgress:ep(_,"export",.9,.1)})}return _({scope:"master",phase:"done",ratio:1}),{version:"2.0.0",audioBuffer:J,wav:i.wav,hdWav:i.hdWav,mp3:i.mp3,exports:i,exportWarning:eg,inputDurationSec:$,inputLufs:ee.integratedLufs,inputLraLu:ee.lra,outputLufs:eu.measured.integratedLufs,targetLufs:X,samplePeakDbfs:eu.measured.samplePeakDbfs,truePeakDbtp:eu.measured.truePeakDbtp,lraLu:eu.measured.lraLu,plrDb:eu.measured.plrDb,sourceCrestDb:et,bpm:ea,compressor:en,deHarsh:er,saturation:el,stereo:eo,limiter:eh,clipper:es,qc:eu,qualityStatus:eu.overall,qualityNote:"pass"===eu.overall?"Loudness, true peak, dynamics and mono compatibility passed V2 QC.":"warn"===eu.overall?"The file is release-usable, but one or more QC checks deserve review.":"One or more QC checks failed; revise settings before release.",settings:{genre:u,genreSlug:K,platform:c,style:p,intensity:V,loudnessProfile:b,truePeakCeilingDbtp:w,outputSampleRate:M,hdSampleRate:O,mp3BitrateKbps:E,dynamicsScale:y,referenceMode:F}}}async function eb(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{outputSampleRate:a=48e3,onProgress:r=()=>{}}=t;r({scope:"decode",phase:"decode",ratio:0});let n=await E(e,{sampleRate:a,maxChannels:2});r({scope:"decode",phase:"decode",ratio:1});let l=await eg(n,t);return{mode:eu.MASTER,originalBlob:e,sourceBlob:e,sourceAudioBuffer:n,remixBlob:null,remixAudioBuffer:null,referencePlan:null,stems:null,master:l,masteredBlob:l.wav,masteredWav:l.wav,hdWav:l.hdWav,mp3:l.mp3,masteredAudioBuffer:l.audioBuffer}}async function ew(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{model:a="./model/htdemucs_embedded.onnx",modelUrl:r,outputSampleRate:n=48e3,onProgress:l=()=>{}}=t,o=await en(e,{...t,model:a,modelUrl:r,onProgress:ep(l,"mix",0,.55)}),i=o.buffer.sampleRate===n?o.buffer:await P(o.buffer,n),s=await eg(i,{...t,onProgress:ep(l,"master",.55,.45)}),h=eo(o.buffer,{bitDepth:32,float:!0,dither:!1});return{mode:eu.MIX_MASTER,originalBlob:e,sourceBlob:e,sourceAudioBuffer:i,remixBlob:h,remixAudioBuffer:o.buffer,referencePlan:null,stems:o.stems,stemAnalysis:o.analyses,stemSettings:o.settings,vocalConfidence:o.vocalConfidence,master:s,masteredBlob:s.wav,masteredWav:s.wav,hdWav:s.hdWav,mp3:s.mp3,masteredAudioBuffer:s.audioBuffer}}async function eM(e,t){let a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!t)throw Error("Reference Mastering requires a reference audio file.");let{outputSampleRate:r=48e3,platform:n="spotify",targetLufs:l=null,genre:o="Pop",genreSlug:i=null,matchAmount:s=.6,maxEqDb:h=5,widthAmount:f=.4,dynamicsAmount:u=.3,followReferenceLoudness:m=!1,onProgress:c=()=>{}}=a;c({scope:"reference",phase:"decode",ratio:.02});let[d,p]=await Promise.all([E(e,{sampleRate:r,maxChannels:2}),E(t,{sampleRate:r,maxChannels:2})]),g=em(o,i),b=ed(g),w=ec(n,l);c({scope:"reference",phase:"analyze-reference",ratio:.16});let M=await et(d,p,{matchAmount:s,maxEqDb:h,widthAmount:f,dynamicsAmount:u,followReferenceLoudness:m,platformTargetLufs:w});c({scope:"reference",phase:"match-tone-width",ratio:.42});let y=function(e,t){let a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},{monoBassHz:r=90}=a,n=G(e);for(let e of t.filters).05>Math.abs(e.gainDb)||I(n,e.type,e.frequency,e.q,e.gainDb);let l=W(n,{monoBassHz:r,lowMidWidth:1,midWidth:1,highWidth:1,referenceBandFactors:t.widthFactors,maximumWidth:1.12});return{buffer:n,stereo:l,plan:t}}(d,M,{monoBassHz:b.monoBassHz}),F=await eg(y.buffer,{...a,genre:o,genreSlug:g,targetLufs:M.targetLufs,dynamicsScale:M.dynamicsScale,referenceMode:!0,stereoAlreadyMatched:!0,onProgress:ep(c,"master",.5,.5)}),v=eo(y.buffer,{bitDepth:32,float:!0,dither:!1});return{mode:eu.REFERENCE_MASTER,originalBlob:e,referenceBlob:t,sourceBlob:e,sourceAudioBuffer:d,matchedBlob:v,matchedAudioBuffer:y.buffer,referencePlan:M,referenceStereo:y.stereo,stems:null,master:F,masteredBlob:F.wav,masteredWav:F.wav,hdWav:F.hdWav,mp3:F.mp3,masteredAudioBuffer:F.audioBuffer}}async function ey(e){var t;let a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=null!==(t=a.mode)&&void 0!==t?t:eu.MASTER;if(r===eu.MASTER)return eb(e,a);if(r===eu.MIX_MASTER)return ew(e,a);if(r===eu.REFERENCE_MASTER)return eM(e,a.referenceFile,a);throw Error("Unsupported processing mode: ".concat(r))}Object.freeze({[eu.MASTER]:"普通 Mastering",[eu.MIX_MASTER]:"Mix + Master",[eu.REFERENCE_MASTER]:"参考音乐 Mastering"})}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.