@blibliki/engine 0.3.2 → 0.3.3

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blibliki/engine",
3
- "version": "0.3.2",
3
+ "version": "0.3.3",
4
4
  "type": "module",
5
5
  "source": "src/index.ts",
6
6
  "main": "dist/index.cjs",
@@ -20,7 +20,7 @@
20
20
  "@ircam/sc-scheduling": "^1.0.0",
21
21
  "node-web-audio-api": "^1.0.3",
22
22
  "webmidi": "^3.1.14",
23
- "@blibliki/utils": "^0.3.2"
23
+ "@blibliki/utils": "^0.3.3"
24
24
  },
25
25
  "scripts": {
26
26
  "build": "tsup",
@@ -31,6 +31,6 @@
31
31
  "format:check": "prettier . --check",
32
32
  "test": "vitest",
33
33
  "bump": "npm version patch",
34
- "release": "pnpm run build && pnpm publish"
34
+ "release": "pnpm run build && pnpm publish --access public"
35
35
  }
36
36
  }
package/src/Engine.ts CHANGED
@@ -31,7 +31,7 @@ export type ICreateRoute = Optional<IRoute, "id">;
31
31
 
32
32
  export class Engine {
33
33
  private static _engines = new Map<string, Engine>();
34
- private static _currentId: string;
34
+ private static _currentId: string | undefined;
35
35
  private propsUpdateCallbacks: (<T extends ModuleType>(
36
36
  params: IModule<T>,
37
37
  ) => void)[] = [];
@@ -142,7 +142,8 @@ export class Engine {
142
142
  );
143
143
  }
144
144
 
145
- start(props: { offset?: TTime; actionAt?: TTime } = {}) {
145
+ async start(props: { offset?: TTime; actionAt?: TTime } = {}) {
146
+ await this.resume();
146
147
  this.transport.start(props);
147
148
  }
148
149
 
@@ -162,6 +163,18 @@ export class Engine {
162
163
  this.transport.bpm = value;
163
164
  }
164
165
 
166
+ get timeSignature() {
167
+ return this.transport.timeSignature;
168
+ }
169
+
170
+ set timeSignature(value: [number, number]) {
171
+ this.transport.timeSignature = value;
172
+ }
173
+
174
+ get playhead() {
175
+ return this.transport.playhead;
176
+ }
177
+
165
178
  async resume() {
166
179
  await this.context.resume();
167
180
  }
@@ -173,6 +186,8 @@ export class Engine {
173
186
  module.dispose();
174
187
  });
175
188
  this.modules.clear();
189
+ Engine._engines.delete(this.id);
190
+ Engine._currentId = Engine._engines.keys().next().value;
176
191
  }
177
192
 
178
193
  findModule(
@@ -1,7 +1,7 @@
1
1
  import { Engine } from "@/Engine";
2
2
 
3
3
  export { default as Transport, TransportState } from "./Transport";
4
- export { default as Time } from "./Time";
4
+ export { default as Time, t, nt } from "./Time";
5
5
 
6
6
  export type { TransportEvents } from "./Transport";
7
7
  export type { TTime } from "./Time";
package/src/core/index.ts CHANGED
@@ -19,7 +19,7 @@ export type {
19
19
  IIOSerialize,
20
20
  } from "./IO";
21
21
 
22
- export { Time, TransportState, Transport } from "./Timing";
22
+ export { Time, TransportState, Transport, t, nt } from "./Timing";
23
23
  export type { TTime } from "./Timing";
24
24
 
25
25
  export type {
package/src/index.ts CHANGED
@@ -16,6 +16,8 @@ export type {
16
16
  BooleanProp,
17
17
  ArrayProp,
18
18
  INote,
19
+ t,
20
+ nt,
19
21
  } from "./core";
20
22
  export { TransportState, MidiDevice, MidiPortState, Note } from "./core";
21
23