@opendaw/studio-core 0.0.12 → 0.0.13

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.
@@ -1,7 +1,8 @@
1
1
  import { float, int, Option } from "@opendaw/lib-std";
2
- import { AudioUnitType } from "@opendaw/studio-enums";
3
- import { AudioBusBox, NoteClipBox, NoteRegionBox, TrackBox, ValueRegionBox } from "@opendaw/studio-boxes";
4
- import { AnyClipBox, AudioUnitBoxAdapter, DeviceHost, IconSymbol, NoteEventBoxAdapter } from "@opendaw/studio-adapters";
2
+ import { PointerField } from "@opendaw/lib-box";
3
+ import { AudioUnitType, Pointers } from "@opendaw/studio-enums";
4
+ import { AudioBusBox, NoteEventBox, NoteEventCollectionBox, NoteRegionBox, TrackBox, ValueRegionBox } from "@opendaw/studio-boxes";
5
+ import { AnyClipBox, AudioUnitBoxAdapter, DeviceHost, IconSymbol } from "@opendaw/studio-adapters";
5
6
  import { Project } from "./Project";
6
7
  import { InstrumentFactory } from "./InstrumentFactory";
7
8
  import { InstrumentProduct } from "./InstrumentProduct";
@@ -13,7 +14,9 @@ export type ClipRegionOptions = {
13
14
  hue?: number;
14
15
  };
15
16
  export type NoteEventParams = {
16
- owner: NoteRegionBox | NoteClipBox;
17
+ owner: {
18
+ events: PointerField<Pointers.NoteEventCollection>;
19
+ };
17
20
  position: ppqn;
18
21
  duration: ppqn;
19
22
  pitch: int;
@@ -21,6 +24,18 @@ export type NoteEventParams = {
21
24
  velocity?: float;
22
25
  chance?: int;
23
26
  };
27
+ export type NoteRegionParams = {
28
+ trackBox: TrackBox;
29
+ position: ppqn;
30
+ duration: ppqn;
31
+ loopOffset?: ppqn;
32
+ loopDuration?: ppqn;
33
+ eventOffset?: ppqn;
34
+ eventCollection?: NoteEventCollectionBox;
35
+ mute?: boolean;
36
+ name?: string;
37
+ hue?: number;
38
+ };
24
39
  export declare class ProjectApi {
25
40
  #private;
26
41
  static readonly AudioUnitOrdering: {
@@ -37,8 +52,9 @@ export declare class ProjectApi {
37
52
  createAudioTrack(adapter: AudioUnitBoxAdapter, index?: int): TrackBox;
38
53
  createAutomationTrack(adapter: AudioUnitBoxAdapter, index?: int): TrackBox;
39
54
  createClip(trackBox: TrackBox, clipIndex: int, { name, hue }?: ClipRegionOptions): Option<AnyClipBox>;
40
- createRegion(trackBox: TrackBox, position: ppqn, duration: ppqn, { name, hue }?: ClipRegionOptions): Option<NoteRegionBox> | Option<ValueRegionBox>;
41
- createNoteEvent({ owner, position, duration, velocity, pitch, chance, cent }: NoteEventParams): NoteEventBoxAdapter;
55
+ createNoteRegion({ trackBox, position, duration, loopOffset, loopDuration, eventOffset, eventCollection, mute, name, hue }: NoteRegionParams): NoteRegionBox;
56
+ createTrackRegion(trackBox: TrackBox, position: ppqn, duration: ppqn, { name, hue }?: ClipRegionOptions): Option<NoteRegionBox> | Option<ValueRegionBox>;
57
+ createNoteEvent({ owner, position, duration, velocity, pitch, chance, cent }: NoteEventParams): NoteEventBox;
42
58
  deleteAudioUnit(adapter: AudioUnitBoxAdapter): void;
43
59
  }
44
60
  //# sourceMappingURL=ProjectApi.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ProjectApi.d.ts","sourceRoot":"","sources":["../src/ProjectApi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,EAAE,GAAG,EAAE,MAAM,EAAuB,MAAM,kBAAkB,CAAA;AAEjF,OAAO,EAAC,aAAa,EAAC,MAAM,uBAAuB,CAAA;AACnD,OAAO,EACH,WAAW,EAEX,WAAW,EAGX,aAAa,EACb,QAAQ,EAGR,cAAc,EACjB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EACH,UAAU,EACV,mBAAmB,EACnB,UAAU,EAGV,UAAU,EACV,mBAAmB,EAGtB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAA;AACjC,OAAO,EAAC,iBAAiB,EAAC,MAAM,qBAAqB,CAAA;AACrD,OAAO,EAAC,iBAAiB,EAAC,MAAM,qBAAqB,CAAA;AACrD,OAAO,EAAC,iBAAiB,EAAC,MAAM,qBAAqB,CAAA;AACrD,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAA;AAE7C,OAAO,EAAC,IAAI,EAAO,MAAM,kBAAkB,CAAA;AAE3C,MAAM,MAAM,iBAAiB,GAAG;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,GAAG,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC1B,KAAK,EAAE,aAAa,GAAG,WAAW,CAAA;IAClC,QAAQ,EAAE,IAAI,CAAA;IACd,QAAQ,EAAE,IAAI,CAAA;IACd,KAAK,EAAE,GAAG,CAAA;IACV,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,KAAK,CAAA;IAChB,MAAM,CAAC,EAAE,GAAG,CAAA;CACf,CAAA;AAED,qBAAa,UAAU;;IACnB,MAAM,CAAC,QAAQ,CAAC,iBAAiB;;;;;MAKvB;gBAIE,OAAO,EAAE,OAAO;IAE5B,gBAAgB,CAAC,EAAC,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAC,EAAE,iBAAiB,EAChE,EAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAC,GAAE,iBAAsB,GAAG,iBAAiB;IAsBhF,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG;IAmBpE,cAAc,CAAC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,aAAa,EACnB,KAAK,EAAE,MAAM,GAAG,WAAW;IAsB1C,eAAe,CAAC,OAAO,EAAE,mBAAmB,EAAE,KAAK,GAAE,GAAO,GAAG,QAAQ;IAIvE,gBAAgB,CAAC,OAAO,EAAE,mBAAmB,EAAE,KAAK,GAAE,GAAO,GAAG,QAAQ;IAIxE,qBAAqB,CAAC,OAAO,EAAE,mBAAmB,EAAE,KAAK,GAAE,GAAO,GAAG,QAAQ;IAI7E,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,EAAE,EAAC,IAAI,EAAE,GAAG,EAAC,GAAE,iBAAsB,GAAG,MAAM,CAAC,UAAU,CAAC;IAgCvG,YAAY,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAC,IAAI,EAAE,GAAG,EAAC,GAAE,iBAAsB;IAkCpG,eAAe,CAAC,EAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAC,EAAE,eAAe,GAAG,mBAAmB;IAejH,eAAe,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI;CAmDtD"}
1
+ {"version":3,"file":"ProjectApi.d.ts","sourceRoot":"","sources":["../src/ProjectApi.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { assert, Option, panic, Strings, UUID } from "@opendaw/lib-std";
2
2
  import { AudioUnitType } from "@opendaw/studio-enums";
3
3
  import { AudioBusBox, AudioUnitBox, NoteClipBox, NoteEventBox, NoteEventCollectionBox, NoteRegionBox, TrackBox, ValueClipBox, ValueEventCollectionBox, ValueRegionBox } from "@opendaw/studio-boxes";
4
- import { AudioUnitBoxAdapter, IconSymbol, NoteEventBoxAdapter, TrackType } from "@opendaw/studio-adapters";
4
+ import { AudioUnitBoxAdapter, IconSymbol, TrackType } from "@opendaw/studio-adapters";
5
5
  import { ColorCodes } from "./ColorCodes";
6
6
  import { PPQN } from "@opendaw/lib-dsp";
7
7
  export class ProjectApi {
@@ -104,7 +104,7 @@ export class ProjectApi {
104
104
  const events = ValueEventCollectionBox.create(boxGraph, UUID.generate());
105
105
  return Option.wrap(ValueClipBox.create(boxGraph, UUID.generate(), box => {
106
106
  box.index.setValue(clipIndex);
107
- box.label.setValue(name ?? "CV");
107
+ box.label.setValue(name ?? "Automation");
108
108
  box.hue.setValue(hue ?? ColorCodes.forTrackType(type));
109
109
  box.mute.setValue(false);
110
110
  box.duration.setValue(PPQN.Bar);
@@ -115,7 +115,23 @@ export class ProjectApi {
115
115
  }
116
116
  return Option.None;
117
117
  }
118
- createRegion(trackBox, position, duration, { name, hue } = {}) {
118
+ createNoteRegion({ trackBox, position, duration, loopOffset, loopDuration, eventOffset, eventCollection, mute, name, hue }) {
119
+ const { boxGraph } = this.#project;
120
+ const events = eventCollection ?? NoteEventCollectionBox.create(boxGraph, UUID.generate());
121
+ return NoteRegionBox.create(boxGraph, UUID.generate(), box => {
122
+ box.position.setValue(position);
123
+ box.label.setValue(name ?? "Notes");
124
+ box.hue.setValue(hue ?? ColorCodes.forTrackType(trackBox.type.getValue()));
125
+ box.mute.setValue(mute ?? false);
126
+ box.duration.setValue(duration);
127
+ box.loopDuration.setValue(loopOffset ?? 0);
128
+ box.loopDuration.setValue(loopDuration ?? duration);
129
+ box.eventOffset.setValue(eventOffset ?? 0);
130
+ box.events.refer(events.owners);
131
+ box.regions.refer(trackBox.regions);
132
+ });
133
+ }
134
+ createTrackRegion(trackBox, position, duration, { name, hue } = {}) {
119
135
  const { boxGraph } = this.#project;
120
136
  const type = trackBox.type.getValue();
121
137
  switch (type) {
@@ -149,8 +165,8 @@ export class ProjectApi {
149
165
  return Option.None;
150
166
  }
151
167
  createNoteEvent({ owner, position, duration, velocity, pitch, chance, cent }) {
152
- const { boxAdapters, boxGraph } = this.#project;
153
- return boxAdapters.adapterFor(NoteEventBox.create(boxGraph, UUID.generate(), box => {
168
+ const { boxGraph } = this.#project;
169
+ return NoteEventBox.create(boxGraph, UUID.generate(), box => {
154
170
  box.position.setValue(position);
155
171
  box.duration.setValue(duration);
156
172
  box.velocity.setValue(velocity ?? 1.0);
@@ -160,7 +176,7 @@ export class ProjectApi {
160
176
  box.events.refer(owner.events.targetVertex
161
177
  .unwrap("Owner has no event-collection").box
162
178
  .asBox(NoteEventCollectionBox).events);
163
- }), NoteEventBoxAdapter);
179
+ });
164
180
  }
165
181
  deleteAudioUnit(adapter) {
166
182
  const { rootBoxAdapter } = this.#project;