File size: 1,127 Bytes
d605f27
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54

const POS_PRECISION = 0.25;
const SIZE_PRECISION = 0.05;
const STROKE_PRECISION = 0.01;

const CLOSED_NOTEHEAD_INTERVAL_FIRST_DEG = 1.3052;

const GLYPH_BASE_SCALE = 0.004;

const NOTE_TYPE_WIDTHS = [1.81, 1.3232, 1.257, 1.257, 1.38];
const NOTE_TYPE_JOINT_Y = [0.2, 0.2, 0.2, 0.38, 0.2];

// DEPRECATED
const MUSIC_FONT_NOTE_OFFSETS = [0.08, 0.05, -0.02, 0.3, -0.12];

const ALTER_WIDTHS = {
	[-2]: 1.80,
	[-1]: 1.16,
	[0]: 1.05,
	[1]: 1.46,
	[2]: 1.39,
};


const constants = {
	CLOSED_NOTEHEAD_INTERVAL_FIRST_DEG,
	NOTE_TYPE_WIDTHS,
	NOTE_TYPE_JOINT_Y,
	ALTER_WIDTHS,
	MUSIC_FONT_NOTE_OFFSETS,
	EPSILON: 1e-9,
};


const roundNumber = (x, precision, min = -Infinity) => Number(Math.max(Math.round(x / precision) * precision, min).toFixed(4));


// empirical formula for basic staff line stroke width
const sizeToStrokeWidth1 = size => 0.342842872995173 + 13.1430019250855 / size;
const sizeToStrokeWidth2 = size => (0.1342842872995173 + 1.31430019250855 / size) / 0.2;



export {
	POS_PRECISION,
	SIZE_PRECISION,
	STROKE_PRECISION,
	GLYPH_BASE_SCALE,
	constants,
	roundNumber,
	sizeToStrokeWidth1,
	sizeToStrokeWidth2,
};