@sudobility/music_player 0.1.24 → 0.1.26
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/dist/engine.d.ts +6 -0
- package/dist/engine.d.ts.map +1 -1
- package/dist/mocks/index.d.ts +1 -0
- package/dist/mocks/index.d.ts.map +1 -1
- package/dist/mocks/index.js +3 -0
- package/dist/mocks/index.js.map +1 -1
- package/dist/playback/soundfont-engine.d.ts +3 -0
- package/dist/playback/soundfont-engine.d.ts.map +1 -1
- package/dist/playback/soundfont-engine.js +7 -2
- package/dist/playback/soundfont-engine.js.map +1 -1
- package/dist/player.d.ts +1 -0
- package/dist/player.d.ts.map +1 -1
- package/dist/player.js +4 -1
- package/dist/player.js.map +1 -1
- package/dist/rn/audio/offline-render.d.ts.map +1 -1
- package/dist/rn/audio/offline-render.js +6 -4
- package/dist/rn/audio/offline-render.js.map +1 -1
- package/dist/rn/index.d.ts +13 -1
- package/dist/rn/index.d.ts.map +1 -1
- package/dist/rn/index.js +14 -0
- package/dist/rn/index.js.map +1 -1
- package/dist/rn/playback/audio-api.d.ts.map +1 -1
- package/dist/rn/playback/audio-api.js.map +1 -1
- package/dist/rn/playback/expression-table.d.ts.map +1 -1
- package/dist/rn/playback/expression-table.js +908 -908
- package/dist/rn/playback/expression-table.js.map +1 -1
- package/dist/rn/playback/expression.d.ts.map +1 -1
- package/dist/rn/playback/expression.js +4 -1
- package/dist/rn/playback/expression.js.map +1 -1
- package/dist/rn/playback/native-backend.d.ts +17 -0
- package/dist/rn/playback/native-backend.d.ts.map +1 -1
- package/dist/rn/playback/native-backend.js +55 -2
- package/dist/rn/playback/native-backend.js.map +1 -1
- package/dist/rn/playback/pack-library.d.ts.map +1 -1
- package/dist/rn/playback/pack-library.js +4 -2
- package/dist/rn/playback/pack-library.js.map +1 -1
- package/dist/rn/playback/sample-engine.d.ts +3 -0
- package/dist/rn/playback/sample-engine.d.ts.map +1 -1
- package/dist/rn/playback/sample-engine.js +23 -13
- package/dist/rn/playback/sample-engine.js.map +1 -1
- package/dist/rn/playback/sample-pack.d.ts.map +1 -1
- package/dist/rn/playback/sample-pack.js +5 -1
- package/dist/rn/playback/sample-pack.js.map +1 -1
- package/dist/rn/playback/sustain-loop.d.ts.map +1 -1
- package/dist/rn/playback/sustain-loop.js.map +1 -1
- package/dist/shared/render-score.d.ts +27 -0
- package/dist/shared/render-score.d.ts.map +1 -0
- package/dist/shared/render-score.js +8 -0
- package/dist/shared/render-score.js.map +1 -0
- package/dist/shared/visual-sync.d.ts +27 -1
- package/dist/shared/visual-sync.d.ts.map +1 -1
- package/dist/shared/visual-sync.js +32 -2
- package/dist/shared/visual-sync.js.map +1 -1
- package/dist/types.d.ts +6 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/web/audio/offline-synth.d.ts.map +1 -1
- package/dist/web/audio/offline-synth.js.map +1 -1
- package/dist/web/audio/soundfont-render.d.ts +1 -1
- package/dist/web/audio/soundfont-render.d.ts.map +1 -1
- package/dist/web/audio/soundfont-render.js +2 -2
- package/dist/web/audio/soundfont-render.js.map +1 -1
- package/dist/web/audio/synth-types.d.ts.map +1 -1
- package/dist/web/index.d.ts +13 -1
- package/dist/web/index.d.ts.map +1 -1
- package/dist/web/index.js +14 -0
- package/dist/web/index.js.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sample-pack.js","sourceRoot":"","sources":["../../../src/rn/playback/sample-pack.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,MAAM,YAAY,GAAG,yDAAyD,CAAC;AAE/E,kDAAkD;AAClD,MAAM,WAAW,GAA2B;IAC1C,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,EAAE;CACN,CAAC;AAgBF;;;;;GAKG;AACH,MAAM,UAAU,YAAY,
|
|
1
|
+
{"version":3,"file":"sample-pack.js","sourceRoot":"","sources":["../../../src/rn/playback/sample-pack.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sustain-loop.d.ts","sourceRoot":"","sources":["../../../src/rn/playback/sustain-loop.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAcpE;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,aAAa,EACrB,aAAa,EAAE,MAAM,EACrB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,
|
|
1
|
+
{"version":3,"file":"sustain-loop.d.ts","sourceRoot":"","sources":["../../../src/rn/playback/sustain-loop.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAcpE;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,aAAa,EACrB,aAAa,EAAE,MAAM,EACrB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAyBT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sustain-loop.js","sourceRoot":"","sources":["../../../src/rn/playback/sustain-loop.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGnD,0EAA0E;AAC1E,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAChC;;;;;GAKG;AACH,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAC7B,iFAAiF;AACjF,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAE9B;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,gBAAgB,CAC9B,MAAsB,EACtB,MAAqB,EACrB,aAAqB,EACrB,UAAmB;IAEnB,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IACjC,IAAI,aAAa,IAAI,QAAQ;QAAE,OAAO,KAAK,CAAC;IAE5C,MAAM,GAAG,GAAG,QAAQ,GAAG,kBAAkB,CAAC;IAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;IACnD,IAAI,GAAG,IAAI,CAAC,IAAI,MAAM,GAAG,gBAAgB;QAAE,OAAO,KAAK,CAAC;IAExD,MAAM,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC;IAE/B,MAAM,SAAS,GAAG,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;IAC3E,MAAM,aAAa,GAAG,YAAY,CAAC,MAAM,GAAG,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;IACpE,MAAM,WAAW,GAAG,SAAS,GAAG,aAAa,CAAC;IAC9C,IAAI,WAAW,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAEnC,MAAM,SAAS,GAAG,WAAW,GAAG,IAAI,CAAC;IACrC,MAAM,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC;IACjC,IAAI,CAAC,CAAC,OAAO,GAAG,SAAS,CAAC,IAAI,OAAO,GAAG,SAAS,GAAG,gBAAgB;
|
|
1
|
+
{"version":3,"file":"sustain-loop.js","sourceRoot":"","sources":["../../../src/rn/playback/sustain-loop.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A score rendered to PCM: the two halves of an audio export, joined once.
|
|
3
|
+
*
|
|
4
|
+
* Both apps used to write `renderSamples(soundfont)(renderEvents(score))` at
|
|
5
|
+
* their own export call site. Two copies of a two-line composition look too
|
|
6
|
+
* small to share, and they are exactly where the drift this package exists to
|
|
7
|
+
* prevent starts: one side passes `{ humanize: false }` to make a test pass,
|
|
8
|
+
* or reaches for `playbackPlan` instead, and its exported file stops being a
|
|
9
|
+
* recording of what was heard while every build stays green.
|
|
10
|
+
*
|
|
11
|
+
* Platform-free on purpose. The renderer is handed in, so this half is
|
|
12
|
+
* testable without a synth and each platform entry supplies its own
|
|
13
|
+
* (`renderScoreAudio` in `web/` and `rn/`).
|
|
14
|
+
*
|
|
15
|
+
* **What is exported is decided before this is called.** The score passed in is
|
|
16
|
+
* already the export's target — hidden tracks dropped or kept by music_lib's
|
|
17
|
+
* `exportTargetScore` — so there is no scope parameter here; mute and solo, by
|
|
18
|
+
* contrast, are part of how the score sounds and `renderEvents` applies them.
|
|
19
|
+
*
|
|
20
|
+
* It returns PCM and stops. Encoding and writing the file is `music_io`'s
|
|
21
|
+
* (`io.saveAudio`), and neither platform package depends on the other.
|
|
22
|
+
*/
|
|
23
|
+
import type { DecodedAudio, RenderPlan, Score } from '@sudobility/music_types';
|
|
24
|
+
/** Anything that turns a render plan into PCM — each platform's `renderSamples`. */
|
|
25
|
+
export type PlanRenderer = (plan: RenderPlan) => Promise<DecodedAudio>;
|
|
26
|
+
export declare function renderScoreWith(score: Score, render: PlanRenderer): Promise<DecodedAudio>;
|
|
27
|
+
//# sourceMappingURL=render-score.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render-score.d.ts","sourceRoot":"","sources":["../../src/shared/render-score.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAG/E,oFAAoF;AACpF,MAAM,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE,UAAU,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;AAEvE,wBAAsB,eAAe,CACnC,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC,YAAY,CAAC,CAKvB"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { renderEvents } from './render-events.js';
|
|
2
|
+
export async function renderScoreWith(score, render) {
|
|
3
|
+
const audio = await render(renderEvents(score));
|
|
4
|
+
// Only the contract's two fields: a renderer may carry more on its result,
|
|
5
|
+
// and a caller handing this straight to `saveAudio` should not see it.
|
|
6
|
+
return { samples: audio.samples, sampleRate: audio.sampleRate };
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=render-score.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render-score.js","sourceRoot":"","sources":["../../src/shared/render-score.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAKlD,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,KAAY,EACZ,MAAoB;IAEpB,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;IAChD,2EAA2E;IAC3E,uEAAuE;IACvE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC;AAClE,CAAC"}
|
|
@@ -55,7 +55,33 @@ export declare const RENDER_DELAY_SECONDS = 0.016;
|
|
|
55
55
|
* than the other is worse than being consistent, and 8ms at double speed is
|
|
56
56
|
* below what the eye resolves against a moving caret.
|
|
57
57
|
*/
|
|
58
|
-
export declare function visualOffsetSeconds(outputLatency?: number
|
|
58
|
+
export declare function visualOffsetSeconds(outputLatency?: number,
|
|
59
|
+
/**
|
|
60
|
+
* Publish-to-paint for the visual this position is for. Defaults to one
|
|
61
|
+
* frame; the lit notes use what the host measured (see
|
|
62
|
+
* `soundingRenderDelayOrDefault`).
|
|
63
|
+
*/
|
|
64
|
+
renderDelaySeconds?: number): number;
|
|
65
|
+
/**
|
|
66
|
+
* The longest publish-to-paint a host may claim.
|
|
67
|
+
*
|
|
68
|
+
* A measurement is only ever a few frames; anything past this is a stall being
|
|
69
|
+
* mistaken for the pipeline, and leading the lights by it would light notes
|
|
70
|
+
* that are nowhere near sounding.
|
|
71
|
+
*/
|
|
72
|
+
export declare const MAX_SOUNDING_RENDER_DELAY_SECONDS = 0.25;
|
|
73
|
+
/**
|
|
74
|
+
* How far ahead the lit notes are published: what the host measured drawing
|
|
75
|
+
* them takes, or one frame when it has said nothing believable.
|
|
76
|
+
*
|
|
77
|
+
* The lit notes, not the caret, because the two are drawn by different
|
|
78
|
+
* pipelines. On the web both are cheap. In the native app a change of lit
|
|
79
|
+
* notes re-records the notation as a Skia picture and waits a React commit —
|
|
80
|
+
* measured at 45–70ms on a dense score — while the caret is moved by a native
|
|
81
|
+
* view with no JavaScript in the frame. One shared figure would put one of them
|
|
82
|
+
* out of step with the sound.
|
|
83
|
+
*/
|
|
84
|
+
export declare function soundingRenderDelayOrDefault(seconds: number): number;
|
|
59
85
|
/**
|
|
60
86
|
* The previous name, kept as an alias.
|
|
61
87
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"visual-sync.d.ts","sourceRoot":"","sources":["../../src/shared/visual-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH;;;;;;;;;;GAUG;AACH,eAAO,MAAM,oBAAoB,KAAK,CAAC;AAEvC,6EAA6E;AAC7E,eAAO,MAAM,oBAAoB,QAAQ,CAAC;AAE1C;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,
|
|
1
|
+
{"version":3,"file":"visual-sync.d.ts","sourceRoot":"","sources":["../../src/shared/visual-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH;;;;;;;;;;GAUG;AACH,eAAO,MAAM,oBAAoB,KAAK,CAAC;AAEvC,6EAA6E;AAC7E,eAAO,MAAM,oBAAoB,QAAQ,CAAC;AAE1C;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CACjC,aAAa,CAAC,EAAE,MAAM;AACtB;;;;GAIG;AACH,kBAAkB,GAAE,MAA6B,GAChD,MAAM,CAQR;AAED;;;;;;GAMG;AACH,eAAO,MAAM,iCAAiC,OAAO,CAAC;AAEtD;;;;;;;;;;GAUG;AACH,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAIpE;AAED;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B,4BAAsB,CAAC"}
|
|
@@ -55,13 +55,43 @@ export const RENDER_DELAY_SECONDS = 0.016;
|
|
|
55
55
|
* than the other is worse than being consistent, and 8ms at double speed is
|
|
56
56
|
* below what the eye resolves against a moving caret.
|
|
57
57
|
*/
|
|
58
|
-
export function visualOffsetSeconds(outputLatency
|
|
58
|
+
export function visualOffsetSeconds(outputLatency,
|
|
59
|
+
/**
|
|
60
|
+
* Publish-to-paint for the visual this position is for. Defaults to one
|
|
61
|
+
* frame; the lit notes use what the host measured (see
|
|
62
|
+
* `soundingRenderDelayOrDefault`).
|
|
63
|
+
*/
|
|
64
|
+
renderDelaySeconds = RENDER_DELAY_SECONDS) {
|
|
59
65
|
const latency = typeof outputLatency === 'number' &&
|
|
60
66
|
Number.isFinite(outputLatency) &&
|
|
61
67
|
outputLatency >= 0
|
|
62
68
|
? outputLatency
|
|
63
69
|
: 0;
|
|
64
|
-
return
|
|
70
|
+
return renderDelaySeconds - latency;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* The longest publish-to-paint a host may claim.
|
|
74
|
+
*
|
|
75
|
+
* A measurement is only ever a few frames; anything past this is a stall being
|
|
76
|
+
* mistaken for the pipeline, and leading the lights by it would light notes
|
|
77
|
+
* that are nowhere near sounding.
|
|
78
|
+
*/
|
|
79
|
+
export const MAX_SOUNDING_RENDER_DELAY_SECONDS = 0.25;
|
|
80
|
+
/**
|
|
81
|
+
* How far ahead the lit notes are published: what the host measured drawing
|
|
82
|
+
* them takes, or one frame when it has said nothing believable.
|
|
83
|
+
*
|
|
84
|
+
* The lit notes, not the caret, because the two are drawn by different
|
|
85
|
+
* pipelines. On the web both are cheap. In the native app a change of lit
|
|
86
|
+
* notes re-records the notation as a Skia picture and waits a React commit —
|
|
87
|
+
* measured at 45–70ms on a dense score — while the caret is moved by a native
|
|
88
|
+
* view with no JavaScript in the frame. One shared figure would put one of them
|
|
89
|
+
* out of step with the sound.
|
|
90
|
+
*/
|
|
91
|
+
export function soundingRenderDelayOrDefault(seconds) {
|
|
92
|
+
return Number.isFinite(seconds) && seconds >= 0
|
|
93
|
+
? Math.min(seconds, MAX_SOUNDING_RENDER_DELAY_SECONDS)
|
|
94
|
+
: RENDER_DELAY_SECONDS;
|
|
65
95
|
}
|
|
66
96
|
/**
|
|
67
97
|
* The previous name, kept as an alias.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"visual-sync.js","sourceRoot":"","sources":["../../src/shared/visual-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,CAAC;AAEvC,6EAA6E;AAC7E,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,CAAC;AAE1C;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,mBAAmB,
|
|
1
|
+
{"version":3,"file":"visual-sync.js","sourceRoot":"","sources":["../../src/shared/visual-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,CAAC;AAEvC,6EAA6E;AAC7E,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,CAAC;AAE1C;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,mBAAmB,CACjC,aAAsB;AACtB;;;;GAIG;AACH,qBAA6B,oBAAoB;IAEjD,MAAM,OAAO,GACX,OAAO,aAAa,KAAK,QAAQ;QACjC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC;QAC9B,aAAa,IAAI,CAAC;QAChB,CAAC,CAAC,aAAa;QACf,CAAC,CAAC,CAAC,CAAC;IACR,OAAO,kBAAkB,GAAG,OAAO,CAAC;AACtC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,IAAI,CAAC;AAEtD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,4BAA4B,CAAC,OAAe;IAC1D,OAAO,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,IAAI,CAAC;QAC7C,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,iCAAiC,CAAC;QACtD,CAAC,CAAC,oBAAoB,CAAC;AAC3B,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,mBAAmB,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -42,6 +42,12 @@ export interface IMusicPlayer {
|
|
|
42
42
|
setLoop(range: ScoreRange | null): void;
|
|
43
43
|
setTempoMultiplier(multiplier: number): void;
|
|
44
44
|
setMetronome(enabled: boolean): void;
|
|
45
|
+
/**
|
|
46
|
+
* How long the host takes to draw a change of lit notes, in seconds; the lit
|
|
47
|
+
* notes are published that far ahead so they land with the sound. The score
|
|
48
|
+
* canvas measures it and the shared playback binding reports it.
|
|
49
|
+
*/
|
|
50
|
+
setSoundingRenderDelay(seconds: number): void;
|
|
45
51
|
setMasterVolume(volume: number): void;
|
|
46
52
|
/** Live, without rebuilding the note queue: mixing is not editing. */
|
|
47
53
|
applyMix(tracks: readonly PlaybackTrack[]): void;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EACV,iBAAiB,EACjB,aAAa,EACb,KAAK,EACL,UAAU,EACV,YAAY,EACZ,sBAAsB,EACvB,MAAM,yBAAyB,CAAC;AAEjC,MAAM,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC;AAErC;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;;;;;OAQG;IACH;;;OAGG;IACH,IAAI,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EACV,iBAAiB,EACjB,aAAa,EACb,KAAK,EACL,UAAU,EACV,YAAY,EACZ,sBAAsB,EACvB,MAAM,yBAAyB,CAAC;AAEjC,MAAM,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC;AAErC;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;;;;;OAQG;IACH;;;OAGG;IACH,IAAI,CACF,KAAK,EAAE,KAAK,EACZ,IAAI,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;KAAE,GAC7C,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,KAAK,IAAI,IAAI,CAAC;IACd,IAAI,IAAI,IAAI,CAAC;IAEb,uFAAuF;IACvF,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAE9B,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,GAAG,IAAI,CAAC;IACxC,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7C,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACrC;;;;OAIG;IACH,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9C,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAEtC,sEAAsE;IACtE,QAAQ,CAAC,MAAM,EAAE,SAAS,aAAa,EAAE,GAAG,IAAI,CAAC;IAEjD,4DAA4D;IAC5D,gBAAgB,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAC;IAE3D;;;;;;;;;;OAUG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACpE,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAE5B;;;;;;;OAOG;IACH,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC;IAE1B,UAAU,CAAC,EAAE,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,GAAG,WAAW,CAAC;IACzD,UAAU,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,KAAK,IAAI,GAAG,WAAW,CAAC;IACtE,WAAW,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,sBAAsB,KAAK,IAAI,GAAG,WAAW,CAAC;IACtE;;;;;OAKG;IACH,WAAW,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,GAAG,WAAW,CAAC;IAEjE,OAAO,IAAI,IAAI,CAAC;CACjB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"offline-synth.d.ts","sourceRoot":"","sources":["../../../src/web/audio/offline-synth.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAUxD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,EAAE,eAAe,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;
|
|
1
|
+
{"version":3,"file":"offline-synth.d.ts","sourceRoot":"","sources":["../../../src/web/audio/offline-synth.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAUxD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,EAAE,eAAe,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AA+BF,MAAM,MAAM,mBAAmB,GAAG;IAChC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;IAChD,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,eAAe,CAAC;CACrC,CAAC;AAEF,0DAA0D;AAC1D,wBAAsB,eAAe,CACnC,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,kBAAkB,CAAC,CAkC7B;AAED,uFAAuF;AACvF,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"offline-synth.js","sourceRoot":"","sources":["../../../src/web/audio/offline-synth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAG9E,2EAA2E;AAC3E,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAE/B,gFAAgF;AAChF,IAAI,eAAe,GAAyB,IAAI,CAAC;AACjD,oFAAoF;AACpF,IAAI,MAAM,GAA+D,IAAI,CAAC;AAQ9E;;;;;;GAMG;AACH,KAAK,UAAU,gBAAgB,CAAC,SAAiB;IAC/C,eAAe,KAAK,CAAC,KAAK,IAAI,EAAE;QAC9B,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,
|
|
1
|
+
{"version":3,"file":"offline-synth.js","sourceRoot":"","sources":["../../../src/web/audio/offline-synth.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
*/
|
|
20
20
|
import type { DecodedAudio, RenderPlan } from '@sudobility/music_types';
|
|
21
21
|
import type { LoadedOfflineSynth } from './offline-synth.js';
|
|
22
|
-
export type { RenderEvent, RenderPlan, RenderTrack } from '@sudobility/music_types';
|
|
22
|
+
export type { RenderEvent, RenderPlan, RenderTrack, } from '@sudobility/music_types';
|
|
23
23
|
export type SoundfontRendererAssets = {
|
|
24
24
|
fluidsynthModuleUrl: string;
|
|
25
25
|
fontUrl: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"soundfont-render.d.ts","sourceRoot":"","sources":["../../../src/web/audio/soundfont-render.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAOxE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAE7D,YAAY,
|
|
1
|
+
{"version":3,"file":"soundfont-render.d.ts","sourceRoot":"","sources":["../../../src/web/audio/soundfont-render.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAOxE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAE7D,YAAY,EACV,WAAW,EACX,UAAU,EACV,WAAW,GACZ,MAAM,yBAAyB,CAAC;AAEjC,MAAM,MAAM,uBAAuB,GAAG;IACpC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;IAChD,4EAA4E;IAC5E,YAAY,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC;CACpE,CAAC;AAaF,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,uBAAuB,GAC9B,CAAC,IAAI,EAAE,UAAU,KAAK,OAAO,CAAC,YAAY,CAAC,CA4I7C"}
|
|
@@ -22,7 +22,7 @@ export function createSoundfontRenderer(assets) {
|
|
|
22
22
|
return async function render(plan) {
|
|
23
23
|
const { synth, sfontId, sampleRate } = await acquire(SAMPLE_RATE);
|
|
24
24
|
const totalFrames = Math.ceil(Math.max(0.1, plan.durationSec + TAIL_SECONDS) * sampleRate);
|
|
25
|
-
const { assignments, instanceCount } = allocateChannels(plan.tracks.map(
|
|
25
|
+
const { assignments, instanceCount } = allocateChannels(plan.tracks.map(t => ({ id: t.id, isPercussion: t.isPercussion })));
|
|
26
26
|
// The same trim `SynthHost` puts on the live master bus, for the same
|
|
27
27
|
// reason: every channel is scheduled at its own MIDI volume with nothing
|
|
28
28
|
// reconciling them, so the sum grows with the part count. Without it the
|
|
@@ -39,7 +39,7 @@ export function createSoundfontRenderer(assets) {
|
|
|
39
39
|
// synths, did not. Passes cost render time, and only a score too big for
|
|
40
40
|
// one synth pays it.
|
|
41
41
|
for (let instance = 0; instance < instanceCount; instance += 1) {
|
|
42
|
-
renderPass(plan.tracks.filter(
|
|
42
|
+
renderPass(plan.tracks.filter(t => assignments.get(t.id)?.instance === instance));
|
|
43
43
|
}
|
|
44
44
|
synth.midiAllSoundsOff();
|
|
45
45
|
// Last in the chain, exactly as the limiter sits after the master gain on
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"soundfont-render.js","sourceRoot":"","sources":["../../../src/web/audio/soundfont-render.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAElE,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"soundfont-render.js","sourceRoot":"","sources":["../../../src/web/audio/soundfont-render.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"synth-types.d.ts","sourceRoot":"","sources":["../../../src/web/audio/synth-types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,
|
|
1
|
+
{"version":3,"file":"synth-types.d.ts","sourceRoot":"","sources":["../../../src/web/audio/synth-types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,CACF,UAAU,EAAE,MAAM,EAClB,QAAQ,CAAC,EAAE;QAAE,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAC3D,IAAI,CAAC;IACR,SAAS,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7C,MAAM,CAAC,SAAS,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;IACxC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACzD,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7C,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3D,iBAAiB,CACf,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,GAChB,IAAI,CAAC;IACR,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;IACxD,gBAAgB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,KAAK,IAAI,IAAI,CAAC;CACf,CAAC"}
|
package/dist/web/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { MusicPlayer } from '../player.js';
|
|
2
|
+
import type { DecodedAudio, Score } from '@sudobility/music_types';
|
|
2
3
|
export * from '../types.js';
|
|
3
4
|
export * from '../singleton.js';
|
|
4
5
|
export { MusicPlayer };
|
|
@@ -36,5 +37,16 @@ export declare function createMusicPlayer({ soundfont, }: {
|
|
|
36
37
|
*
|
|
37
38
|
* The caller encodes and saves; this package does not touch files.
|
|
38
39
|
*/
|
|
39
|
-
export declare function renderSamples(soundfont: SoundfontAssets): (plan: import("@sudobility/music_types").RenderPlan) => Promise<
|
|
40
|
+
export declare function renderSamples(soundfont: SoundfontAssets): (plan: import("@sudobility/music_types").RenderPlan) => Promise<DecodedAudio>;
|
|
41
|
+
/**
|
|
42
|
+
* A score rendered to PCM through the soundfont playback uses — the whole of an
|
|
43
|
+
* audio export short of encoding it.
|
|
44
|
+
*
|
|
45
|
+
* `renderEvents` + `renderSamples`, joined here so the two apps cannot join
|
|
46
|
+
* them differently (see `shared/render-score.ts`). Pass the score the export is
|
|
47
|
+
* *of*: scope (hidden tracks) is resolved before this, mute and solo within it.
|
|
48
|
+
* Hand the result to `io.saveAudio`; this package does not touch files.
|
|
49
|
+
* Rejects when the synth or the font cannot be loaded.
|
|
50
|
+
*/
|
|
51
|
+
export declare function renderScoreAudio(score: Score, soundfont: SoundfontAssets): Promise<DecodedAudio>;
|
|
40
52
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/web/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/web/index.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,CAAC;AACvB,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAgB/E;;;;;;;;;;GAUG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,mEAAmE;IACnE,mBAAmB,EAAE,MAAM,CAAC;IAC5B,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,uEAAuE;AACvE,wBAAgB,iBAAiB,CAAC,EAChC,SAAS,GACV,EAAE;IACD,SAAS,EAAE,eAAe,CAAC;CAC5B,GAAG,WAAW,CAad;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/web/index.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAEnE,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,CAAC;AACvB,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAgB/E;;;;;;;;;;GAUG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,mEAAmE;IACnE,mBAAmB,EAAE,MAAM,CAAC;IAC5B,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,uEAAuE;AACvE,wBAAgB,iBAAiB,CAAC,EAChC,SAAS,GACV,EAAE;IACD,SAAS,EAAE,eAAe,CAAC;CAC5B,GAAG,WAAW,CAad;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,eAAe,iFAOvD;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,eAAe,GACzB,OAAO,CAAC,YAAY,CAAC,CAEvB"}
|
package/dist/web/index.js
CHANGED
|
@@ -10,6 +10,7 @@ import { SynthHost } from './playback/synth-host.js';
|
|
|
10
10
|
import { loadSoundfont, openSoundfontCache, } from './playback/soundfont-loader.js';
|
|
11
11
|
import { createSoundfontRenderer } from './audio/soundfont-render.js';
|
|
12
12
|
import { MusicPlayer } from '../player.js';
|
|
13
|
+
import { renderScoreWith } from '../shared/render-score.js';
|
|
13
14
|
export * from '../types.js';
|
|
14
15
|
export * from '../singleton.js';
|
|
15
16
|
export { MusicPlayer };
|
|
@@ -59,4 +60,17 @@ export function renderSamples(soundfont) {
|
|
|
59
60
|
loadFont: async (url) => loadSoundfont(url, { cache: await openSoundfontCache() }),
|
|
60
61
|
});
|
|
61
62
|
}
|
|
63
|
+
/**
|
|
64
|
+
* A score rendered to PCM through the soundfont playback uses — the whole of an
|
|
65
|
+
* audio export short of encoding it.
|
|
66
|
+
*
|
|
67
|
+
* `renderEvents` + `renderSamples`, joined here so the two apps cannot join
|
|
68
|
+
* them differently (see `shared/render-score.ts`). Pass the score the export is
|
|
69
|
+
* *of*: scope (hidden tracks) is resolved before this, mute and solo within it.
|
|
70
|
+
* Hand the result to `io.saveAudio`; this package does not touch files.
|
|
71
|
+
* Rejects when the synth or the font cannot be loaded.
|
|
72
|
+
*/
|
|
73
|
+
export function renderScoreAudio(score, soundfont) {
|
|
74
|
+
return renderScoreWith(score, renderSamples(soundfont));
|
|
75
|
+
}
|
|
62
76
|
//# sourceMappingURL=index.js.map
|
package/dist/web/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/web/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAErD,OAAO,EACL,aAAa,EACb,kBAAkB,GACnB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/web/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAErD,OAAO,EACL,aAAa,EACb,kBAAkB,GACnB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAG5D,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,CAAC;AACvB,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAE/E;;;;;;;;GAQG;AACH,KAAK,UAAU,kBAAkB;IAC/B,MAAM,EAAE,2BAA2B,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;IACvE,OAAO,IAAI,2BAA2B,EAA8B,CAAC;AACvE,CAAC;AAoBD,uEAAuE;AACvE,MAAM,UAAU,iBAAiB,CAAC,EAChC,SAAS,GAGV;IACC,OAAO,IAAI,WAAW,CACpB,IAAI,uBAAuB,CAAC;QAC1B,OAAO,EAAE,IAAI,eAAe,CAAC;YAC3B,IAAI,EAAE,IAAI,SAAS,CAAC,EAAE,WAAW,EAAE,kBAAkB,EAAE,CAAC;YACxD,UAAU,EAAE;gBACV,UAAU,EAAE,SAAS,CAAC,mBAAmB;gBACzC,OAAO,EAAE,SAAS,CAAC,gBAAgB;aACpC;YACD,OAAO,EAAE,SAAS,CAAC,OAAO;SAC3B,CAAC;KACH,CAAC,CACH,CAAC;AACJ,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,aAAa,CAAC,SAA0B;IACtD,OAAO,uBAAuB,CAAC;QAC7B,mBAAmB,EAAE,SAAS,CAAC,mBAAmB;QAClD,OAAO,EAAE,SAAS,CAAC,OAAO;QAC1B,QAAQ,EAAE,KAAK,EAAC,GAAG,EAAC,EAAE,CACpB,aAAa,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,kBAAkB,EAAE,EAAE,CAAC;KAC5D,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,gBAAgB,CAC9B,KAAY,EACZ,SAA0B;IAE1B,OAAO,eAAe,CAAC,KAAK,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC;AAC1D,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sudobility/music_player",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.26",
|
|
4
4
|
"description": "Playback for ScoreSmith: transport, synth engines and offline rendering, for web and React Native",
|
|
5
5
|
"author": "Sudobility",
|
|
6
6
|
"license": "BUSL-1.1",
|
|
@@ -73,7 +73,7 @@
|
|
|
73
73
|
"prepublishOnly": "bun run clean && bun run verify"
|
|
74
74
|
},
|
|
75
75
|
"peerDependencies": {
|
|
76
|
-
"@sudobility/music_types": "^0.13.
|
|
76
|
+
"@sudobility/music_types": "^0.13.25",
|
|
77
77
|
"js-synthesizer": "^1.13.0",
|
|
78
78
|
"react-native-audio-api": ">=0.13.0"
|
|
79
79
|
},
|
|
@@ -87,7 +87,7 @@
|
|
|
87
87
|
},
|
|
88
88
|
"devDependencies": {
|
|
89
89
|
"@eslint/js": "^10.0.1",
|
|
90
|
-
"@sudobility/music_types": "^0.13.
|
|
90
|
+
"@sudobility/music_types": "^0.13.25",
|
|
91
91
|
"@types/node": "^26.2.0",
|
|
92
92
|
"@typescript-eslint/eslint-plugin": "^8.65.0",
|
|
93
93
|
"@typescript-eslint/parser": "^8.65.0",
|