abcjs 6.1.9 → 6.2.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.
Files changed (129) hide show
  1. package/RELEASE.md +42 -0
  2. package/dist/abcjs-basic-min.js +2 -2
  3. package/dist/abcjs-basic.js +4318 -4411
  4. package/dist/abcjs-basic.js.map +1 -1
  5. package/dist/abcjs-plugin-min.js +2 -2
  6. package/index.js +1 -1
  7. package/package.json +1 -1
  8. package/plugin.js +1 -1
  9. package/src/api/abc_timing_callbacks.js +7 -3
  10. package/src/api/abc_tunebook_svg.js +1 -2
  11. package/src/data/abc_tune.js +2 -2
  12. package/src/parse/abc_common.js +0 -47
  13. package/src/parse/abc_parse.js +16 -16
  14. package/src/parse/abc_parse_book.js +3 -3
  15. package/src/parse/abc_parse_directive.js +26 -7
  16. package/src/parse/abc_parse_header.js +11 -9
  17. package/src/parse/abc_parse_key_voice.js +17 -17
  18. package/src/parse/abc_parse_music.js +88 -105
  19. package/src/parse/abc_tokenizer.js +60 -60
  20. package/src/parse/tune-builder.js +19 -14
  21. package/src/synth/abc_midi_flattener.js +25 -9
  22. package/src/synth/create-synth.js +41 -0
  23. package/src/synth/note-to-midi.js +50 -0
  24. package/src/tablatures/instruments/guitar/tab-guitar.js +0 -2
  25. package/src/tablatures/instruments/string-patterns.js +46 -28
  26. package/src/tablatures/instruments/tab-note.js +26 -103
  27. package/src/tablatures/instruments/violin/tab-violin.js +0 -2
  28. package/src/tablatures/tab-absolute-elements.js +9 -31
  29. package/src/tablatures/tab-renderer.js +2 -2
  30. package/src/test/abc_parser_lint.js +7 -4
  31. package/src/write/README.md +31 -0
  32. package/src/write/creation/abstract-engraver.js +1036 -0
  33. package/src/write/creation/add-chord.js +102 -0
  34. package/src/write/{add-text-if.js → creation/add-text-if.js} +6 -6
  35. package/src/write/{calcHeight.js → creation/calc-height.js} +2 -2
  36. package/src/write/creation/create-clef.js +72 -0
  37. package/src/write/creation/create-key-signature.js +31 -0
  38. package/src/write/creation/create-note-head.js +107 -0
  39. package/src/write/creation/create-time-signature.js +55 -0
  40. package/src/write/creation/decoration.js +357 -0
  41. package/src/write/{abc_absolute_element.js → creation/elements/absolute-element.js} +14 -15
  42. package/src/write/creation/elements/beam-element.js +113 -0
  43. package/src/write/{bottom-text.js → creation/elements/bottom-text.js} +14 -15
  44. package/src/write/{abc_brace_element.js → creation/elements/brace-element.js} +5 -5
  45. package/src/write/creation/elements/free-text.js +41 -0
  46. package/src/write/{abc_relative_element.js → creation/elements/relative-element.js} +7 -7
  47. package/src/write/{separator.js → creation/elements/separator.js} +2 -2
  48. package/src/write/{abc_staff_group_element.js → creation/elements/staff-group-element.js} +4 -4
  49. package/src/write/{subtitle.js → creation/elements/subtitle.js} +3 -3
  50. package/src/write/creation/elements/tempo-element.js +63 -0
  51. package/src/write/{abc_tie_element.js → creation/elements/tie-element.js} +15 -11
  52. package/src/write/{top-text.js → creation/elements/top-text.js} +12 -12
  53. package/src/write/creation/elements/triplet-element.js +28 -0
  54. package/src/write/{abc_voice_element.js → creation/elements/voice-element.js} +3 -3
  55. package/src/write/creation/glyphs.js +226 -0
  56. package/src/write/creation/translate-chord.js +37 -0
  57. package/src/write/draw/absolute.js +5 -5
  58. package/src/write/draw/beam.js +8 -8
  59. package/src/write/draw/brace.js +33 -33
  60. package/src/write/draw/crescendo.js +4 -4
  61. package/src/write/draw/debug-box.js +1 -1
  62. package/src/write/draw/draw.js +7 -7
  63. package/src/write/draw/dynamics.js +2 -2
  64. package/src/write/draw/ending.js +6 -6
  65. package/src/write/draw/glissando.js +17 -17
  66. package/src/write/draw/group-elements.js +51 -51
  67. package/src/write/draw/horizontal-line.js +9 -9
  68. package/src/write/draw/non-music.js +1 -1
  69. package/src/write/draw/print-line.js +15 -16
  70. package/src/write/draw/print-stem.js +5 -5
  71. package/src/write/draw/print-symbol.js +12 -12
  72. package/src/write/draw/print-vertical-line.js +8 -8
  73. package/src/write/draw/relative.js +17 -16
  74. package/src/write/draw/selectables.js +5 -5
  75. package/src/write/draw/separator.js +4 -4
  76. package/src/write/draw/set-paper-size.js +2 -2
  77. package/src/write/draw/sprintf.js +31 -31
  78. package/src/write/draw/staff-group.js +36 -30
  79. package/src/write/draw/staff-line.js +2 -2
  80. package/src/write/draw/staff.js +4 -4
  81. package/src/write/draw/tab-line.js +26 -26
  82. package/src/write/draw/tempo.js +30 -30
  83. package/src/write/draw/text.js +5 -5
  84. package/src/write/draw/tie.js +18 -18
  85. package/src/write/draw/triplet.js +6 -6
  86. package/src/write/draw/voice.js +16 -17
  87. package/src/write/{abc_engraver_controller.js → engraver-controller.js} +58 -51
  88. package/src/write/{classes.js → helpers/classes.js} +6 -6
  89. package/src/write/{get-font-and-attr.js → helpers/get-font-and-attr.js} +9 -7
  90. package/src/write/{get-text-size.js → helpers/get-text-size.js} +5 -5
  91. package/src/write/{set-class.js → helpers/set-class.js} +1 -1
  92. package/src/write/{abc_spacing.js → helpers/spacing.js} +1 -1
  93. package/src/write/{highlight.js → interactive/highlight.js} +1 -1
  94. package/src/write/{selection.js → interactive/selection.js} +27 -27
  95. package/src/write/{unhighlight.js → interactive/unhighlight.js} +1 -1
  96. package/src/write/layout/beam.js +13 -13
  97. package/src/write/layout/get-left-edge-of-staff.js +4 -4
  98. package/src/write/layout/layout.js +74 -74
  99. package/src/write/layout/{setUpperAndLowerElements.js → set-upper-and-lower-elements.js} +8 -8
  100. package/src/write/layout/{staffGroup.js → staff-group.js} +32 -32
  101. package/src/write/layout/triplet.js +4 -4
  102. package/src/write/layout/{VoiceElements.js → voice-elements.js} +23 -23
  103. package/src/write/layout/voice.js +6 -6
  104. package/src/write/{abc_renderer.js → renderer.js} +35 -32
  105. package/src/write/svg.js +35 -35
  106. package/test.js +1 -1
  107. package/types/index.d.ts +36 -7
  108. package/version.js +1 -1
  109. package/src/tablatures/instruments/guitar/guitar-fonts.js +0 -19
  110. package/src/tablatures/instruments/violin/violin-fonts.js +0 -19
  111. package/src/tablatures/transposer.js +0 -110
  112. package/src/write/abc_abstract_engraver.js +0 -1026
  113. package/src/write/abc_beam_element.js +0 -113
  114. package/src/write/abc_create_clef.js +0 -72
  115. package/src/write/abc_create_key_signature.js +0 -33
  116. package/src/write/abc_create_note_head.js +0 -107
  117. package/src/write/abc_create_time_signature.js +0 -55
  118. package/src/write/abc_decoration.js +0 -357
  119. package/src/write/abc_glyphs.js +0 -224
  120. package/src/write/abc_tempo_element.js +0 -63
  121. package/src/write/abc_triplet_element.js +0 -28
  122. package/src/write/add-chord.js +0 -103
  123. package/src/write/format-jazz-chord.js +0 -15
  124. package/src/write/free-text.js +0 -41
  125. /package/src/write/{abc_crescendo_element.js → creation/elements/crescendo-element.js} +0 -0
  126. /package/src/write/{abc_dynamic_decoration.js → creation/elements/dynamic-decoration.js} +0 -0
  127. /package/src/write/{abc_ending_element.js → creation/elements/ending-element.js} +0 -0
  128. /package/src/write/{abc_glissando_element.js → creation/elements/glissando-element.js} +0 -0
  129. /package/src/write/layout/{getBarYAt.js → get-bar-y-at.js} +0 -0
@@ -1,19 +0,0 @@
1
-
2
- /**
3
- * Dedicated fonts for violin tabs
4
- */
5
-
6
- /**
7
- * Set here the fonts used by renderer/drawer
8
- * for the violin plugin
9
- * @param {} tune
10
- */
11
- // eslint-disable-next-line no-unused-vars
12
- function setGuitarFonts(tune) {
13
- /* enhance or change instrument fonts here */
14
- // tune.formatting.tabnumberfont = { face: "\"Times New Roman\"", size: 9, weight: "normal", style: "normal", decoration: "none" };
15
- // tune.formatting.tabgracefont = { face: "\"Times New Roman\"", size: 7, weight: "normal", style: "normal", decoration: "none" };
16
- }
17
-
18
- module.exports = setGuitarFonts;
19
-
@@ -1,19 +0,0 @@
1
-
2
- /**
3
- * Dedicated fonts for violin tabs
4
- */
5
-
6
- /**
7
- * Set here the fonts used by renderer/drawer
8
- * for the violin plugin
9
- * @param {} tune
10
- */
11
- // eslint-disable-next-line no-unused-vars
12
- function setViolinFonts(tune) {
13
- /* enhance or change instrument fonts here */
14
- // tune.formatting.tabnumberfont = { face: "\"Times New Roman\"", size: 9, weight: "normal", style: "normal", decoration: "none" };
15
- // tune.formatting.tabgracefont = { face: "\"Times New Roman\"", size: 7, weight: "normal", style: "normal", decoration: "none" };
16
- }
17
-
18
- module.exports = setViolinFonts;
19
-
@@ -1,110 +0,0 @@
1
- /**
2
- *
3
- * generic transposer
4
- *
5
- */
6
- var TabNote = require('./instruments/tab-note');
7
-
8
-
9
-
10
- function buildAccEquiv(acc,note) {
11
- var equiv = note.getAccidentalEquiv();
12
- if (acc.note.toUpperCase() == equiv.name.toUpperCase()) {
13
- equiv.isSharp = false;
14
- equiv.isFlat = false;
15
- return equiv;
16
- }
17
- return note;
18
- }
19
-
20
- function adjustNoteToKey(acc, note) {
21
- if (acc.acc == 'sharp') {
22
- if (note.isFlat) {
23
- return buildAccEquiv(acc, note);
24
- } else if (note.isSharp) {
25
- if (acc.note.toUpperCase() == note.name.toUpperCase()) {
26
- note.isSharp = false;
27
- note.isKeySharp = true;
28
- } else {
29
- if (acc.note.toUpperCase() == note.name.toUpperCase()) {
30
- note.natural = true;
31
- }
32
- }
33
- }
34
- } else if (acc.acc == 'flat') {
35
- if (note.isSharp) {
36
- return buildAccEquiv(acc, note);
37
- } else if (note.isFlat) {
38
- if (acc.note.toUpperCase() == note.name.toUpperCase()) {
39
- note.isFlat = false;
40
- note.isKeyFlat = true;
41
- }
42
- } else {
43
- if (acc.note.toUpperCase() == note.name.toUpperCase()) {
44
- note.natural = true;
45
- }
46
- }
47
- }
48
- return note;
49
- }
50
-
51
-
52
- function replaceNote(self, newNote, start, end) {
53
- if (self.lastEnd) {
54
- while (start > self.lastEnd) {
55
- self.updatedSrc.push(self.abcSrc[self.lastEnd]);
56
- self.lastEnd++;
57
- }
58
- }
59
- var nNote = newNote.split('');
60
- for (var ii = 0; ii < nNote.length; ii++) {
61
- self.updatedSrc.push(nNote[ii]);
62
- }
63
- var curPos = start + ii;
64
- while (end >= curPos) {
65
- self.updatedSrc.push(nNote[curPos]);
66
- curPos++;
67
- }
68
- self.lastEnd = end;
69
- }
70
-
71
-
72
- function checkKeys(self, note) {
73
- var accs = self.transposedKey;
74
- for (var ii = 0; ii < accs.length; ii++) {
75
- note = adjustNoteToKey(accs[ii], note);
76
- }
77
- return note;
78
- }
79
-
80
- Transposer.prototype.transposeNote = function (note) {
81
- var returned = note;
82
- var curNote = new TabNote.TabNote(returned.name);
83
- if (this.transposeBy > 0) {
84
- for (var ii = 0; ii < this.transposeBy; ii++) {
85
- curNote = checkKeys(this,curNote.nextNote());
86
- }
87
-
88
- } else if ( this.transposeBy < 0) {
89
- for (var jj = this.transposeBy; jj < 0; jj++) {
90
- curNote = checkKeys(this,curNote.prevNote());
91
- }
92
- }
93
- returned.name = curNote.emit();
94
- return returned;
95
- };
96
-
97
- Transposer.prototype.upgradeSource = function (note, startChar, endChar ) {
98
- var n = new TabNote.TabNote(note.name);
99
- var newNote = n.emit();
100
- replaceNote(this, newNote, startChar, endChar-1);
101
- };
102
-
103
- function Transposer(transposedKey , transposeBy ) {
104
- this.transposeBy = transposeBy;
105
- this.transposedKey = transposedKey;
106
- this.lastEnd = this.kEnd+1;
107
- }
108
-
109
-
110
- module.exports = Transposer;