gitframes 1.2.35

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.
Files changed (94) hide show
  1. package/LICENCE +202 -0
  2. package/README.md +77 -0
  3. package/dist/audio/index.d.mts +2 -0
  4. package/dist/audio/index.mjs +6 -0
  5. package/dist/audio-C0YslYEG.d.mts +32 -0
  6. package/dist/audio-C0YslYEG.d.mts.map +1 -0
  7. package/dist/audio-C4kiPbrV.mjs +1866 -0
  8. package/dist/audio-C4kiPbrV.mjs.map +1 -0
  9. package/dist/audio-CiXUMGyk.mjs +578 -0
  10. package/dist/audio-CiXUMGyk.mjs.map +1 -0
  11. package/dist/chunk-GMkBE123.mjs +47 -0
  12. package/dist/client-Dyypr8tt.mjs +66 -0
  13. package/dist/client-Dyypr8tt.mjs.map +1 -0
  14. package/dist/dist-C37594c6.mjs +27195 -0
  15. package/dist/dist-C37594c6.mjs.map +1 -0
  16. package/dist/dist-CMF9eNLB.mjs +4062 -0
  17. package/dist/dist-CMF9eNLB.mjs.map +1 -0
  18. package/dist/dist-cjs--KIl7Gqy.mjs +6 -0
  19. package/dist/dist-cjs-B-_4TVjP.mjs +66 -0
  20. package/dist/dist-cjs-B-_4TVjP.mjs.map +1 -0
  21. package/dist/dist-cjs-B3TIyZ3K.mjs +437 -0
  22. package/dist/dist-cjs-B3TIyZ3K.mjs.map +1 -0
  23. package/dist/dist-cjs-Bsz2eGzl.mjs +9069 -0
  24. package/dist/dist-cjs-Bsz2eGzl.mjs.map +1 -0
  25. package/dist/dist-cjs-BuJ2FXob.mjs +181 -0
  26. package/dist/dist-cjs-BuJ2FXob.mjs.map +1 -0
  27. package/dist/dist-cjs-C-FMsqmo.mjs +1091 -0
  28. package/dist/dist-cjs-C-FMsqmo.mjs.map +1 -0
  29. package/dist/dist-cjs-C4b9TCXd.mjs +48 -0
  30. package/dist/dist-cjs-C4b9TCXd.mjs.map +1 -0
  31. package/dist/dist-cjs-C817PNLc.mjs +51 -0
  32. package/dist/dist-cjs-C817PNLc.mjs.map +1 -0
  33. package/dist/dist-cjs-CBnnS4k8.mjs +43 -0
  34. package/dist/dist-cjs-CBnnS4k8.mjs.map +1 -0
  35. package/dist/dist-cjs-CWbeD0Mu.mjs +64 -0
  36. package/dist/dist-cjs-CWbeD0Mu.mjs.map +1 -0
  37. package/dist/dist-cjs-ChXEJ1ro.mjs +85 -0
  38. package/dist/dist-cjs-ChXEJ1ro.mjs.map +1 -0
  39. package/dist/dist-cjs-CslF8Dju.mjs +153 -0
  40. package/dist/dist-cjs-CslF8Dju.mjs.map +1 -0
  41. package/dist/dist-cjs-D52jYyEm.mjs +98 -0
  42. package/dist/dist-cjs-D52jYyEm.mjs.map +1 -0
  43. package/dist/dist-cjs-DhWYgNfa.mjs +209 -0
  44. package/dist/dist-cjs-DhWYgNfa.mjs.map +1 -0
  45. package/dist/dist-cjs-DssYqayv.mjs +5015 -0
  46. package/dist/dist-cjs-DssYqayv.mjs.map +1 -0
  47. package/dist/dist-cjs-Du6DnSjo.mjs +137 -0
  48. package/dist/dist-cjs-Du6DnSjo.mjs.map +1 -0
  49. package/dist/dist-cjs-b-oBQaxe.mjs +323 -0
  50. package/dist/dist-cjs-b-oBQaxe.mjs.map +1 -0
  51. package/dist/effects/index.d.mts +2 -0
  52. package/dist/effects/index.mjs +4 -0
  53. package/dist/effects-4t4qk-BR.mjs +21130 -0
  54. package/dist/effects-4t4qk-BR.mjs.map +1 -0
  55. package/dist/event-streams-B0YUBtyM.mjs +204 -0
  56. package/dist/event-streams-B0YUBtyM.mjs.map +1 -0
  57. package/dist/fonts/index.d.mts +2 -0
  58. package/dist/fonts/index.mjs +3 -0
  59. package/dist/fonts-Dn18r_ST.mjs +188 -0
  60. package/dist/fonts-Dn18r_ST.mjs.map +1 -0
  61. package/dist/index-B1557AUi.d.mts +928 -0
  62. package/dist/index-B1557AUi.d.mts.map +1 -0
  63. package/dist/index-DSaMXGoA.d.mts +65 -0
  64. package/dist/index-DSaMXGoA.d.mts.map +1 -0
  65. package/dist/index-FICUHo4P.d.mts +69 -0
  66. package/dist/index-FICUHo4P.d.mts.map +1 -0
  67. package/dist/index-YZsTjqut.d.mts +147 -0
  68. package/dist/index-YZsTjqut.d.mts.map +1 -0
  69. package/dist/index.d.mts +736 -0
  70. package/dist/index.d.mts.map +1 -0
  71. package/dist/index.mjs +7135 -0
  72. package/dist/index.mjs.map +1 -0
  73. package/dist/package-5RsA21g-.mjs +6 -0
  74. package/dist/package-5RsA21g-.mjs.map +1 -0
  75. package/dist/react/index.d.mts +3 -0
  76. package/dist/react/index.mjs +4 -0
  77. package/dist/renderer/index.d.mts +2 -0
  78. package/dist/renderer/index.mjs +6 -0
  79. package/dist/renderer-DVi31fSv.mjs +23274 -0
  80. package/dist/renderer-DVi31fSv.mjs.map +1 -0
  81. package/dist/renderers-CLJQRPVU-CMZnHNK0.mjs +49 -0
  82. package/dist/renderers-CLJQRPVU-CMZnHNK0.mjs.map +1 -0
  83. package/dist/signals/index.d.mts +9 -0
  84. package/dist/signals/index.mjs +8 -0
  85. package/dist/signals-BB_kdndF.mjs +227 -0
  86. package/dist/signals-BB_kdndF.mjs.map +1 -0
  87. package/dist/signin-CVUAIuED.mjs +865 -0
  88. package/dist/signin-CVUAIuED.mjs.map +1 -0
  89. package/dist/sso-oidc-D1GnNQYW.mjs +1051 -0
  90. package/dist/sso-oidc-D1GnNQYW.mjs.map +1 -0
  91. package/dist/sts-Bz-e3kNW.mjs +6 -0
  92. package/dist/sts-I4KhuCBs.mjs +1395 -0
  93. package/dist/sts-I4KhuCBs.mjs.map +1 -0
  94. package/package.json +174 -0
@@ -0,0 +1,578 @@
1
+ import { $t as frameArraySignal, F as defineRenderer, r as decodeAudioSource } from "./dist-CMF9eNLB.mjs";
2
+ import { i as AudioSignalComputePipeline, nt as signalRegistry, z as ensureDevice } from "./dist-C37594c6.mjs";
3
+
4
+ //#region ../../nodes/node-modulate/dist/renderers-BsAofaFw.mjs
5
+ function resolveVal(val, fallback, frame, fps) {
6
+ if (val === void 0 || val === null) return fallback;
7
+ if (typeof val === "object" && val !== null) {
8
+ if ("get" in val && typeof val.get === "function") try {
9
+ const res = val.get({
10
+ frame,
11
+ fps,
12
+ time: fps > 0 ? frame / fps : 0,
13
+ duration: 0,
14
+ durationMs: 0,
15
+ progress: 0,
16
+ deltaTime: fps > 0 ? 1 / fps : 0
17
+ });
18
+ const n$1 = Number(res);
19
+ if (Number.isFinite(n$1)) return n$1;
20
+ } catch {}
21
+ if ("value" in val) {
22
+ const n$1 = Number(val.value);
23
+ if (Number.isFinite(n$1)) return n$1;
24
+ }
25
+ } else if (typeof val === "function") try {
26
+ const res = val(frame, fps);
27
+ const n$1 = Number(res);
28
+ if (Number.isFinite(n$1)) return n$1;
29
+ } catch {}
30
+ const n = Number(val);
31
+ return Number.isFinite(n) ? n : fallback;
32
+ }
33
+ function resolveModulateField(op, fieldName, defaultValue, minVal, maxVal, frame = 0, fps = 30) {
34
+ const handleId = op[`${fieldName}HandleId`];
35
+ const signalInput = handleId ? op.inputs?.[handleId] : null;
36
+ const hasSignal = !!(signalInput?.connectionValid && signalInput.outputItem?.type === "Signal");
37
+ const sd = hasSignal ? signalInput?.outputItem?.data : null;
38
+ let value = defaultValue;
39
+ if (!hasSignal) if (signalInput?.connectionValid && signalInput.outputItem?.type === "Number") value = Number(signalInput.outputItem.data ?? defaultValue);
40
+ else value = resolveVal(op[fieldName] ?? op.signals?.[fieldName], defaultValue, frame, fps);
41
+ else if (sd && typeof sd === "object" && "offset" in sd) value = Number(sd.offset ?? defaultValue);
42
+ value = Math.max(minVal, Math.min(maxVal, value));
43
+ return {
44
+ hasSignal,
45
+ sd,
46
+ value
47
+ };
48
+ }
49
+ const STATIC_MODULATE_SHADER = `
50
+ struct ModulateUniforms {
51
+ hue : f32,
52
+ brightness : f32,
53
+ contrast : f32,
54
+ exposure : f32,
55
+ saturation : f32,
56
+ sepia : f32,
57
+
58
+ hasSignal_hue : f32,
59
+ hasSignal_brightness : f32,
60
+ hasSignal_contrast : f32,
61
+ hasSignal_exposure : f32,
62
+ hasSignal_saturation : f32,
63
+ hasSignal_sepia : f32,
64
+ };
65
+
66
+ @group(0) @binding(0) var<uniform> u : ModulateUniforms;
67
+ @group(1) @binding(0) var tex : texture_2d<f32>;
68
+ @group(1) @binding(1) var samp : sampler;
69
+
70
+ @group(2) @binding(0) var hueTex : texture_2d<f32>;
71
+ @group(2) @binding(1) var brightnessTex : texture_2d<f32>;
72
+ @group(2) @binding(2) var contrastTex : texture_2d<f32>;
73
+ @group(2) @binding(3) var exposureTex : texture_2d<f32>;
74
+ @group(2) @binding(4) var saturationTex : texture_2d<f32>;
75
+ @group(2) @binding(5) var sepiaTex : texture_2d<f32>;
76
+ @group(2) @binding(6) var sigSamp : sampler;
77
+
78
+ struct VSOut {
79
+ @builtin(position) pos : vec4<f32>,
80
+ @location(0) uv : vec2<f32>,
81
+ };
82
+
83
+ @vertex fn vs(@builtin(vertex_index) vi: u32) -> VSOut {
84
+ var pos = array<vec2<f32>, 4>(
85
+ vec2<f32>(-1.0, 1.0),
86
+ vec2<f32>(1.0, 1.0),
87
+ vec2<f32>(-1.0, -1.0),
88
+ vec2<f32>(1.0, -1.0)
89
+ );
90
+ var uv = array<vec2<f32>, 4>(
91
+ vec2<f32>(0.0, 0.0),
92
+ vec2<f32>(1.0, 0.0),
93
+ vec2<f32>(0.0, 1.0),
94
+ vec2<f32>(1.0, 1.0)
95
+ );
96
+ return VSOut(vec4<f32>(pos[vi], 0.0, 1.0), uv[vi]);
97
+ }
98
+
99
+ fn apply_exposure(c: vec4<f32>, exposure: f32) -> vec4<f32> {
100
+ let scale = pow(2.0, exposure);
101
+ var unpremult = c;
102
+ if (unpremult.a > 0.0) { unpremult = vec4<f32>(unpremult.rgb / unpremult.a, unpremult.a); }
103
+ let r = scale * unpremult.r;
104
+ let g = scale * unpremult.g;
105
+ let b = scale * unpremult.b;
106
+ let outAlpha = clamp(unpremult.a, 0.0, 1.0);
107
+ let outRgb = clamp(vec3<f32>(r, g, b), vec3<f32>(0.0), vec3<f32>(1.0)) * outAlpha;
108
+ return vec4<f32>(outRgb, outAlpha);
109
+ }
110
+
111
+ fn apply_hue(c: vec4<f32>, degrees: f32) -> vec4<f32> {
112
+ let rad = (degrees * 3.1415926535) / 180.0;
113
+ let cosVal = cos(rad);
114
+ let sinVal = sin(rad);
115
+
116
+ let row0 = vec4<f32>(0.213 + cosVal * 0.787 - sinVal * 0.213, 0.715 - cosVal * 0.715 - sinVal * 0.715, 0.072 - cosVal * 0.072 + sinVal * 0.928, 0.0);
117
+ let row1 = vec4<f32>(0.213 - cosVal * 0.213 + sinVal * 0.143, 0.715 + cosVal * 0.285 + sinVal * 0.14, 0.072 - cosVal * 0.072 - sinVal * 0.283, 0.0);
118
+ let row2 = vec4<f32>(0.213 - cosVal * 0.213 - sinVal * 0.787, 0.715 - cosVal * 0.715 + sinVal * 0.715, 0.072 + cosVal * 0.928 + sinVal * 0.072, 0.0);
119
+
120
+ var unpremult = c;
121
+ if (unpremult.a > 0.0) { unpremult = vec4<f32>(unpremult.rgb / unpremult.a, unpremult.a); }
122
+ let r = dot(row0, unpremult);
123
+ let g = dot(row1, unpremult);
124
+ let b = dot(row2, unpremult);
125
+ let outAlpha = clamp(unpremult.a, 0.0, 1.0);
126
+ let outRgb = clamp(vec3<f32>(r, g, b), vec3<f32>(0.0), vec3<f32>(1.0)) * outAlpha;
127
+ return vec4<f32>(outRgb, outAlpha);
128
+ }
129
+
130
+ fn apply_saturation(c: vec4<f32>, sat: f32) -> vec4<f32> {
131
+ let row0 = vec4<f32>(0.213 + sat * 0.787, 0.715 * (1.0 - sat), 0.072 * (1.0 - sat), 0.0);
132
+ let row1 = vec4<f32>(0.213 * (1.0 - sat), 0.715 + sat * 0.285, 0.072 * (1.0 - sat), 0.0);
133
+ let row2 = vec4<f32>(0.213 * (1.0 - sat), 0.715 * (1.0 - sat), 0.072 + sat * 0.928, 0.0);
134
+
135
+ var unpremult = c;
136
+ if (unpremult.a > 0.0) { unpremult = vec4<f32>(unpremult.rgb / unpremult.a, unpremult.a); }
137
+ let r = dot(row0, unpremult);
138
+ let g = dot(row1, unpremult);
139
+ let b = dot(row2, unpremult);
140
+ let outAlpha = clamp(unpremult.a, 0.0, 1.0);
141
+ let outRgb = clamp(vec3<f32>(r, g, b), vec3<f32>(0.0), vec3<f32>(1.0)) * outAlpha;
142
+ return vec4<f32>(outRgb, outAlpha);
143
+ }
144
+
145
+ fn apply_contrast(c: vec4<f32>, contrast: f32) -> vec4<f32> {
146
+ let offset = 0.5 * (1.0 - contrast);
147
+
148
+ var unpremult = c;
149
+ if (unpremult.a > 0.0) { unpremult = vec4<f32>(unpremult.rgb / unpremult.a, unpremult.a); }
150
+ let r = contrast * unpremult.r + offset;
151
+ let g = contrast * unpremult.g + offset;
152
+ let b = contrast * unpremult.b + offset;
153
+ let outAlpha = clamp(unpremult.a, 0.0, 1.0);
154
+ let outRgb = clamp(vec3<f32>(r, g, b), vec3<f32>(0.0), vec3<f32>(1.0)) * outAlpha;
155
+ return vec4<f32>(outRgb, outAlpha);
156
+ }
157
+
158
+ fn apply_brightness(c: vec4<f32>, bright: f32) -> vec4<f32> {
159
+ var unpremult = c;
160
+ if (unpremult.a > 0.0) { unpremult = vec4<f32>(unpremult.rgb / unpremult.a, unpremult.a); }
161
+ let r = bright * unpremult.r;
162
+ let g = bright * unpremult.g;
163
+ let b = bright * unpremult.b;
164
+ let outAlpha = clamp(unpremult.a, 0.0, 1.0);
165
+ let outRgb = clamp(vec3<f32>(r, g, b), vec3<f32>(0.0), vec3<f32>(1.0)) * outAlpha;
166
+ return vec4<f32>(outRgb, outAlpha);
167
+ }
168
+
169
+ fn apply_sepia(c: vec4<f32>, s: f32) -> vec4<f32> {
170
+ let row0 = vec4<f32>(1.0 - 0.607 * s, 0.769 * s, 0.189 * s, 0.0);
171
+ let row1 = vec4<f32>(0.349 * s, 1.0 - 0.314 * s, 0.168 * s, 0.0);
172
+ let row2 = vec4<f32>(0.272 * s, 0.534 * s, 1.0 - 0.869 * s, 0.0);
173
+
174
+ var unpremult = c;
175
+ if (unpremult.a > 0.0) { unpremult = vec4<f32>(unpremult.rgb / unpremult.a, unpremult.a); }
176
+ let r = dot(row0, unpremult);
177
+ let g = dot(row1, unpremult);
178
+ let b = dot(row2, unpremult);
179
+ let outAlpha = clamp(unpremult.a, 0.0, 1.0);
180
+ let outRgb = clamp(vec3<f32>(r, g, b), vec3<f32>(0.0), vec3<f32>(1.0)) * outAlpha;
181
+ return vec4<f32>(outRgb, outAlpha);
182
+ }
183
+
184
+ @fragment fn fs(in : VSOut) -> @location(0) vec4<f32> {
185
+ let original = textureSample(tex, samp, in.uv);
186
+ var color = original;
187
+
188
+ // 1. Exposure
189
+ var exposure = u.exposure;
190
+ if (u.hasSignal_exposure > 0.5) {
191
+ exposure = textureSampleLevel(exposureTex, sigSamp, vec2<f32>(0.5, 0.5), 0.0).r;
192
+ }
193
+ color = apply_exposure(color, exposure);
194
+
195
+ // 2. Hue
196
+ var hue = u.hue;
197
+ if (u.hasSignal_hue > 0.5) {
198
+ hue = textureSampleLevel(hueTex, sigSamp, vec2<f32>(0.5, 0.5), 0.0).r;
199
+ }
200
+ color = apply_hue(color, hue);
201
+
202
+ // 3. Saturation
203
+ var saturation = u.saturation;
204
+ if (u.hasSignal_saturation > 0.5) {
205
+ saturation = textureSampleLevel(saturationTex, sigSamp, vec2<f32>(0.5, 0.5), 0.0).r;
206
+ }
207
+ color = apply_saturation(color, saturation);
208
+
209
+ // 4. Contrast
210
+ var contrast = u.contrast;
211
+ if (u.hasSignal_contrast > 0.5) {
212
+ contrast = textureSampleLevel(contrastTex, sigSamp, vec2<f32>(0.5, 0.5), 0.0).r;
213
+ }
214
+ color = apply_contrast(color, contrast);
215
+
216
+ // 5. Brightness
217
+ var brightness = u.brightness;
218
+ if (u.hasSignal_brightness > 0.5) {
219
+ brightness = textureSampleLevel(brightnessTex, sigSamp, vec2<f32>(0.5, 0.5), 0.0).r;
220
+ }
221
+ color = apply_brightness(color, brightness);
222
+
223
+ // 6. Sepia
224
+ var sepia = u.sepia;
225
+ if (u.hasSignal_sepia > 0.5) {
226
+ sepia = textureSampleLevel(sepiaTex, sigSamp, vec2<f32>(0.5, 0.5), 0.0).r;
227
+ }
228
+ color = apply_sepia(color, sepia);
229
+
230
+ return color;
231
+ }
232
+ `;
233
+ const deviceResourceCache = /* @__PURE__ */ new WeakMap();
234
+ const modulateData = new Float32Array(12);
235
+ function getDeviceLayouts(device) {
236
+ let res = deviceResourceCache.get(device);
237
+ if (res) return res;
238
+ res = {
239
+ modulateUniformLayout: device.createBindGroupLayout({ entries: [{
240
+ binding: 0,
241
+ visibility: GPUShaderStage.FRAGMENT,
242
+ buffer: { type: "uniform" }
243
+ }] }),
244
+ singleTextureLayout: device.createBindGroupLayout({ entries: [{
245
+ binding: 0,
246
+ visibility: GPUShaderStage.FRAGMENT,
247
+ texture: { sampleType: "float" }
248
+ }, {
249
+ binding: 1,
250
+ visibility: GPUShaderStage.FRAGMENT,
251
+ sampler: { type: "filtering" }
252
+ }] }),
253
+ modulateSignalsLayout: device.createBindGroupLayout({ entries: [
254
+ {
255
+ binding: 0,
256
+ visibility: GPUShaderStage.FRAGMENT,
257
+ texture: { sampleType: "float" }
258
+ },
259
+ {
260
+ binding: 1,
261
+ visibility: GPUShaderStage.FRAGMENT,
262
+ texture: { sampleType: "float" }
263
+ },
264
+ {
265
+ binding: 2,
266
+ visibility: GPUShaderStage.FRAGMENT,
267
+ texture: { sampleType: "float" }
268
+ },
269
+ {
270
+ binding: 3,
271
+ visibility: GPUShaderStage.FRAGMENT,
272
+ texture: { sampleType: "float" }
273
+ },
274
+ {
275
+ binding: 4,
276
+ visibility: GPUShaderStage.FRAGMENT,
277
+ texture: { sampleType: "float" }
278
+ },
279
+ {
280
+ binding: 5,
281
+ visibility: GPUShaderStage.FRAGMENT,
282
+ texture: { sampleType: "float" }
283
+ },
284
+ {
285
+ binding: 6,
286
+ visibility: GPUShaderStage.FRAGMENT,
287
+ sampler: { type: "filtering" }
288
+ }
289
+ ] }),
290
+ pipelineCache: /* @__PURE__ */ new Map()
291
+ };
292
+ deviceResourceCache.set(device, res);
293
+ return res;
294
+ }
295
+ function getModulateResources(device, format) {
296
+ const layouts = getDeviceLayouts(device);
297
+ const cacheKey = `modulate_${format}`;
298
+ let pipeline = layouts.pipelineCache.get(cacheKey);
299
+ if (!pipeline) {
300
+ const modulateModule = device.createShaderModule({
301
+ label: `modulate_static_${format}.wgsl`,
302
+ code: STATIC_MODULATE_SHADER
303
+ });
304
+ pipeline = device.createRenderPipeline({
305
+ label: `ModulatePipeline_static_${format}`,
306
+ layout: device.createPipelineLayout({ bindGroupLayouts: [
307
+ layouts.modulateUniformLayout,
308
+ layouts.singleTextureLayout,
309
+ layouts.modulateSignalsLayout
310
+ ] }),
311
+ vertex: {
312
+ module: modulateModule,
313
+ entryPoint: "vs"
314
+ },
315
+ fragment: {
316
+ module: modulateModule,
317
+ entryPoint: "fs",
318
+ targets: [{ format }]
319
+ },
320
+ primitive: { topology: "triangle-strip" }
321
+ });
322
+ layouts.pipelineCache.set(cacheKey, pipeline);
323
+ }
324
+ return {
325
+ modulatePipeline: pipeline,
326
+ modulateUniformLayout: layouts.modulateUniformLayout,
327
+ singleTextureLayout: layouts.singleTextureLayout,
328
+ modulateSignalsLayout: layouts.modulateSignalsLayout
329
+ };
330
+ }
331
+ const ModulateWebGPURenderer = async (args) => {
332
+ const { ctx, encoder, pass, targetView, targetTexture, targetWidth, targetHeight, props, drawChild } = args;
333
+ const frame = props.frame ?? 0;
334
+ const fps = props.fps || 30;
335
+ const op = props.virtualMedia?.operation;
336
+ if (op?.op !== "Modulate" || !op) return;
337
+ const childMedia = props.virtualMedia.children?.[0];
338
+ if (!childMedia) return;
339
+ pass.end();
340
+ const hueInfo = resolveModulateField(op, "hue", 0, 0, 360, frame, fps);
341
+ const brightnessInfo = resolveModulateField(op, "brightness", 1, 0, 2, frame, fps);
342
+ const contrastInfo = resolveModulateField(op, "contrast", 1, 0, 2, frame, fps);
343
+ const exposureInfo = resolveModulateField(op, "exposure", 0, -2, 2, frame, fps);
344
+ const saturationInfo = resolveModulateField(op, "saturation", 1, 0, 2, frame, fps);
345
+ const sepiaInfo = resolveModulateField(op, "sepia", 0, 0, 1, frame, fps);
346
+ const width = targetWidth;
347
+ const height = targetHeight;
348
+ const tmpTex = ctx.renderer.getTemporaryTexture(width, height, [...props.excludeTextures || [], targetTexture]);
349
+ const tmpView = tmpTex.createView();
350
+ ctx.renderer.beginFrame(encoder, tmpView, {
351
+ r: 0,
352
+ g: 0,
353
+ b: 0,
354
+ a: 0
355
+ }, width, height, "clear").end();
356
+ ctx.renderer.pushScissor({
357
+ x: 0,
358
+ y: 0,
359
+ width,
360
+ height
361
+ });
362
+ ctx.renderer.pushIdentity();
363
+ await drawChild(childMedia, {
364
+ ...props,
365
+ virtualMedia: childMedia
366
+ }, tmpView, tmpTex, width, height);
367
+ ctx.renderer.popTransform();
368
+ ctx.renderer.popScissor();
369
+ const { modulatePipeline: pipeline, modulateUniformLayout: uLayout, singleTextureLayout: tLayout, modulateSignalsLayout: sigLayout } = getModulateResources(ctx.device, ctx.renderer.format);
370
+ const sampler = ctx.renderer.samplerCache.getSampler(ctx.device);
371
+ const outTex = ctx.renderer.getTemporaryTexture(width, height, [
372
+ tmpTex,
373
+ targetTexture,
374
+ ...props.excludeTextures || []
375
+ ]);
376
+ modulateData[0] = hueInfo.value;
377
+ modulateData[1] = brightnessInfo.value;
378
+ modulateData[2] = contrastInfo.value;
379
+ modulateData[3] = exposureInfo.value;
380
+ modulateData[4] = saturationInfo.value;
381
+ modulateData[5] = sepiaInfo.value;
382
+ const fields = [
383
+ {
384
+ name: "hue",
385
+ info: hueInfo,
386
+ idx: 6
387
+ },
388
+ {
389
+ name: "brightness",
390
+ info: brightnessInfo,
391
+ idx: 7
392
+ },
393
+ {
394
+ name: "contrast",
395
+ info: contrastInfo,
396
+ idx: 8
397
+ },
398
+ {
399
+ name: "exposure",
400
+ info: exposureInfo,
401
+ idx: 9
402
+ },
403
+ {
404
+ name: "saturation",
405
+ info: saturationInfo,
406
+ idx: 10
407
+ },
408
+ {
409
+ name: "sepia",
410
+ info: sepiaInfo,
411
+ idx: 11
412
+ }
413
+ ];
414
+ const signalViews = [];
415
+ const elapsedSeconds = props.elapsedMs !== void 0 ? props.elapsedMs / 1e3 : frame / fps;
416
+ const durationSeconds = props.virtualMedia?.metadata?.durationMs ? props.virtualMedia.metadata.durationMs / 1e3 : props.durationMs !== void 0 ? props.durationMs / 1e3 : 0;
417
+ for (const f of fields) {
418
+ const isGenerator = !!(f.info.hasSignal && f.info.sd);
419
+ modulateData[f.idx] = isGenerator ? 1 : 0;
420
+ if (isGenerator) {
421
+ const view = signalRegistry.getOrCreate2DTextureView(ctx.device, encoder, f.info.sd.nodeId ?? `modulate_${f.name}_sig`, elapsedSeconds, durationSeconds, f.info.sd, width, height, props.renderId, frame, fps);
422
+ signalViews.push(view);
423
+ } else signalViews.push(signalRegistry.getDummy1x1TextureView(ctx.device));
424
+ }
425
+ const buffer = ctx.renderer.getTemporaryBuffer(modulateData);
426
+ const renderPass = encoder.beginRenderPass({ colorAttachments: [{
427
+ view: outTex.createView(),
428
+ loadOp: "clear",
429
+ storeOp: "store",
430
+ clearValue: {
431
+ r: 0,
432
+ g: 0,
433
+ b: 0,
434
+ a: 0
435
+ }
436
+ }] });
437
+ renderPass.setPipeline(pipeline);
438
+ renderPass.setBindGroup(0, ctx.device.createBindGroup({
439
+ layout: uLayout,
440
+ entries: [{
441
+ binding: 0,
442
+ resource: { buffer }
443
+ }]
444
+ }));
445
+ renderPass.setBindGroup(1, ctx.renderer.bindGroupCache.getBindGroup(ctx.device, tLayout, tmpTex, sampler));
446
+ renderPass.setBindGroup(2, ctx.device.createBindGroup({
447
+ layout: sigLayout,
448
+ entries: [
449
+ {
450
+ binding: 0,
451
+ resource: signalViews[0]
452
+ },
453
+ {
454
+ binding: 1,
455
+ resource: signalViews[1]
456
+ },
457
+ {
458
+ binding: 2,
459
+ resource: signalViews[2]
460
+ },
461
+ {
462
+ binding: 3,
463
+ resource: signalViews[3]
464
+ },
465
+ {
466
+ binding: 4,
467
+ resource: signalViews[4]
468
+ },
469
+ {
470
+ binding: 5,
471
+ resource: signalViews[5]
472
+ },
473
+ {
474
+ binding: 6,
475
+ resource: sampler
476
+ }
477
+ ]
478
+ }));
479
+ renderPass.draw(4);
480
+ renderPass.end();
481
+ const finalPass = ctx.renderer.beginFrame(encoder, targetView, {
482
+ r: 0,
483
+ g: 0,
484
+ b: 0,
485
+ a: 0
486
+ }, targetWidth, targetHeight, "load");
487
+ ctx.renderer.drawTexture(finalPass, outTex, {
488
+ x: 0,
489
+ y: 0,
490
+ width: targetWidth,
491
+ height: targetHeight
492
+ }, { opacity: op.opacity ?? 1 });
493
+ args.pass = finalPass;
494
+ };
495
+ var renderers_default = defineRenderer({ WebGPURenderer: ModulateWebGPURenderer });
496
+
497
+ //#endregion
498
+ //#region src/signals/audio.ts
499
+ const AudioSignal = {
500
+ async extractFromChannels(channels, sampleRate, options = {}) {
501
+ const device = await ensureDevice();
502
+ const fps = options.fps ?? 24;
503
+ const targetWidth = options.targetWidth ?? 512;
504
+ const extracted = await AudioSignalComputePipeline.extractFeatures(device, channels, sampleRate, fps, options, targetWidth);
505
+ const samples = extracted.channelSamples ?? {
506
+ primary: new Float32Array(extracted.numFrames),
507
+ beat: new Float32Array(extracted.numFrames),
508
+ bass: new Float32Array(extracted.numFrames),
509
+ energy: new Float32Array(extracted.numFrames)
510
+ };
511
+ const primaryBinding = {
512
+ nodeId: "audio_primary",
513
+ channel: "primary",
514
+ textureView: extracted.textureView,
515
+ texture: extracted.texture,
516
+ buffer: extracted.primaryBuffer,
517
+ stats: extracted.stats.primary
518
+ };
519
+ const beatBinding = {
520
+ nodeId: "audio_beat",
521
+ channel: "beat",
522
+ textureView: extracted.textureView,
523
+ texture: extracted.texture,
524
+ buffer: extracted.beatBuffer,
525
+ stats: extracted.stats.beat
526
+ };
527
+ const bassBinding = {
528
+ nodeId: "audio_bass",
529
+ channel: "bass",
530
+ textureView: extracted.textureView,
531
+ texture: extracted.texture,
532
+ buffer: extracted.bassBuffer,
533
+ stats: extracted.stats.bass
534
+ };
535
+ const energyBinding = {
536
+ nodeId: "audio_energy",
537
+ channel: "energy",
538
+ textureView: extracted.textureView,
539
+ texture: extracted.texture,
540
+ buffer: extracted.energyBuffer,
541
+ stats: extracted.stats.energy
542
+ };
543
+ const primary = frameArraySignal(samples.primary, fps, primaryBinding);
544
+ const beat = frameArraySignal(samples.beat, fps, beatBinding);
545
+ const bass = frameArraySignal(samples.bass, fps, bassBinding);
546
+ const energy = frameArraySignal(samples.energy, fps, energyBinding);
547
+ return {
548
+ primary,
549
+ beat,
550
+ bass,
551
+ energy,
552
+ durationSec: extracted.durationSec,
553
+ numFrames: extracted.numFrames,
554
+ sampleRate,
555
+ textureView: extracted.textureView,
556
+ texture: extracted.texture,
557
+ primaryBuffer: extracted.primaryBuffer,
558
+ beatBuffer: extracted.beatBuffer,
559
+ bassBuffer: extracted.bassBuffer,
560
+ energyBuffer: extracted.energyBuffer,
561
+ seekFrame(frame) {
562
+ primary.seekFrame?.(frame);
563
+ beat.seekFrame?.(frame);
564
+ bass.seekFrame?.(frame);
565
+ energy.seekFrame?.(frame);
566
+ }
567
+ };
568
+ },
569
+ async extract(source, options = {}) {
570
+ const decoded = await decodeAudioSource(source);
571
+ if (!decoded || decoded.channels.length === 0) throw new Error(`Failed to decode audio source for feature extraction: ${source}`);
572
+ return AudioSignal.extractFromChannels(decoded.channels, decoded.sampleRate, options);
573
+ }
574
+ };
575
+
576
+ //#endregion
577
+ export { renderers_default as n, AudioSignal as t };
578
+ //# sourceMappingURL=audio-CiXUMGyk.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audio-CiXUMGyk.mjs","names":[],"sources":["../../../nodes/node-modulate/dist/renderers-BsAofaFw.mjs","../src/signals/audio.ts"],"sourcesContent":["import { defineRenderer } from \"@gitframes/node-sdk/renderer\";\nimport { signalRegistry } from \"@gitframes/webgpu-renderers\";\n\n//#region src/renderers/webgpu-renderer.ts\nfunction resolveVal(val, fallback, frame, fps) {\n\tif (val === void 0 || val === null) return fallback;\n\tif (typeof val === \"object\" && val !== null) {\n\t\tif (\"get\" in val && typeof val.get === \"function\") try {\n\t\t\tconst res = val.get({\n\t\t\t\tframe,\n\t\t\t\tfps,\n\t\t\t\ttime: fps > 0 ? frame / fps : 0,\n\t\t\t\tduration: 0,\n\t\t\t\tdurationMs: 0,\n\t\t\t\tprogress: 0,\n\t\t\t\tdeltaTime: fps > 0 ? 1 / fps : 0\n\t\t\t});\n\t\t\tconst n$1 = Number(res);\n\t\t\tif (Number.isFinite(n$1)) return n$1;\n\t\t} catch {}\n\t\tif (\"value\" in val) {\n\t\t\tconst n$1 = Number(val.value);\n\t\t\tif (Number.isFinite(n$1)) return n$1;\n\t\t}\n\t} else if (typeof val === \"function\") try {\n\t\tconst res = val(frame, fps);\n\t\tconst n$1 = Number(res);\n\t\tif (Number.isFinite(n$1)) return n$1;\n\t} catch {}\n\tconst n = Number(val);\n\treturn Number.isFinite(n) ? n : fallback;\n}\nfunction resolveModulateField(op, fieldName, defaultValue, minVal, maxVal, frame = 0, fps = 30) {\n\tconst handleId = op[`${fieldName}HandleId`];\n\tconst signalInput = handleId ? op.inputs?.[handleId] : null;\n\tconst hasSignal = !!(signalInput?.connectionValid && signalInput.outputItem?.type === \"Signal\");\n\tconst sd = hasSignal ? signalInput?.outputItem?.data : null;\n\tlet value = defaultValue;\n\tif (!hasSignal) if (signalInput?.connectionValid && signalInput.outputItem?.type === \"Number\") value = Number(signalInput.outputItem.data ?? defaultValue);\n\telse value = resolveVal(op[fieldName] ?? op.signals?.[fieldName], defaultValue, frame, fps);\n\telse if (sd && typeof sd === \"object\" && \"offset\" in sd) value = Number(sd.offset ?? defaultValue);\n\tvalue = Math.max(minVal, Math.min(maxVal, value));\n\treturn {\n\t\thasSignal,\n\t\tsd,\n\t\tvalue\n\t};\n}\nconst STATIC_MODULATE_SHADER = `\nstruct ModulateUniforms {\n\thue : f32,\n\tbrightness : f32,\n\tcontrast : f32,\n\texposure : f32,\n\tsaturation : f32,\n\tsepia : f32,\n\n\thasSignal_hue : f32,\n\thasSignal_brightness : f32,\n\thasSignal_contrast : f32,\n\thasSignal_exposure : f32,\n\thasSignal_saturation : f32,\n\thasSignal_sepia : f32,\n};\n\n@group(0) @binding(0) var<uniform> u : ModulateUniforms;\n@group(1) @binding(0) var tex : texture_2d<f32>;\n@group(1) @binding(1) var samp : sampler;\n\n@group(2) @binding(0) var hueTex : texture_2d<f32>;\n@group(2) @binding(1) var brightnessTex : texture_2d<f32>;\n@group(2) @binding(2) var contrastTex : texture_2d<f32>;\n@group(2) @binding(3) var exposureTex : texture_2d<f32>;\n@group(2) @binding(4) var saturationTex : texture_2d<f32>;\n@group(2) @binding(5) var sepiaTex : texture_2d<f32>;\n@group(2) @binding(6) var sigSamp : sampler;\n\nstruct VSOut {\n\t@builtin(position) pos : vec4<f32>,\n\t@location(0) uv : vec2<f32>,\n};\n\n@vertex fn vs(@builtin(vertex_index) vi: u32) -> VSOut {\n\tvar pos = array<vec2<f32>, 4>(\n\t\tvec2<f32>(-1.0, 1.0),\n\t\tvec2<f32>(1.0, 1.0),\n\t\tvec2<f32>(-1.0, -1.0),\n\t\tvec2<f32>(1.0, -1.0)\n\t);\n\tvar uv = array<vec2<f32>, 4>(\n\t\tvec2<f32>(0.0, 0.0),\n\t\tvec2<f32>(1.0, 0.0),\n\t\tvec2<f32>(0.0, 1.0),\n\t\tvec2<f32>(1.0, 1.0)\n\t);\n\treturn VSOut(vec4<f32>(pos[vi], 0.0, 1.0), uv[vi]);\n}\n\nfn apply_exposure(c: vec4<f32>, exposure: f32) -> vec4<f32> {\n\tlet scale = pow(2.0, exposure);\n\tvar unpremult = c;\n\tif (unpremult.a > 0.0) { unpremult = vec4<f32>(unpremult.rgb / unpremult.a, unpremult.a); }\n\tlet r = scale * unpremult.r;\n\tlet g = scale * unpremult.g;\n\tlet b = scale * unpremult.b;\n\tlet outAlpha = clamp(unpremult.a, 0.0, 1.0);\n\tlet outRgb = clamp(vec3<f32>(r, g, b), vec3<f32>(0.0), vec3<f32>(1.0)) * outAlpha;\n\treturn vec4<f32>(outRgb, outAlpha);\n}\n\nfn apply_hue(c: vec4<f32>, degrees: f32) -> vec4<f32> {\n\tlet rad = (degrees * 3.1415926535) / 180.0;\n\tlet cosVal = cos(rad);\n\tlet sinVal = sin(rad);\n\n\tlet row0 = vec4<f32>(0.213 + cosVal * 0.787 - sinVal * 0.213, 0.715 - cosVal * 0.715 - sinVal * 0.715, 0.072 - cosVal * 0.072 + sinVal * 0.928, 0.0);\n\tlet row1 = vec4<f32>(0.213 - cosVal * 0.213 + sinVal * 0.143, 0.715 + cosVal * 0.285 + sinVal * 0.14, 0.072 - cosVal * 0.072 - sinVal * 0.283, 0.0);\n\tlet row2 = vec4<f32>(0.213 - cosVal * 0.213 - sinVal * 0.787, 0.715 - cosVal * 0.715 + sinVal * 0.715, 0.072 + cosVal * 0.928 + sinVal * 0.072, 0.0);\n\t\n\tvar unpremult = c;\n\tif (unpremult.a > 0.0) { unpremult = vec4<f32>(unpremult.rgb / unpremult.a, unpremult.a); }\n\tlet r = dot(row0, unpremult);\n\tlet g = dot(row1, unpremult);\n\tlet b = dot(row2, unpremult);\n\tlet outAlpha = clamp(unpremult.a, 0.0, 1.0);\n\tlet outRgb = clamp(vec3<f32>(r, g, b), vec3<f32>(0.0), vec3<f32>(1.0)) * outAlpha;\n\treturn vec4<f32>(outRgb, outAlpha);\n}\n\nfn apply_saturation(c: vec4<f32>, sat: f32) -> vec4<f32> {\n\tlet row0 = vec4<f32>(0.213 + sat * 0.787, 0.715 * (1.0 - sat), 0.072 * (1.0 - sat), 0.0);\n\tlet row1 = vec4<f32>(0.213 * (1.0 - sat), 0.715 + sat * 0.285, 0.072 * (1.0 - sat), 0.0);\n\tlet row2 = vec4<f32>(0.213 * (1.0 - sat), 0.715 * (1.0 - sat), 0.072 + sat * 0.928, 0.0);\n\n\tvar unpremult = c;\n\tif (unpremult.a > 0.0) { unpremult = vec4<f32>(unpremult.rgb / unpremult.a, unpremult.a); }\n\tlet r = dot(row0, unpremult);\n\tlet g = dot(row1, unpremult);\n\tlet b = dot(row2, unpremult);\n\tlet outAlpha = clamp(unpremult.a, 0.0, 1.0);\n\tlet outRgb = clamp(vec3<f32>(r, g, b), vec3<f32>(0.0), vec3<f32>(1.0)) * outAlpha;\n\treturn vec4<f32>(outRgb, outAlpha);\n}\n\nfn apply_contrast(c: vec4<f32>, contrast: f32) -> vec4<f32> {\n\tlet offset = 0.5 * (1.0 - contrast);\n\t\n\tvar unpremult = c;\n\tif (unpremult.a > 0.0) { unpremult = vec4<f32>(unpremult.rgb / unpremult.a, unpremult.a); }\n\tlet r = contrast * unpremult.r + offset;\n\tlet g = contrast * unpremult.g + offset;\n\tlet b = contrast * unpremult.b + offset;\n\tlet outAlpha = clamp(unpremult.a, 0.0, 1.0);\n\tlet outRgb = clamp(vec3<f32>(r, g, b), vec3<f32>(0.0), vec3<f32>(1.0)) * outAlpha;\n\treturn vec4<f32>(outRgb, outAlpha);\n}\n\nfn apply_brightness(c: vec4<f32>, bright: f32) -> vec4<f32> {\n\tvar unpremult = c;\n\tif (unpremult.a > 0.0) { unpremult = vec4<f32>(unpremult.rgb / unpremult.a, unpremult.a); }\n\tlet r = bright * unpremult.r;\n\tlet g = bright * unpremult.g;\n\tlet b = bright * unpremult.b;\n\tlet outAlpha = clamp(unpremult.a, 0.0, 1.0);\n\tlet outRgb = clamp(vec3<f32>(r, g, b), vec3<f32>(0.0), vec3<f32>(1.0)) * outAlpha;\n\treturn vec4<f32>(outRgb, outAlpha);\n}\n\nfn apply_sepia(c: vec4<f32>, s: f32) -> vec4<f32> {\n\tlet row0 = vec4<f32>(1.0 - 0.607 * s, 0.769 * s, 0.189 * s, 0.0);\n\tlet row1 = vec4<f32>(0.349 * s, 1.0 - 0.314 * s, 0.168 * s, 0.0);\n\tlet row2 = vec4<f32>(0.272 * s, 0.534 * s, 1.0 - 0.869 * s, 0.0);\n\n\tvar unpremult = c;\n\tif (unpremult.a > 0.0) { unpremult = vec4<f32>(unpremult.rgb / unpremult.a, unpremult.a); }\n\tlet r = dot(row0, unpremult);\n\tlet g = dot(row1, unpremult);\n\tlet b = dot(row2, unpremult);\n\tlet outAlpha = clamp(unpremult.a, 0.0, 1.0);\n\tlet outRgb = clamp(vec3<f32>(r, g, b), vec3<f32>(0.0), vec3<f32>(1.0)) * outAlpha;\n\treturn vec4<f32>(outRgb, outAlpha);\n}\n\n@fragment fn fs(in : VSOut) -> @location(0) vec4<f32> {\n\tlet original = textureSample(tex, samp, in.uv);\n\tvar color = original;\n\n\t// 1. Exposure\n\tvar exposure = u.exposure;\n\tif (u.hasSignal_exposure > 0.5) {\n\t\texposure = textureSampleLevel(exposureTex, sigSamp, vec2<f32>(0.5, 0.5), 0.0).r;\n\t}\n\tcolor = apply_exposure(color, exposure);\n\n\t// 2. Hue\n\tvar hue = u.hue;\n\tif (u.hasSignal_hue > 0.5) {\n\t\thue = textureSampleLevel(hueTex, sigSamp, vec2<f32>(0.5, 0.5), 0.0).r;\n\t}\n\tcolor = apply_hue(color, hue);\n\n\t// 3. Saturation\n\tvar saturation = u.saturation;\n\tif (u.hasSignal_saturation > 0.5) {\n\t\tsaturation = textureSampleLevel(saturationTex, sigSamp, vec2<f32>(0.5, 0.5), 0.0).r;\n\t}\n\tcolor = apply_saturation(color, saturation);\n\n\t// 4. Contrast\n\tvar contrast = u.contrast;\n\tif (u.hasSignal_contrast > 0.5) {\n\t\tcontrast = textureSampleLevel(contrastTex, sigSamp, vec2<f32>(0.5, 0.5), 0.0).r;\n\t}\n\tcolor = apply_contrast(color, contrast);\n\n\t// 5. Brightness\n\tvar brightness = u.brightness;\n\tif (u.hasSignal_brightness > 0.5) {\n\t\tbrightness = textureSampleLevel(brightnessTex, sigSamp, vec2<f32>(0.5, 0.5), 0.0).r;\n\t}\n\tcolor = apply_brightness(color, brightness);\n\n\t// 6. Sepia\n\tvar sepia = u.sepia;\n\tif (u.hasSignal_sepia > 0.5) {\n\t\tsepia = textureSampleLevel(sepiaTex, sigSamp, vec2<f32>(0.5, 0.5), 0.0).r;\n\t}\n\tcolor = apply_sepia(color, sepia);\n\n\treturn color;\n}\n`;\nconst deviceResourceCache = /* @__PURE__ */ new WeakMap();\nconst modulateData = new Float32Array(12);\nfunction getDeviceLayouts(device) {\n\tlet res = deviceResourceCache.get(device);\n\tif (res) return res;\n\tres = {\n\t\tmodulateUniformLayout: device.createBindGroupLayout({ entries: [{\n\t\t\tbinding: 0,\n\t\t\tvisibility: GPUShaderStage.FRAGMENT,\n\t\t\tbuffer: { type: \"uniform\" }\n\t\t}] }),\n\t\tsingleTextureLayout: device.createBindGroupLayout({ entries: [{\n\t\t\tbinding: 0,\n\t\t\tvisibility: GPUShaderStage.FRAGMENT,\n\t\t\ttexture: { sampleType: \"float\" }\n\t\t}, {\n\t\t\tbinding: 1,\n\t\t\tvisibility: GPUShaderStage.FRAGMENT,\n\t\t\tsampler: { type: \"filtering\" }\n\t\t}] }),\n\t\tmodulateSignalsLayout: device.createBindGroupLayout({ entries: [\n\t\t\t{\n\t\t\t\tbinding: 0,\n\t\t\t\tvisibility: GPUShaderStage.FRAGMENT,\n\t\t\t\ttexture: { sampleType: \"float\" }\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 1,\n\t\t\t\tvisibility: GPUShaderStage.FRAGMENT,\n\t\t\t\ttexture: { sampleType: \"float\" }\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 2,\n\t\t\t\tvisibility: GPUShaderStage.FRAGMENT,\n\t\t\t\ttexture: { sampleType: \"float\" }\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 3,\n\t\t\t\tvisibility: GPUShaderStage.FRAGMENT,\n\t\t\t\ttexture: { sampleType: \"float\" }\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 4,\n\t\t\t\tvisibility: GPUShaderStage.FRAGMENT,\n\t\t\t\ttexture: { sampleType: \"float\" }\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 5,\n\t\t\t\tvisibility: GPUShaderStage.FRAGMENT,\n\t\t\t\ttexture: { sampleType: \"float\" }\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 6,\n\t\t\t\tvisibility: GPUShaderStage.FRAGMENT,\n\t\t\t\tsampler: { type: \"filtering\" }\n\t\t\t}\n\t\t] }),\n\t\tpipelineCache: /* @__PURE__ */ new Map()\n\t};\n\tdeviceResourceCache.set(device, res);\n\treturn res;\n}\nfunction getModulateResources(device, format) {\n\tconst layouts = getDeviceLayouts(device);\n\tconst cacheKey = `modulate_${format}`;\n\tlet pipeline = layouts.pipelineCache.get(cacheKey);\n\tif (!pipeline) {\n\t\tconst modulateModule = device.createShaderModule({\n\t\t\tlabel: `modulate_static_${format}.wgsl`,\n\t\t\tcode: STATIC_MODULATE_SHADER\n\t\t});\n\t\tpipeline = device.createRenderPipeline({\n\t\t\tlabel: `ModulatePipeline_static_${format}`,\n\t\t\tlayout: device.createPipelineLayout({ bindGroupLayouts: [\n\t\t\t\tlayouts.modulateUniformLayout,\n\t\t\t\tlayouts.singleTextureLayout,\n\t\t\t\tlayouts.modulateSignalsLayout\n\t\t\t] }),\n\t\t\tvertex: {\n\t\t\t\tmodule: modulateModule,\n\t\t\t\tentryPoint: \"vs\"\n\t\t\t},\n\t\t\tfragment: {\n\t\t\t\tmodule: modulateModule,\n\t\t\t\tentryPoint: \"fs\",\n\t\t\t\ttargets: [{ format }]\n\t\t\t},\n\t\t\tprimitive: { topology: \"triangle-strip\" }\n\t\t});\n\t\tlayouts.pipelineCache.set(cacheKey, pipeline);\n\t}\n\treturn {\n\t\tmodulatePipeline: pipeline,\n\t\tmodulateUniformLayout: layouts.modulateUniformLayout,\n\t\tsingleTextureLayout: layouts.singleTextureLayout,\n\t\tmodulateSignalsLayout: layouts.modulateSignalsLayout\n\t};\n}\nconst ModulateWebGPURenderer = async (args) => {\n\tconst { ctx, encoder, pass, targetView, targetTexture, targetWidth, targetHeight, props, drawChild } = args;\n\tconst frame = props.frame ?? 0;\n\tconst fps = props.fps || 30;\n\tconst op = props.virtualMedia?.operation;\n\tif (op?.op !== \"Modulate\" || !op) return;\n\tconst childMedia = props.virtualMedia.children?.[0];\n\tif (!childMedia) return;\n\tpass.end();\n\tconst hueInfo = resolveModulateField(op, \"hue\", 0, 0, 360, frame, fps);\n\tconst brightnessInfo = resolveModulateField(op, \"brightness\", 1, 0, 2, frame, fps);\n\tconst contrastInfo = resolveModulateField(op, \"contrast\", 1, 0, 2, frame, fps);\n\tconst exposureInfo = resolveModulateField(op, \"exposure\", 0, -2, 2, frame, fps);\n\tconst saturationInfo = resolveModulateField(op, \"saturation\", 1, 0, 2, frame, fps);\n\tconst sepiaInfo = resolveModulateField(op, \"sepia\", 0, 0, 1, frame, fps);\n\tconst width = targetWidth;\n\tconst height = targetHeight;\n\tconst tmpTex = ctx.renderer.getTemporaryTexture(width, height, [...props.excludeTextures || [], targetTexture]);\n\tconst tmpView = tmpTex.createView();\n\tctx.renderer.beginFrame(encoder, tmpView, {\n\t\tr: 0,\n\t\tg: 0,\n\t\tb: 0,\n\t\ta: 0\n\t}, width, height, \"clear\").end();\n\tctx.renderer.pushScissor({\n\t\tx: 0,\n\t\ty: 0,\n\t\twidth,\n\t\theight\n\t});\n\tctx.renderer.pushIdentity();\n\tawait drawChild(childMedia, {\n\t\t...props,\n\t\tvirtualMedia: childMedia\n\t}, tmpView, tmpTex, width, height);\n\tctx.renderer.popTransform();\n\tctx.renderer.popScissor();\n\tconst { modulatePipeline: pipeline, modulateUniformLayout: uLayout, singleTextureLayout: tLayout, modulateSignalsLayout: sigLayout } = getModulateResources(ctx.device, ctx.renderer.format);\n\tconst sampler = ctx.renderer.samplerCache.getSampler(ctx.device);\n\tconst outTex = ctx.renderer.getTemporaryTexture(width, height, [\n\t\ttmpTex,\n\t\ttargetTexture,\n\t\t...props.excludeTextures || []\n\t]);\n\tmodulateData[0] = hueInfo.value;\n\tmodulateData[1] = brightnessInfo.value;\n\tmodulateData[2] = contrastInfo.value;\n\tmodulateData[3] = exposureInfo.value;\n\tmodulateData[4] = saturationInfo.value;\n\tmodulateData[5] = sepiaInfo.value;\n\tconst fields = [\n\t\t{\n\t\t\tname: \"hue\",\n\t\t\tinfo: hueInfo,\n\t\t\tidx: 6\n\t\t},\n\t\t{\n\t\t\tname: \"brightness\",\n\t\t\tinfo: brightnessInfo,\n\t\t\tidx: 7\n\t\t},\n\t\t{\n\t\t\tname: \"contrast\",\n\t\t\tinfo: contrastInfo,\n\t\t\tidx: 8\n\t\t},\n\t\t{\n\t\t\tname: \"exposure\",\n\t\t\tinfo: exposureInfo,\n\t\t\tidx: 9\n\t\t},\n\t\t{\n\t\t\tname: \"saturation\",\n\t\t\tinfo: saturationInfo,\n\t\t\tidx: 10\n\t\t},\n\t\t{\n\t\t\tname: \"sepia\",\n\t\t\tinfo: sepiaInfo,\n\t\t\tidx: 11\n\t\t}\n\t];\n\tconst signalViews = [];\n\tconst elapsedSeconds = props.elapsedMs !== void 0 ? props.elapsedMs / 1e3 : frame / fps;\n\tconst durationSeconds = props.virtualMedia?.metadata?.durationMs ? props.virtualMedia.metadata.durationMs / 1e3 : props.durationMs !== void 0 ? props.durationMs / 1e3 : 0;\n\tfor (const f of fields) {\n\t\tconst isGenerator = !!(f.info.hasSignal && f.info.sd);\n\t\tmodulateData[f.idx] = isGenerator ? 1 : 0;\n\t\tif (isGenerator) {\n\t\t\tconst view = signalRegistry.getOrCreate2DTextureView(ctx.device, encoder, f.info.sd.nodeId ?? `modulate_${f.name}_sig`, elapsedSeconds, durationSeconds, f.info.sd, width, height, props.renderId, frame, fps);\n\t\t\tsignalViews.push(view);\n\t\t} else signalViews.push(signalRegistry.getDummy1x1TextureView(ctx.device));\n\t}\n\tconst buffer = ctx.renderer.getTemporaryBuffer(modulateData);\n\tconst renderPass = encoder.beginRenderPass({ colorAttachments: [{\n\t\tview: outTex.createView(),\n\t\tloadOp: \"clear\",\n\t\tstoreOp: \"store\",\n\t\tclearValue: {\n\t\t\tr: 0,\n\t\t\tg: 0,\n\t\t\tb: 0,\n\t\t\ta: 0\n\t\t}\n\t}] });\n\trenderPass.setPipeline(pipeline);\n\trenderPass.setBindGroup(0, ctx.device.createBindGroup({\n\t\tlayout: uLayout,\n\t\tentries: [{\n\t\t\tbinding: 0,\n\t\t\tresource: { buffer }\n\t\t}]\n\t}));\n\trenderPass.setBindGroup(1, ctx.renderer.bindGroupCache.getBindGroup(ctx.device, tLayout, tmpTex, sampler));\n\trenderPass.setBindGroup(2, ctx.device.createBindGroup({\n\t\tlayout: sigLayout,\n\t\tentries: [\n\t\t\t{\n\t\t\t\tbinding: 0,\n\t\t\t\tresource: signalViews[0]\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 1,\n\t\t\t\tresource: signalViews[1]\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 2,\n\t\t\t\tresource: signalViews[2]\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 3,\n\t\t\t\tresource: signalViews[3]\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 4,\n\t\t\t\tresource: signalViews[4]\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 5,\n\t\t\t\tresource: signalViews[5]\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 6,\n\t\t\t\tresource: sampler\n\t\t\t}\n\t\t]\n\t}));\n\trenderPass.draw(4);\n\trenderPass.end();\n\tconst finalPass = ctx.renderer.beginFrame(encoder, targetView, {\n\t\tr: 0,\n\t\tg: 0,\n\t\tb: 0,\n\t\ta: 0\n\t}, targetWidth, targetHeight, \"load\");\n\tctx.renderer.drawTexture(finalPass, outTex, {\n\t\tx: 0,\n\t\ty: 0,\n\t\twidth: targetWidth,\n\t\theight: targetHeight\n\t}, { opacity: op.opacity ?? 1 });\n\targs.pass = finalPass;\n};\n\n//#endregion\n//#region src/renderers/index.ts\nvar renderers_default = defineRenderer({ WebGPURenderer: ModulateWebGPURenderer });\n\n//#endregion\nexport { renderers_default as t };\n//# sourceMappingURL=renderers-BsAofaFw.mjs.map","import { decodeAudioSource } from \"@gitframes/compositions\";\nimport {\n\ttype FrameSignal,\n\tframeArraySignal,\n\ttype GPUTextureBinding,\n} from \"@gitframes/core\";\nimport {\n\ttype AudioSignalComputeConfig,\n\tAudioSignalComputePipeline,\n\tensureDevice,\n} from \"@gitframes/webgpu-renderers\";\n\nexport interface AudioSignalOptions extends AudioSignalComputeConfig {\n\tfps?: number;\n\ttargetWidth?: number;\n\tpreviewMode?: \"waveform\" | \"envelope\" | \"beat_markers\" | \"spectrum\";\n}\n\nexport interface ExtractedAudioSignalsBundle {\n\tprimary: FrameSignal<number>;\n\tbeat: FrameSignal<number>;\n\tbass: FrameSignal<number>;\n\tenergy: FrameSignal<number>;\n\tdurationSec: number;\n\tnumFrames: number;\n\tsampleRate: number;\n\ttextureView: unknown;\n\ttexture: unknown;\n\tprimaryBuffer: unknown;\n\tbeatBuffer: unknown;\n\tbassBuffer: unknown;\n\tenergyBuffer: unknown;\n\tseekFrame(frame: number): void;\n}\n\nexport const AudioSignal = {\n\tasync extractFromChannels(\n\t\tchannels: Float32Array[],\n\t\tsampleRate: number,\n\t\toptions: AudioSignalOptions = {},\n\t): Promise<ExtractedAudioSignalsBundle> {\n\t\tconst device = await ensureDevice();\n\t\tconst fps = options.fps ?? 24;\n\t\tconst targetWidth = options.targetWidth ?? 512;\n\n\t\tconst extracted = await AudioSignalComputePipeline.extractFeatures(\n\t\t\tdevice,\n\t\t\tchannels,\n\t\t\tsampleRate,\n\t\t\tfps,\n\t\t\toptions,\n\t\t\ttargetWidth,\n\t\t);\n\n\t\tconst samples = extracted.channelSamples ?? {\n\t\t\tprimary: new Float32Array(extracted.numFrames),\n\t\t\tbeat: new Float32Array(extracted.numFrames),\n\t\t\tbass: new Float32Array(extracted.numFrames),\n\t\t\tenergy: new Float32Array(extracted.numFrames),\n\t\t};\n\n\t\tconst primaryBinding: GPUTextureBinding = {\n\t\t\tnodeId: \"audio_primary\",\n\t\t\tchannel: \"primary\",\n\t\t\ttextureView: extracted.textureView,\n\t\t\ttexture: extracted.texture,\n\t\t\tbuffer: extracted.primaryBuffer,\n\t\t\tstats: extracted.stats.primary,\n\t\t};\n\t\tconst beatBinding: GPUTextureBinding = {\n\t\t\tnodeId: \"audio_beat\",\n\t\t\tchannel: \"beat\",\n\t\t\ttextureView: extracted.textureView,\n\t\t\ttexture: extracted.texture,\n\t\t\tbuffer: extracted.beatBuffer,\n\t\t\tstats: extracted.stats.beat,\n\t\t};\n\t\tconst bassBinding: GPUTextureBinding = {\n\t\t\tnodeId: \"audio_bass\",\n\t\t\tchannel: \"bass\",\n\t\t\ttextureView: extracted.textureView,\n\t\t\ttexture: extracted.texture,\n\t\t\tbuffer: extracted.bassBuffer,\n\t\t\tstats: extracted.stats.bass,\n\t\t};\n\t\tconst energyBinding: GPUTextureBinding = {\n\t\t\tnodeId: \"audio_energy\",\n\t\t\tchannel: \"energy\",\n\t\t\ttextureView: extracted.textureView,\n\t\t\ttexture: extracted.texture,\n\t\t\tbuffer: extracted.energyBuffer,\n\t\t\tstats: extracted.stats.energy,\n\t\t};\n\n\t\tconst primary = frameArraySignal(samples.primary, fps, primaryBinding);\n\t\tconst beat = frameArraySignal(samples.beat, fps, beatBinding);\n\t\tconst bass = frameArraySignal(samples.bass, fps, bassBinding);\n\t\tconst energy = frameArraySignal(samples.energy, fps, energyBinding);\n\n\t\treturn {\n\t\t\tprimary,\n\t\t\tbeat,\n\t\t\tbass,\n\t\t\tenergy,\n\t\t\tdurationSec: extracted.durationSec,\n\t\t\tnumFrames: extracted.numFrames,\n\t\t\tsampleRate,\n\t\t\ttextureView: extracted.textureView,\n\t\t\ttexture: extracted.texture,\n\t\t\tprimaryBuffer: extracted.primaryBuffer,\n\t\t\tbeatBuffer: extracted.beatBuffer,\n\t\t\tbassBuffer: extracted.bassBuffer,\n\t\t\tenergyBuffer: extracted.energyBuffer,\n\t\t\tseekFrame(frame: number) {\n\t\t\t\tprimary.seekFrame?.(frame);\n\t\t\t\tbeat.seekFrame?.(frame);\n\t\t\t\tbass.seekFrame?.(frame);\n\t\t\t\tenergy.seekFrame?.(frame);\n\t\t\t},\n\t\t};\n\t},\n\n\tasync extract(\n\t\tsource: string,\n\t\toptions: AudioSignalOptions = {},\n\t): Promise<ExtractedAudioSignalsBundle> {\n\t\tconst decoded = await decodeAudioSource(source);\n\t\tif (!decoded || decoded.channels.length === 0) {\n\t\t\tthrow new Error(\n\t\t\t\t`Failed to decode audio source for feature extraction: ${source}`,\n\t\t\t);\n\t\t}\n\t\treturn AudioSignal.extractFromChannels(\n\t\t\tdecoded.channels,\n\t\t\tdecoded.sampleRate,\n\t\t\toptions,\n\t\t);\n\t},\n};\n"],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ import { createRequire } from "node:module";
2
+
3
+ //#region rolldown:runtime
4
+ var __create = Object.create;
5
+ var __defProp = Object.defineProperty;
6
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
7
+ var __getOwnPropNames = Object.getOwnPropertyNames;
8
+ var __getProtoOf = Object.getPrototypeOf;
9
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
10
+ var __esmMin = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
11
+ var __commonJSMin = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
12
+ var __exportAll = (all, symbols) => {
13
+ let target = {};
14
+ for (var name in all) {
15
+ __defProp(target, name, {
16
+ get: all[name],
17
+ enumerable: true
18
+ });
19
+ }
20
+ if (symbols) {
21
+ __defProp(target, Symbol.toStringTag, { value: "Module" });
22
+ }
23
+ return target;
24
+ };
25
+ var __copyProps = (to, from, except, desc) => {
26
+ if (from && typeof from === "object" || typeof from === "function") {
27
+ for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
28
+ key = keys[i];
29
+ if (!__hasOwnProp.call(to, key) && key !== except) {
30
+ __defProp(to, key, {
31
+ get: ((k) => from[k]).bind(null, key),
32
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
33
+ });
34
+ }
35
+ }
36
+ }
37
+ return to;
38
+ };
39
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
40
+ value: mod,
41
+ enumerable: true
42
+ }) : target, mod));
43
+ var __toCommonJS = (mod) => __hasOwnProp.call(mod, "module.exports") ? mod["module.exports"] : __copyProps(__defProp({}, "__esModule", { value: true }), mod);
44
+ var __require = /* @__PURE__ */ createRequire(import.meta.url);
45
+
46
+ //#endregion
47
+ export { __toCommonJS as a, __require as i, __esmMin as n, __toESM as o, __exportAll as r, __commonJSMin as t };