@opendaw/studio-core 0.0.112 → 0.0.114

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 (63) hide show
  1. package/dist/AudioUnitFreeze.d.ts +15 -0
  2. package/dist/AudioUnitFreeze.d.ts.map +1 -0
  3. package/dist/AudioUnitFreeze.js +129 -0
  4. package/dist/Engine.d.ts +1 -0
  5. package/dist/Engine.d.ts.map +1 -1
  6. package/dist/EngineFacade.d.ts +1 -0
  7. package/dist/EngineFacade.d.ts.map +1 -1
  8. package/dist/EngineFacade.js +3 -0
  9. package/dist/EngineWorklet.d.ts +1 -0
  10. package/dist/EngineWorklet.d.ts.map +1 -1
  11. package/dist/EngineWorklet.js +4 -0
  12. package/dist/OfflineEngineRenderer.d.ts.map +1 -1
  13. package/dist/OfflineEngineRenderer.js +1 -0
  14. package/dist/StudioPreferences.d.ts +1 -0
  15. package/dist/StudioPreferences.d.ts.map +1 -1
  16. package/dist/StudioSettings.d.ts +1 -0
  17. package/dist/StudioSettings.d.ts.map +1 -1
  18. package/dist/StudioSettings.js +4 -2
  19. package/dist/capture/CaptureDevices.d.ts.map +1 -1
  20. package/dist/capture/CaptureDevices.js +6 -1
  21. package/dist/index.d.ts +1 -0
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +1 -0
  24. package/dist/offline-engine.js.map +1 -1
  25. package/dist/processors.js +8 -8
  26. package/dist/processors.js.map +4 -4
  27. package/dist/project/Project.d.ts +2 -0
  28. package/dist/project/Project.d.ts.map +1 -1
  29. package/dist/project/Project.js +3 -0
  30. package/dist/ui/canvas/capturing.d.ts +17 -0
  31. package/dist/ui/canvas/capturing.d.ts.map +1 -0
  32. package/dist/ui/canvas/capturing.js +18 -0
  33. package/dist/ui/canvas/index.d.ts +4 -0
  34. package/dist/ui/canvas/index.d.ts.map +1 -0
  35. package/dist/ui/canvas/index.js +3 -0
  36. package/dist/ui/canvas/painter.d.ts +32 -0
  37. package/dist/ui/canvas/painter.d.ts.map +1 -0
  38. package/dist/ui/canvas/painter.js +81 -0
  39. package/dist/ui/canvas/scale.d.ts +22 -0
  40. package/dist/ui/canvas/scale.d.ts.map +1 -0
  41. package/dist/ui/canvas/scale.js +34 -0
  42. package/dist/ui/index.d.ts +2 -0
  43. package/dist/ui/index.d.ts.map +1 -1
  44. package/dist/ui/index.js +2 -0
  45. package/dist/ui/renderer/audio.d.ts +9 -0
  46. package/dist/ui/renderer/audio.d.ts.map +1 -0
  47. package/dist/ui/renderer/audio.js +277 -0
  48. package/dist/ui/renderer/env.d.ts +5 -0
  49. package/dist/ui/renderer/env.d.ts.map +1 -0
  50. package/dist/ui/renderer/env.js +1 -0
  51. package/dist/ui/renderer/fading.d.ts +7 -0
  52. package/dist/ui/renderer/fading.d.ts.map +1 -0
  53. package/dist/ui/renderer/fading.js +55 -0
  54. package/dist/ui/renderer/index.d.ts +6 -0
  55. package/dist/ui/renderer/index.d.ts.map +1 -0
  56. package/dist/ui/renderer/index.js +5 -0
  57. package/dist/ui/renderer/notes.d.ts +7 -0
  58. package/dist/ui/renderer/notes.d.ts.map +1 -0
  59. package/dist/ui/renderer/notes.js +23 -0
  60. package/dist/ui/renderer/value.d.ts +7 -0
  61. package/dist/ui/renderer/value.d.ts.map +1 -0
  62. package/dist/ui/renderer/value.js +101 -0
  63. package/package.json +10 -10
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fading.d.ts","sourceRoot":"","sources":["../../../src/ui/renderer/fading.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,cAAc,EAAC,MAAM,kBAAkB,CAAA;AAC/C,OAAO,EAAC,aAAa,EAAC,MAAM,aAAa,CAAA;AACzC,OAAO,EAAC,WAAW,EAAC,MAAM,OAAO,CAAA;AAEjC,yBAAiB,mBAAmB,CAAC;IAC1B,MAAM,MAAM,GAAI,SAAS,wBAAwB,EACjC,OAAO,aAAa,EACpB,QAAQ,cAAc,CAAC,MAAM,EAC7B,iBAAe,WAAW,EAC1B,WAAW,MAAM,EACjB,SAAS,MAAM,EACf,OAAO,MAAM,KAAG,IAkDtC,CAAA;CACJ"}
@@ -0,0 +1,55 @@
1
+ import { Curve, TAU } from "@opendaw/lib-std";
2
+ export var AudioFadingRenderer;
3
+ (function (AudioFadingRenderer) {
4
+ AudioFadingRenderer.render = (context, range, fading, { top, bottom }, startPPQN, endPPQN, color) => {
5
+ const { inSlope: fadeInSlope, outSlope: fadeOutSlope } = fading;
6
+ const duration = endPPQN - startPPQN;
7
+ const totalFading = fading.in + fading.out;
8
+ const scale = totalFading > duration ? duration / totalFading : 1.0;
9
+ const fadeIn = fading.in * scale;
10
+ const fadeOut = fading.out * scale;
11
+ context.strokeStyle = color;
12
+ context.fillStyle = "rgba(0,0,0,0.25)";
13
+ context.lineWidth = devicePixelRatio;
14
+ if (fadeIn > 0) {
15
+ const fadeInEndPPQN = startPPQN + fadeIn;
16
+ const x0 = range.unitToX(startPPQN) * devicePixelRatio;
17
+ const x1 = range.unitToX(fadeInEndPPQN) * devicePixelRatio;
18
+ const xn = x1 - x0;
19
+ const path = new Path2D();
20
+ path.moveTo(x0, bottom);
21
+ let x = x0;
22
+ Curve.run(fadeInSlope, xn, bottom, top, y => path.lineTo(++x, y));
23
+ path.lineTo(x1, top);
24
+ context.stroke(path);
25
+ path.lineTo(x0, top);
26
+ path.lineTo(x0, bottom);
27
+ context.fill(path);
28
+ }
29
+ if (fadeOut > 0) {
30
+ const x0 = range.unitToX(endPPQN - fadeOut) * devicePixelRatio;
31
+ const x1 = range.unitToX(endPPQN) * devicePixelRatio;
32
+ const xn = x1 - x0;
33
+ const path = new Path2D();
34
+ path.moveTo(x0, top);
35
+ let x = x0;
36
+ Curve.run(fadeOutSlope, xn, top, bottom, y => path.lineTo(++x, y));
37
+ path.lineTo(x1, bottom);
38
+ context.strokeStyle = color;
39
+ context.stroke(path);
40
+ path.lineTo(x1, top);
41
+ path.lineTo(x0, top);
42
+ context.fill(path);
43
+ }
44
+ const handleRadius = 1.5 * devicePixelRatio;
45
+ const x0 = Math.max(range.unitToX(startPPQN + fadeIn), range.unitToX(startPPQN)) * devicePixelRatio;
46
+ const x1 = Math.min(range.unitToX(endPPQN - fadeOut), range.unitToX(endPPQN)) * devicePixelRatio;
47
+ context.fillStyle = color;
48
+ context.beginPath();
49
+ context.arc(x0, top, handleRadius, 0, TAU);
50
+ context.fill();
51
+ context.beginPath();
52
+ context.arc(x1, top, handleRadius, 0, TAU);
53
+ context.fill();
54
+ };
55
+ })(AudioFadingRenderer || (AudioFadingRenderer = {}));
@@ -0,0 +1,6 @@
1
+ export * from "./audio";
2
+ export * from "./env";
3
+ export * from "./fading";
4
+ export * from "./notes";
5
+ export * from "./value";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/renderer/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA;AACvB,cAAc,OAAO,CAAA;AACrB,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA"}
@@ -0,0 +1,5 @@
1
+ export * from "./audio";
2
+ export * from "./env";
3
+ export * from "./fading";
4
+ export * from "./notes";
5
+ export * from "./value";
@@ -0,0 +1,7 @@
1
+ import { NoteRegionBoxAdapter } from "@opendaw/studio-adapters";
2
+ import { LoopableRegion } from "@opendaw/lib-dsp";
3
+ import { RegionBound, TimelineRange } from "../../index";
4
+ export declare namespace NotesRenderer {
5
+ const render: (context: CanvasRenderingContext2D, range: TimelineRange, region: NoteRegionBoxAdapter, { top, bottom }: RegionBound, contentColor: string, { rawStart, regionStart, resultStart, resultEnd }: LoopableRegion.LoopCycle) => void;
6
+ }
7
+ //# sourceMappingURL=notes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notes.d.ts","sourceRoot":"","sources":["../../../src/ui/renderer/notes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,oBAAoB,EAAC,MAAM,0BAA0B,CAAA;AAC7D,OAAO,EAAC,cAAc,EAAC,MAAM,kBAAkB,CAAA;AAC/C,OAAO,EAAC,WAAW,EAAE,aAAa,EAAC,MAAM,aAAa,CAAA;AAEtD,yBAAiB,aAAa,CAAC;IACpB,MAAM,MAAM,GAAI,SAAS,wBAAwB,EACjC,OAAO,aAAa,EACpB,QAAQ,oBAAoB,EAC5B,iBAAe,WAAW,EAC1B,cAAc,MAAM,EACpB,mDAAiD,cAAc,CAAC,SAAS,SAiB/F,CAAA;CACJ"}
@@ -0,0 +1,23 @@
1
+ export var NotesRenderer;
2
+ (function (NotesRenderer) {
3
+ NotesRenderer.render = (context, range, region, { top, bottom }, contentColor, { rawStart, regionStart, resultStart, resultEnd }) => {
4
+ const collection = region.optCollection.unwrap();
5
+ const height = bottom - top;
6
+ context.fillStyle = contentColor;
7
+ const padding = 8;
8
+ const noteHeight = 5;
9
+ const searchStart = Math.floor(resultStart - rawStart);
10
+ const searchEnd = Math.floor(resultEnd - rawStart);
11
+ for (const note of collection.events.iterateRange(searchStart - collection.maxDuration, searchEnd)) {
12
+ const position = rawStart + note.position;
13
+ if (position < regionStart) {
14
+ continue;
15
+ }
16
+ const complete = Math.min(rawStart + note.complete, resultEnd);
17
+ const x0 = Math.floor(range.unitToX(position) * devicePixelRatio);
18
+ const x1 = Math.floor(range.unitToX(complete) * devicePixelRatio);
19
+ const y = top + padding + Math.floor(note.normalizedPitch() * (height - (padding * 2 + noteHeight)));
20
+ context.fillRect(x0, y, Math.max(1, x1 - x0), noteHeight);
21
+ }
22
+ };
23
+ })(NotesRenderer || (NotesRenderer = {}));
@@ -0,0 +1,7 @@
1
+ import { LoopableRegion, ValueEvent } from "@opendaw/lib-dsp";
2
+ import { Func, unitValue } from "@opendaw/lib-std";
3
+ import { TimelineRange } from "../../index";
4
+ export declare namespace ValueStreamRenderer {
5
+ const render: (context: CanvasRenderingContext2D, range: TimelineRange, generator: IterableIterator<ValueEvent>, valueToY: Func<unitValue, number>, contentColor: string, alphaFill: unitValue, anchor: unitValue, { resultStart, resultEnd, rawStart: delta }: LoopableRegion.LoopCycle) => void;
6
+ }
7
+ //# sourceMappingURL=value.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"value.d.ts","sourceRoot":"","sources":["../../../src/ui/renderer/value.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAE,UAAU,EAAC,MAAM,kBAAkB,CAAA;AAC3D,OAAO,EAA2B,IAAI,EAAE,SAAS,EAAC,MAAM,kBAAkB,CAAA;AAC1E,OAAO,EAAC,aAAa,EAAC,MAAM,aAAa,CAAA;AAEzC,yBAAiB,mBAAmB,CAAC;IAC1B,MAAM,MAAM,GAAI,SAAS,wBAAwB,EACjC,OAAO,aAAa,EACpB,WAAW,gBAAgB,CAAC,UAAU,CAAC,EACvC,UAAU,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,EACjC,cAAc,MAAM,EACpB,WAAW,SAAS,EACpB,QAAQ,SAAS,EACjB,6CAA2C,cAAc,CAAC,SAAS,SAuFzF,CAAA;CACJ"}
@@ -0,0 +1,101 @@
1
+ import { asDefined, assert, Curve } from "@opendaw/lib-std";
2
+ export var ValueStreamRenderer;
3
+ (function (ValueStreamRenderer) {
4
+ ValueStreamRenderer.render = (context, range, generator, valueToY, contentColor, alphaFill, anchor, { resultStart, resultEnd, rawStart: delta }) => {
5
+ const { done, value } = generator.next();
6
+ if (done) {
7
+ return;
8
+ }
9
+ const unitToX = (unit) => range.unitToX(unit + delta) * devicePixelRatio;
10
+ const path = new Path2D();
11
+ const windowMin = resultStart - delta;
12
+ const windowMax = resultEnd - delta;
13
+ const xMin = unitToX(windowMin);
14
+ const xMax = unitToX(windowMax);
15
+ let notMoved = true; // makes sure we start with a moveTo command
16
+ let prev = asDefined(value);
17
+ for (const next of generator) {
18
+ assert(prev !== next, "iterator error");
19
+ const { position: p0, value: v0, interpolation } = prev;
20
+ const { position: p1, value: v1 } = next;
21
+ const type = interpolation.type;
22
+ const x0 = unitToX(p0);
23
+ const x1 = unitToX(p1);
24
+ const y0 = valueToY(v0);
25
+ const y1 = valueToY(v1);
26
+ if (type === "none" || p1 - p0 === 0) { // hold and jumps to the next event's value
27
+ if (notMoved) {
28
+ if (p1 > windowMax) {
29
+ break;
30
+ } // leave the rest for after the loop
31
+ path.moveTo(xMin, y0); // move pen to window min
32
+ path.lineTo(x1, y0); // line to next event
33
+ notMoved = false;
34
+ }
35
+ if (x1 > xMax) {
36
+ break;
37
+ }
38
+ path.lineTo(x1, y0); // hold value to the next event
39
+ path.lineTo(x1, y1); // jump to the next event value
40
+ }
41
+ else if (type === "linear") {
42
+ const ratio = (v1 - v0) / (p1 - p0);
43
+ if (notMoved) {
44
+ path.moveTo(xMin, valueToY(p0 < windowMin ? v0 + ratio * (windowMin - p0) : v0)); // move pen to window min
45
+ if (p0 > windowMin) {
46
+ path.lineTo(x0, y0);
47
+ } // line to first event
48
+ notMoved = false;
49
+ }
50
+ if (p1 > windowMax) {
51
+ path.lineTo(xMax, valueToY(v0 + ratio * (windowMax - p0))); // line to window max
52
+ }
53
+ else {
54
+ path.lineTo(x1, y1); // line to next event
55
+ }
56
+ }
57
+ else if (type === "curve") {
58
+ const cx0 = Math.max(x0, xMin);
59
+ const cx1 = Math.min(x1, xMax);
60
+ const definition = { slope: interpolation.slope, steps: x1 - x0, y0, y1 };
61
+ if (notMoved) {
62
+ if (p0 > windowMin) {
63
+ path.moveTo(xMin, y0); // move to window edge
64
+ path.lineTo(x0, y0); // draw the line to the first event
65
+ }
66
+ else {
67
+ path.moveTo(cx0, Curve.valueAt(definition, cx0 - x0));
68
+ }
69
+ notMoved = false;
70
+ }
71
+ // TODO We can optimise this by walking the Curve.coefficients
72
+ for (let x = cx0; x <= cx1; x += 4) {
73
+ path.lineTo(x, Curve.valueAt(definition, x - x0));
74
+ }
75
+ path.lineTo(cx1, Curve.valueAt(definition, cx1 - x0));
76
+ }
77
+ prev = next;
78
+ }
79
+ if (notMoved) {
80
+ // we have not moved, so let's draw a straight line from min to max to respect the sole event
81
+ path.moveTo(xMin, valueToY(prev.value));
82
+ path.lineTo(xMax, valueToY(prev.value));
83
+ }
84
+ else if (prev.position < windowMax) {
85
+ // hold value to the window max
86
+ path.lineTo(xMax, valueToY(prev.value));
87
+ }
88
+ const yMin = valueToY(anchor) + devicePixelRatio;
89
+ const style = contentColor;
90
+ context.fillStyle = style;
91
+ context.strokeStyle = style;
92
+ context.beginPath();
93
+ context.stroke(path);
94
+ path.lineTo(xMax, yMin);
95
+ path.lineTo(xMin, yMin);
96
+ path.closePath();
97
+ context.globalAlpha = alphaFill;
98
+ context.fill(path);
99
+ context.globalAlpha = 1.00;
100
+ };
101
+ })(ValueStreamRenderer || (ValueStreamRenderer = {}));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opendaw/studio-core",
3
- "version": "0.0.112",
3
+ "version": "0.0.114",
4
4
  "license": "LGPL-3.0-or-later",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -34,16 +34,16 @@
34
34
  },
35
35
  "dependencies": {
36
36
  "@opendaw/lib-box": "^0.0.75",
37
- "@opendaw/lib-dawproject": "^0.0.59",
37
+ "@opendaw/lib-dawproject": "^0.0.60",
38
38
  "@opendaw/lib-dom": "^0.0.75",
39
- "@opendaw/lib-dsp": "^0.0.73",
39
+ "@opendaw/lib-dsp": "^0.0.74",
40
40
  "@opendaw/lib-fusion": "^0.0.80",
41
41
  "@opendaw/lib-runtime": "^0.0.71",
42
42
  "@opendaw/lib-std": "^0.0.70",
43
43
  "@opendaw/nam-wasm": "^1.0.3",
44
- "@opendaw/studio-adapters": "^0.0.90",
45
- "@opendaw/studio-boxes": "^0.0.77",
46
- "@opendaw/studio-enums": "^0.0.65",
44
+ "@opendaw/studio-adapters": "^0.0.91",
45
+ "@opendaw/studio-boxes": "^0.0.78",
46
+ "@opendaw/studio-enums": "^0.0.66",
47
47
  "dropbox": "^10.34.0",
48
48
  "y-websocket": "^1.4.5",
49
49
  "yjs": "^13.6.27",
@@ -57,10 +57,10 @@
57
57
  "@ffmpeg/ffmpeg": "^0.12.15",
58
58
  "@ffmpeg/util": "^0.12.2",
59
59
  "@opendaw/eslint-config": "^0.0.27",
60
- "@opendaw/studio-core-processors": "^0.0.93",
61
- "@opendaw/studio-core-workers": "^0.0.85",
62
- "@opendaw/studio-forge-boxes": "^0.0.77",
60
+ "@opendaw/studio-core-processors": "^0.0.94",
61
+ "@opendaw/studio-core-workers": "^0.0.86",
62
+ "@opendaw/studio-forge-boxes": "^0.0.78",
63
63
  "@opendaw/typescript-config": "^0.0.29"
64
64
  },
65
- "gitHead": "731fdb7389fd85b216ec7d7d343baa92cc9eeeee"
65
+ "gitHead": "4781e65b5b6bc29077d2e32da950b8a6a352dfce"
66
66
  }