@tspro/web-music-score 1.0.0 → 2.0.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/CHANGELOG.md +19 -0
- package/README.md +271 -224
- package/dist/audio/index.d.mts +22 -0
- package/dist/audio/index.d.ts +22 -0
- package/dist/audio/index.js +147 -0
- package/dist/audio/index.mjs +109 -0
- package/dist/audio-cg/index.d.mts +4 -0
- package/dist/audio-cg/index.d.ts +4 -0
- package/dist/audio-cg/index.js +124 -0
- package/dist/audio-cg/index.mjs +91 -0
- package/dist/chunk-2EPWQZKJ.mjs +9 -0
- package/dist/core/index.d.mts +21 -0
- package/dist/core/index.d.ts +21 -0
- package/dist/core/index.js +72 -0
- package/dist/core/index.mjs +45 -0
- package/dist/guitar-BIFwFT31.d.ts +24 -0
- package/dist/guitar-kbJYu3Am.d.mts +24 -0
- package/dist/iife/index.global.js +222 -0
- package/dist/note-B5ZtlHc8.d.ts +99 -0
- package/dist/note-CraqEy8x.d.mts +99 -0
- package/dist/pieces/index.d.mts +15 -0
- package/dist/pieces/index.d.ts +15 -0
- package/dist/pieces/index.js +104 -0
- package/dist/pieces/index.mjs +77 -0
- package/dist/react-ui/index.d.mts +169 -0
- package/dist/react-ui/index.d.ts +169 -0
- package/dist/react-ui/index.js +624 -0
- package/dist/react-ui/index.mjs +582 -0
- package/dist/score/index.d.mts +1558 -0
- package/dist/score/index.d.ts +1558 -0
- package/dist/score/index.js +6937 -0
- package/dist/score/index.mjs +6863 -0
- package/dist/tempo--588tdcv.d.ts +203 -0
- package/dist/tempo-BEJBHZ5I.d.mts +203 -0
- package/dist/theory/index.d.mts +47 -0
- package/dist/theory/index.d.ts +47 -0
- package/dist/theory/index.js +1783 -0
- package/dist/theory/index.mjs +1716 -0
- package/package.json +99 -56
- package/dist/index.cjs.js +0 -40708
- package/dist/index.d.ts +0 -1258
- package/dist/index.esm.mjs +0 -40699
- package/dist/index.umd.min.js +0 -9
|
@@ -0,0 +1,624 @@
|
|
|
1
|
+
/* WebMusicScore v2.0.0 | (c) 2023 PahkaSoft | MIT License | Includes: Tone.js (MIT License) */
|
|
2
|
+
"use strict";
|
|
3
|
+
var __create = Object.create;
|
|
4
|
+
var __defProp = Object.defineProperty;
|
|
5
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
6
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
7
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
8
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
9
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
10
|
+
var __export = (target, all) => {
|
|
11
|
+
for (var name in all)
|
|
12
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
13
|
+
};
|
|
14
|
+
var __copyProps = (to, from, except, desc) => {
|
|
15
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
16
|
+
for (let key of __getOwnPropNames(from))
|
|
17
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
18
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
19
|
+
}
|
|
20
|
+
return to;
|
|
21
|
+
};
|
|
22
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
23
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
24
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
25
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
26
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
27
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
28
|
+
mod
|
|
29
|
+
));
|
|
30
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
31
|
+
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
32
|
+
|
|
33
|
+
// src/react-ui/index.ts
|
|
34
|
+
var react_ui_exports = {};
|
|
35
|
+
__export(react_ui_exports, {
|
|
36
|
+
CircleOfFifths: () => CircleOfFifths,
|
|
37
|
+
FretPosition: () => FretPosition,
|
|
38
|
+
FretPositionData: () => FretPositionData,
|
|
39
|
+
GuitarContext: () => GuitarContext,
|
|
40
|
+
GuitarView: () => GuitarView,
|
|
41
|
+
MusicScoreView: () => MusicScoreView,
|
|
42
|
+
PlaybackButtons: () => PlaybackButtons,
|
|
43
|
+
PlaybackButtonsLayout: () => PlaybackButtonsLayout
|
|
44
|
+
});
|
|
45
|
+
module.exports = __toCommonJS(react_ui_exports);
|
|
46
|
+
|
|
47
|
+
// src/react-ui/circle-of-fifths.tsx
|
|
48
|
+
var React = __toESM(require("react"));
|
|
49
|
+
var import_theory = require("@tspro/web-music-score/theory");
|
|
50
|
+
var import_score = require("@tspro/web-music-score/score");
|
|
51
|
+
var import_ts_utils_lib = require("@tspro/ts-utils-lib");
|
|
52
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
53
|
+
var SelectedColor = "#0A0";
|
|
54
|
+
var MajorScaleTonics = [
|
|
55
|
+
["C"],
|
|
56
|
+
["G"],
|
|
57
|
+
["D"],
|
|
58
|
+
["A"],
|
|
59
|
+
["E"],
|
|
60
|
+
["B", "Cb"],
|
|
61
|
+
["F#", "Gb"],
|
|
62
|
+
["C#", "Db"],
|
|
63
|
+
["Ab"],
|
|
64
|
+
["Eb"],
|
|
65
|
+
["Bb"],
|
|
66
|
+
["F"]
|
|
67
|
+
];
|
|
68
|
+
var MinorScaleTonics = [
|
|
69
|
+
["A"],
|
|
70
|
+
["E"],
|
|
71
|
+
["B"],
|
|
72
|
+
["F#"],
|
|
73
|
+
["C#"],
|
|
74
|
+
["G#", "Ab"],
|
|
75
|
+
["D#", "Eb"],
|
|
76
|
+
["A#", "Bb"],
|
|
77
|
+
["F"],
|
|
78
|
+
["C"],
|
|
79
|
+
["G"],
|
|
80
|
+
["D"]
|
|
81
|
+
];
|
|
82
|
+
var CircleOfFifths = class extends React.Component {
|
|
83
|
+
constructor(props) {
|
|
84
|
+
super(props);
|
|
85
|
+
}
|
|
86
|
+
onScaleChange(tonic, scaleType) {
|
|
87
|
+
try {
|
|
88
|
+
let scale = (0, import_theory.getScale)(tonic, scaleType);
|
|
89
|
+
this.props.onScaleChange(scale);
|
|
90
|
+
} catch (err) {
|
|
91
|
+
console.error("Invalid scale", tonic, scaleType);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
render() {
|
|
95
|
+
var _a, _b;
|
|
96
|
+
let { style, scale } = this.props;
|
|
97
|
+
let defaultSize = import_ts_utils_lib.Device.toPx("22em");
|
|
98
|
+
let dim = import_ts_utils_lib.Utils.Dom.getDimension(style);
|
|
99
|
+
let width = (_a = dim.width) != null ? _a : defaultSize;
|
|
100
|
+
let height = (_b = dim.height) != null ? _b : defaultSize;
|
|
101
|
+
style = Object.assign({}, style, { width, height });
|
|
102
|
+
let circleRect = new import_score.DivRect(0, width, 0, height).scaleCopy(0.65);
|
|
103
|
+
let lineWidth = Math.max(1, circleRect.width / 100);
|
|
104
|
+
let fontSize = circleRect.width / 15;
|
|
105
|
+
let tonicSize = fontSize * 2;
|
|
106
|
+
let components = [];
|
|
107
|
+
components.push(/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { style: {
|
|
108
|
+
position: "absolute",
|
|
109
|
+
left: circleRect.left - lineWidth / 2,
|
|
110
|
+
top: circleRect.top - lineWidth / 2,
|
|
111
|
+
width: circleRect.width + lineWidth,
|
|
112
|
+
height: circleRect.height + lineWidth,
|
|
113
|
+
border: lineWidth + "px solid black",
|
|
114
|
+
borderRadius: "50%"
|
|
115
|
+
} }, "circle"));
|
|
116
|
+
for (let i = 0; i < 12; i++) {
|
|
117
|
+
let rad = 2 * Math.PI * i / 12;
|
|
118
|
+
let dx = Math.sin(rad);
|
|
119
|
+
let dy = -Math.cos(rad);
|
|
120
|
+
let x = circleRect.centerX + dx * circleRect.width / 2;
|
|
121
|
+
let y = circleRect.centerY + dy * circleRect.height / 2;
|
|
122
|
+
components.push(/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { style: {
|
|
123
|
+
position: "absolute",
|
|
124
|
+
left: x - lineWidth / 2,
|
|
125
|
+
top: y - lineWidth * 4 / 2,
|
|
126
|
+
width: lineWidth,
|
|
127
|
+
height: lineWidth * 4,
|
|
128
|
+
backgroundColor: "black",
|
|
129
|
+
transform: "rotate(" + rad + "rad)"
|
|
130
|
+
} }, "m" + i));
|
|
131
|
+
let tonics = [
|
|
132
|
+
MinorScaleTonics[i][1],
|
|
133
|
+
MinorScaleTonics[i][0],
|
|
134
|
+
void 0,
|
|
135
|
+
MajorScaleTonics[i][0],
|
|
136
|
+
MajorScaleTonics[i][1]
|
|
137
|
+
];
|
|
138
|
+
for (let k = -2; k <= 2; k++) {
|
|
139
|
+
const tonic = tonics[k + 2];
|
|
140
|
+
if (tonic) {
|
|
141
|
+
const scaleType = k < 0 ? import_theory.ScaleType.NaturalMinor : import_theory.ScaleType.Major;
|
|
142
|
+
let tonicStr = import_theory.Note.getScientificNoteName(tonic, import_theory.SymbolSet.Unicode);
|
|
143
|
+
if (scaleType === import_theory.ScaleType.NaturalMinor) {
|
|
144
|
+
tonicStr += "m";
|
|
145
|
+
}
|
|
146
|
+
let isSelected = scaleType === scale.scaleType && tonic === scale.tonic;
|
|
147
|
+
components.push(/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { style: {
|
|
148
|
+
position: "absolute",
|
|
149
|
+
cursor: "pointer",
|
|
150
|
+
left: x + dx * fontSize * k * 1.5 - tonicSize / 2,
|
|
151
|
+
top: y + dy * fontSize * k * 1.5 - tonicSize / 2,
|
|
152
|
+
width: tonicSize,
|
|
153
|
+
height: tonicSize,
|
|
154
|
+
backgroundColor: isSelected ? SelectedColor : "",
|
|
155
|
+
borderRadius: isSelected ? "50%" : "",
|
|
156
|
+
fontSize,
|
|
157
|
+
lineHeight: 1,
|
|
158
|
+
display: "flex",
|
|
159
|
+
justifyContent: "center",
|
|
160
|
+
// Align horizontal
|
|
161
|
+
alignItems: "center"
|
|
162
|
+
// Align vertical
|
|
163
|
+
}, onClick: () => this.onScaleChange(tonic, scaleType), children: tonicStr }, "kn_" + i + "_" + (k + 2)));
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { style, children: components });
|
|
168
|
+
}
|
|
169
|
+
};
|
|
170
|
+
|
|
171
|
+
// src/react-ui/guitar-context.ts
|
|
172
|
+
var import_theory2 = require("@tspro/web-music-score/theory");
|
|
173
|
+
var import_theory3 = require("@tspro/web-music-score/theory");
|
|
174
|
+
|
|
175
|
+
// src/react-ui/assets/guitar.json
|
|
176
|
+
var guitar_default = {
|
|
177
|
+
width: 1223,
|
|
178
|
+
height: 234,
|
|
179
|
+
maxFret: 18,
|
|
180
|
+
nut: {
|
|
181
|
+
x: 1099,
|
|
182
|
+
topStringY: 59,
|
|
183
|
+
bottomStringY: 162
|
|
184
|
+
},
|
|
185
|
+
fret12: {
|
|
186
|
+
x: 330,
|
|
187
|
+
topStringY: 54,
|
|
188
|
+
bottomStringY: 174
|
|
189
|
+
}
|
|
190
|
+
};
|
|
191
|
+
|
|
192
|
+
// src/react-ui/guitar-context.ts
|
|
193
|
+
var import_core = require("@tspro/web-music-score/core");
|
|
194
|
+
var import_ts_utils_lib2 = require("@tspro/ts-utils-lib");
|
|
195
|
+
var DefaultColors = {
|
|
196
|
+
ScaleNoteColor: "#0A0",
|
|
197
|
+
ScaleRootNoteColor: "#00A",
|
|
198
|
+
NonScaleNoteColor: "#A00",
|
|
199
|
+
DefaultBorderColor: "white",
|
|
200
|
+
TextColor: "white"
|
|
201
|
+
};
|
|
202
|
+
var FretPosition = class {
|
|
203
|
+
constructor(guitarCtx, stringId, fretId, chromaticId) {
|
|
204
|
+
this.guitarCtx = guitarCtx;
|
|
205
|
+
this.stringId = stringId;
|
|
206
|
+
this.fretId = fretId;
|
|
207
|
+
this.chromaticId = chromaticId;
|
|
208
|
+
__publicField(this, "note");
|
|
209
|
+
__publicField(this, "isScaleNote");
|
|
210
|
+
__publicField(this, "isScaleRootNote");
|
|
211
|
+
__publicField(this, "isVisible", false);
|
|
212
|
+
__publicField(this, "text", "");
|
|
213
|
+
__publicField(this, "textColor", DefaultColors.TextColor);
|
|
214
|
+
__publicField(this, "fillColor");
|
|
215
|
+
__publicField(this, "borderColor");
|
|
216
|
+
__publicField(this, "isBarre", false);
|
|
217
|
+
let { scale } = guitarCtx;
|
|
218
|
+
this.note = scale.getPreferredChromaticNote(chromaticId);
|
|
219
|
+
this.isScaleNote = scale.isScaleNote(this.note);
|
|
220
|
+
this.isScaleRootNote = scale.isScaleRootNote(this.note);
|
|
221
|
+
}
|
|
222
|
+
get chromaticClass() {
|
|
223
|
+
return import_theory3.Note.getChromaticClass(this.chromaticId);
|
|
224
|
+
}
|
|
225
|
+
show() {
|
|
226
|
+
this.isVisible = true;
|
|
227
|
+
}
|
|
228
|
+
hide() {
|
|
229
|
+
this.isVisible = false;
|
|
230
|
+
}
|
|
231
|
+
setDefaultText() {
|
|
232
|
+
let { pitchNotation, scale, guitarNoteLabel } = this.guitarCtx;
|
|
233
|
+
switch (guitarNoteLabel) {
|
|
234
|
+
case import_theory2.GuitarNoteLabel.OmitOctave:
|
|
235
|
+
this.text = this.note.formatOmitOctave(import_theory2.SymbolSet.Unicode);
|
|
236
|
+
break;
|
|
237
|
+
case import_theory2.GuitarNoteLabel.Interval:
|
|
238
|
+
this.text = scale.getIntervalFromRootNote(this.note).toAbbrString().replace("P1", "R");
|
|
239
|
+
break;
|
|
240
|
+
default:
|
|
241
|
+
this.text = this.note.format(pitchNotation, import_theory2.SymbolSet.Unicode);
|
|
242
|
+
break;
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
setDefaultFillColor() {
|
|
246
|
+
this.fillColor = this.isScaleRootNote ? DefaultColors.ScaleRootNoteColor : this.isScaleNote ? DefaultColors.ScaleNoteColor : DefaultColors.NonScaleNoteColor;
|
|
247
|
+
}
|
|
248
|
+
setDefaultBorderColor(showBorder = false) {
|
|
249
|
+
this.borderColor = showBorder ? DefaultColors.DefaultBorderColor : void 0;
|
|
250
|
+
}
|
|
251
|
+
};
|
|
252
|
+
var GuitarContext = class _GuitarContext {
|
|
253
|
+
constructor(tuningName, scale, handedness, pitchNotation, guitarNoteLabel) {
|
|
254
|
+
this.tuningName = tuningName;
|
|
255
|
+
this.scale = scale;
|
|
256
|
+
this.handedness = handedness;
|
|
257
|
+
this.pitchNotation = pitchNotation;
|
|
258
|
+
this.guitarNoteLabel = guitarNoteLabel;
|
|
259
|
+
__publicField(this, "maxFretId");
|
|
260
|
+
__publicField(this, "fretPositionTable");
|
|
261
|
+
__publicField(this, "tuningStrings");
|
|
262
|
+
this.maxFretId = guitar_default.maxFret;
|
|
263
|
+
this.tuningStrings = (0, import_theory3.getTuningStrings)(tuningName);
|
|
264
|
+
this.fretPositionTable = [[], [], [], [], [], []];
|
|
265
|
+
for (let stringId = 0; stringId < 6; stringId++) {
|
|
266
|
+
let openStringChromaticId = this.tuningStrings[stringId].chromaticId;
|
|
267
|
+
for (let fretId = 0; fretId <= this.maxFretId; fretId++) {
|
|
268
|
+
let chromaticId = openStringChromaticId + fretId;
|
|
269
|
+
this.fretPositionTable[stringId][fretId] = new FretPosition(this, stringId, fretId, chromaticId);
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
getFretPosition(stringId, fretId) {
|
|
274
|
+
if (!import_ts_utils_lib2.Utils.Is.isInteger(stringId) || stringId < 0 || stringId > 5) {
|
|
275
|
+
throw new import_core.MusicError(import_core.MusicErrorType.InvalidArg, `Invalid stringId: + ${stringId}`);
|
|
276
|
+
} else if (!import_ts_utils_lib2.Utils.Is.isInteger(fretId) || fretId < 0 || fretId > this.maxFretId) {
|
|
277
|
+
throw new import_core.MusicError(import_core.MusicErrorType.InvalidArg, `Invalid fretId: ${fretId}`);
|
|
278
|
+
} else {
|
|
279
|
+
return this.fretPositionTable[stringId][fretId];
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
getStringTuning(stringId) {
|
|
283
|
+
return this.tuningStrings[stringId];
|
|
284
|
+
}
|
|
285
|
+
getTuningOverview() {
|
|
286
|
+
return this.tuningStrings.slice().reverse().map((note) => note.format(this.pitchNotation, import_theory2.SymbolSet.Unicode)).join(" - ");
|
|
287
|
+
}
|
|
288
|
+
alterTuningName(tuningName) {
|
|
289
|
+
return tuningName === this.tuningName ? this : new _GuitarContext(tuningName, this.scale, this.handedness, this.pitchNotation, this.guitarNoteLabel);
|
|
290
|
+
}
|
|
291
|
+
alterScale(scale) {
|
|
292
|
+
return import_theory3.Scale.equals(scale, this.scale) ? this : new _GuitarContext(this.tuningName, scale, this.handedness, this.pitchNotation, this.guitarNoteLabel);
|
|
293
|
+
}
|
|
294
|
+
alterHandedness(handedness) {
|
|
295
|
+
return handedness === this.handedness ? this : new _GuitarContext(this.tuningName, this.scale, handedness, this.pitchNotation, this.guitarNoteLabel);
|
|
296
|
+
}
|
|
297
|
+
alterPitchNotation(pitchNotation) {
|
|
298
|
+
return pitchNotation === this.pitchNotation ? this : new _GuitarContext(this.tuningName, this.scale, this.handedness, pitchNotation, this.guitarNoteLabel);
|
|
299
|
+
}
|
|
300
|
+
alterGuitarNoteLabel(guitarNoteLabel) {
|
|
301
|
+
return guitarNoteLabel === this.guitarNoteLabel ? this : new _GuitarContext(this.tuningName, this.scale, this.handedness, this.pitchNotation, guitarNoteLabel);
|
|
302
|
+
}
|
|
303
|
+
};
|
|
304
|
+
|
|
305
|
+
// src/react-ui/guitar-view.tsx
|
|
306
|
+
var React2 = __toESM(require("react"));
|
|
307
|
+
var import_ts_utils_lib3 = require("@tspro/ts-utils-lib");
|
|
308
|
+
var import_score2 = require("@tspro/web-music-score/score");
|
|
309
|
+
var import_theory4 = require("@tspro/web-music-score/theory");
|
|
310
|
+
|
|
311
|
+
// src/react-ui/assets/guitar.png
|
|
312
|
+
var guitar_default2 = "data:image/png;base64,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";
|
|
313
|
+
|
|
314
|
+
// src/react-ui/guitar-view.tsx
|
|
315
|
+
var import_core2 = require("@tspro/web-music-score/core");
|
|
316
|
+
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
317
|
+
var t_table = [
|
|
318
|
+
0,
|
|
319
|
+
/* nut */
|
|
320
|
+
0.056,
|
|
321
|
+
0.109,
|
|
322
|
+
0.159,
|
|
323
|
+
0.206,
|
|
324
|
+
0.251,
|
|
325
|
+
0.293,
|
|
326
|
+
0.333,
|
|
327
|
+
0.37,
|
|
328
|
+
0.405,
|
|
329
|
+
0.439,
|
|
330
|
+
0.47,
|
|
331
|
+
0.5,
|
|
332
|
+
0.528,
|
|
333
|
+
0.555,
|
|
334
|
+
0.58,
|
|
335
|
+
0.603,
|
|
336
|
+
0.625,
|
|
337
|
+
0.646,
|
|
338
|
+
0.666,
|
|
339
|
+
0.685,
|
|
340
|
+
0.703,
|
|
341
|
+
0.719,
|
|
342
|
+
0.735,
|
|
343
|
+
0.75
|
|
344
|
+
];
|
|
345
|
+
function fret_t(fretId) {
|
|
346
|
+
if (!import_ts_utils_lib3.Utils.Is.isInteger(fretId) || fretId < 0 || fretId > t_table.length - 1) {
|
|
347
|
+
throw new import_core2.MusicError(import_core2.MusicErrorType.InvalidArg, `Invalid fretId: ${fretId}`);
|
|
348
|
+
} else {
|
|
349
|
+
return t_table[fretId] * 2;
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
var Fret = class _Fret {
|
|
353
|
+
constructor(x, topStringY, bottomStringY) {
|
|
354
|
+
this.x = x;
|
|
355
|
+
this.topStringY = topStringY;
|
|
356
|
+
this.bottomStringY = bottomStringY;
|
|
357
|
+
}
|
|
358
|
+
static _lerp(from, to, t) {
|
|
359
|
+
return new _Fret(
|
|
360
|
+
from.x * (1 - t) + to.x * t,
|
|
361
|
+
from.topStringY * (1 - t) + to.topStringY * t,
|
|
362
|
+
from.bottomStringY * (1 - t) + to.bottomStringY * t
|
|
363
|
+
);
|
|
364
|
+
}
|
|
365
|
+
static lerp(fret0, fret12, fret) {
|
|
366
|
+
return _Fret._lerp(fret0, fret12, fret_t(fret));
|
|
367
|
+
}
|
|
368
|
+
static scale(fretData, scale) {
|
|
369
|
+
return new _Fret(fretData.x * scale, fretData.topStringY * scale, fretData.bottomStringY * scale);
|
|
370
|
+
}
|
|
371
|
+
};
|
|
372
|
+
var FretPositionData = class {
|
|
373
|
+
constructor(fretPosition, cellRect, noteRect) {
|
|
374
|
+
this.fretPosition = fretPosition;
|
|
375
|
+
this.cellRect = cellRect;
|
|
376
|
+
this.noteRect = noteRect;
|
|
377
|
+
}
|
|
378
|
+
};
|
|
379
|
+
var GuitarView = class extends React2.Component {
|
|
380
|
+
constructor(props) {
|
|
381
|
+
super(props);
|
|
382
|
+
__publicField(this, "state");
|
|
383
|
+
this.state = this.getLayoutState();
|
|
384
|
+
}
|
|
385
|
+
componentDidUpdate(prevProps) {
|
|
386
|
+
let { style, guitarContext: guitarCtx } = this.props;
|
|
387
|
+
if (import_ts_utils_lib3.Utils.Dom.styleLayoutChanged(style, prevProps.style) || guitarCtx !== prevProps.guitarContext) {
|
|
388
|
+
this.setState(this.getLayoutState());
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
getLayoutState() {
|
|
392
|
+
var _a, _b;
|
|
393
|
+
let { guitarContext: guitarCtx, style } = this.props;
|
|
394
|
+
let dim = import_ts_utils_lib3.Utils.Dom.getDimension(style);
|
|
395
|
+
let width = (_a = dim.width) != null ? _a : window.innerWidth;
|
|
396
|
+
let height = guitar_default.height * width / guitar_default.width;
|
|
397
|
+
let s = width / guitar_default.width;
|
|
398
|
+
let nut = Fret.scale(guitar_default.nut, s);
|
|
399
|
+
let fret12 = Fret.scale(guitar_default.fret12, s);
|
|
400
|
+
let frets = [];
|
|
401
|
+
for (let fret = 0; fret <= guitarCtx.maxFretId; fret++) {
|
|
402
|
+
frets.push(Fret.lerp(nut, fret12, fret));
|
|
403
|
+
}
|
|
404
|
+
let noteWidth = Math.round(frets[frets.length - 2].x - frets[frets.length - 1].x);
|
|
405
|
+
let table = [[], [], [], [], [], []];
|
|
406
|
+
for (let stringId = 0; stringId < 6; stringId++) {
|
|
407
|
+
for (let fretId = 0; fretId < frets.length; fretId++) {
|
|
408
|
+
let left = frets[fretId];
|
|
409
|
+
let right = (_b = frets[fretId - 1]) != null ? _b : new Fret(width, left.topStringY, left.bottomStringY);
|
|
410
|
+
let cellHeight = (left.bottomStringY - left.topStringY) / 5;
|
|
411
|
+
let cellRect = import_score2.DivRect.create(
|
|
412
|
+
left.x,
|
|
413
|
+
left.bottomStringY - cellHeight * (stringId + 0.5),
|
|
414
|
+
right.x - left.x,
|
|
415
|
+
cellHeight
|
|
416
|
+
);
|
|
417
|
+
if (guitarCtx.handedness === import_theory4.Handedness.LeftHanded) {
|
|
418
|
+
cellRect = new import_score2.DivRect(width - cellRect.right, width - cellRect.left, cellRect.top, cellRect.bottom);
|
|
419
|
+
}
|
|
420
|
+
let noteRect = import_score2.DivRect.create(
|
|
421
|
+
cellRect.left + (guitarCtx.handedness === import_theory4.Handedness.LeftHanded ? cellRect.width - noteWidth : 0),
|
|
422
|
+
cellRect.top,
|
|
423
|
+
noteWidth,
|
|
424
|
+
cellRect.height
|
|
425
|
+
).scaleCopy(0.75, 0.95);
|
|
426
|
+
let fretPosition = guitarCtx.getFretPosition(stringId, fretId);
|
|
427
|
+
table[stringId][fretId] = new FretPositionData(fretPosition, cellRect, noteRect);
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
return { table, width, height };
|
|
431
|
+
}
|
|
432
|
+
onHover(fretPositionData) {
|
|
433
|
+
}
|
|
434
|
+
onClick(fretPositionData) {
|
|
435
|
+
let { onClickFretPosition: onClicFretPosition } = this.props;
|
|
436
|
+
if (fretPositionData && onClicFretPosition) {
|
|
437
|
+
onClicFretPosition(fretPositionData.fretPosition);
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
render() {
|
|
441
|
+
let { width, height, table } = this.state;
|
|
442
|
+
let { guitarContext: guitarCtx, onUpdateFretPosition, style } = this.props;
|
|
443
|
+
style = Object.assign({}, style, { width, height });
|
|
444
|
+
let components = [];
|
|
445
|
+
components.push(
|
|
446
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
447
|
+
"img",
|
|
448
|
+
{
|
|
449
|
+
src: guitar_default2,
|
|
450
|
+
className: guitarCtx.handedness === import_theory4.Handedness.LeftHanded ? "left-handed" : "",
|
|
451
|
+
style: { position: "absolute", width, height, zIndex: 0 }
|
|
452
|
+
},
|
|
453
|
+
"guitar"
|
|
454
|
+
)
|
|
455
|
+
);
|
|
456
|
+
table.forEach((frets) => frets.forEach((fretPositionData) => {
|
|
457
|
+
var _a;
|
|
458
|
+
let { fretPosition, noteRect } = fretPositionData;
|
|
459
|
+
if (onUpdateFretPosition) {
|
|
460
|
+
onUpdateFretPosition(fretPosition);
|
|
461
|
+
}
|
|
462
|
+
if (fretPosition.isVisible) {
|
|
463
|
+
let border = fretPosition.borderColor !== void 0 ? Math.round(noteRect.width / 10) : 0;
|
|
464
|
+
let boxShadow = "0 0 0 " + border + "px " + ((_a = fretPosition.borderColor) != null ? _a : "black");
|
|
465
|
+
components.push(/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
466
|
+
"span",
|
|
467
|
+
{
|
|
468
|
+
style: {
|
|
469
|
+
position: "absolute",
|
|
470
|
+
zIndex: fretPosition.borderColor !== void 0 ? 2 : 1,
|
|
471
|
+
cursor: "pointer",
|
|
472
|
+
borderRadius: fretPosition.fretId > 0 ? "50%" : "",
|
|
473
|
+
color: fretPosition.textColor,
|
|
474
|
+
background: fretPosition.fillColor,
|
|
475
|
+
boxShadow,
|
|
476
|
+
WebkitBoxShadow: boxShadow,
|
|
477
|
+
MozBoxShadow: boxShadow,
|
|
478
|
+
left: noteRect.left,
|
|
479
|
+
top: noteRect.top,
|
|
480
|
+
width: noteRect.width,
|
|
481
|
+
height: noteRect.height,
|
|
482
|
+
lineHeight: "0.75",
|
|
483
|
+
fontSize: noteRect.height * 0.6 + "px",
|
|
484
|
+
display: "flex",
|
|
485
|
+
justifyContent: "center",
|
|
486
|
+
// Align horizontal
|
|
487
|
+
alignItems: "center"
|
|
488
|
+
// Align vertical
|
|
489
|
+
},
|
|
490
|
+
children: fretPosition.text
|
|
491
|
+
},
|
|
492
|
+
"sel_" + fretPosition.stringId + "_" + fretPosition.fretId
|
|
493
|
+
));
|
|
494
|
+
}
|
|
495
|
+
}));
|
|
496
|
+
table.forEach((string, stringId) => string.forEach((cell, fretId) => {
|
|
497
|
+
components.push(/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
498
|
+
"div",
|
|
499
|
+
{
|
|
500
|
+
onClick: () => this.onClick(cell),
|
|
501
|
+
onMouseEnter: () => this.onHover(cell),
|
|
502
|
+
onMouseLeave: () => this.onHover(void 0),
|
|
503
|
+
style: {
|
|
504
|
+
position: "absolute",
|
|
505
|
+
zIndex: 3,
|
|
506
|
+
cursor: "pointer",
|
|
507
|
+
left: cell.cellRect.left,
|
|
508
|
+
top: cell.cellRect.top,
|
|
509
|
+
width: cell.cellRect.width,
|
|
510
|
+
height: cell.cellRect.height
|
|
511
|
+
}
|
|
512
|
+
},
|
|
513
|
+
"table_" + stringId + "_" + fretId
|
|
514
|
+
));
|
|
515
|
+
}));
|
|
516
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { style, children: components });
|
|
517
|
+
}
|
|
518
|
+
};
|
|
519
|
+
|
|
520
|
+
// src/react-ui/music-score-view.tsx
|
|
521
|
+
var React3 = __toESM(require("react"));
|
|
522
|
+
var import_score3 = require("@tspro/web-music-score/score");
|
|
523
|
+
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
524
|
+
var MusicScoreView = class extends React3.Component {
|
|
525
|
+
constructor(props) {
|
|
526
|
+
super(props);
|
|
527
|
+
__publicField(this, "renderer");
|
|
528
|
+
this.renderer = new import_score3.MRenderer();
|
|
529
|
+
this.renderer.setDocument(props.doc);
|
|
530
|
+
if (props.onScoreEvent) {
|
|
531
|
+
this.renderer.setScoreEventListener(props.onScoreEvent);
|
|
532
|
+
}
|
|
533
|
+
}
|
|
534
|
+
componentDidUpdate(prevProps, prevState) {
|
|
535
|
+
if (prevProps.doc !== this.props.doc) {
|
|
536
|
+
this.renderer.setDocument(this.props.doc);
|
|
537
|
+
this.renderer.draw();
|
|
538
|
+
}
|
|
539
|
+
}
|
|
540
|
+
render() {
|
|
541
|
+
const setCanvas = (canvas) => {
|
|
542
|
+
if (canvas) {
|
|
543
|
+
this.renderer.setCanvas(canvas);
|
|
544
|
+
this.renderer.draw();
|
|
545
|
+
}
|
|
546
|
+
};
|
|
547
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("canvas", { style: { position: "relative" }, ref: setCanvas, children: "Canvas error!" });
|
|
548
|
+
}
|
|
549
|
+
};
|
|
550
|
+
|
|
551
|
+
// src/react-ui/playback-buttons.tsx
|
|
552
|
+
var React4 = __toESM(require("react"));
|
|
553
|
+
var import_score4 = require("@tspro/web-music-score/score");
|
|
554
|
+
var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
555
|
+
var PlaybackButtonsLayout = /* @__PURE__ */ ((PlaybackButtonsLayout2) => {
|
|
556
|
+
PlaybackButtonsLayout2[PlaybackButtonsLayout2["PlayStopSingle"] = 0] = "PlayStopSingle";
|
|
557
|
+
PlaybackButtonsLayout2[PlaybackButtonsLayout2["PlayStop"] = 1] = "PlayStop";
|
|
558
|
+
PlaybackButtonsLayout2[PlaybackButtonsLayout2["PlayPauseStop"] = 2] = "PlayPauseStop";
|
|
559
|
+
return PlaybackButtonsLayout2;
|
|
560
|
+
})(PlaybackButtonsLayout || {});
|
|
561
|
+
var PlaybackButtons = class extends React4.Component {
|
|
562
|
+
constructor(props) {
|
|
563
|
+
super(props);
|
|
564
|
+
__publicField(this, "state");
|
|
565
|
+
this.state = {
|
|
566
|
+
controller: new import_score4.MPlaybackButtons().setDocument(props.doc)
|
|
567
|
+
};
|
|
568
|
+
}
|
|
569
|
+
componentDidUpdate(prevProps) {
|
|
570
|
+
if (this.props.doc !== prevProps.doc) {
|
|
571
|
+
this.state.controller.setDocument(this.props.doc);
|
|
572
|
+
}
|
|
573
|
+
}
|
|
574
|
+
render() {
|
|
575
|
+
let { buttonLayout, playLabel, pauseLabel, stopLabel } = this.props;
|
|
576
|
+
let { controller } = this.state;
|
|
577
|
+
buttonLayout = buttonLayout != null ? buttonLayout : 2 /* PlayPauseStop */;
|
|
578
|
+
playLabel = playLabel != null ? playLabel : "Play";
|
|
579
|
+
pauseLabel = pauseLabel != null ? pauseLabel : "Pause";
|
|
580
|
+
stopLabel = stopLabel != null ? stopLabel : "Stop";
|
|
581
|
+
if (buttonLayout === 0 /* PlayStopSingle */) {
|
|
582
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("button", { className: "btn btn-primary", ref: (btn) => {
|
|
583
|
+
if (btn) controller.setPlayStopButton(btn, playLabel, stopLabel);
|
|
584
|
+
} });
|
|
585
|
+
} else if (buttonLayout === 1 /* PlayStop */) {
|
|
586
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "btn-group", children: [
|
|
587
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("button", { className: "btn btn-primary", ref: (btn) => {
|
|
588
|
+
if (btn) controller.setPlayButton(btn, playLabel);
|
|
589
|
+
} }),
|
|
590
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("button", { className: "btn btn-primary", ref: (btn) => {
|
|
591
|
+
if (btn) controller.setStopButton(btn, stopLabel);
|
|
592
|
+
} })
|
|
593
|
+
] });
|
|
594
|
+
} else {
|
|
595
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "btn-group", children: [
|
|
596
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("button", { className: "btn btn-primary", ref: (btn) => {
|
|
597
|
+
if (btn) controller.setPlayButton(btn, playLabel);
|
|
598
|
+
} }),
|
|
599
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("button", { className: "btn btn-primary", ref: (btn) => {
|
|
600
|
+
if (btn) controller.setPauseButton(btn, pauseLabel);
|
|
601
|
+
} }),
|
|
602
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("button", { className: "btn btn-primary", ref: (btn) => {
|
|
603
|
+
if (btn) controller.setStopButton(btn, stopLabel);
|
|
604
|
+
} })
|
|
605
|
+
] });
|
|
606
|
+
}
|
|
607
|
+
}
|
|
608
|
+
};
|
|
609
|
+
|
|
610
|
+
// src/react-ui/index.ts
|
|
611
|
+
var import_core3 = require("@tspro/web-music-score/core");
|
|
612
|
+
(0, import_core3.init)();
|
|
613
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
614
|
+
0 && (module.exports = {
|
|
615
|
+
CircleOfFifths,
|
|
616
|
+
FretPosition,
|
|
617
|
+
FretPositionData,
|
|
618
|
+
GuitarContext,
|
|
619
|
+
GuitarView,
|
|
620
|
+
MusicScoreView,
|
|
621
|
+
PlaybackButtons,
|
|
622
|
+
PlaybackButtonsLayout
|
|
623
|
+
});
|
|
624
|
+
//# sourceMappingURL=index.js.map
|