@grame/faustwasm 0.18.0 → 0.18.2
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/README.md +28 -1
- package/assets/standalone/faustwasm/index.d.ts +22 -5
- package/assets/standalone/faustwasm/index.js +35 -5
- package/assets/standalone/faustwasm/index.js.map +2 -2
- package/dist/cjs/index.d.ts +22 -5
- package/dist/cjs/index.js +35 -5
- package/dist/cjs/index.js.map +2 -2
- package/dist/cjs-bundle/index.d.ts +22 -5
- package/dist/cjs-bundle/index.js +36 -6
- package/dist/cjs-bundle/index.js.map +2 -2
- package/dist/esm/index.d.ts +22 -5
- package/dist/esm/index.js +35 -5
- package/dist/esm/index.js.map +2 -2
- package/dist/esm-bundle/index.d.ts +22 -5
- package/dist/esm-bundle/index.js +36 -6
- package/dist/esm-bundle/index.js.map +2 -2
- package/libfaust-wasm/libfaust-wasm.wasm +0 -0
- package/package.json +1 -1
- package/src/FaustWebAudioDsp.ts +41 -5
- package/test/faustlive-wasm/faustwasm/index.d.ts +22 -5
- package/test/faustlive-wasm/faustwasm/index.js +35 -5
- package/test/faustlive-wasm/faustwasm/index.js.map +2 -2
- package/test/unit/voice-steal-fade.test.mjs +139 -0
- package/test/web/poly-schedule.html +97 -0
|
@@ -1106,6 +1106,8 @@ export declare class FaustPolyWebAudioDsp extends FaustBaseWebAudioDsp implement
|
|
|
1106
1106
|
private fAudioMixing;
|
|
1107
1107
|
private fAudioMixingHalf;
|
|
1108
1108
|
private fMixingBase;
|
|
1109
|
+
/** Float view of the memory, kept from `initMemory` like `fHEAP32`. */
|
|
1110
|
+
private fHEAPF;
|
|
1109
1111
|
private fVoiceTable;
|
|
1110
1112
|
private fSampleRate;
|
|
1111
1113
|
/** Voices whose crossfade this block already rendered in full. */
|
|
@@ -1130,14 +1132,29 @@ export declare class FaustPolyWebAudioDsp extends FaustBaseWebAudioDsp implement
|
|
|
1130
1132
|
/**
|
|
1131
1133
|
* Render the stolen voices, each across the whole block.
|
|
1132
1134
|
*
|
|
1133
|
-
* A steal is a
|
|
1135
|
+
* A steal is a hand-over: the voice plays the note it is losing over the
|
|
1134
1136
|
* first half of the buffer, that half fades out, and the new note plays
|
|
1135
|
-
* the second half
|
|
1136
|
-
*
|
|
1137
|
-
*
|
|
1138
|
-
*
|
|
1137
|
+
* the second half, faded in. Both fades are needed. `fadeOut` scales the
|
|
1138
|
+
* buffer, not the voice: after `keyOn` the DSP carries on from its live
|
|
1139
|
+
* state -- an envelope that never reached silence is still up -- so
|
|
1140
|
+
* without the fade-in the second half started at full level, a step on
|
|
1141
|
+
* every stolen note. On a monophonic patch whose voice never falls
|
|
1142
|
+
* silent that is a click on every note after the first (measured on a
|
|
1143
|
+
* long-release bass: 0, 0, 0, 0.1485, 0.2618 across the split).
|
|
1144
|
+
*
|
|
1145
|
+
* The fades have to be half a block -- 64 frames -- rather than half a
|
|
1146
|
+
* slice, which late in the block would be a frame or two, or nothing at
|
|
1147
|
+
* all. So this runs before the slicing, and `fRenderSlice` skips these
|
|
1148
|
+
* voices.
|
|
1139
1149
|
*/
|
|
1140
1150
|
private renderStolenVoices;
|
|
1151
|
+
/**
|
|
1152
|
+
* Scale `count` frames of each channel at `$tables` from 1/count up to 1.
|
|
1153
|
+
*
|
|
1154
|
+
* The mixer has `fadeOut` in wasm; this is its counterpart on the JS
|
|
1155
|
+
* side, over the channel-pointer table the same way the mixer reads it.
|
|
1156
|
+
*/
|
|
1157
|
+
private fadeIn;
|
|
1141
1158
|
/**
|
|
1142
1159
|
* Move the mixing tables along with the input and output ones.
|
|
1143
1160
|
*
|