@opendaw/studio-core 0.0.16 → 0.0.18

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.
@@ -0,0 +1,7 @@
1
+ import { Project } from "./Project";
2
+ import { ProjectEnv } from "./ProjectEnv";
3
+ export declare namespace DawProjectIO {
4
+ const decode: (env: ProjectEnv, arrayBuffer: ArrayBuffer) => Promise<Project>;
5
+ const encode: ({ rootBox, timelineBox }: Project) => string;
6
+ }
7
+ //# sourceMappingURL=DawProjectIO.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DawProjectIO.d.ts","sourceRoot":"","sources":["../src/DawProjectIO.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAA;AAejC,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAA;AAIvC,yBAAiB,YAAY,CAAC;IACnB,MAAM,MAAM,GAAU,KAAK,UAAU,EAAE,aAAa,WAAW,KAAG,OAAO,CAAC,OAAO,CAevF,CAAA;IAEM,MAAM,MAAM,GAAI,0BAAwB,OAAO,KAAG,MAqCxD,CAAA;CAYJ"}
@@ -0,0 +1,73 @@
1
+ import { Project } from "./Project";
2
+ import { IndexedBox } from "@opendaw/lib-box";
3
+ import { AudioUnitBox, TrackBox } from "@opendaw/studio-boxes";
4
+ import { Xml } from "@opendaw/lib-xml";
5
+ import { ApplicationSchema, BooleanParameterSchema, ChannelSchema, ProjectSchema, RealParameterSchema, TimeSignatureParameterSchema, TrackSchema, TransportSchema, Unit } from "@opendaw/lib-dawproject";
6
+ import { asDefined } from "@opendaw/lib-std";
7
+ import JSZip from "jszip";
8
+ export var DawProjectIO;
9
+ (function (DawProjectIO) {
10
+ DawProjectIO.decode = async (env, arrayBuffer) => {
11
+ const zip = await JSZip.loadAsync(arrayBuffer);
12
+ const { transport, arrangement } = Xml.parse(asDefined(await zip.file("project.xml")
13
+ ?.async("string"), "No project.xml found"), ProjectSchema);
14
+ const project = Project.new(env);
15
+ const { timelineBox, boxGraph } = project;
16
+ boxGraph.beginTransaction();
17
+ {
18
+ timelineBox.bpm.setValue(transport?.tempo?.value ?? 120.0);
19
+ timelineBox.signature.nominator.setValue(transport?.timeSignature?.numerator ?? 4);
20
+ timelineBox.signature.denominator.setValue(transport?.timeSignature?.denominator ?? 4);
21
+ // TODO :-)
22
+ }
23
+ boxGraph.endTransaction();
24
+ return project;
25
+ };
26
+ DawProjectIO.encode = ({ rootBox, timelineBox }) => {
27
+ const trackBoxes = IndexedBox.collectIndexedBoxes(rootBox.audioUnits, AudioUnitBox)
28
+ .flatMap(audioUnitBox => IndexedBox.collectIndexedBoxes(audioUnitBox.tracks, TrackBox));
29
+ const rootNode = Xml.element({
30
+ version: "1.0",
31
+ application: Xml.element({
32
+ name: "openDAW",
33
+ version: "0.1"
34
+ }, ApplicationSchema),
35
+ transport: createTransport(timelineBox),
36
+ structure: [
37
+ Xml.element({
38
+ id: "0",
39
+ contentType: "notes",
40
+ channel: Xml.element({
41
+ audioChannels: 2,
42
+ mute: Xml.element({ value: true }, BooleanParameterSchema)
43
+ }, ChannelSchema),
44
+ tracks: [
45
+ Xml.element({
46
+ id: "01",
47
+ contentType: "audio"
48
+ }, TrackSchema),
49
+ Xml.element({
50
+ id: "02",
51
+ contentType: "audio"
52
+ }, TrackSchema)
53
+ ]
54
+ }, TrackSchema),
55
+ Xml.element({
56
+ id: "1",
57
+ contentType: "audio"
58
+ }, TrackSchema)
59
+ ]
60
+ }, ProjectSchema);
61
+ return Xml.pretty(Xml.toElement("Project", rootNode));
62
+ };
63
+ const createTransport = (timelineBox) => Xml.element({
64
+ tempo: Xml.element({
65
+ unit: Unit.BPM,
66
+ value: timelineBox.bpm.getValue()
67
+ }, RealParameterSchema),
68
+ timeSignature: Xml.element({
69
+ numerator: timelineBox.signature.nominator.getValue(),
70
+ denominator: timelineBox.signature.denominator.getValue()
71
+ }, TimeSignatureParameterSchema)
72
+ }, TransportSchema);
73
+ })(DawProjectIO || (DawProjectIO = {}));
package/dist/Project.d.ts CHANGED
@@ -39,6 +39,6 @@ export declare class Project implements BoxAdaptersContext, Terminable, Terminab
39
39
  toArrayBuffer(): ArrayBufferLike;
40
40
  copy(): Project;
41
41
  terminate(): void;
42
- toDawProject(): any;
42
+ toDawProject(): string;
43
43
  }
44
44
  //# sourceMappingURL=Project.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Project.d.ts","sourceRoot":"","sources":["../src/Project.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiC,UAAU,EAAE,eAAe,EAAE,UAAU,EAAO,MAAM,kBAAkB,CAAA;AAC9G,OAAO,EAAC,QAAQ,EAAE,OAAO,EAAa,MAAM,kBAAkB,CAAA;AAC9D,OAAO,EACH,WAAW,EACX,YAAY,EACZ,KAAK,EAEL,OAAO,EACP,WAAW,EAEX,gBAAgB,EACnB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EACH,WAAW,EACX,kBAAkB,EAClB,cAAc,EAGd,sBAAsB,EAEtB,cAAc,EACd,aAAa,EACb,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EAClB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAC,qBAAqB,EAAE,kBAAkB,EAAC,MAAM,qBAAqB,CAAA;AAE7E,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAA;AACvC,OAAO,EAAC,KAAK,EAAC,MAAM,SAAS,CAAA;AAC7B,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAA;AAKvC,qBAAa,OAAQ,YAAW,kBAAkB,EAAE,UAAU,EAAE,eAAe;;IAC3E,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO;IAuCpC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,GAAG,OAAO;IAS/D,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IAE1C,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAA;IAC3C,QAAQ,CAAC,YAAY,EAAE,WAAW,CAAA;IAClC,QAAQ,CAAC,eAAe,EAAE,YAAY,CAAA;IACtC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAA;IAEjC,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAA;IACxB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAA;IACnC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAA;IACjC,QAAQ,CAAC,kBAAkB,EAAE,kBAAkB,CAAA;IAC/C,QAAQ,CAAC,sBAAsB,EAAE,sBAAsB,CAAA;IACvD,QAAQ,CAAC,kBAAkB,EAAE,kBAAkB,CAAA;IAC/C,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;IAErB,OAAO;IA8BP,GAAG,CAAC,CAAC,SAAS,UAAU,EAAE,UAAU,EAAE,CAAC,GAAG,CAAC;IAC3C,MAAM,CAAC,CAAC,SAAS,UAAU,EAAE,GAAG,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI;IAC5D,KAAK,IAAI,UAAU;IAEnB,IAAI,GAAG,IAAI,MAAM,CAAyC;IAC1D,IAAI,cAAc,IAAI,cAAc,CAAmE;IACvG,IAAI,kBAAkB,IAAI,kBAAkB,CAA2E;IACvH,IAAI,YAAY,IAAI,aAAa,CAAiC;IAClE,IAAI,cAAc,IAAI,cAAc,CAAkD;IACtF,IAAI,cAAc,IAAI,OAAO,CAAe;IAC5C,IAAI,YAAY,IAAI,OAAO,CAAc;IACzC,IAAI,qBAAqB,IAAI,qBAAqB,CAAkD;IAEpG,aAAa,IAAI,eAAe;IAiBhC,IAAI,IAAI,OAAO;IAEf,SAAS,IAAI,IAAI;IAEjB,YAAY,IAAI,GAAG;CA2BtB"}
1
+ {"version":3,"file":"Project.d.ts","sourceRoot":"","sources":["../src/Project.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiC,UAAU,EAAE,eAAe,EAAE,UAAU,EAAO,MAAM,kBAAkB,CAAA;AAC9G,OAAO,EAAC,QAAQ,EAAE,OAAO,EAAC,MAAM,kBAAkB,CAAA;AAClD,OAAO,EACH,WAAW,EACX,YAAY,EACZ,KAAK,EAEL,OAAO,EACP,WAAW,EACX,gBAAgB,EACnB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EACH,WAAW,EACX,kBAAkB,EAClB,cAAc,EAGd,sBAAsB,EAEtB,cAAc,EACd,aAAa,EACb,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EAClB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAC,qBAAqB,EAAE,kBAAkB,EAAC,MAAM,qBAAqB,CAAA;AAE7E,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAA;AACvC,OAAO,EAAC,KAAK,EAAC,MAAM,SAAS,CAAA;AAC7B,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAA;AAMvC,qBAAa,OAAQ,YAAW,kBAAkB,EAAE,UAAU,EAAE,eAAe;;IAC3E,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO;IAuCpC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,GAAG,OAAO;IAS/D,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IAE1C,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAA;IAC3C,QAAQ,CAAC,YAAY,EAAE,WAAW,CAAA;IAClC,QAAQ,CAAC,eAAe,EAAE,YAAY,CAAA;IACtC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAA;IAEjC,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAA;IACxB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAA;IACnC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAA;IACjC,QAAQ,CAAC,kBAAkB,EAAE,kBAAkB,CAAA;IAC/C,QAAQ,CAAC,sBAAsB,EAAE,sBAAsB,CAAA;IACvD,QAAQ,CAAC,kBAAkB,EAAE,kBAAkB,CAAA;IAC/C,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;IAErB,OAAO;IA8BP,GAAG,CAAC,CAAC,SAAS,UAAU,EAAE,UAAU,EAAE,CAAC,GAAG,CAAC;IAC3C,MAAM,CAAC,CAAC,SAAS,UAAU,EAAE,GAAG,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI;IAC5D,KAAK,IAAI,UAAU;IAEnB,IAAI,GAAG,IAAI,MAAM,CAAyC;IAC1D,IAAI,cAAc,IAAI,cAAc,CAAmE;IACvG,IAAI,kBAAkB,IAAI,kBAAkB,CAA2E;IACvH,IAAI,YAAY,IAAI,aAAa,CAAiC;IAClE,IAAI,cAAc,IAAI,cAAc,CAAkD;IACtF,IAAI,cAAc,IAAI,OAAO,CAAe;IAC5C,IAAI,YAAY,IAAI,OAAO,CAAc;IACzC,IAAI,qBAAqB,IAAI,qBAAqB,CAAkD;IAEpG,aAAa,IAAI,eAAe;IAiBhC,IAAI,IAAI,OAAO;IAEf,SAAS,IAAI,IAAI;IAEjB,YAAY,IAAI,MAAM;CACzB"}
package/dist/Project.js CHANGED
@@ -1,12 +1,13 @@
1
1
  import { ByteArrayOutput, Option, panic, Terminator, UUID } from "@opendaw/lib-std";
2
- import { BoxGraph, Editing, IndexedBox } from "@opendaw/lib-box";
3
- import { AudioBusBox, AudioUnitBox, BoxIO, GrooveShuffleBox, RootBox, TimelineBox, TrackBox, UserInterfaceBox } from "@opendaw/studio-boxes";
2
+ import { BoxGraph, Editing } from "@opendaw/lib-box";
3
+ import { AudioBusBox, AudioUnitBox, BoxIO, GrooveShuffleBox, RootBox, TimelineBox, UserInterfaceBox } from "@opendaw/studio-boxes";
4
4
  import { BoxAdapters, IconSymbol, ParameterFieldAdapters, ProjectDecoder, RootBoxAdapter, TimelineBoxAdapter, UserEditingManager, VertexSelection } from "@opendaw/studio-adapters";
5
5
  import { LiveStreamReceiver } from "@opendaw/lib-fusion";
6
6
  import { AudioUnitType } from "@opendaw/studio-enums";
7
7
  import { Mixer } from "./Mixer";
8
8
  import { ProjectApi } from "./ProjectApi";
9
9
  import { ProjectMigration } from "./ProjectMigration";
10
+ import { DawProjectIO } from "./DawProjectIO";
10
11
  // Main Entry Point for a Project
11
12
  //
12
13
  export class Project {
@@ -118,31 +119,5 @@ export class Project {
118
119
  }
119
120
  copy() { return Project.load(this.#env, this.toArrayBuffer()); }
120
121
  terminate() { this.#terminator.terminate(); }
121
- toDawProject() {
122
- const trackBoxes = IndexedBox.collectIndexedBoxes(this.rootBox.audioUnits, AudioUnitBox)
123
- .flatMap(audioUnitBox => IndexedBox.collectIndexedBoxes(audioUnitBox.tracks, TrackBox));
124
- return ({
125
- application: {
126
- name: "openDAW",
127
- version: "0.1"
128
- },
129
- transport: {
130
- tempo: {
131
- value: this.timelineBox.bpm.getValue(),
132
- unit: /*Unit.BPM*/ ""
133
- },
134
- timeSignature: {
135
- numerator: this.timelineBox.signature.nominator.getValue(),
136
- denominator: this.timelineBox.signature.denominator.getValue()
137
- }
138
- },
139
- arrangement: {
140
- lanes: {
141
- lanes: trackBoxes.map(({ address: { uuid } }) => ({ id: UUID.toString(uuid) }))
142
- }
143
- },
144
- structure: [],
145
- version: "1.0"
146
- });
147
- }
122
+ toDawProject() { return DawProjectIO.encode(this); }
148
123
  }
package/dist/index.d.ts CHANGED
@@ -8,6 +8,7 @@ export * from "./samples/MainThreadSampleManager";
8
8
  export * from "./samples/SampleProvider";
9
9
  export * from "./ColorCodes";
10
10
  export * from "./Colors";
11
+ export * from "./DawProjectIO";
11
12
  export * from "./EffectBox";
12
13
  export * from "./EffectFactory";
13
14
  export * from "./EffectFactories";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA;AACjC,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AAExC,cAAc,uBAAuB,CAAA;AACrC,cAAc,yBAAyB,CAAA;AACvC,cAAc,kCAAkC,CAAA;AAChD,cAAc,mCAAmC,CAAA;AACjD,cAAc,0BAA0B,CAAA;AAExC,cAAc,cAAc,CAAA;AAC5B,cAAc,UAAU,CAAA;AACxB,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mBAAmB,CAAA;AACjC,cAAc,UAAU,CAAA;AACxB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,uBAAuB,CAAA;AACrC,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA;AACnC,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,OAAO,CAAA;AACrB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA;AACjC,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AAExC,cAAc,uBAAuB,CAAA;AACrC,cAAc,yBAAyB,CAAA;AACvC,cAAc,kCAAkC,CAAA;AAChD,cAAc,mCAAmC,CAAA;AACjD,cAAc,0BAA0B,CAAA;AAExC,cAAc,cAAc,CAAA;AAC5B,cAAc,UAAU,CAAA;AACxB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mBAAmB,CAAA;AACjC,cAAc,UAAU,CAAA;AACxB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,uBAAuB,CAAA;AACrC,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA;AACnC,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,OAAO,CAAA;AACrB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA"}
package/dist/index.js CHANGED
@@ -8,6 +8,7 @@ export * from "./samples/MainThreadSampleManager";
8
8
  export * from "./samples/SampleProvider";
9
9
  export * from "./ColorCodes";
10
10
  export * from "./Colors";
11
+ export * from "./DawProjectIO";
11
12
  export * from "./EffectBox";
12
13
  export * from "./EffectFactory";
13
14
  export * from "./EffectFactories";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opendaw/studio-core",
3
- "version": "0.0.16",
3
+ "version": "0.0.18",
4
4
  "license": "LGPL-3.0-or-later",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -26,23 +26,23 @@
26
26
  "test": "echo \"No tests to run\""
27
27
  },
28
28
  "dependencies": {
29
- "@opendaw/lib-box": "^0.0.16",
30
- "@opendaw/lib-dawproject": "^0.0.2",
31
- "@opendaw/lib-dom": "^0.0.16",
32
- "@opendaw/lib-dsp": "^0.0.16",
33
- "@opendaw/lib-fusion": "^0.0.16",
34
- "@opendaw/lib-runtime": "^0.0.16",
35
- "@opendaw/lib-std": "^0.0.16",
36
- "@opendaw/studio-adapters": "^0.0.16",
37
- "@opendaw/studio-boxes": "^0.0.16",
38
- "@opendaw/studio-enums": "^0.0.16"
29
+ "@opendaw/lib-box": "^0.0.18",
30
+ "@opendaw/lib-dawproject": "^0.0.4",
31
+ "@opendaw/lib-dom": "^0.0.18",
32
+ "@opendaw/lib-dsp": "^0.0.18",
33
+ "@opendaw/lib-fusion": "^0.0.18",
34
+ "@opendaw/lib-runtime": "^0.0.18",
35
+ "@opendaw/lib-std": "^0.0.18",
36
+ "@opendaw/studio-adapters": "^0.0.18",
37
+ "@opendaw/studio-boxes": "^0.0.18",
38
+ "@opendaw/studio-enums": "^0.0.18"
39
39
  },
40
40
  "devDependencies": {
41
- "@opendaw/eslint-config": "^0.0.16",
42
- "@opendaw/studio-core-processors": "^0.0.16",
43
- "@opendaw/studio-core-workers": "^0.0.10",
44
- "@opendaw/studio-forge-boxes": "^0.0.16",
45
- "@opendaw/typescript-config": "^0.0.16"
41
+ "@opendaw/eslint-config": "^0.0.18",
42
+ "@opendaw/studio-core-processors": "^0.0.18",
43
+ "@opendaw/studio-core-workers": "^0.0.12",
44
+ "@opendaw/studio-forge-boxes": "^0.0.18",
45
+ "@opendaw/typescript-config": "^0.0.18"
46
46
  },
47
- "gitHead": "688fda0caf33bea189e063c951aac6dbf453a3b4"
47
+ "gitHead": "c5a09134e8559ca6d8b2f7f45f6b6a409466c51b"
48
48
  }