@vessel-dsp/runtime 0.15.1 → 0.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/reference-runtime.d.ts.map +1 -1
- package/dist/reference-runtime.js +64 -10
- package/dist/reference-runtime.js.map +1 -1
- package/dist/taper.d.ts +30 -1
- package/dist/taper.d.ts.map +1 -1
- package/dist/taper.js +42 -0
- package/dist/taper.js.map +1 -1
- package/dist/wasm/v2_dsp.cjs +1 -1
- package/dist/wasm/v2_dsp.wasm +0 -0
- package/dist/worklet/v2-audio-worklet.js +101 -45
- package/package.json +2 -2
package/dist/taper.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type { Program, TaperKind } from "@vessel-dsp/compiler";
|
|
1
|
+
import type { Program, TaperKind, TaperTable, TaperTablePoint } from "@vessel-dsp/compiler";
|
|
2
|
+
export type { TaperTable, TaperTablePoint };
|
|
2
3
|
/** The closed vocabulary as text, for refusals that name what a console could have read. */
|
|
3
4
|
export declare const IMPLEMENTED_TAPER_NAMES: readonly string[];
|
|
4
5
|
/**
|
|
@@ -23,6 +24,34 @@ export type UnrecognisedTaper = {
|
|
|
23
24
|
* the C++ loader reads.
|
|
24
25
|
*/
|
|
25
26
|
export declare function unrecognisedTapers(program: Program): readonly UnrecognisedTaper[];
|
|
27
|
+
/**
|
|
28
|
+
* A declared taper table evaluated at `position`, clamped to 0..1.
|
|
29
|
+
*
|
|
30
|
+
* **The engine convention is linear interpolation between bracketing points**, stated
|
|
31
|
+
* here so both consoles can be held to it: no smoothing, no curve fitting. The points
|
|
32
|
+
* themselves are the claims (measured or printed); the shape between them is not, so
|
|
33
|
+
* the cheapest interpolant that reproduces every point is the honest one.
|
|
34
|
+
*
|
|
35
|
+
* The scan takes the first segment whose end knot sits at or past `x`, so at an
|
|
36
|
+
* interior knot the left segment wins with `t = 1` -- and the C++ console in
|
|
37
|
+
* `src/cpp/include/v2/Taper.h` takes the same side of every knot in the same order,
|
|
38
|
+
* which is what makes the two bit-identical with only `+ - * /` (no libm, like the
|
|
39
|
+
* s-curve). Precondition: at least 2 points, strictly increasing positions from 0 to 1
|
|
40
|
+
* inclusive; the compiler refuses anything else and the loader drops anything shorter.
|
|
41
|
+
*/
|
|
42
|
+
export declare function taperTableFraction(points: readonly TaperTablePoint[], position: number): number;
|
|
43
|
+
/**
|
|
44
|
+
* The fraction of the track at `position` for a control that may declare a table.
|
|
45
|
+
*
|
|
46
|
+
* A declared table wins over the taper kind: the kind stays on the control as the
|
|
47
|
+
* maker's letter and the table is the measured law. With no table (absent, or shorter
|
|
48
|
+
* than 2 points, which the compiler never emits) this is exactly `taperFraction`,
|
|
49
|
+
* so a program without a table renders bit-identically to today's program.
|
|
50
|
+
*/
|
|
51
|
+
export declare function controlTaperFraction(control: {
|
|
52
|
+
readonly taper: TaperKind;
|
|
53
|
+
readonly taperTable?: TaperTable;
|
|
54
|
+
} | undefined, fallbackTaper: TaperKind, position: number): number;
|
|
26
55
|
/**
|
|
27
56
|
* The fraction of the track at `position`, clamped to 0..1.
|
|
28
57
|
*
|
package/dist/taper.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taper.d.ts","sourceRoot":"","sources":["../src/taper.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"taper.d.ts","sourceRoot":"","sources":["../src/taper.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5F,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,CAAC;AAiB5C,4FAA4F;AAC5F,eAAO,MAAM,uBAAuB,EAAE,SAAS,MAAM,EAAoC,CAAC;AAE1F;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,iBAAiB,EAAE,CA0BjF;AAsDD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,kBAAkB,CACjC,MAAM,EAAE,SAAS,eAAe,EAAE,EAClC,QAAQ,EAAE,MAAM,GACd,MAAM,CAaR;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CACnC,OAAO,EACJ;IAAE,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAA;CAAE,GAC/D,SAAS,EACZ,aAAa,EAAE,SAAS,EACxB,QAAQ,EAAE,MAAM,GACd,MAAM,CAMR;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAuBxE"}
|
package/dist/taper.js
CHANGED
|
@@ -115,6 +115,48 @@ function sCurveFraction(x) {
|
|
|
115
115
|
const h11 = t3 - t2;
|
|
116
116
|
return h00 * y0 + h10 * h * m0 + h01 * y1 + h11 * h * m1;
|
|
117
117
|
}
|
|
118
|
+
/**
|
|
119
|
+
* A declared taper table evaluated at `position`, clamped to 0..1.
|
|
120
|
+
*
|
|
121
|
+
* **The engine convention is linear interpolation between bracketing points**, stated
|
|
122
|
+
* here so both consoles can be held to it: no smoothing, no curve fitting. The points
|
|
123
|
+
* themselves are the claims (measured or printed); the shape between them is not, so
|
|
124
|
+
* the cheapest interpolant that reproduces every point is the honest one.
|
|
125
|
+
*
|
|
126
|
+
* The scan takes the first segment whose end knot sits at or past `x`, so at an
|
|
127
|
+
* interior knot the left segment wins with `t = 1` -- and the C++ console in
|
|
128
|
+
* `src/cpp/include/v2/Taper.h` takes the same side of every knot in the same order,
|
|
129
|
+
* which is what makes the two bit-identical with only `+ - * /` (no libm, like the
|
|
130
|
+
* s-curve). Precondition: at least 2 points, strictly increasing positions from 0 to 1
|
|
131
|
+
* inclusive; the compiler refuses anything else and the loader drops anything shorter.
|
|
132
|
+
*/
|
|
133
|
+
export function taperTableFraction(points, position) {
|
|
134
|
+
const x = Math.min(1, Math.max(0, position));
|
|
135
|
+
let index = 0;
|
|
136
|
+
while (index < points.length - 2 &&
|
|
137
|
+
x > points[index + 1].position) {
|
|
138
|
+
index += 1;
|
|
139
|
+
}
|
|
140
|
+
const lower = points[index];
|
|
141
|
+
const upper = points[index + 1];
|
|
142
|
+
const t = (x - lower.position) / (upper.position - lower.position);
|
|
143
|
+
return lower.fraction + t * (upper.fraction - lower.fraction);
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* The fraction of the track at `position` for a control that may declare a table.
|
|
147
|
+
*
|
|
148
|
+
* A declared table wins over the taper kind: the kind stays on the control as the
|
|
149
|
+
* maker's letter and the table is the measured law. With no table (absent, or shorter
|
|
150
|
+
* than 2 points, which the compiler never emits) this is exactly `taperFraction`,
|
|
151
|
+
* so a program without a table renders bit-identically to today's program.
|
|
152
|
+
*/
|
|
153
|
+
export function controlTaperFraction(control, fallbackTaper, position) {
|
|
154
|
+
const table = control?.taperTable;
|
|
155
|
+
if (table !== undefined && table.points.length >= 2) {
|
|
156
|
+
return taperTableFraction(table.points, position);
|
|
157
|
+
}
|
|
158
|
+
return taperFraction(control?.taper ?? fallbackTaper, position);
|
|
159
|
+
}
|
|
118
160
|
/**
|
|
119
161
|
* The fraction of the track at `position`, clamped to 0..1.
|
|
120
162
|
*
|
package/dist/taper.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taper.js","sourceRoot":"","sources":["../src/taper.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,EAAE;AACF,mFAAmF;AACnF,qFAAqF;AACrF,wFAAwF;AACxF,kFAAkF;AAClF,sFAAsF;AACtF,EAAE;AACF,0FAA0F;
|
|
1
|
+
{"version":3,"file":"taper.js","sourceRoot":"","sources":["../src/taper.ts"],"names":[],"mappings":"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"}
|
package/dist/wasm/v2_dsp.cjs
CHANGED
|
@@ -6,7 +6,7 @@ var createV2DspModule = (() => {
|
|
|
6
6
|
function(moduleArg = {}) {
|
|
7
7
|
var moduleRtn;
|
|
8
8
|
|
|
9
|
-
var Module=moduleArg;var readyPromiseResolve,readyPromiseReject;var readyPromise=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject});var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof WorkerGlobalScope!="undefined";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string"&&process.type!="renderer";if(ENVIRONMENT_IS_NODE){}var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var readAsync,readBinary;if(ENVIRONMENT_IS_NODE){var fs=require("fs");var nodePath=require("path");scriptDirectory=__dirname+"/";readBinary=filename=>{filename=isFileURI(filename)?new URL(filename):filename;var ret=fs.readFileSync(filename);return ret};readAsync=async(filename,binary=true)=>{filename=isFileURI(filename)?new URL(filename):filename;var ret=fs.readFileSync(filename,binary?undefined:"utf8");return ret};if(!Module["thisProgram"]&&process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}arguments_=process.argv.slice(2);quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptName){scriptDirectory=_scriptName}if(scriptDirectory.startsWith("blob:")){scriptDirectory=""}else{scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}{if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=async url=>{if(isFileURI(url)){return new Promise((resolve,reject)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){resolve(xhr.response);return}reject(xhr.status)};xhr.onerror=reject;xhr.send(null)})}var response=await fetch(url,{credentials:"same-origin"});if(response.ok){return response.arrayBuffer()}throw new Error(response.status+" : "+response.url)}}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];var wasmBinary=Module["wasmBinary"];var wasmMemory;var ABORT=false;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEAP8=new Int8Array(b);Module["HEAP16"]=HEAP16=new Int16Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b)}var __ATPRERUN__=[];var __ATINIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;Module["monitorRunDependencies"]?.(runDependencies)}function removeRunDependency(id){runDependencies--;Module["monitorRunDependencies"]?.(runDependencies);if(runDependencies==0){if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){Module["onAbort"]?.(what);what="Aborted("+what+")";err(what);ABORT=true;what+=". Build with -sASSERTIONS for more info.";if(runtimeInitialized){___trap()}var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var dataURIPrefix="data:application/octet-stream;base64,";var isDataURI=filename=>filename.startsWith(dataURIPrefix);var isFileURI=filename=>filename.startsWith("file://");function findWasmBinary(){var f="v2_dsp.wasm";if(!isDataURI(f)){return locateFile(f)}return f}var wasmBinaryFile;function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}async function getWasmBinary(binaryFile){if(!wasmBinary){try{var response=await readAsync(binaryFile);return new Uint8Array(response)}catch{}}return getBinarySync(binaryFile)}async function instantiateArrayBuffer(binaryFile,imports){try{var binary=await getWasmBinary(binaryFile);var instance=await WebAssembly.instantiate(binary,imports);return instance}catch(reason){err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)}}async function instantiateAsync(binary,binaryFile,imports){if(!binary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(binaryFile)&&!isFileURI(binaryFile)&&!ENVIRONMENT_IS_NODE&&typeof fetch=="function"){try{var response=fetch(binaryFile,{credentials:"same-origin"});var instantiationResult=await WebAssembly.instantiateStreaming(response,imports);return instantiationResult}catch(reason){err(`wasm streaming compile failed: ${reason}`);err("falling back to ArrayBuffer instantiation")}}return instantiateArrayBuffer(binaryFile,imports)}function getWasmImports(){return{a:wasmImports}}async function createWasm(){function receiveInstance(instance,module){wasmExports=instance.exports;wasmMemory=wasmExports["d"];updateMemoryViews();addOnInit(wasmExports["e"]);removeRunDependency("wasm-instantiate");return wasmExports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}var info=getWasmImports();if(Module["instantiateWasm"]){try{return Module["instantiateWasm"](info,receiveInstance)}catch(e){err(`Module.instantiateWasm callback failed with error: ${e}`);readyPromiseReject(e)}}wasmBinaryFile??=findWasmBinary();try{var result=await instantiateAsync(wasmBinary,wasmBinaryFile,info);receiveInstantiationResult(result);return result}catch(e){readyPromiseReject(e);return}}class ExitStatus{name="ExitStatus";constructor(status){this.message=`Program terminated with exit(${status})`;this.status=status}}var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};function getValue(ptr,type="i8"){if(type.endsWith("*"))type="*";switch(type){case"i1":return HEAP8[ptr];case"i8":return HEAP8[ptr];case"i16":return HEAP16[ptr>>1];case"i32":return HEAP32[ptr>>2];case"i64":abort("to do getValue(i64) use WASM_BIGINT");case"float":return HEAPF32[ptr>>2];case"double":return HEAPF64[ptr>>3];case"*":return HEAPU32[ptr>>2];default:abort(`invalid type for getValue: ${type}`)}}var noExitRuntime=Module["noExitRuntime"]||true;function setValue(ptr,value,type="i8"){if(type.endsWith("*"))type="*";switch(type){case"i1":HEAP8[ptr]=value;break;case"i8":HEAP8[ptr]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":abort("to do setValue(i64) use WASM_BIGINT");case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;case"*":HEAPU32[ptr>>2]=value;break;default:abort(`invalid type for setValue: ${type}`)}}var __abort_js=()=>abort("");var __emscripten_memcpy_js=(dest,src,num)=>HEAPU8.copyWithin(dest,src,src+num);var getHeapMax=()=>2147483648;var alignMemory=(size,alignment)=>Math.ceil(size/alignment)*alignment;var growMemory=size=>{var b=wasmMemory.buffer;var pages=(size-b.byteLength+65535)/65536|0;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){}};var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignMemory(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}return false};var getCFunc=ident=>{var func=Module["_"+ident];return func};var writeArrayToMemory=(array,buffer)=>{HEAP8.set(array,buffer)};var lengthBytesUTF8=str=>{var len=0;for(var i=0;i<str.length;++i){var c=str.charCodeAt(i);if(c<=127){len++}else if(c<=2047){len+=2}else if(c>=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx};var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite);var stackAlloc=sz=>__emscripten_stack_alloc(sz);var stringToUTF8OnStack=str=>{var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8(str,ret,size);return ret};var stackSave=()=>_emscripten_stack_get_current();var stackRestore=val=>__emscripten_stack_restore(val);var UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder:undefined;var UTF8ArrayToString=(heapOrArray,idx=0,maxBytesToRead=NaN)=>{var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx<endPtr){var u0=heapOrArray[idx++];if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heapOrArray[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heapOrArray[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heapOrArray[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}return str};var UTF8ToString=(ptr,maxBytesToRead)=>ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):"";var ccall=(ident,returnType,argTypes,args,opts)=>{var toC={string:str=>{var ret=0;if(str!==null&&str!==undefined&&str!==0){ret=stringToUTF8OnStack(str)}return ret},array:arr=>{var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType==="string"){return UTF8ToString(ret)}if(returnType==="boolean")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i<args.length;i++){var converter=toC[argTypes[i]];if(converter){if(stack===0)stack=stackSave();cArgs[i]=converter(args[i])}else{cArgs[i]=args[i]}}}var ret=func(...cArgs);function onDone(ret){if(stack!==0)stackRestore(stack);return convertReturnValue(ret)}ret=onDone(ret);return ret};var cwrap=(ident,returnType,argTypes,opts)=>{var numericArgs=!argTypes||argTypes.every(type=>type==="number"||type==="boolean");var numericRet=returnType!=="string";if(numericRet&&numericArgs&&!opts){return getCFunc(ident)}return(...args)=>ccall(ident,returnType,argTypes,args,opts)};var wasmImports={a:__abort_js,c:__emscripten_memcpy_js,b:_emscripten_resize_heap};var wasmExports;createWasm();var ___wasm_call_ctors=()=>(___wasm_call_ctors=wasmExports["e"])();var _v2_engine_create=Module["_v2_engine_create"]=()=>(_v2_engine_create=Module["_v2_engine_create"]=wasmExports["g"])();var _v2_engine_destroy=Module["_v2_engine_destroy"]=a0=>(_v2_engine_destroy=Module["_v2_engine_destroy"]=wasmExports["h"])(a0);var _v2_engine_load_json=Module["_v2_engine_load_json"]=(a0,a1)=>(_v2_engine_load_json=Module["_v2_engine_load_json"]=wasmExports["i"])(a0,a1);var _v2_engine_prepare=Module["_v2_engine_prepare"]=(a0,a1,a2,a3,a4)=>(_v2_engine_prepare=Module["_v2_engine_prepare"]=wasmExports["j"])(a0,a1,a2,a3,a4);var _v2_engine_get_host_sample_rate=Module["_v2_engine_get_host_sample_rate"]=a0=>(_v2_engine_get_host_sample_rate=Module["_v2_engine_get_host_sample_rate"]=wasmExports["k"])(a0);var _v2_engine_get_oversample_latency=Module["_v2_engine_get_oversample_latency"]=a0=>(_v2_engine_get_oversample_latency=Module["_v2_engine_get_oversample_latency"]=wasmExports["l"])(a0);var _v2_resample_stage_count=Module["_v2_resample_stage_count"]=()=>(_v2_resample_stage_count=Module["_v2_resample_stage_count"]=wasmExports["m"])();var _v2_resample_prototype_length=Module["_v2_resample_prototype_length"]=a0=>(_v2_resample_prototype_length=Module["_v2_resample_prototype_length"]=wasmExports["n"])(a0);var _v2_resample_prototype_tap=Module["_v2_resample_prototype_tap"]=(a0,a1)=>(_v2_resample_prototype_tap=Module["_v2_resample_prototype_tap"]=wasmExports["o"])(a0,a1);var _v2_testonly_resample_create=Module["_v2_testonly_resample_create"]=a0=>(_v2_testonly_resample_create=Module["_v2_testonly_resample_create"]=wasmExports["p"])(a0);var _v2_testonly_resample_reset=Module["_v2_testonly_resample_reset"]=a0=>(_v2_testonly_resample_reset=Module["_v2_testonly_resample_reset"]=wasmExports["q"])(a0);var _v2_testonly_resample_process=Module["_v2_testonly_resample_process"]=(a0,a1)=>(_v2_testonly_resample_process=Module["_v2_testonly_resample_process"]=wasmExports["r"])(a0,a1);var _v2_testonly_resample_destroy=Module["_v2_testonly_resample_destroy"]=a0=>(_v2_testonly_resample_destroy=Module["_v2_testonly_resample_destroy"]=wasmExports["s"])(a0);var _v2_testonly_taper_fraction=Module["_v2_testonly_taper_fraction"]=(a0,a1)=>(_v2_testonly_taper_fraction=Module["_v2_testonly_taper_fraction"]=wasmExports["t"])(a0,a1);var _v2_engine_reset=Module["_v2_engine_reset"]=a0=>(_v2_engine_reset=Module["_v2_engine_reset"]=wasmExports["u"])(a0);var _v2_engine_set_control=Module["_v2_engine_set_control"]=(a0,a1,a2)=>(_v2_engine_set_control=Module["_v2_engine_set_control"]=wasmExports["v"])(a0,a1,a2);var _v2_engine_get_control=Module["_v2_engine_get_control"]=(a0,a1)=>(_v2_engine_get_control=Module["_v2_engine_get_control"]=wasmExports["w"])(a0,a1);var _v2_engine_set_supply=Module["_v2_engine_set_supply"]=(a0,a1,a2,a3,a4)=>(_v2_engine_set_supply=Module["_v2_engine_set_supply"]=wasmExports["x"])(a0,a1,a2,a3,a4);var _v2_engine_process_sample=Module["_v2_engine_process_sample"]=(a0,a1)=>(_v2_engine_process_sample=Module["_v2_engine_process_sample"]=wasmExports["y"])(a0,a1);var _v2_engine_process_block=Module["_v2_engine_process_block"]=(a0,a1,a2,a3)=>(_v2_engine_process_block=Module["_v2_engine_process_block"]=wasmExports["z"])(a0,a1,a2,a3);var _v2_engine_get_input_buffer=Module["_v2_engine_get_input_buffer"]=(a0,a1)=>(_v2_engine_get_input_buffer=Module["_v2_engine_get_input_buffer"]=wasmExports["A"])(a0,a1);var _v2_engine_get_output_buffer=Module["_v2_engine_get_output_buffer"]=(a0,a1)=>(_v2_engine_get_output_buffer=Module["_v2_engine_get_output_buffer"]=wasmExports["B"])(a0,a1);var _v2_engine_process_internal=Module["_v2_engine_process_internal"]=(a0,a1)=>(_v2_engine_process_internal=Module["_v2_engine_process_internal"]=wasmExports["C"])(a0,a1);var _v2_engine_get_last_iteration_count=Module["_v2_engine_get_last_iteration_count"]=a0=>(_v2_engine_get_last_iteration_count=Module["_v2_engine_get_last_iteration_count"]=wasmExports["D"])(a0);var _v2_engine_get_last_converged=Module["_v2_engine_get_last_converged"]=a0=>(_v2_engine_get_last_converged=Module["_v2_engine_get_last_converged"]=wasmExports["E"])(a0);var _v2_engine_get_max_iterations=Module["_v2_engine_get_max_iterations"]=a0=>(_v2_engine_get_max_iterations=Module["_v2_engine_get_max_iterations"]=wasmExports["F"])(a0);var _v2_engine_get_operating_point=Module["_v2_engine_get_operating_point"]=(a0,a1,a2)=>(_v2_engine_get_operating_point=Module["_v2_engine_get_operating_point"]=wasmExports["G"])(a0,a1,a2);var _v2_engine_get_state=Module["_v2_engine_get_state"]=(a0,a1,a2)=>(_v2_engine_get_state=Module["_v2_engine_get_state"]=wasmExports["H"])(a0,a1,a2);var _v2_engine_get_last_error=Module["_v2_engine_get_last_error"]=a0=>(_v2_engine_get_last_error=Module["_v2_engine_get_last_error"]=wasmExports["I"])(a0);var _v2_engine_get_schedule_solves=Module["_v2_engine_get_schedule_solves"]=a0=>(_v2_engine_get_schedule_solves=Module["_v2_engine_get_schedule_solves"]=wasmExports["J"])(a0);var _v2_engine_get_schedule_fallbacks=Module["_v2_engine_get_schedule_fallbacks"]=a0=>(_v2_engine_get_schedule_fallbacks=Module["_v2_engine_get_schedule_fallbacks"]=wasmExports["K"])(a0);var _v2_engine_get_predictor_seeds=Module["_v2_engine_get_predictor_seeds"]=a0=>(_v2_engine_get_predictor_seeds=Module["_v2_engine_get_predictor_seeds"]=wasmExports["L"])(a0);var _v2_engine_get_one_iteration_solves=Module["_v2_engine_get_one_iteration_solves"]=a0=>(_v2_engine_get_one_iteration_solves=Module["_v2_engine_get_one_iteration_solves"]=wasmExports["M"])(a0);var _v2_engine_get_total_iterations=Module["_v2_engine_get_total_iterations"]=a0=>(_v2_engine_get_total_iterations=Module["_v2_engine_get_total_iterations"]=wasmExports["N"])(a0);var _v2_engine_get_predictor_order=Module["_v2_engine_get_predictor_order"]=(a0,a1)=>(_v2_engine_get_predictor_order=Module["_v2_engine_get_predictor_order"]=wasmExports["O"])(a0,a1);var _v2_engine_get_kernel_solves=Module["_v2_engine_get_kernel_solves"]=a0=>(_v2_engine_get_kernel_solves=Module["_v2_engine_get_kernel_solves"]=wasmExports["P"])(a0);var _v2_engine_get_repivoted_schedule_blocks=Module["_v2_engine_get_repivoted_schedule_blocks"]=a0=>(_v2_engine_get_repivoted_schedule_blocks=Module["_v2_engine_get_repivoted_schedule_blocks"]=wasmExports["Q"])(a0);var _v2_engine_get_abandoned_schedule_blocks=Module["_v2_engine_get_abandoned_schedule_blocks"]=a0=>(_v2_engine_get_abandoned_schedule_blocks=Module["_v2_engine_get_abandoned_schedule_blocks"]=wasmExports["R"])(a0);var _v2_engine_get_dropped_schedule_blocks=Module["_v2_engine_get_dropped_schedule_blocks"]=a0=>(_v2_engine_get_dropped_schedule_blocks=Module["_v2_engine_get_dropped_schedule_blocks"]=wasmExports["S"])(a0);var _malloc=Module["_malloc"]=a0=>(_malloc=Module["_malloc"]=wasmExports["T"])(a0);var _free=Module["_free"]=a0=>(_free=Module["_free"]=wasmExports["U"])(a0);var ___trap=()=>(___trap=wasmExports["V"])();var __emscripten_stack_restore=a0=>(__emscripten_stack_restore=wasmExports["W"])(a0);var __emscripten_stack_alloc=a0=>(__emscripten_stack_alloc=wasmExports["X"])(a0);var _emscripten_stack_get_current=()=>(_emscripten_stack_get_current=wasmExports["Y"])();Module["ccall"]=ccall;Module["cwrap"]=cwrap;Module["setValue"]=setValue;Module["getValue"]=getValue;Module["UTF8ToString"]=UTF8ToString;Module["stringToUTF8"]=stringToUTF8;Module["lengthBytesUTF8"]=lengthBytesUTF8;var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(){if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();readyPromiseResolve(Module);Module["onRuntimeInitialized"]?.();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(()=>{setTimeout(()=>Module["setStatus"](""),1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}run();moduleRtn=readyPromise;
|
|
9
|
+
var Module=moduleArg;var readyPromiseResolve,readyPromiseReject;var readyPromise=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject});var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof WorkerGlobalScope!="undefined";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string"&&process.type!="renderer";if(ENVIRONMENT_IS_NODE){}var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var readAsync,readBinary;if(ENVIRONMENT_IS_NODE){var fs=require("fs");var nodePath=require("path");scriptDirectory=__dirname+"/";readBinary=filename=>{filename=isFileURI(filename)?new URL(filename):filename;var ret=fs.readFileSync(filename);return ret};readAsync=async(filename,binary=true)=>{filename=isFileURI(filename)?new URL(filename):filename;var ret=fs.readFileSync(filename,binary?undefined:"utf8");return ret};if(!Module["thisProgram"]&&process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}arguments_=process.argv.slice(2);quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptName){scriptDirectory=_scriptName}if(scriptDirectory.startsWith("blob:")){scriptDirectory=""}else{scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}{if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=async url=>{if(isFileURI(url)){return new Promise((resolve,reject)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){resolve(xhr.response);return}reject(xhr.status)};xhr.onerror=reject;xhr.send(null)})}var response=await fetch(url,{credentials:"same-origin"});if(response.ok){return response.arrayBuffer()}throw new Error(response.status+" : "+response.url)}}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];var wasmBinary=Module["wasmBinary"];var wasmMemory;var ABORT=false;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEAP8=new Int8Array(b);Module["HEAP16"]=HEAP16=new Int16Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b)}var __ATPRERUN__=[];var __ATINIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;Module["monitorRunDependencies"]?.(runDependencies)}function removeRunDependency(id){runDependencies--;Module["monitorRunDependencies"]?.(runDependencies);if(runDependencies==0){if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){Module["onAbort"]?.(what);what="Aborted("+what+")";err(what);ABORT=true;what+=". Build with -sASSERTIONS for more info.";if(runtimeInitialized){___trap()}var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var dataURIPrefix="data:application/octet-stream;base64,";var isDataURI=filename=>filename.startsWith(dataURIPrefix);var isFileURI=filename=>filename.startsWith("file://");function findWasmBinary(){var f="v2_dsp.wasm";if(!isDataURI(f)){return locateFile(f)}return f}var wasmBinaryFile;function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}async function getWasmBinary(binaryFile){if(!wasmBinary){try{var response=await readAsync(binaryFile);return new Uint8Array(response)}catch{}}return getBinarySync(binaryFile)}async function instantiateArrayBuffer(binaryFile,imports){try{var binary=await getWasmBinary(binaryFile);var instance=await WebAssembly.instantiate(binary,imports);return instance}catch(reason){err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)}}async function instantiateAsync(binary,binaryFile,imports){if(!binary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(binaryFile)&&!isFileURI(binaryFile)&&!ENVIRONMENT_IS_NODE&&typeof fetch=="function"){try{var response=fetch(binaryFile,{credentials:"same-origin"});var instantiationResult=await WebAssembly.instantiateStreaming(response,imports);return instantiationResult}catch(reason){err(`wasm streaming compile failed: ${reason}`);err("falling back to ArrayBuffer instantiation")}}return instantiateArrayBuffer(binaryFile,imports)}function getWasmImports(){return{a:wasmImports}}async function createWasm(){function receiveInstance(instance,module){wasmExports=instance.exports;wasmMemory=wasmExports["d"];updateMemoryViews();addOnInit(wasmExports["e"]);removeRunDependency("wasm-instantiate");return wasmExports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}var info=getWasmImports();if(Module["instantiateWasm"]){try{return Module["instantiateWasm"](info,receiveInstance)}catch(e){err(`Module.instantiateWasm callback failed with error: ${e}`);readyPromiseReject(e)}}wasmBinaryFile??=findWasmBinary();try{var result=await instantiateAsync(wasmBinary,wasmBinaryFile,info);receiveInstantiationResult(result);return result}catch(e){readyPromiseReject(e);return}}class ExitStatus{name="ExitStatus";constructor(status){this.message=`Program terminated with exit(${status})`;this.status=status}}var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};function getValue(ptr,type="i8"){if(type.endsWith("*"))type="*";switch(type){case"i1":return HEAP8[ptr];case"i8":return HEAP8[ptr];case"i16":return HEAP16[ptr>>1];case"i32":return HEAP32[ptr>>2];case"i64":abort("to do getValue(i64) use WASM_BIGINT");case"float":return HEAPF32[ptr>>2];case"double":return HEAPF64[ptr>>3];case"*":return HEAPU32[ptr>>2];default:abort(`invalid type for getValue: ${type}`)}}var noExitRuntime=Module["noExitRuntime"]||true;function setValue(ptr,value,type="i8"){if(type.endsWith("*"))type="*";switch(type){case"i1":HEAP8[ptr]=value;break;case"i8":HEAP8[ptr]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":abort("to do setValue(i64) use WASM_BIGINT");case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;case"*":HEAPU32[ptr>>2]=value;break;default:abort(`invalid type for setValue: ${type}`)}}var __abort_js=()=>abort("");var __emscripten_memcpy_js=(dest,src,num)=>HEAPU8.copyWithin(dest,src,src+num);var getHeapMax=()=>2147483648;var alignMemory=(size,alignment)=>Math.ceil(size/alignment)*alignment;var growMemory=size=>{var b=wasmMemory.buffer;var pages=(size-b.byteLength+65535)/65536|0;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){}};var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignMemory(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}return false};var getCFunc=ident=>{var func=Module["_"+ident];return func};var writeArrayToMemory=(array,buffer)=>{HEAP8.set(array,buffer)};var lengthBytesUTF8=str=>{var len=0;for(var i=0;i<str.length;++i){var c=str.charCodeAt(i);if(c<=127){len++}else if(c<=2047){len+=2}else if(c>=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx};var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite);var stackAlloc=sz=>__emscripten_stack_alloc(sz);var stringToUTF8OnStack=str=>{var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8(str,ret,size);return ret};var stackSave=()=>_emscripten_stack_get_current();var stackRestore=val=>__emscripten_stack_restore(val);var UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder:undefined;var UTF8ArrayToString=(heapOrArray,idx=0,maxBytesToRead=NaN)=>{var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx<endPtr){var u0=heapOrArray[idx++];if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heapOrArray[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heapOrArray[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heapOrArray[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}return str};var UTF8ToString=(ptr,maxBytesToRead)=>ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):"";var ccall=(ident,returnType,argTypes,args,opts)=>{var toC={string:str=>{var ret=0;if(str!==null&&str!==undefined&&str!==0){ret=stringToUTF8OnStack(str)}return ret},array:arr=>{var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType==="string"){return UTF8ToString(ret)}if(returnType==="boolean")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i<args.length;i++){var converter=toC[argTypes[i]];if(converter){if(stack===0)stack=stackSave();cArgs[i]=converter(args[i])}else{cArgs[i]=args[i]}}}var ret=func(...cArgs);function onDone(ret){if(stack!==0)stackRestore(stack);return convertReturnValue(ret)}ret=onDone(ret);return ret};var cwrap=(ident,returnType,argTypes,opts)=>{var numericArgs=!argTypes||argTypes.every(type=>type==="number"||type==="boolean");var numericRet=returnType!=="string";if(numericRet&&numericArgs&&!opts){return getCFunc(ident)}return(...args)=>ccall(ident,returnType,argTypes,args,opts)};var wasmImports={a:__abort_js,c:__emscripten_memcpy_js,b:_emscripten_resize_heap};var wasmExports;createWasm();var ___wasm_call_ctors=()=>(___wasm_call_ctors=wasmExports["e"])();var _v2_engine_create=Module["_v2_engine_create"]=()=>(_v2_engine_create=Module["_v2_engine_create"]=wasmExports["g"])();var _v2_engine_destroy=Module["_v2_engine_destroy"]=a0=>(_v2_engine_destroy=Module["_v2_engine_destroy"]=wasmExports["h"])(a0);var _v2_engine_load_json=Module["_v2_engine_load_json"]=(a0,a1)=>(_v2_engine_load_json=Module["_v2_engine_load_json"]=wasmExports["i"])(a0,a1);var _v2_engine_prepare=Module["_v2_engine_prepare"]=(a0,a1,a2,a3,a4)=>(_v2_engine_prepare=Module["_v2_engine_prepare"]=wasmExports["j"])(a0,a1,a2,a3,a4);var _v2_engine_get_host_sample_rate=Module["_v2_engine_get_host_sample_rate"]=a0=>(_v2_engine_get_host_sample_rate=Module["_v2_engine_get_host_sample_rate"]=wasmExports["k"])(a0);var _v2_engine_get_oversample_latency=Module["_v2_engine_get_oversample_latency"]=a0=>(_v2_engine_get_oversample_latency=Module["_v2_engine_get_oversample_latency"]=wasmExports["l"])(a0);var _v2_resample_stage_count=Module["_v2_resample_stage_count"]=()=>(_v2_resample_stage_count=Module["_v2_resample_stage_count"]=wasmExports["m"])();var _v2_resample_prototype_length=Module["_v2_resample_prototype_length"]=a0=>(_v2_resample_prototype_length=Module["_v2_resample_prototype_length"]=wasmExports["n"])(a0);var _v2_resample_prototype_tap=Module["_v2_resample_prototype_tap"]=(a0,a1)=>(_v2_resample_prototype_tap=Module["_v2_resample_prototype_tap"]=wasmExports["o"])(a0,a1);var _v2_testonly_resample_create=Module["_v2_testonly_resample_create"]=a0=>(_v2_testonly_resample_create=Module["_v2_testonly_resample_create"]=wasmExports["p"])(a0);var _v2_testonly_resample_reset=Module["_v2_testonly_resample_reset"]=a0=>(_v2_testonly_resample_reset=Module["_v2_testonly_resample_reset"]=wasmExports["q"])(a0);var _v2_testonly_resample_process=Module["_v2_testonly_resample_process"]=(a0,a1)=>(_v2_testonly_resample_process=Module["_v2_testonly_resample_process"]=wasmExports["r"])(a0,a1);var _v2_testonly_resample_destroy=Module["_v2_testonly_resample_destroy"]=a0=>(_v2_testonly_resample_destroy=Module["_v2_testonly_resample_destroy"]=wasmExports["s"])(a0);var _v2_testonly_taper_fraction=Module["_v2_testonly_taper_fraction"]=(a0,a1)=>(_v2_testonly_taper_fraction=Module["_v2_testonly_taper_fraction"]=wasmExports["t"])(a0,a1);var _v2_testonly_taper_table_fraction=Module["_v2_testonly_taper_table_fraction"]=(a0,a1,a2,a3)=>(_v2_testonly_taper_table_fraction=Module["_v2_testonly_taper_table_fraction"]=wasmExports["u"])(a0,a1,a2,a3);var _v2_engine_reset=Module["_v2_engine_reset"]=a0=>(_v2_engine_reset=Module["_v2_engine_reset"]=wasmExports["v"])(a0);var _v2_engine_set_control=Module["_v2_engine_set_control"]=(a0,a1,a2)=>(_v2_engine_set_control=Module["_v2_engine_set_control"]=wasmExports["w"])(a0,a1,a2);var _v2_engine_get_control=Module["_v2_engine_get_control"]=(a0,a1)=>(_v2_engine_get_control=Module["_v2_engine_get_control"]=wasmExports["x"])(a0,a1);var _v2_engine_set_supply=Module["_v2_engine_set_supply"]=(a0,a1,a2,a3,a4)=>(_v2_engine_set_supply=Module["_v2_engine_set_supply"]=wasmExports["y"])(a0,a1,a2,a3,a4);var _v2_engine_process_sample=Module["_v2_engine_process_sample"]=(a0,a1)=>(_v2_engine_process_sample=Module["_v2_engine_process_sample"]=wasmExports["z"])(a0,a1);var _v2_engine_process_block=Module["_v2_engine_process_block"]=(a0,a1,a2,a3)=>(_v2_engine_process_block=Module["_v2_engine_process_block"]=wasmExports["A"])(a0,a1,a2,a3);var _v2_engine_get_input_buffer=Module["_v2_engine_get_input_buffer"]=(a0,a1)=>(_v2_engine_get_input_buffer=Module["_v2_engine_get_input_buffer"]=wasmExports["B"])(a0,a1);var _v2_engine_get_output_buffer=Module["_v2_engine_get_output_buffer"]=(a0,a1)=>(_v2_engine_get_output_buffer=Module["_v2_engine_get_output_buffer"]=wasmExports["C"])(a0,a1);var _v2_engine_process_internal=Module["_v2_engine_process_internal"]=(a0,a1)=>(_v2_engine_process_internal=Module["_v2_engine_process_internal"]=wasmExports["D"])(a0,a1);var _v2_engine_get_last_iteration_count=Module["_v2_engine_get_last_iteration_count"]=a0=>(_v2_engine_get_last_iteration_count=Module["_v2_engine_get_last_iteration_count"]=wasmExports["E"])(a0);var _v2_engine_get_last_converged=Module["_v2_engine_get_last_converged"]=a0=>(_v2_engine_get_last_converged=Module["_v2_engine_get_last_converged"]=wasmExports["F"])(a0);var _v2_engine_get_max_iterations=Module["_v2_engine_get_max_iterations"]=a0=>(_v2_engine_get_max_iterations=Module["_v2_engine_get_max_iterations"]=wasmExports["G"])(a0);var _v2_engine_get_operating_point=Module["_v2_engine_get_operating_point"]=(a0,a1,a2)=>(_v2_engine_get_operating_point=Module["_v2_engine_get_operating_point"]=wasmExports["H"])(a0,a1,a2);var _v2_engine_get_state=Module["_v2_engine_get_state"]=(a0,a1,a2)=>(_v2_engine_get_state=Module["_v2_engine_get_state"]=wasmExports["I"])(a0,a1,a2);var _v2_engine_get_last_error=Module["_v2_engine_get_last_error"]=a0=>(_v2_engine_get_last_error=Module["_v2_engine_get_last_error"]=wasmExports["J"])(a0);var _v2_engine_get_schedule_solves=Module["_v2_engine_get_schedule_solves"]=a0=>(_v2_engine_get_schedule_solves=Module["_v2_engine_get_schedule_solves"]=wasmExports["K"])(a0);var _v2_engine_get_schedule_fallbacks=Module["_v2_engine_get_schedule_fallbacks"]=a0=>(_v2_engine_get_schedule_fallbacks=Module["_v2_engine_get_schedule_fallbacks"]=wasmExports["L"])(a0);var _v2_engine_get_predictor_seeds=Module["_v2_engine_get_predictor_seeds"]=a0=>(_v2_engine_get_predictor_seeds=Module["_v2_engine_get_predictor_seeds"]=wasmExports["M"])(a0);var _v2_engine_get_one_iteration_solves=Module["_v2_engine_get_one_iteration_solves"]=a0=>(_v2_engine_get_one_iteration_solves=Module["_v2_engine_get_one_iteration_solves"]=wasmExports["N"])(a0);var _v2_engine_get_total_iterations=Module["_v2_engine_get_total_iterations"]=a0=>(_v2_engine_get_total_iterations=Module["_v2_engine_get_total_iterations"]=wasmExports["O"])(a0);var _v2_engine_get_predictor_order=Module["_v2_engine_get_predictor_order"]=(a0,a1)=>(_v2_engine_get_predictor_order=Module["_v2_engine_get_predictor_order"]=wasmExports["P"])(a0,a1);var _v2_engine_get_kernel_solves=Module["_v2_engine_get_kernel_solves"]=a0=>(_v2_engine_get_kernel_solves=Module["_v2_engine_get_kernel_solves"]=wasmExports["Q"])(a0);var _v2_engine_get_repivoted_schedule_blocks=Module["_v2_engine_get_repivoted_schedule_blocks"]=a0=>(_v2_engine_get_repivoted_schedule_blocks=Module["_v2_engine_get_repivoted_schedule_blocks"]=wasmExports["R"])(a0);var _v2_engine_get_abandoned_schedule_blocks=Module["_v2_engine_get_abandoned_schedule_blocks"]=a0=>(_v2_engine_get_abandoned_schedule_blocks=Module["_v2_engine_get_abandoned_schedule_blocks"]=wasmExports["S"])(a0);var _v2_engine_get_dropped_schedule_blocks=Module["_v2_engine_get_dropped_schedule_blocks"]=a0=>(_v2_engine_get_dropped_schedule_blocks=Module["_v2_engine_get_dropped_schedule_blocks"]=wasmExports["T"])(a0);var _malloc=Module["_malloc"]=a0=>(_malloc=Module["_malloc"]=wasmExports["U"])(a0);var _free=Module["_free"]=a0=>(_free=Module["_free"]=wasmExports["V"])(a0);var ___trap=()=>(___trap=wasmExports["W"])();var __emscripten_stack_restore=a0=>(__emscripten_stack_restore=wasmExports["X"])(a0);var __emscripten_stack_alloc=a0=>(__emscripten_stack_alloc=wasmExports["Y"])(a0);var _emscripten_stack_get_current=()=>(_emscripten_stack_get_current=wasmExports["Z"])();Module["ccall"]=ccall;Module["cwrap"]=cwrap;Module["setValue"]=setValue;Module["getValue"]=getValue;Module["UTF8ToString"]=UTF8ToString;Module["stringToUTF8"]=stringToUTF8;Module["lengthBytesUTF8"]=lengthBytesUTF8;var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(){if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();readyPromiseResolve(Module);Module["onRuntimeInitialized"]?.();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(()=>{setTimeout(()=>Module["setStatus"](""),1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}run();moduleRtn=readyPromise;
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
return moduleRtn;
|
package/dist/wasm/v2_dsp.wasm
CHANGED
|
Binary file
|
|
@@ -586,37 +586,38 @@ var require_v2_dsp = __commonJS({
|
|
|
586
586
|
var _v2_testonly_resample_process = Module["_v2_testonly_resample_process"] = (a0, a1) => (_v2_testonly_resample_process = Module["_v2_testonly_resample_process"] = wasmExports["r"])(a0, a1);
|
|
587
587
|
var _v2_testonly_resample_destroy = Module["_v2_testonly_resample_destroy"] = (a0) => (_v2_testonly_resample_destroy = Module["_v2_testonly_resample_destroy"] = wasmExports["s"])(a0);
|
|
588
588
|
var _v2_testonly_taper_fraction = Module["_v2_testonly_taper_fraction"] = (a0, a1) => (_v2_testonly_taper_fraction = Module["_v2_testonly_taper_fraction"] = wasmExports["t"])(a0, a1);
|
|
589
|
-
var
|
|
590
|
-
var
|
|
591
|
-
var
|
|
592
|
-
var
|
|
593
|
-
var
|
|
594
|
-
var
|
|
595
|
-
var
|
|
596
|
-
var
|
|
597
|
-
var
|
|
598
|
-
var
|
|
599
|
-
var
|
|
600
|
-
var
|
|
601
|
-
var
|
|
602
|
-
var
|
|
603
|
-
var
|
|
604
|
-
var
|
|
605
|
-
var
|
|
606
|
-
var
|
|
607
|
-
var
|
|
608
|
-
var
|
|
609
|
-
var
|
|
610
|
-
var
|
|
611
|
-
var
|
|
612
|
-
var
|
|
613
|
-
var
|
|
614
|
-
var
|
|
615
|
-
var
|
|
616
|
-
var
|
|
617
|
-
var
|
|
618
|
-
var
|
|
619
|
-
var
|
|
589
|
+
var _v2_testonly_taper_table_fraction = Module["_v2_testonly_taper_table_fraction"] = (a0, a1, a2, a3) => (_v2_testonly_taper_table_fraction = Module["_v2_testonly_taper_table_fraction"] = wasmExports["u"])(a0, a1, a2, a3);
|
|
590
|
+
var _v2_engine_reset = Module["_v2_engine_reset"] = (a0) => (_v2_engine_reset = Module["_v2_engine_reset"] = wasmExports["v"])(a0);
|
|
591
|
+
var _v2_engine_set_control = Module["_v2_engine_set_control"] = (a0, a1, a2) => (_v2_engine_set_control = Module["_v2_engine_set_control"] = wasmExports["w"])(a0, a1, a2);
|
|
592
|
+
var _v2_engine_get_control = Module["_v2_engine_get_control"] = (a0, a1) => (_v2_engine_get_control = Module["_v2_engine_get_control"] = wasmExports["x"])(a0, a1);
|
|
593
|
+
var _v2_engine_set_supply = Module["_v2_engine_set_supply"] = (a0, a1, a2, a3, a4) => (_v2_engine_set_supply = Module["_v2_engine_set_supply"] = wasmExports["y"])(a0, a1, a2, a3, a4);
|
|
594
|
+
var _v2_engine_process_sample = Module["_v2_engine_process_sample"] = (a0, a1) => (_v2_engine_process_sample = Module["_v2_engine_process_sample"] = wasmExports["z"])(a0, a1);
|
|
595
|
+
var _v2_engine_process_block = Module["_v2_engine_process_block"] = (a0, a1, a2, a3) => (_v2_engine_process_block = Module["_v2_engine_process_block"] = wasmExports["A"])(a0, a1, a2, a3);
|
|
596
|
+
var _v2_engine_get_input_buffer = Module["_v2_engine_get_input_buffer"] = (a0, a1) => (_v2_engine_get_input_buffer = Module["_v2_engine_get_input_buffer"] = wasmExports["B"])(a0, a1);
|
|
597
|
+
var _v2_engine_get_output_buffer = Module["_v2_engine_get_output_buffer"] = (a0, a1) => (_v2_engine_get_output_buffer = Module["_v2_engine_get_output_buffer"] = wasmExports["C"])(a0, a1);
|
|
598
|
+
var _v2_engine_process_internal = Module["_v2_engine_process_internal"] = (a0, a1) => (_v2_engine_process_internal = Module["_v2_engine_process_internal"] = wasmExports["D"])(a0, a1);
|
|
599
|
+
var _v2_engine_get_last_iteration_count = Module["_v2_engine_get_last_iteration_count"] = (a0) => (_v2_engine_get_last_iteration_count = Module["_v2_engine_get_last_iteration_count"] = wasmExports["E"])(a0);
|
|
600
|
+
var _v2_engine_get_last_converged = Module["_v2_engine_get_last_converged"] = (a0) => (_v2_engine_get_last_converged = Module["_v2_engine_get_last_converged"] = wasmExports["F"])(a0);
|
|
601
|
+
var _v2_engine_get_max_iterations = Module["_v2_engine_get_max_iterations"] = (a0) => (_v2_engine_get_max_iterations = Module["_v2_engine_get_max_iterations"] = wasmExports["G"])(a0);
|
|
602
|
+
var _v2_engine_get_operating_point = Module["_v2_engine_get_operating_point"] = (a0, a1, a2) => (_v2_engine_get_operating_point = Module["_v2_engine_get_operating_point"] = wasmExports["H"])(a0, a1, a2);
|
|
603
|
+
var _v2_engine_get_state = Module["_v2_engine_get_state"] = (a0, a1, a2) => (_v2_engine_get_state = Module["_v2_engine_get_state"] = wasmExports["I"])(a0, a1, a2);
|
|
604
|
+
var _v2_engine_get_last_error = Module["_v2_engine_get_last_error"] = (a0) => (_v2_engine_get_last_error = Module["_v2_engine_get_last_error"] = wasmExports["J"])(a0);
|
|
605
|
+
var _v2_engine_get_schedule_solves = Module["_v2_engine_get_schedule_solves"] = (a0) => (_v2_engine_get_schedule_solves = Module["_v2_engine_get_schedule_solves"] = wasmExports["K"])(a0);
|
|
606
|
+
var _v2_engine_get_schedule_fallbacks = Module["_v2_engine_get_schedule_fallbacks"] = (a0) => (_v2_engine_get_schedule_fallbacks = Module["_v2_engine_get_schedule_fallbacks"] = wasmExports["L"])(a0);
|
|
607
|
+
var _v2_engine_get_predictor_seeds = Module["_v2_engine_get_predictor_seeds"] = (a0) => (_v2_engine_get_predictor_seeds = Module["_v2_engine_get_predictor_seeds"] = wasmExports["M"])(a0);
|
|
608
|
+
var _v2_engine_get_one_iteration_solves = Module["_v2_engine_get_one_iteration_solves"] = (a0) => (_v2_engine_get_one_iteration_solves = Module["_v2_engine_get_one_iteration_solves"] = wasmExports["N"])(a0);
|
|
609
|
+
var _v2_engine_get_total_iterations = Module["_v2_engine_get_total_iterations"] = (a0) => (_v2_engine_get_total_iterations = Module["_v2_engine_get_total_iterations"] = wasmExports["O"])(a0);
|
|
610
|
+
var _v2_engine_get_predictor_order = Module["_v2_engine_get_predictor_order"] = (a0, a1) => (_v2_engine_get_predictor_order = Module["_v2_engine_get_predictor_order"] = wasmExports["P"])(a0, a1);
|
|
611
|
+
var _v2_engine_get_kernel_solves = Module["_v2_engine_get_kernel_solves"] = (a0) => (_v2_engine_get_kernel_solves = Module["_v2_engine_get_kernel_solves"] = wasmExports["Q"])(a0);
|
|
612
|
+
var _v2_engine_get_repivoted_schedule_blocks = Module["_v2_engine_get_repivoted_schedule_blocks"] = (a0) => (_v2_engine_get_repivoted_schedule_blocks = Module["_v2_engine_get_repivoted_schedule_blocks"] = wasmExports["R"])(a0);
|
|
613
|
+
var _v2_engine_get_abandoned_schedule_blocks = Module["_v2_engine_get_abandoned_schedule_blocks"] = (a0) => (_v2_engine_get_abandoned_schedule_blocks = Module["_v2_engine_get_abandoned_schedule_blocks"] = wasmExports["S"])(a0);
|
|
614
|
+
var _v2_engine_get_dropped_schedule_blocks = Module["_v2_engine_get_dropped_schedule_blocks"] = (a0) => (_v2_engine_get_dropped_schedule_blocks = Module["_v2_engine_get_dropped_schedule_blocks"] = wasmExports["T"])(a0);
|
|
615
|
+
var _malloc = Module["_malloc"] = (a0) => (_malloc = Module["_malloc"] = wasmExports["U"])(a0);
|
|
616
|
+
var _free = Module["_free"] = (a0) => (_free = Module["_free"] = wasmExports["V"])(a0);
|
|
617
|
+
var ___trap = () => (___trap = wasmExports["W"])();
|
|
618
|
+
var __emscripten_stack_restore = (a0) => (__emscripten_stack_restore = wasmExports["X"])(a0);
|
|
619
|
+
var __emscripten_stack_alloc = (a0) => (__emscripten_stack_alloc = wasmExports["Y"])(a0);
|
|
620
|
+
var _emscripten_stack_get_current = () => (_emscripten_stack_get_current = wasmExports["Z"])();
|
|
620
621
|
Module["ccall"] = ccall;
|
|
621
622
|
Module["cwrap"] = cwrap;
|
|
622
623
|
Module["setValue"] = setValue;
|
|
@@ -1220,6 +1221,24 @@ function sCurveFraction(x) {
|
|
|
1220
1221
|
const h11 = t3 - t2;
|
|
1221
1222
|
return h00 * y0 + h10 * h * m0 + h01 * y1 + h11 * h * m1;
|
|
1222
1223
|
}
|
|
1224
|
+
function taperTableFraction(points, position) {
|
|
1225
|
+
const x = Math.min(1, Math.max(0, position));
|
|
1226
|
+
let index = 0;
|
|
1227
|
+
while (index < points.length - 2 && x > points[index + 1].position) {
|
|
1228
|
+
index += 1;
|
|
1229
|
+
}
|
|
1230
|
+
const lower = points[index];
|
|
1231
|
+
const upper = points[index + 1];
|
|
1232
|
+
const t = (x - lower.position) / (upper.position - lower.position);
|
|
1233
|
+
return lower.fraction + t * (upper.fraction - lower.fraction);
|
|
1234
|
+
}
|
|
1235
|
+
function controlTaperFraction(control, fallbackTaper, position) {
|
|
1236
|
+
const table = control?.taperTable;
|
|
1237
|
+
if (table !== void 0 && table.points.length >= 2) {
|
|
1238
|
+
return taperTableFraction(table.points, position);
|
|
1239
|
+
}
|
|
1240
|
+
return taperFraction(control?.taper ?? fallbackTaper, position);
|
|
1241
|
+
}
|
|
1223
1242
|
function taperFraction(taper, position) {
|
|
1224
1243
|
const x = Math.min(1, Math.max(0, position));
|
|
1225
1244
|
const audioBase = 1089 / 49;
|
|
@@ -1440,6 +1459,7 @@ var NEWTON_RELATIVE_TOLERANCE = 1e-3;
|
|
|
1440
1459
|
var NEWTON_VOLTAGE_TOLERANCE = 1e-6;
|
|
1441
1460
|
var NEWTON_RESIDUAL_TOLERANCE = 1e-9;
|
|
1442
1461
|
var JUNCTION_EXPONENT_LIMIT = 60;
|
|
1462
|
+
var BODY_THERMAL_VOLTS = 0.025852;
|
|
1443
1463
|
var ZENER_TEST_CURRENT_AMPS = 5e-3;
|
|
1444
1464
|
var TRIODE_GRID_CUTOFF_THRESHOLD_VOLTS = -3;
|
|
1445
1465
|
var TRIODE_GRID_STEP_VOLTS = 5;
|
|
@@ -2434,7 +2454,11 @@ var ReferenceRuntime = class {
|
|
|
2434
2454
|
const maxClockDelay = clock.offsetSeconds + clock.stages * clock.formulaConstant * maxR * clock.farads;
|
|
2435
2455
|
maxDelaySeconds = Math.max(maxDelaySeconds, maxClockDelay);
|
|
2436
2456
|
const pos = this.positions.get(clock.controlId) ?? 0.5;
|
|
2437
|
-
const frac =
|
|
2457
|
+
const frac = controlTaperFraction(
|
|
2458
|
+
this.controlsById.get(clock.controlId),
|
|
2459
|
+
clock.taper,
|
|
2460
|
+
pos
|
|
2461
|
+
);
|
|
2438
2462
|
const r = clock.ohmsAtControlMin + frac * (clock.ohmsAtControlMax - clock.ohmsAtControlMin);
|
|
2439
2463
|
initialDelaySeconds = clock.offsetSeconds + clock.stages * clock.formulaConstant * r * clock.farads;
|
|
2440
2464
|
}
|
|
@@ -2817,7 +2841,11 @@ var ReferenceRuntime = class {
|
|
|
2817
2841
|
for (const block of this.program.blocks) {
|
|
2818
2842
|
if (block.kind === "composed" && block.clockControl && block.clockControl.controlId === id) {
|
|
2819
2843
|
const cc = block.clockControl;
|
|
2820
|
-
const frac =
|
|
2844
|
+
const frac = controlTaperFraction(
|
|
2845
|
+
this.controlsById.get(cc.controlId),
|
|
2846
|
+
cc.taper,
|
|
2847
|
+
position
|
|
2848
|
+
);
|
|
2821
2849
|
const r = cc.ohmsAtControlMin + frac * (cc.ohmsAtControlMax - cc.ohmsAtControlMin);
|
|
2822
2850
|
const delaySec = cc.offsetSeconds + cc.stages * cc.formulaConstant * r * cc.farads;
|
|
2823
2851
|
{
|
|
@@ -3770,8 +3798,9 @@ var ReferenceRuntime = class {
|
|
|
3770
3798
|
if (sweep.read === "scanned") {
|
|
3771
3799
|
const control = this.controlsById.get(sweep.controlId);
|
|
3772
3800
|
return {
|
|
3773
|
-
paramScale:
|
|
3774
|
-
control
|
|
3801
|
+
paramScale: controlTaperFraction(
|
|
3802
|
+
control,
|
|
3803
|
+
"linear",
|
|
3775
3804
|
this.positions.get(sweep.controlId) ?? 0.5
|
|
3776
3805
|
),
|
|
3777
3806
|
tapped: null
|
|
@@ -3840,8 +3869,9 @@ var ReferenceRuntime = class {
|
|
|
3840
3869
|
let acc = 0;
|
|
3841
3870
|
for (const term of op.terms) {
|
|
3842
3871
|
const sweep = term.sweep;
|
|
3843
|
-
const gain = sweep === void 0 ? term.gain : sweep.min +
|
|
3844
|
-
this.controlsById.get(sweep.controlId)
|
|
3872
|
+
const gain = sweep === void 0 ? term.gain : sweep.min + controlTaperFraction(
|
|
3873
|
+
this.controlsById.get(sweep.controlId),
|
|
3874
|
+
"linear",
|
|
3845
3875
|
this.positions.get(sweep.controlId) ?? 0.5
|
|
3846
3876
|
) * (sweep.max - sweep.min);
|
|
3847
3877
|
const value = term.source.kind === "input" ? tap : term.source.kind === "const" ? term.source.value : temps[term.source.index] ?? 0;
|
|
@@ -4012,8 +4042,9 @@ var ReferenceRuntime = class {
|
|
|
4012
4042
|
if (line === void 0) {
|
|
4013
4043
|
return;
|
|
4014
4044
|
}
|
|
4015
|
-
const gateLevel = op.gate.min +
|
|
4016
|
-
this.controlsById.get(op.gate.controlId)
|
|
4045
|
+
const gateLevel = op.gate.min + controlTaperFraction(
|
|
4046
|
+
this.controlsById.get(op.gate.controlId),
|
|
4047
|
+
"linear",
|
|
4017
4048
|
this.positions.get(op.gate.controlId) ?? 0
|
|
4018
4049
|
) * (op.gate.max - op.gate.min);
|
|
4019
4050
|
temps[op.out] = holdLoop(line, read(op.input), gateLevel >= 0.5);
|
|
@@ -4114,8 +4145,9 @@ var ReferenceRuntime = class {
|
|
|
4114
4145
|
let acc = 0;
|
|
4115
4146
|
for (const term of op.terms) {
|
|
4116
4147
|
const sweep = term.sweep;
|
|
4117
|
-
const gain = sweep === void 0 ? term.gain : sweep.min +
|
|
4118
|
-
this.controlsById.get(sweep.controlId)
|
|
4148
|
+
const gain = sweep === void 0 ? term.gain : sweep.min + controlTaperFraction(
|
|
4149
|
+
this.controlsById.get(sweep.controlId),
|
|
4150
|
+
"linear",
|
|
4119
4151
|
this.positions.get(sweep.controlId) ?? 0.5
|
|
4120
4152
|
) * (sweep.max - sweep.min);
|
|
4121
4153
|
const value = term.source.kind === "input" ? tap - (this.composedDcState.get(block.id)?.dcOperatingPoint ?? 0) : term.source.kind === "const" ? term.source.value : read(term.source);
|
|
@@ -5305,7 +5337,7 @@ var ReferenceRuntime = class {
|
|
|
5305
5337
|
case "controlled-conductance": {
|
|
5306
5338
|
const control = this.controlsById.get(stamp.control);
|
|
5307
5339
|
const position = this.positions.get(stamp.control) ?? 0.5;
|
|
5308
|
-
const fraction =
|
|
5340
|
+
const fraction = controlTaperFraction(control, stamp.taper, position);
|
|
5309
5341
|
const share = stamp.side === "lower" ? fraction : 1 - fraction;
|
|
5310
5342
|
const residual = stamp.residualOhms;
|
|
5311
5343
|
const swept = residual > 0 ? residual + share * (stamp.totalOhms - 2 * residual) : stamp.totalOhms * share;
|
|
@@ -5316,7 +5348,7 @@ var ReferenceRuntime = class {
|
|
|
5316
5348
|
case "controlled-resistance": {
|
|
5317
5349
|
const control = this.controlsById.get(stamp.control);
|
|
5318
5350
|
const position = this.positions.get(stamp.control) ?? 0.5;
|
|
5319
|
-
const fraction =
|
|
5351
|
+
const fraction = controlTaperFraction(control, stamp.taper, position);
|
|
5320
5352
|
const ohms = Math.max(
|
|
5321
5353
|
stamp.minOhms + fraction * (stamp.maxOhms - stamp.minOhms),
|
|
5322
5354
|
1e-3
|
|
@@ -5836,7 +5868,8 @@ var ReferenceRuntime = class {
|
|
|
5836
5868
|
const rawVds = sign * ((solution[stamp.drain] ?? 0) - (solution[stamp.source] ?? 0));
|
|
5837
5869
|
const history = this.fetHistory.get(fetKey) ?? {
|
|
5838
5870
|
vgs: stamp.thresholdVolts,
|
|
5839
|
-
vds: 0
|
|
5871
|
+
vds: 0,
|
|
5872
|
+
vsd: 0
|
|
5840
5873
|
};
|
|
5841
5874
|
const vgs = limitFetGate(rawVgs, history.vgs, stamp.thresholdVolts);
|
|
5842
5875
|
const conducting = vgs - stamp.thresholdVolts > 0 && rawVds >= 0;
|
|
@@ -5845,7 +5878,7 @@ var ReferenceRuntime = class {
|
|
|
5845
5878
|
this.limitedIterate = true;
|
|
5846
5879
|
this.limitedBy = `fet g=${stamp.gate} d=${stamp.drain} s=${stamp.source}${vgs !== rawVgs ? " gate" : ""}${vds !== rawVds ? " drain" : ""}`;
|
|
5847
5880
|
}
|
|
5848
|
-
|
|
5881
|
+
let vsd = history.vsd ?? 0;
|
|
5849
5882
|
const beta = stamp.transconductance;
|
|
5850
5883
|
const lambda = stamp.channelLengthModulation;
|
|
5851
5884
|
const forward = (gateSource, drainSource) => {
|
|
@@ -5924,6 +5957,29 @@ var ReferenceRuntime = class {
|
|
|
5924
5957
|
stampJunction(sNode, vgs);
|
|
5925
5958
|
stampJunction(d, vgs - vds);
|
|
5926
5959
|
}
|
|
5960
|
+
if ((stamp.bodySaturationCurrent ?? 0) > 0 && (stamp.bodyEmissionCoefficient ?? 0) > 0) {
|
|
5961
|
+
const bodyIs = stamp.bodySaturationCurrent;
|
|
5962
|
+
const bodyScale = stamp.bodyEmissionCoefficient * BODY_THERMAL_VOLTS;
|
|
5963
|
+
const bodyAnode = stamp.channel === "n" ? stamp.source : stamp.drain;
|
|
5964
|
+
const bodyCathode = stamp.channel === "n" ? stamp.drain : stamp.source;
|
|
5965
|
+
const rawBody = (solution[bodyAnode] ?? 0) - (solution[bodyCathode] ?? 0);
|
|
5966
|
+
const acrossBody = limitJunction(rawBody, vsd, bodyScale, bodyIs);
|
|
5967
|
+
if (acrossBody !== rawBody) {
|
|
5968
|
+
this.limitedIterate = true;
|
|
5969
|
+
this.limitedBy = `fet-body a=${bodyAnode} k=${bodyCathode}`;
|
|
5970
|
+
}
|
|
5971
|
+
vsd = acrossBody;
|
|
5972
|
+
const exponential = Math.exp(
|
|
5973
|
+
Math.min(acrossBody / bodyScale, JUNCTION_EXPONENT_LIMIT)
|
|
5974
|
+
);
|
|
5975
|
+
const bodyCurrent = bodyIs * (exponential - 1);
|
|
5976
|
+
const bodyConductance = bodyIs * exponential / bodyScale;
|
|
5977
|
+
const bodyEquivalent = bodyCurrent - bodyConductance * acrossBody;
|
|
5978
|
+
stampConductance(matrix, bodyAnode, bodyCathode, bodyConductance);
|
|
5979
|
+
rhs[bodyAnode] = (rhs[bodyAnode] ?? 0) - bodyEquivalent;
|
|
5980
|
+
rhs[bodyCathode] = (rhs[bodyCathode] ?? 0) + bodyEquivalent;
|
|
5981
|
+
}
|
|
5982
|
+
this.fetHistory.set(fetKey, { vgs, vds, vsd });
|
|
5927
5983
|
break;
|
|
5928
5984
|
}
|
|
5929
5985
|
case "tube-diode": {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vessel-dsp/runtime",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.16.0",
|
|
4
4
|
"description": "Real-time MNA simulation runtime and solver console for VesselDSP Program ROMs.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"guitar-pedal",
|
|
@@ -58,7 +58,7 @@
|
|
|
58
58
|
"generate-kernels": "bun scripts/generate-kernels.ts"
|
|
59
59
|
},
|
|
60
60
|
"dependencies": {
|
|
61
|
-
"@vessel-dsp/compiler": "0.
|
|
61
|
+
"@vessel-dsp/compiler": "0.19.0"
|
|
62
62
|
},
|
|
63
63
|
"publishConfig": {
|
|
64
64
|
"access": "public"
|