linked-rolls 0.70.0 → 0.72.0
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/README.md +106 -5
- package/lib/analysis/constraints.d.ts +7 -0
- package/lib/analysis/constraints.js +1 -0
- package/lib/analysis/ownPaper.d.ts +5 -1
- package/lib/analysis/ownPaper.js +5 -1
- package/lib/analysis/paper.d.ts +22 -4
- package/lib/analysis/paper.js +6 -0
- package/lib/analysis/reservations.d.ts +24 -1
- package/lib/analysis/reservations.js +15 -1
- package/lib/analysis/sigla.d.ts +6 -1
- package/lib/analysis/sigla.js +5 -1
- package/lib/analysis/stemma.d.ts +6 -1
- package/lib/analysis/stemma.js +6 -1
- package/lib/analysis/text.d.ts +16 -2
- package/lib/analysis/text.js +16 -2
- package/lib/analysis/witnesses.d.ts +20 -1
- package/lib/analysis/witnesses.js +4 -0
- package/lib/collation/Collation.d.ts +47 -8
- package/lib/collation/Collation.js +29 -5
- package/lib/collation/alignment.d.ts +16 -3
- package/lib/collation/alignment.js +15 -3
- package/lib/collation/scatter.d.ts +50 -9
- package/lib/collation/scatter.js +11 -1
- package/lib/collation/statistics.d.ts +39 -9
- package/lib/collation/statistics.js +27 -6
- package/lib/collation/substitution.d.ts +5 -0
- package/lib/collation/substitution.js +4 -0
- package/lib/emulation/Emulation.d.ts +16 -1
- package/lib/emulation/Emulation.js +10 -0
- package/lib/emulation/negotiation.d.ts +1 -0
- package/lib/emulation/negotiation.js +1 -0
- package/lib/filiation/adoption.d.ts +47 -0
- package/lib/filiation/adoption.js +190 -0
- package/lib/filiation/changes.d.ts +33 -0
- package/lib/filiation/changes.js +38 -0
- package/lib/filiation/index.d.ts +12 -0
- package/lib/filiation/index.js +12 -0
- package/lib/filiation/presence.d.ts +50 -0
- package/lib/filiation/presence.js +122 -0
- package/lib/filiation/proposal.d.ts +132 -0
- package/lib/filiation/proposal.js +376 -0
- package/lib/filiation/readings.d.ts +108 -0
- package/lib/filiation/readings.js +281 -0
- package/lib/filiation/search.d.ts +113 -0
- package/lib/filiation/search.js +268 -0
- package/lib/filiation/systems.d.ts +21 -0
- package/lib/filiation/systems.js +39 -0
- package/lib/filiation/trees.d.ts +20 -0
- package/lib/filiation/trees.js +69 -0
- package/lib/index.d.ts +34 -2
- package/lib/index.js +3 -1
- package/lib/io/asJsonLd.d.ts +10 -0
- package/lib/io/asJsonLd.js +10 -0
- package/lib/io/context.d.ts +16 -2
- package/lib/io/context.js +16 -2
- package/lib/io/importJsonLd.d.ts +1 -0
- package/lib/io/importJsonLd.js +1 -0
- package/lib/io/migrate.d.ts +8 -0
- package/lib/io/migrate.js +8 -0
- package/lib/lookup/lookup.d.ts +29 -5
- package/lib/lookup/lookup.js +29 -5
- package/lib/lookup/paths.d.ts +23 -3
- package/lib/lookup/paths.js +17 -3
- package/lib/model/Agent.d.ts +28 -2
- package/lib/model/Agent.js +15 -1
- package/lib/model/Assumption.d.ts +96 -7
- package/lib/model/Assumption.js +65 -7
- package/lib/model/ConditionState.d.ts +1 -0
- package/lib/model/Edit.d.ts +10 -0
- package/lib/model/Edit.js +8 -0
- package/lib/model/Edition.d.ts +11 -0
- package/lib/model/Edition.js +1 -0
- package/lib/model/Feature.d.ts +74 -7
- package/lib/model/Feature.js +41 -3
- package/lib/model/FeatureSource.d.ts +14 -1
- package/lib/model/FeatureSource.js +7 -1
- package/lib/model/Perforator.d.ts +10 -0
- package/lib/model/Perforator.js +1 -0
- package/lib/model/Quantity.d.ts +160 -13
- package/lib/model/Quantity.js +110 -6
- package/lib/model/RollCopy.d.ts +74 -12
- package/lib/model/RollCopy.js +53 -10
- package/lib/model/Symbol.d.ts +38 -1
- package/lib/model/Symbol.js +16 -0
- package/lib/model/TrackCalibration.d.ts +10 -2
- package/lib/model/TrackCalibration.js +9 -2
- package/lib/model/Version.d.ts +24 -4
- package/lib/model/Version.js +19 -4
- package/lib/model/notes.d.ts +15 -2
- package/lib/model/notes.js +9 -2
- package/lib/model/procedures.d.ts +5 -1
- package/lib/model/procedures.js +5 -1
- package/lib/model/vocabulary.d.ts +6 -1
- package/lib/model/vocabulary.js +6 -1
- package/lib/ops/beliefs.d.ts +23 -1
- package/lib/ops/beliefs.js +23 -1
- package/lib/ops/collation.d.ts +3 -0
- package/lib/ops/collation.js +3 -0
- package/lib/ops/commands.d.ts +17 -2
- package/lib/ops/commands.js +17 -2
- package/lib/ops/copies.d.ts +37 -6
- package/lib/ops/copies.js +37 -6
- package/lib/ops/draft.d.ts +2 -0
- package/lib/ops/draft.js +1 -0
- package/lib/ops/edits.d.ts +5 -1
- package/lib/ops/edits.js +5 -1
- package/lib/ops/features.d.ts +12 -1
- package/lib/ops/features.js +7 -0
- package/lib/ops/versions.d.ts +15 -3
- package/lib/ops/versions.js +15 -3
- package/lib/readers/phillipsEroll.d.ts +12 -1
- package/lib/readers/phillipsEroll.js +6 -1
- package/lib/readers/spencerBar.d.ts +12 -1
- package/lib/readers/spencerBar.js +7 -1
- package/lib/readers/stanfordAton.d.ts +15 -0
- package/lib/readers/stanfordAton.js +9 -0
- package/lib/schema.json +10 -0
- package/lib/shared/utils.d.ts +12 -0
- package/lib/spec/context.json +4 -0
- package/lib/systems/ReproducingSystem.d.ts +46 -3
- package/lib/systems/TrackerBar.d.ts +45 -4
- package/lib/systems/TrackerBar.js +20 -3
- package/lib/systems/index.d.ts +9 -2
- package/lib/systems/index.js +9 -2
- package/lib/systems/velocity.d.ts +1 -0
- package/lib/systems/velocity.js +1 -0
- package/lib/systems/welte.d.ts +18 -3
- package/lib/systems/welte.js +9 -2
- package/lib/systems/welteLicensee/bar.d.ts +1 -0
- package/lib/systems/welteLicensee/bar.js +1 -0
- package/lib/systems/welteLicensee/system.d.ts +18 -0
- package/lib/systems/welteLicensee/system.js +17 -0
- package/lib/systems/welteT100/bar.d.ts +8 -0
- package/lib/systems/welteT100/bar.js +4 -0
- package/lib/systems/welteT100/system.d.ts +46 -5
- package/lib/systems/welteT100/system.js +29 -3
- package/lib/systems/welteT98/bar.d.ts +6 -0
- package/lib/systems/welteT98/bar.js +2 -0
- package/lib/systems/welteT98/system.d.ts +58 -5
- package/lib/systems/welteT98/system.js +42 -3
- package/lib/validate.d.ts +16 -0
- package/lib/validate.js +15 -0
- package/package.json +2 -1
package/lib/systems/welte.d.ts
CHANGED
|
@@ -10,7 +10,10 @@ import { type VelocityMap } from "./velocity.js";
|
|
|
10
10
|
* performance is read off the emulator is one; what differs is in front of it,
|
|
11
11
|
* and each system says that in the `Mechanism` it hands to `performWelte`.
|
|
12
12
|
*/
|
|
13
|
-
/**
|
|
13
|
+
/**
|
|
14
|
+
* The options every Welte system takes.
|
|
15
|
+
* @category Systems and emulation
|
|
16
|
+
*/
|
|
14
17
|
export type WelteOptions = {
|
|
15
18
|
/**
|
|
16
19
|
* The take-up spool, which sets the time axis: it is held at a constant
|
|
@@ -54,13 +57,22 @@ export declare const sameParameters: (a: Parameters, b: Parameters) => boolean;
|
|
|
54
57
|
* `brushing` their fall is slowed until the quick runs of latch changes
|
|
55
58
|
* in the SUPRA corpus dip without damping, at the price that lifts
|
|
56
59
|
* shorter than about 265 ms brush as well.
|
|
60
|
+
* @category Systems and emulation
|
|
57
61
|
*/
|
|
58
62
|
export declare const pedalPresets: {
|
|
59
63
|
damping: Readonly<Record<string, number>>;
|
|
60
64
|
brushing: Readonly<Record<string, number>>;
|
|
61
65
|
};
|
|
66
|
+
/**
|
|
67
|
+
* The name of one of the readings of the pedal mechanism, `damping` or
|
|
68
|
+
* `brushing`.
|
|
69
|
+
* @category Systems and emulation
|
|
70
|
+
*/
|
|
62
71
|
export type PedalPreset = keyof typeof pedalPresets;
|
|
63
|
-
/**
|
|
72
|
+
/**
|
|
73
|
+
* The preset a set of pedal constants is, if it is one.
|
|
74
|
+
* @category Systems and emulation
|
|
75
|
+
*/
|
|
64
76
|
export declare const pedalPresetOf: (pedals: Parameters) => PedalPreset | undefined;
|
|
65
77
|
/**
|
|
66
78
|
* Between the edition's shared place axis and this version's own paper.
|
|
@@ -80,7 +92,10 @@ export type Paper = {
|
|
|
80
92
|
readonly paperOfRow: (row: number) => Millimeters;
|
|
81
93
|
readonly paperOfPlace: (place: Millimeters) => Millimeters;
|
|
82
94
|
};
|
|
83
|
-
/**
|
|
95
|
+
/**
|
|
96
|
+
* When the spool brings a place on the roll to the tracker bar.
|
|
97
|
+
* @category Systems and emulation
|
|
98
|
+
*/
|
|
84
99
|
export declare const secondsAt: (spool: Spool, place: Millimeters) => Seconds;
|
|
85
100
|
/** The speed the spool starts the paper at. */
|
|
86
101
|
export declare const startingSpeedOf: (spool: Spool) => MetersPerMinute;
|
package/lib/systems/welte.js
CHANGED
|
@@ -14,12 +14,16 @@ export const sameParameters = (a, b) => Object.keys(a).length === Object.keys(b)
|
|
|
14
14
|
* `brushing` their fall is slowed until the quick runs of latch changes
|
|
15
15
|
* in the SUPRA corpus dip without damping, at the price that lifts
|
|
16
16
|
* shorter than about 265 ms brush as well.
|
|
17
|
+
* @category Systems and emulation
|
|
17
18
|
*/
|
|
18
19
|
export const pedalPresets = {
|
|
19
20
|
damping: pedalDefaults,
|
|
20
21
|
brushing: pedalBrushing
|
|
21
22
|
};
|
|
22
|
-
/**
|
|
23
|
+
/**
|
|
24
|
+
* The preset a set of pedal constants is, if it is one.
|
|
25
|
+
* @category Systems and emulation
|
|
26
|
+
*/
|
|
23
27
|
export const pedalPresetOf = (pedals) => Object.keys(pedalPresets).find(name => sameParameters(pedalPresets[name], pedals));
|
|
24
28
|
/** Paper the grid runs on past the last hole, so that a final pedal release completes. */
|
|
25
29
|
const RUN_OUT = mm(100);
|
|
@@ -31,7 +35,10 @@ const paperOf = (toOwnPaper) => ({
|
|
|
31
35
|
paperOfRow: row => mm(row / ROWS_PER_MM),
|
|
32
36
|
paperOfPlace: place => mm(place * toOwnPaper)
|
|
33
37
|
});
|
|
34
|
-
/**
|
|
38
|
+
/**
|
|
39
|
+
* When the spool brings a place on the roll to the tracker bar.
|
|
40
|
+
* @category Systems and emulation
|
|
41
|
+
*/
|
|
35
42
|
export const secondsAt = (spool, place) => seconds(paperSeconds(spool, inCentimeters(place)));
|
|
36
43
|
/** The speed the spool starts the paper at. */
|
|
37
44
|
export const startingSpeedOf = (spool) => metersPerMinute(paperSpeed(spool, 0) * 60 / 100);
|
|
@@ -7,5 +7,6 @@ import { TrackerBar } from "../TrackerBar.js";
|
|
|
7
7
|
* tracks, so the note block and the treble valves sit two positions
|
|
8
8
|
* lower. The layout is the one Stanford's midi2exp reads, checked
|
|
9
9
|
* valve by valve on roll 225 against the T-100 copies.
|
|
10
|
+
* @category Systems and emulation
|
|
10
11
|
*/
|
|
11
12
|
export declare const welteLicensee: TrackerBar;
|
|
@@ -9,6 +9,7 @@ import { welteT100Accents, welteT100Operations } from "../welteT100/bar.js";
|
|
|
9
9
|
* tracks, so the note block and the treble valves sit two positions
|
|
10
10
|
* lower. The layout is the one Stanford's midi2exp reads, checked
|
|
11
11
|
* valve by valve on roll 225 against the T-100 copies.
|
|
12
|
+
* @category Systems and emulation
|
|
12
13
|
*/
|
|
13
14
|
export const welteLicensee = describeTrackerBar({
|
|
14
15
|
id: 'welte-licensee',
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import { ReproducingSystem } from "../ReproducingSystem.js";
|
|
2
2
|
import { type WelteT100Options } from "../welteT100/system.js";
|
|
3
|
+
/**
|
|
4
|
+
* The Licensee takes the options of the T-100, whose mechanism it
|
|
5
|
+
* shares; see `WelteOptions`.
|
|
6
|
+
* @category Systems and emulation
|
|
7
|
+
*/
|
|
3
8
|
export type WelteLicenseeOptions = WelteT100Options;
|
|
4
9
|
/**
|
|
5
10
|
* The one instrument on offer, and it is not a Licensee instrument.
|
|
@@ -13,15 +18,26 @@ export type WelteLicenseeOptions = WelteT100Options;
|
|
|
13
18
|
*
|
|
14
19
|
* So a Licensee playback is a Freiburg reading of American paper, and the
|
|
15
20
|
* union has one arm to keep that visible. Nothing should be published from it.
|
|
21
|
+
* @category Systems and emulation
|
|
16
22
|
*/
|
|
17
23
|
export declare const instruments: {
|
|
18
24
|
unfitted: {
|
|
19
25
|
'welte-t100-consensus': import("welte-mignon-emulator/t100").Instrument;
|
|
20
26
|
};
|
|
21
27
|
};
|
|
28
|
+
/**
|
|
29
|
+
* The one instrument on offer for the Licensee by name: the T-100
|
|
30
|
+
* consensus, named as unfitted.
|
|
31
|
+
* @category Systems and emulation
|
|
32
|
+
*/
|
|
22
33
|
export type WelteLicenseeInstrumentName = {
|
|
23
34
|
unfitted: 'welte-t100-consensus';
|
|
24
35
|
};
|
|
36
|
+
/**
|
|
37
|
+
* The names of the instruments on offer for the Licensee, of which
|
|
38
|
+
* there is one.
|
|
39
|
+
* @category Systems and emulation
|
|
40
|
+
*/
|
|
25
41
|
export declare const instrumentNames: readonly WelteLicenseeInstrumentName[];
|
|
26
42
|
/**
|
|
27
43
|
* Welte's own spool is carried over with the constants. Phillips (p. 181) says
|
|
@@ -34,6 +50,7 @@ export declare const instrumentNames: readonly WelteLicenseeInstrumentName[];
|
|
|
34
50
|
* that roll's tempo (`spoolFor`). Either way only its geometry is used, and
|
|
35
51
|
* that is better varied than trusted: it scales every conductance by k and
|
|
36
52
|
* every time constant by 1/k, and touches nothing dimensionless.
|
|
53
|
+
* @category Systems and emulation
|
|
37
54
|
*/
|
|
38
55
|
export declare const defaultWelteLicenseeOptions: WelteLicenseeOptions;
|
|
39
56
|
/**
|
|
@@ -48,5 +65,6 @@ export declare const defaultWelteLicenseeOptions: WelteLicenseeOptions;
|
|
|
48
65
|
* curve produced here names itself as such. The spool sets no tempo of its
|
|
49
66
|
* own: a version runs at the speed stated for its copies, or at that of the
|
|
50
67
|
* roll it was re-cut from times the length ratio.
|
|
68
|
+
* @category Systems and emulation
|
|
51
69
|
*/
|
|
52
70
|
export declare const welteLicenseeSystem: ReproducingSystem<WelteLicenseeOptions>;
|
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The Welte-Mignon (Licensee), the American re-cut of the T-100 rolls, as
|
|
3
|
+
* a reproducing system (`welteLicenseeSystem`). It is played by the
|
|
4
|
+
* T-100's mechanism on the T-100's constants, since no Licensee
|
|
5
|
+
* instrument has been fitted, and every curve it produces says so. It
|
|
6
|
+
* needs the optional peer dependency welte-mignon-emulator.
|
|
7
|
+
*
|
|
8
|
+
* @module linked-rolls/welte-licensee
|
|
9
|
+
*/
|
|
1
10
|
import { CONSENSUS } from "welte-mignon-emulator/t100";
|
|
2
11
|
import { track } from "../../model/Quantity.js";
|
|
3
12
|
import { welteLicensee } from "./bar.js";
|
|
@@ -14,8 +23,14 @@ import { defaultWelteT100Options, instrumentNameOf, nuanceOf, performAs } from "
|
|
|
14
23
|
*
|
|
15
24
|
* So a Licensee playback is a Freiburg reading of American paper, and the
|
|
16
25
|
* union has one arm to keep that visible. Nothing should be published from it.
|
|
26
|
+
* @category Systems and emulation
|
|
17
27
|
*/
|
|
18
28
|
export const instruments = { unfitted: { 'welte-t100-consensus': CONSENSUS } };
|
|
29
|
+
/**
|
|
30
|
+
* The names of the instruments on offer for the Licensee, of which
|
|
31
|
+
* there is one.
|
|
32
|
+
* @category Systems and emulation
|
|
33
|
+
*/
|
|
19
34
|
export const instrumentNames = [
|
|
20
35
|
{ unfitted: 'welte-t100-consensus' }
|
|
21
36
|
];
|
|
@@ -30,6 +45,7 @@ export const instrumentNames = [
|
|
|
30
45
|
* that roll's tempo (`spoolFor`). Either way only its geometry is used, and
|
|
31
46
|
* that is better varied than trusted: it scales every conductance by k and
|
|
32
47
|
* every time constant by 1/k, and touches nothing dimensionless.
|
|
48
|
+
* @category Systems and emulation
|
|
33
49
|
*/
|
|
34
50
|
export const defaultWelteLicenseeOptions = {
|
|
35
51
|
...defaultWelteT100Options,
|
|
@@ -57,6 +73,7 @@ const licenseeInstrument = (nuance) => instrumentNameOf(nuance) === 'consensus'
|
|
|
57
73
|
* curve produced here names itself as such. The spool sets no tempo of its
|
|
58
74
|
* own: a version runs at the speed stated for its copies, or at that of the
|
|
59
75
|
* roll it was re-cut from times the length ratio.
|
|
76
|
+
* @category Systems and emulation
|
|
60
77
|
*/
|
|
61
78
|
export const welteLicenseeSystem = {
|
|
62
79
|
name: 'Welte-Mignon (Licensee)',
|
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
import { Operation, TrackerBar } from "../TrackerBar.js";
|
|
2
2
|
/**
|
|
3
3
|
* The commands of the Welte-Mignon T-100, as its tracker bar reads them.
|
|
4
|
+
* @category Systems and emulation
|
|
4
5
|
*/
|
|
5
6
|
export declare const welteT100ExpressionTypes: readonly ['SustainPedalOn', 'SustainPedalOff', 'SoftPedalOn', 'SoftPedalOff', 'MezzoforteOff', 'MezzoforteOn', 'SlowCrescendoOn', 'SlowCrescendoOff', 'ForzandoOn', 'ForzandoOff', 'MotorOff', 'MotorOn', 'Rewind', 'ElectricCutOff'];
|
|
7
|
+
/**
|
|
8
|
+
* A command of the Welte-Mignon T-100.
|
|
9
|
+
* @category Systems and emulation
|
|
10
|
+
*/
|
|
6
11
|
export type WelteT100ExpressionType = typeof welteT100ExpressionTypes[number];
|
|
7
12
|
/**
|
|
8
13
|
* What each T-100 command operates, so that it can be set against the
|
|
@@ -23,11 +28,13 @@ export type WelteT100ExpressionType = typeof welteT100ExpressionTypes[number];
|
|
|
23
28
|
* being an automatic mercury contact (Skala-Rolle 98 §12) and its rewind
|
|
24
29
|
* riding on the bass sforzando-piano line. A red command of those kinds
|
|
25
30
|
* has no counterpart and stays a plain deletion.
|
|
31
|
+
* @category Systems and emulation
|
|
26
32
|
*/
|
|
27
33
|
export declare const welteT100Operations: Readonly<Partial<Record<WelteT100ExpressionType, Operation>>>;
|
|
28
34
|
/**
|
|
29
35
|
* A single added accent on the T-100: a valve latched on and off again
|
|
30
36
|
* straight away.
|
|
37
|
+
* @category Systems and emulation
|
|
31
38
|
*/
|
|
32
39
|
export declare const welteT100Accents: readonly (readonly WelteT100ExpressionType[])[];
|
|
33
40
|
/**
|
|
@@ -37,5 +44,6 @@ export declare const welteT100Accents: readonly (readonly WelteT100ExpressionTyp
|
|
|
37
44
|
* The expression valves are duplicated, bass below the note block and
|
|
38
45
|
* treble above it, in mirrored order. The rolls run at three metres a
|
|
39
46
|
* minute (Phillips 2016, p. 113; Bärtsch 2020 gives 3 or 2.9).
|
|
47
|
+
* @category Systems and emulation
|
|
40
48
|
*/
|
|
41
49
|
export declare const welteT100: TrackerBar;
|
|
@@ -2,6 +2,7 @@ import { describeTrackerBar } from "../TrackerBar.js";
|
|
|
2
2
|
import { metersPerMinute, mm } from "../../model/Quantity.js";
|
|
3
3
|
/**
|
|
4
4
|
* The commands of the Welte-Mignon T-100, as its tracker bar reads them.
|
|
5
|
+
* @category Systems and emulation
|
|
5
6
|
*/
|
|
6
7
|
export const welteT100ExpressionTypes = [
|
|
7
8
|
'SustainPedalOn',
|
|
@@ -38,6 +39,7 @@ export const welteT100ExpressionTypes = [
|
|
|
38
39
|
* being an automatic mercury contact (Skala-Rolle 98 §12) and its rewind
|
|
39
40
|
* riding on the bass sforzando-piano line. A red command of those kinds
|
|
40
41
|
* has no counterpart and stays a plain deletion.
|
|
42
|
+
* @category Systems and emulation
|
|
41
43
|
*/
|
|
42
44
|
export const welteT100Operations = {
|
|
43
45
|
MezzoforteOn: { operates: 'mezzoforte', spelling: 'on', sided: true },
|
|
@@ -54,6 +56,7 @@ export const welteT100Operations = {
|
|
|
54
56
|
/**
|
|
55
57
|
* A single added accent on the T-100: a valve latched on and off again
|
|
56
58
|
* straight away.
|
|
59
|
+
* @category Systems and emulation
|
|
57
60
|
*/
|
|
58
61
|
export const welteT100Accents = [
|
|
59
62
|
['SlowCrescendoOn', 'SlowCrescendoOff'],
|
|
@@ -66,6 +69,7 @@ export const welteT100Accents = [
|
|
|
66
69
|
* The expression valves are duplicated, bass below the note block and
|
|
67
70
|
* treble above it, in mirrored order. The rolls run at three metres a
|
|
68
71
|
* minute (Phillips 2016, p. 113; Bärtsch 2020 gives 3 or 2.9).
|
|
72
|
+
* @category Systems and emulation
|
|
69
73
|
*/
|
|
70
74
|
export const welteT100 = describeTrackerBar({
|
|
71
75
|
id: 'welte-t100',
|
|
@@ -1,26 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The Welte-Mignon T-100, the red Welte, as a reproducing system: the
|
|
3
|
+
* system that plays a version (`welteT100System`), the options it takes,
|
|
4
|
+
* and the instruments its emulator was fitted as. It needs the optional
|
|
5
|
+
* peer dependency welte-mignon-emulator.
|
|
6
|
+
*
|
|
7
|
+
* @module linked-rolls/welte-t100
|
|
8
|
+
*/
|
|
1
9
|
import { Half, Parameters } from "welte-mignon-emulator";
|
|
2
10
|
import { Instrument, RollNumber } from "welte-mignon-emulator/t100";
|
|
3
11
|
import { NegotiatedEvent, Performance, ReproducingSystem, RollProperties } from "../ReproducingSystem.js";
|
|
4
12
|
import { type WelteOptions } from "../welte.js";
|
|
5
13
|
export type { VelocityMap } from "../velocity.js";
|
|
6
|
-
export { pedalPresetOf, pedalPresets, secondsAt, type PedalPreset } from "../welte.js";
|
|
14
|
+
export { pedalPresetOf, pedalPresets, secondsAt, type PedalPreset, type WelteOptions } from "../welte.js";
|
|
15
|
+
/**
|
|
16
|
+
* An instrument the T-100 emulator was fitted as: its nuancing constants
|
|
17
|
+
* for each half of the keyboard, and what they were fitted to and how
|
|
18
|
+
* well.
|
|
19
|
+
* @category Systems and emulation
|
|
20
|
+
*/
|
|
7
21
|
export type { Instrument } from "welte-mignon-emulator/t100";
|
|
22
|
+
/**
|
|
23
|
+
* An instrument the T-100 emulator was fitted as, by name: the
|
|
24
|
+
* consensus, or the setting that drew one roll's nuance lines, by the
|
|
25
|
+
* roll's Welte number.
|
|
26
|
+
* @category Systems and emulation
|
|
27
|
+
*/
|
|
8
28
|
export type InstrumentName = 'consensus' | RollNumber;
|
|
9
29
|
/**
|
|
10
30
|
* The instruments the emulator was fitted as: the consensus over the six
|
|
11
31
|
* rolls with drawn nuance lines, and the setting that drew each of them,
|
|
12
32
|
* named by the roll's Welte number. The provenance beside each says what
|
|
13
33
|
* it was fitted to and how well.
|
|
34
|
+
* @category Systems and emulation
|
|
14
35
|
*/
|
|
15
36
|
export declare const instruments: Readonly<Record<InstrumentName, Instrument>>;
|
|
16
|
-
/**
|
|
37
|
+
/**
|
|
38
|
+
* The instruments by name, the consensus first.
|
|
39
|
+
* @category Systems and emulation
|
|
40
|
+
*/
|
|
17
41
|
export declare const instrumentNames: readonly InstrumentName[];
|
|
18
|
-
/**
|
|
42
|
+
/**
|
|
43
|
+
* The nuancing constants of an instrument, one set for each half of the keyboard.
|
|
44
|
+
* @category Systems and emulation
|
|
45
|
+
*/
|
|
19
46
|
export declare const nuanceOf: (instrument: Instrument) => Record<Half, Parameters>;
|
|
20
|
-
/**
|
|
47
|
+
/**
|
|
48
|
+
* The instrument a pair of nuancing constants belongs to, if it is one.
|
|
49
|
+
* @category Systems and emulation
|
|
50
|
+
*/
|
|
21
51
|
export declare const instrumentNameOf: (nuance: Record<Half, Parameters>) => InstrumentName | undefined;
|
|
22
|
-
/**
|
|
52
|
+
/**
|
|
53
|
+
* The T-100 takes the options every Welte system does; see `WelteOptions`.
|
|
54
|
+
* @category Systems and emulation
|
|
55
|
+
*/
|
|
23
56
|
export type WelteT100Options = WelteOptions;
|
|
57
|
+
/**
|
|
58
|
+
* The options the T-100 plays a version with unless others are given:
|
|
59
|
+
* Welte's spool, the consensus instrument, the damping pedals as a
|
|
60
|
+
* continuous controller, and the keyboard divided at track 54.
|
|
61
|
+
* @category Systems and emulation
|
|
62
|
+
*/
|
|
24
63
|
export declare const defaultWelteT100Options: WelteT100Options;
|
|
25
64
|
/**
|
|
26
65
|
* The mechanism, given a way of naming the instrument on the curves it
|
|
@@ -29,6 +68,7 @@ export declare const defaultWelteT100Options: WelteT100Options;
|
|
|
29
68
|
* shares this; what it may not share is the name, since a Licensee playback
|
|
30
69
|
* runs on constants fitted to Freiburg instruments and the curve has to say
|
|
31
70
|
* so, nor the spool, which is the red one it carries over.
|
|
71
|
+
* @internal
|
|
32
72
|
*/
|
|
33
73
|
export declare const performAs: (instrumentOf: (nuance: Record<Half, Parameters>) => string, ownSpool?: boolean) => (events: readonly NegotiatedEvent[], options: WelteT100Options, roll: RollProperties) => Performance;
|
|
34
74
|
/**
|
|
@@ -38,5 +78,6 @@ export declare const performAs: (instrumentOf: (nuance: Record<Half, Parameters>
|
|
|
38
78
|
* switch. The constants are the consensus fitted across the hand-drawn
|
|
39
79
|
* nuance lines of six rolls, with the terms that describe the drawing
|
|
40
80
|
* apparatus switched off; `instruments` offers each roll's own setting.
|
|
81
|
+
* @category Systems and emulation
|
|
41
82
|
*/
|
|
42
83
|
export declare const welteT100System: ReproducingSystem<WelteT100Options>;
|
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The Welte-Mignon T-100, the red Welte, as a reproducing system: the
|
|
3
|
+
* system that plays a version (`welteT100System`), the options it takes,
|
|
4
|
+
* and the instruments its emulator was fitted as. It needs the optional
|
|
5
|
+
* peer dependency welte-mignon-emulator.
|
|
6
|
+
*
|
|
7
|
+
* @module linked-rolls/welte-t100
|
|
8
|
+
*/
|
|
1
9
|
import { DEFAULT_PUNCH_MM, TRACKER_BORE_MM, WELTE_SPOOL, } from "welte-mignon-emulator";
|
|
2
10
|
import { aperturePorts, CONSENSUS, pneumaticModel, PRESETS, runPedals, } from "welte-mignon-emulator/t100";
|
|
3
11
|
import { welteT100 } from "./bar.js";
|
|
@@ -10,14 +18,30 @@ export { pedalPresetOf, pedalPresets, secondsAt } from "../welte.js";
|
|
|
10
18
|
* rolls with drawn nuance lines, and the setting that drew each of them,
|
|
11
19
|
* named by the roll's Welte number. The provenance beside each says what
|
|
12
20
|
* it was fitted to and how well.
|
|
21
|
+
* @category Systems and emulation
|
|
13
22
|
*/
|
|
14
23
|
export const instruments = { consensus: CONSENSUS, ...PRESETS };
|
|
15
|
-
/**
|
|
24
|
+
/**
|
|
25
|
+
* The instruments by name, the consensus first.
|
|
26
|
+
* @category Systems and emulation
|
|
27
|
+
*/
|
|
16
28
|
export const instrumentNames = ['consensus', ...Object.keys(PRESETS)];
|
|
17
|
-
/**
|
|
29
|
+
/**
|
|
30
|
+
* The nuancing constants of an instrument, one set for each half of the keyboard.
|
|
31
|
+
* @category Systems and emulation
|
|
32
|
+
*/
|
|
18
33
|
export const nuanceOf = (instrument) => ({ bass: instrument.bass, treble: instrument.treble });
|
|
19
|
-
/**
|
|
34
|
+
/**
|
|
35
|
+
* The instrument a pair of nuancing constants belongs to, if it is one.
|
|
36
|
+
* @category Systems and emulation
|
|
37
|
+
*/
|
|
20
38
|
export const instrumentNameOf = (nuance) => instrumentNames.find(name => sameParameters(instruments[name].bass, nuance.bass) && sameParameters(instruments[name].treble, nuance.treble));
|
|
39
|
+
/**
|
|
40
|
+
* The options the T-100 plays a version with unless others are given:
|
|
41
|
+
* Welte's spool, the consensus instrument, the damping pedals as a
|
|
42
|
+
* continuous controller, and the keyboard divided at track 54.
|
|
43
|
+
* @category Systems and emulation
|
|
44
|
+
*/
|
|
21
45
|
export const defaultWelteT100Options = {
|
|
22
46
|
spool: WELTE_SPOOL,
|
|
23
47
|
nuance: nuanceOf(instruments.consensus),
|
|
@@ -60,6 +84,7 @@ const punchOf = (event, rows) => {
|
|
|
60
84
|
* shares this; what it may not share is the name, since a Licensee playback
|
|
61
85
|
* runs on constants fitted to Freiburg instruments and the curve has to say
|
|
62
86
|
* so, nor the spool, which is the red one it carries over.
|
|
87
|
+
* @internal
|
|
63
88
|
*/
|
|
64
89
|
export const performAs = (instrumentOf, ownSpool = true) => (events, options, roll) => {
|
|
65
90
|
const { events: performed, curves } = performWelte(events, options, roll, {
|
|
@@ -79,6 +104,7 @@ export const performAs = (instrumentOf, ownSpool = true) => (events, options, ro
|
|
|
79
104
|
* switch. The constants are the consensus fitted across the hand-drawn
|
|
80
105
|
* nuance lines of six rolls, with the terms that describe the drawing
|
|
81
106
|
* apparatus switched off; `instruments` offers each roll's own setting.
|
|
107
|
+
* @category Systems and emulation
|
|
82
108
|
*/
|
|
83
109
|
export const welteT100System = {
|
|
84
110
|
name: 'Welte-Mignon T100',
|
|
@@ -7,8 +7,13 @@ import { TrackerBar } from "../TrackerBar.js";
|
|
|
7
7
|
* as long as one continuous perforation lasts (Hagmann, pp. 89 f. and
|
|
8
8
|
* 100–103; Phillips, p. 121), so none of these is an On or an Off. The
|
|
9
9
|
* two sforzando valves name the end of the range they pull towards.
|
|
10
|
+
* @category Systems and emulation
|
|
10
11
|
*/
|
|
11
12
|
export declare const welteT98ExpressionTypes: readonly ['SforzandoPiano', 'SforzandoForte', 'Mezzoforte', 'Crescendo', 'SustainPedal', 'SoftPedal'];
|
|
13
|
+
/**
|
|
14
|
+
* A command of the Welte-Mignon T-98.
|
|
15
|
+
* @category Systems and emulation
|
|
16
|
+
*/
|
|
12
17
|
export type WelteT98ExpressionType = typeof welteT98ExpressionTypes[number];
|
|
13
18
|
/**
|
|
14
19
|
* Welte-Mignon T-98 ("green Welte"), cf. Hagmann, Anhang 11 (p. 179)
|
|
@@ -40,5 +45,6 @@ export type WelteT98ExpressionType = typeof welteT98ExpressionTypes[number];
|
|
|
40
45
|
* scale to the cross-line bearing the dial number in half a minute
|
|
41
46
|
* (Skala-Rolle 98 §1b). This is documentation; what sets the emulator's
|
|
42
47
|
* time axis is the spool.
|
|
48
|
+
* @category Systems and emulation
|
|
43
49
|
*/
|
|
44
50
|
export declare const welteT98: TrackerBar;
|
|
@@ -8,6 +8,7 @@ import { metersPerMinute, mm } from "../../model/Quantity.js";
|
|
|
8
8
|
* as long as one continuous perforation lasts (Hagmann, pp. 89 f. and
|
|
9
9
|
* 100–103; Phillips, p. 121), so none of these is an On or an Off. The
|
|
10
10
|
* two sforzando valves name the end of the range they pull towards.
|
|
11
|
+
* @category Systems and emulation
|
|
11
12
|
*/
|
|
12
13
|
export const welteT98ExpressionTypes = [
|
|
13
14
|
'SforzandoPiano',
|
|
@@ -60,6 +61,7 @@ const welteT98Operations = {
|
|
|
60
61
|
* scale to the cross-line bearing the dial number in half a minute
|
|
61
62
|
* (Skala-Rolle 98 §1b). This is documentation; what sets the emulator's
|
|
62
63
|
* time axis is the spool.
|
|
64
|
+
* @category Systems and emulation
|
|
63
65
|
*/
|
|
64
66
|
export const welteT98 = describeTrackerBar({
|
|
65
67
|
id: 'welte-green',
|
|
@@ -1,11 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The Welte-Mignon T-98, the green Welte, as a reproducing system: the
|
|
3
|
+
* system that plays a version (`welteT98System`), the options it takes,
|
|
4
|
+
* and the green instruments its emulator offers, genuine, derived and
|
|
5
|
+
* unfitted. It needs the optional peer dependency welte-mignon-emulator.
|
|
6
|
+
*
|
|
7
|
+
* @module linked-rolls/welte-t98
|
|
8
|
+
*/
|
|
1
9
|
import { Half, Parameters } from "welte-mignon-emulator";
|
|
2
|
-
import { instrumentT98Of, labelOf,
|
|
10
|
+
import { instrumentT98Of, labelOf, WelteT98InstrumentName } from "welte-mignon-emulator/t98";
|
|
3
11
|
import { ReproducingSystem } from "../ReproducingSystem.js";
|
|
4
12
|
import { Millimeters } from "../../model/Quantity.js";
|
|
5
13
|
import { type WelteOptions } from "../welte.js";
|
|
14
|
+
/** @category Systems and emulation */
|
|
6
15
|
export type { VelocityMap } from "../velocity.js";
|
|
7
|
-
|
|
8
|
-
export
|
|
16
|
+
/** @category Systems and emulation */
|
|
17
|
+
export { pedalPresetOf, pedalPresets, secondsAt, type PedalPreset, type WelteOptions } from "../welte.js";
|
|
18
|
+
/**
|
|
19
|
+
* A set of nuancing constants for the green Welte, with what it was
|
|
20
|
+
* fitted to: a genuine, a derived or an unfitted instrument.
|
|
21
|
+
* @category Systems and emulation
|
|
22
|
+
*/
|
|
23
|
+
export type { WelteT98Instrument } from "welte-mignon-emulator/t98";
|
|
24
|
+
/**
|
|
25
|
+
* A green instrument by name: a genuine one by the Welte number of its
|
|
26
|
+
* roll or as their consensus, a derived one by the recording it was
|
|
27
|
+
* fitted on, or the unfitted starting values.
|
|
28
|
+
* @category Systems and emulation
|
|
29
|
+
*/
|
|
30
|
+
export type { WelteT98InstrumentName } from "welte-mignon-emulator/t98";
|
|
9
31
|
/**
|
|
10
32
|
* The instruments the emulator offers for the green Welte, in three groups that
|
|
11
33
|
* answer three different questions and must not be listed as one.
|
|
@@ -32,6 +54,7 @@ export type { WelteT98Instrument, WelteT98InstrumentName } from "welte-mignon-em
|
|
|
32
54
|
* are 0.029 to 0.066, because a shared mechanism describes none of them well.
|
|
33
55
|
* That spread is a property of the instruments rather than of the fit, and
|
|
34
56
|
* Gottschewski's finding that they were out of regulation is visible in it.
|
|
57
|
+
* @category Systems and emulation
|
|
35
58
|
*/
|
|
36
59
|
export declare const instruments: {
|
|
37
60
|
genuine: Readonly<Partial<Record<"consensus" | import("welte-mignon-emulator/t98").GenuineRoll, import("welte-mignon-emulator/t98").WelteT98Instrument>>>;
|
|
@@ -40,10 +63,30 @@ export declare const instruments: {
|
|
|
40
63
|
'starting-values': import("welte-mignon-emulator/t98").WelteT98Instrument;
|
|
41
64
|
};
|
|
42
65
|
};
|
|
66
|
+
/**
|
|
67
|
+
* The names of the green instruments, the genuine ones first, then the
|
|
68
|
+
* derived ones and the unfitted starting values.
|
|
69
|
+
* @category Systems and emulation
|
|
70
|
+
*/
|
|
43
71
|
export declare const instrumentNames: readonly WelteT98InstrumentName[];
|
|
44
|
-
/**
|
|
72
|
+
/**
|
|
73
|
+
* The instrument a pair of nuancing constants belongs to, if it is one.
|
|
74
|
+
* @category Systems and emulation
|
|
75
|
+
*/
|
|
45
76
|
export declare const instrumentNameOf: (nuance: Record<Half, Parameters>) => WelteT98InstrumentName | undefined;
|
|
46
|
-
|
|
77
|
+
/**
|
|
78
|
+
* The green instrument of that name, where the emulator has one.
|
|
79
|
+
* @category Systems and emulation
|
|
80
|
+
*/
|
|
81
|
+
export { instrumentT98Of };
|
|
82
|
+
/** @category Systems and emulation */
|
|
83
|
+
export { labelOf };
|
|
84
|
+
/**
|
|
85
|
+
* The nuancing constants of a green instrument, one set for each half of
|
|
86
|
+
* the keyboard.
|
|
87
|
+
* @category Systems and emulation
|
|
88
|
+
*/
|
|
89
|
+
export declare const nuanceOf: (instrument: import("welte-mignon-emulator/t98").WelteT98Instrument) => Record<Half, Parameters>;
|
|
47
90
|
/**
|
|
48
91
|
* The options every Welte system takes (see `WelteOptions`), with what the
|
|
49
92
|
* T-98 adds. No source states a T-98 spool geometry, so the default keeps the
|
|
@@ -56,6 +99,7 @@ export { instrumentT98Of, labelOf, nuanceOf };
|
|
|
56
99
|
* configuration independently gives the last bass note as MIDI 66. A green
|
|
57
100
|
* roll re-cut from a Mignon master uses only the middle 80 of the 88 note
|
|
58
101
|
* positions, so the division falls inside the used compass either way.
|
|
102
|
+
* @category Systems and emulation
|
|
59
103
|
*/
|
|
60
104
|
export type WelteT98Options = WelteOptions & {
|
|
61
105
|
/** Which instrument the nuancing constants are, so that a curve can say so. */
|
|
@@ -80,6 +124,14 @@ export type WelteT98Options = WelteOptions & {
|
|
|
80
124
|
*/
|
|
81
125
|
rewind: 'stop' | 'ignore';
|
|
82
126
|
};
|
|
127
|
+
/**
|
|
128
|
+
* The options the T-98 plays a version with unless others are given:
|
|
129
|
+
* the green spool, the consensus of the genuine instruments, the
|
|
130
|
+
* damping pedals as a continuous controller, the keyboard divided at
|
|
131
|
+
* track 52, and the performance ending where a long perforation sends
|
|
132
|
+
* the roll back.
|
|
133
|
+
* @category Systems and emulation
|
|
134
|
+
*/
|
|
83
135
|
export declare const defaultWelteT98Options: WelteT98Options;
|
|
84
136
|
/**
|
|
85
137
|
* The green Welte, as welte-mignon-emulator models it. Everything downstream of
|
|
@@ -95,5 +147,6 @@ export declare const defaultWelteT98Options: WelteT98Options;
|
|
|
95
147
|
* playback runs on the consensus across them unless the caller names another
|
|
96
148
|
* instrument. Where the roll being played is one of the five, its own instrument
|
|
97
149
|
* is the better choice and `instruments.genuine` carries it.
|
|
150
|
+
* @category Systems and emulation
|
|
98
151
|
*/
|
|
99
152
|
export declare const welteT98System: ReproducingSystem<WelteT98Options>;
|
|
@@ -1,9 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The Welte-Mignon T-98, the green Welte, as a reproducing system: the
|
|
3
|
+
* system that plays a version (`welteT98System`), the options it takes,
|
|
4
|
+
* and the green instruments its emulator offers, genuine, derived and
|
|
5
|
+
* unfitted. It needs the optional peer dependency welte-mignon-emulator.
|
|
6
|
+
*
|
|
7
|
+
* @module linked-rolls/welte-t98
|
|
8
|
+
*/
|
|
1
9
|
import { ROWS_PER_MM, WELTE_T98_SPOOL, } from "welte-mignon-emulator";
|
|
2
|
-
import { aperturePorts, CHAIN_GAP_MM, DERIVED, GENUINE, instrumentT98Of, labelOf, nuanceOf, PUNCH_T98_MM, pneumaticT98Model, rewindAt, runPedals, sforzandoPianoLift, STARTING_VALUES, TRACKER_BORE_T98_MM, } from "welte-mignon-emulator/t98";
|
|
10
|
+
import { aperturePorts, CHAIN_GAP_MM, DERIVED, GENUINE, instrumentT98Of, labelOf, nuanceOf as emulatorNuanceOf, PUNCH_T98_MM, pneumaticT98Model, rewindAt, runPedals, sforzandoPianoLift, STARTING_VALUES, TRACKER_BORE_T98_MM, } from "welte-mignon-emulator/t98";
|
|
3
11
|
import { welteT98 } from "./bar.js";
|
|
4
12
|
import { mm, seconds, track } from "../../model/Quantity.js";
|
|
5
13
|
import { defaultVelocityMap } from "../velocity.js";
|
|
6
14
|
import { pedalPresets, performWelte, sameParameters } from "../welte.js";
|
|
15
|
+
/** @category Systems and emulation */
|
|
7
16
|
export { pedalPresetOf, pedalPresets, secondsAt } from "../welte.js";
|
|
8
17
|
/**
|
|
9
18
|
* The instruments the emulator offers for the green Welte, in three groups that
|
|
@@ -31,21 +40,50 @@ export { pedalPresetOf, pedalPresets, secondsAt } from "../welte.js";
|
|
|
31
40
|
* are 0.029 to 0.066, because a shared mechanism describes none of them well.
|
|
32
41
|
* That spread is a property of the instruments rather than of the fit, and
|
|
33
42
|
* Gottschewski's finding that they were out of regulation is visible in it.
|
|
43
|
+
* @category Systems and emulation
|
|
34
44
|
*/
|
|
35
45
|
export const instruments = { genuine: GENUINE, derived: DERIVED, unfitted: { 'starting-values': STARTING_VALUES } };
|
|
46
|
+
/**
|
|
47
|
+
* The names of the green instruments, the genuine ones first, then the
|
|
48
|
+
* derived ones and the unfitted starting values.
|
|
49
|
+
* @category Systems and emulation
|
|
50
|
+
*/
|
|
36
51
|
export const instrumentNames = [
|
|
37
52
|
...Object.keys(GENUINE).map(genuine => ({ genuine })),
|
|
38
53
|
...Object.keys(DERIVED).map(derived => ({ derived })),
|
|
39
54
|
{ unfitted: 'starting-values' }
|
|
40
55
|
];
|
|
41
|
-
/**
|
|
56
|
+
/**
|
|
57
|
+
* The instrument a pair of nuancing constants belongs to, if it is one.
|
|
58
|
+
* @category Systems and emulation
|
|
59
|
+
*/
|
|
42
60
|
export const instrumentNameOf = (nuance) => instrumentNames.find(name => {
|
|
43
61
|
const instrument = instrumentT98Of(name);
|
|
44
62
|
return instrument !== undefined
|
|
45
63
|
&& sameParameters(instrument.bass, nuance.bass)
|
|
46
64
|
&& sameParameters(instrument.treble, nuance.treble);
|
|
47
65
|
});
|
|
48
|
-
|
|
66
|
+
/**
|
|
67
|
+
* The green instrument of that name, where the emulator has one.
|
|
68
|
+
* @category Systems and emulation
|
|
69
|
+
*/
|
|
70
|
+
export { instrumentT98Of };
|
|
71
|
+
/** @category Systems and emulation */
|
|
72
|
+
export { labelOf };
|
|
73
|
+
/**
|
|
74
|
+
* The nuancing constants of a green instrument, one set for each half of
|
|
75
|
+
* the keyboard.
|
|
76
|
+
* @category Systems and emulation
|
|
77
|
+
*/
|
|
78
|
+
export const nuanceOf = emulatorNuanceOf;
|
|
79
|
+
/**
|
|
80
|
+
* The options the T-98 plays a version with unless others are given:
|
|
81
|
+
* the green spool, the consensus of the genuine instruments, the
|
|
82
|
+
* damping pedals as a continuous controller, the keyboard divided at
|
|
83
|
+
* track 52, and the performance ending where a long perforation sends
|
|
84
|
+
* the roll back.
|
|
85
|
+
* @category Systems and emulation
|
|
86
|
+
*/
|
|
49
87
|
export const defaultWelteT98Options = {
|
|
50
88
|
spool: WELTE_T98_SPOOL,
|
|
51
89
|
nuance: nuanceOf(GENUINE.consensus),
|
|
@@ -135,6 +173,7 @@ const perform = (events, options, roll) => {
|
|
|
135
173
|
* playback runs on the consensus across them unless the caller names another
|
|
136
174
|
* instrument. Where the roll being played is one of the five, its own instrument
|
|
137
175
|
* is the better choice and `instruments.genuine` carries it.
|
|
176
|
+
* @category Systems and emulation
|
|
138
177
|
*/
|
|
139
178
|
export const welteT98System = {
|
|
140
179
|
name: 'Welte-Mignon T98',
|
package/lib/validate.d.ts
CHANGED
|
@@ -1,12 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Checks an edition's JSON-LD document, as `asJsonLd` writes one, against
|
|
3
|
+
* the schema of the format. The same `validate` is exported from the root
|
|
4
|
+
* module; this entry point offers it alone.
|
|
5
|
+
*
|
|
6
|
+
* @module linked-rolls/validate
|
|
7
|
+
*/
|
|
1
8
|
import { type ErrorObject } from "ajv";
|
|
2
9
|
import { Edition } from "./model/Edition.js";
|
|
3
10
|
/**
|
|
4
11
|
* Holds a document against the edition schema. `errors` says what the
|
|
5
12
|
* last call found wrong, and is empty where it found nothing.
|
|
13
|
+
* @category Reading and writing
|
|
6
14
|
*/
|
|
7
15
|
export interface ValidateEdition {
|
|
8
16
|
(document: unknown): document is Edition;
|
|
9
17
|
errors?: ErrorObject[] | null;
|
|
10
18
|
}
|
|
19
|
+
/**
|
|
20
|
+
* Whether the document is an edition as the schema of the format
|
|
21
|
+
* describes it, such as `asJsonLd` writes. What a call found wrong is in
|
|
22
|
+
* `validate.errors` until the next call. A document written by an earlier
|
|
23
|
+
* release may fail where `importJsonLd` would still read it, since the
|
|
24
|
+
* import migrates it first (`migrate`).
|
|
25
|
+
* @category Reading and writing
|
|
26
|
+
*/
|
|
11
27
|
declare const validate: ValidateEdition;
|
|
12
28
|
export { validate };
|