abcjs 6.0.0-beta.8 → 6.0.1

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 (204) hide show
  1. package/.github/workflows/tests.yml +29 -0
  2. package/CODE_OF_CONDUCT.md +76 -0
  3. package/CONTRIBUTING.md +1 -0
  4. package/LICENSE.md +1 -1
  5. package/README.md +92 -3
  6. package/RELEASE.md +959 -1
  7. package/abcjs-audio.css +14 -5
  8. package/dist/.gitignore +1 -2
  9. package/dist/abcjs-basic-min.js +3 -0
  10. package/dist/abcjs-basic-min.js.LICENSE +23 -0
  11. package/dist/abcjs-basic.js +28232 -0
  12. package/dist/abcjs-basic.js.map +1 -0
  13. package/dist/abcjs-plugin-min.js +3 -0
  14. package/dist/abcjs-plugin-min.js.LICENSE +23 -0
  15. package/dist/report-basic.html +37 -0
  16. package/dist/report-before-glyph-compress.html +37 -0
  17. package/dist/report-brown-ts-target-es5.html +37 -0
  18. package/dist/report-dev-orig-no-babel.html +37 -0
  19. package/dist/report-synth.html +37 -0
  20. package/docker-build.sh +1 -0
  21. package/glyphs.json +1 -0
  22. package/index.js +27 -2
  23. package/{static-wrappers/license.js → license.js} +1 -1
  24. package/package.json +26 -29
  25. package/{src/plugin/abc_plugin.js → plugin.js} +31 -19
  26. package/src/api/abc_animation.js +1 -17
  27. package/src/api/abc_tablatures.js +144 -0
  28. package/src/api/abc_timing_callbacks.js +239 -116
  29. package/src/api/abc_tunebook.js +18 -67
  30. package/src/api/abc_tunebook_svg.js +38 -46
  31. package/src/data/abc_tune.js +232 -972
  32. package/src/data/deline-tune.js +199 -0
  33. package/src/edit/abc_editarea.js +112 -0
  34. package/src/edit/abc_editor.js +95 -221
  35. package/src/midi/abc_midi_create.js +48 -50
  36. package/src/parse/abc_common.js +0 -14
  37. package/src/parse/abc_parse.js +167 -1321
  38. package/src/parse/abc_parse_book.js +62 -0
  39. package/src/parse/abc_parse_directive.js +164 -41
  40. package/src/parse/abc_parse_header.js +116 -145
  41. package/src/parse/abc_parse_key_voice.js +26 -20
  42. package/src/parse/abc_parse_music.js +1337 -0
  43. package/src/parse/abc_tokenizer.js +21 -15
  44. package/src/parse/abc_transpose.js +3 -15
  45. package/src/parse/tune-builder.js +896 -0
  46. package/src/parse/wrap_lines.js +205 -453
  47. package/src/synth/abc_midi_flattener.js +1292 -0
  48. package/src/{midi → synth}/abc_midi_renderer.js +44 -17
  49. package/src/synth/abc_midi_sequencer.js +648 -0
  50. package/src/synth/active-audio-context.js +3 -14
  51. package/src/synth/cents-to-factor.js +10 -0
  52. package/src/synth/create-note-map.js +21 -32
  53. package/src/synth/create-synth-control.js +20 -103
  54. package/src/synth/create-synth.js +185 -77
  55. package/src/synth/download-buffer.js +7 -21
  56. package/src/synth/get-midi-file.js +13 -20
  57. package/src/synth/images/{loading.svg → loading.svg.js} +4 -0
  58. package/src/synth/images/loop.svg.js +65 -0
  59. package/src/synth/images/pause.svg.js +10 -0
  60. package/src/synth/images/play.svg.js +9 -0
  61. package/src/synth/images/{reset.svg → reset.svg.js} +5 -1
  62. package/src/synth/instrument-index-to-name.js +1 -16
  63. package/src/synth/load-note.js +37 -76
  64. package/src/synth/pitch-to-note-name.js +0 -15
  65. package/src/synth/pitches-to-perc.js +64 -0
  66. package/src/synth/place-note.js +78 -68
  67. package/src/synth/play-event.js +17 -18
  68. package/src/synth/register-audio-context.js +11 -23
  69. package/src/synth/sounds-cache.js +0 -15
  70. package/src/synth/supports-audio.js +9 -23
  71. package/src/synth/synth-controller.js +80 -49
  72. package/src/synth/synth-sequence.js +20 -34
  73. package/src/tablatures/instruments/guitar/guitar-fonts.js +19 -0
  74. package/src/tablatures/instruments/guitar/guitar-patterns.js +23 -0
  75. package/src/tablatures/instruments/guitar/tab-guitar.js +50 -0
  76. package/src/tablatures/instruments/string-patterns.js +277 -0
  77. package/src/tablatures/instruments/string-tablature.js +56 -0
  78. package/src/tablatures/instruments/tab-note.js +282 -0
  79. package/src/tablatures/instruments/tab-notes.js +41 -0
  80. package/src/tablatures/instruments/violin/tab-violin.js +47 -0
  81. package/src/tablatures/instruments/violin/violin-fonts.js +19 -0
  82. package/src/tablatures/instruments/violin/violin-patterns.js +23 -0
  83. package/src/tablatures/tab-absolute-elements.js +310 -0
  84. package/src/tablatures/tab-common.js +29 -0
  85. package/src/tablatures/tab-renderer.js +243 -0
  86. package/src/tablatures/transposer.js +110 -0
  87. package/src/test/abc_midi_lint.js +5 -22
  88. package/src/test/abc_midi_sequencer_lint.js +11 -14
  89. package/src/test/abc_parser_lint.js +136 -32
  90. package/src/test/abc_vertical_lint.js +94 -32
  91. package/src/test/rendering-lint.js +38 -5
  92. package/src/write/abc_absolute_element.js +112 -120
  93. package/src/write/abc_abstract_engraver.js +102 -253
  94. package/src/write/abc_beam_element.js +30 -290
  95. package/src/write/abc_brace_element.js +12 -121
  96. package/src/write/abc_create_clef.js +21 -32
  97. package/src/write/abc_create_key_signature.js +8 -26
  98. package/src/write/abc_create_note_head.js +107 -0
  99. package/src/write/abc_create_time_signature.js +2 -21
  100. package/src/write/abc_crescendo_element.js +3 -50
  101. package/src/write/abc_decoration.js +7 -30
  102. package/src/write/abc_dynamic_decoration.js +3 -37
  103. package/src/write/abc_ending_element.js +1 -57
  104. package/src/write/abc_engraver_controller.js +111 -234
  105. package/src/write/abc_glyphs.js +8 -18
  106. package/src/write/abc_relative_element.js +57 -97
  107. package/src/write/abc_renderer.js +10 -832
  108. package/src/write/abc_spacing.js +0 -15
  109. package/src/write/abc_staff_group_element.js +14 -349
  110. package/src/write/abc_tempo_element.js +9 -117
  111. package/src/write/abc_tie_element.js +5 -68
  112. package/src/write/abc_triplet_element.js +6 -124
  113. package/src/write/abc_voice_element.js +7 -222
  114. package/src/write/add-chord.js +103 -0
  115. package/src/write/add-text-if.js +33 -0
  116. package/src/write/bottom-text.js +79 -0
  117. package/src/write/calcHeight.js +17 -0
  118. package/src/write/classes.js +100 -0
  119. package/src/write/draw/absolute.js +68 -0
  120. package/src/write/draw/beam.js +56 -0
  121. package/src/write/draw/brace.js +106 -0
  122. package/src/write/draw/crescendo.js +38 -0
  123. package/src/write/draw/debug-box.js +8 -0
  124. package/src/write/draw/draw.js +56 -0
  125. package/src/write/draw/dynamics.js +20 -0
  126. package/src/write/draw/ending.js +46 -0
  127. package/src/write/draw/group-elements.js +66 -0
  128. package/src/write/draw/horizontal-line.js +25 -0
  129. package/src/write/draw/non-music.js +50 -0
  130. package/src/write/draw/print-line.js +24 -0
  131. package/src/write/draw/print-path.js +7 -0
  132. package/src/write/draw/print-stem.js +30 -0
  133. package/src/write/draw/print-symbol.js +59 -0
  134. package/src/write/draw/print-vertical-line.js +18 -0
  135. package/src/write/draw/relative.js +77 -0
  136. package/src/write/draw/round-number.js +5 -0
  137. package/src/write/draw/selectables.js +59 -0
  138. package/src/write/draw/separator.js +16 -0
  139. package/src/write/draw/set-paper-size.js +45 -0
  140. package/src/write/{sprintf.js → draw/sprintf.js} +0 -0
  141. package/src/write/draw/staff-group.js +226 -0
  142. package/src/write/draw/staff-line.js +9 -0
  143. package/src/write/draw/staff.js +33 -0
  144. package/src/write/draw/tab-line.js +40 -0
  145. package/src/write/draw/tempo.js +45 -0
  146. package/src/write/draw/text.js +71 -0
  147. package/src/write/draw/tie.js +97 -0
  148. package/src/write/draw/triplet.js +46 -0
  149. package/src/write/draw/voice.js +102 -0
  150. package/src/write/format-jazz-chord.js +15 -0
  151. package/src/write/free-text.js +41 -0
  152. package/src/write/get-font-and-attr.js +37 -0
  153. package/src/write/get-text-size.js +56 -0
  154. package/src/write/highlight.js +11 -0
  155. package/src/write/layout/VoiceElements.js +121 -0
  156. package/src/write/layout/beam.js +213 -0
  157. package/src/write/layout/get-left-edge-of-staff.js +56 -0
  158. package/src/write/layout/getBarYAt.js +6 -0
  159. package/src/write/layout/layout.js +94 -0
  160. package/src/write/layout/setUpperAndLowerElements.js +232 -0
  161. package/src/write/layout/staffGroup.js +146 -0
  162. package/src/write/layout/triplet.js +75 -0
  163. package/src/write/layout/voice.js +137 -0
  164. package/src/write/selection.js +188 -70
  165. package/src/write/separator.js +10 -0
  166. package/src/write/set-class.js +21 -0
  167. package/src/write/subtitle.js +12 -0
  168. package/src/write/svg.js +95 -43
  169. package/src/write/top-text.js +54 -0
  170. package/src/write/unhighlight.js +11 -0
  171. package/temp.txt +15256 -0
  172. package/test.js +27 -64
  173. package/types/index.d.ts +1095 -0
  174. package/version.js +1 -1
  175. package/.babelrc +0 -5
  176. package/.eslintrc +0 -3
  177. package/.gitmodules +0 -3
  178. package/abcjs-midi.css +0 -166
  179. package/build-utils/loadPresets.js +0 -14
  180. package/build-utils/presets/webpack.analyze.js +0 -6
  181. package/build-utils/presets/webpack.optimize.js +0 -30
  182. package/build-utils/webpack.development.js +0 -14
  183. package/build-utils/webpack.production.js +0 -35
  184. package/deploy-docs.sh +0 -25
  185. package/docs/README.md +0 -33
  186. package/fix-versions.sh +0 -23
  187. package/mei.js +0 -43
  188. package/midi.js +0 -62
  189. package/src/api/abc_tunebook_midi.js +0 -116
  190. package/src/midi/abc_midi_controls.js +0 -701
  191. package/src/midi/abc_midi_flattener.js +0 -1119
  192. package/src/midi/abc_midi_js_preparer.js +0 -243
  193. package/src/midi/abc_midi_sequencer.js +0 -401
  194. package/src/midi/abc_midi_ui_generator.js +0 -86
  195. package/src/plugin/abc_plugin_midi.js +0 -220
  196. package/src/synth/images/loop.svg +0 -61
  197. package/src/synth/images/pause.svg +0 -6
  198. package/src/synth/images/play.svg +0 -5
  199. package/src/transform/abc2abc_write.js +0 -395
  200. package/static-wrappers/basic.js +0 -2
  201. package/static-wrappers/midi.js +0 -2
  202. package/static-wrappers/plugin-midi.js +0 -6
  203. package/static-wrappers/plugin.js +0 -6
  204. package/webpack.config.js +0 -29
package/RELEASE.md CHANGED
@@ -1,3 +1,961 @@
1
+ # Version 6.0.1
2
+
3
+ ## Bugs
4
+
5
+ * Make the printable example long enough to be on two pages.
6
+
7
+ * Fix paper size so that the bottom of a narrow staff is not cut off.
8
+
9
+ * Add a little padding to stems so they aren't cut off.
10
+
11
+ # Version 6.0.0
12
+
13
+ ## Bugs
14
+
15
+ * Fix the bar number display when wrapping.
16
+
17
+ * Don't add extra padding when creating minimal music (like one note)
18
+
19
+ * Fix selection data for unaligned words
20
+
21
+ * Pass back actual selectable element when one of its children is clicked.
22
+
23
+ * Don't put extra classes and data- attributes on compound symbols (like "12/8")
24
+
25
+ * Fix spacing for triplet number
26
+
27
+ * Don't add extra space at the bottom if there is no bottom text.
28
+
29
+ * Allow aria-label to not be set.
30
+
31
+ * Fix adding class names to dynamics and some other elements.
32
+
33
+ * Fix regression where the left line of multi-staff music was misplaced if the bottom line is for percussion.
34
+
35
+ * gracenotes now are processed through %%percmap
36
+
37
+ # Version 6.0.0-beta.39
38
+
39
+ ## Bugs
40
+
41
+ * Add some info to the return of the prime() method
42
+
43
+ * Fix iOS not playing because audioContext doesn't stay running
44
+
45
+ # Version 6.0.0-beta.38
46
+
47
+ ## Bugs
48
+
49
+ * Regression: Fix return of CreateSynth.init
50
+
51
+ * Don't do audio on tablature lines.
52
+
53
+ * Wait until all notes are loaded before continuing to build audio buffer. (Caused the beginning of the buffer to possibly be arpeggiated if there is a race condition.)
54
+
55
+ * Don't crash when there is a blank staff on the second line.
56
+
57
+ * The pan option now works if the actual number of tracks doesn't match the panned tracks.
58
+
59
+ * Don't add chord track if it is empty.
60
+
61
+ ## Documentation
62
+
63
+ * Get more detailed with the typescript declarations
64
+
65
+ # Version 6.0.0-beta.37
66
+
67
+ * Keep the correct line count when generating one svg per line. (Fixes analysis of the tune for playback and timing)
68
+
69
+ ## Features
70
+
71
+ * Change the default soundfont to the improved Fluid one; add the anticipations on the abcjs soundfont.
72
+
73
+ # Version 6.0.0-beta.36
74
+
75
+ ## Bugs
76
+
77
+ * Fix some typescript definitions.
78
+
79
+ * When stopping synth, return the position that it stopped at.
80
+
81
+ * Implement a fix for race conditions during note loading
82
+
83
+ * Don't call debugger when setting an annotation on an invisible note.
84
+
85
+ * Put try/catch in editor when creating music so there isn't an unhandled exception if there is an abcjs bug.
86
+
87
+ * Don't crash when creating audio and there is a suppressed blank line
88
+
89
+ * When suppressing blank lines, consider a line with only chords as not blank.
90
+
91
+ * Don't add too much spacing on chord symbols when placing them.
92
+
93
+ * Don't lose element's scrolling position when rendering music.
94
+
95
+ * Fix crash when creating timing array and there is a suppressed line because it is empty.
96
+
97
+ * Allow soundFontVolumeMultiplier to be set to zero.
98
+
99
+ ## Features
100
+
101
+ * Add string tablature
102
+
103
+ * Implement %%jazzchord directive
104
+
105
+ ## Documentation
106
+
107
+ * Add example page using multiple synths with program switcher
108
+
109
+ * Add jazzchords to example generator
110
+
111
+ # Version 6.0.0-beta.35
112
+
113
+ ## Bugs
114
+
115
+ * Fix regression on creating oneSvgPerLine
116
+
117
+ * Fix notes that are one step apart from colliding.
118
+
119
+ * Fix crash on bad notelength
120
+
121
+ * Fix note durations in triplets where p != r
122
+
123
+ * Don't crash if a browser doesn't contain AudioContext
124
+
125
+ * Don't swallow warning after wrapping.
126
+
127
+ * Fix some regressions with placing and styling text.
128
+
129
+ * Fix font on relatively positioned annotations.
130
+
131
+ * Protect the editor from crashing when synth is attempted and the browser doesn't support AudioContext.
132
+
133
+ ## Features
134
+
135
+ * Create parameter `jazzchords`
136
+
137
+ * Add many types to the typescript definitions.
138
+
139
+ * Add `units` to TimingCallback.start
140
+
141
+ * Add staccato to midi creation.
142
+
143
+ * Add classes to dynamics elements.
144
+
145
+ * Add more info to the click handler
146
+
147
+ * Limit the size of the warning message if there is a long string.
148
+
149
+ * Add initialClef option
150
+
151
+ * Keep and pass back current time from the timer callbacks.
152
+
153
+ ## Documentation
154
+
155
+ * Fix path for favicon in docs
156
+
157
+ * Tweak to printing example
158
+
159
+ * Move examples to github pages.
160
+
161
+ * Add MIDI download example.
162
+
163
+ * Fixes to doc building from the vuepress upgrade.
164
+
165
+ * Add mention of a CDN to load library from.
166
+
167
+ * Add a couple of errors to analysis demo to show the warning data.
168
+
169
+ * Option to only render the clef on the first line.
170
+
171
+ # Version 6.0.0-beta.33
172
+
173
+ ## Bugs
174
+
175
+ * Fix crash when there is a missing close bracket on an inline command.
176
+
177
+ * Fix the startChar position of chords
178
+
179
+ * Fix overriding the tempo.
180
+
181
+ * Fix passing qpm in.
182
+
183
+ * Fix stem direction bug on wrap.
184
+
185
+ * Fix bug in calculating the endpoint of the audio when there are multiple voices.
186
+
187
+ ## Features
188
+
189
+ * Add getBarLength() and getTotalTime() to the tune object;
190
+
191
+ * Add second parameter to seek() for the units percent, seconds, and beats.
192
+
193
+ * Add `detuneOctave` parameter
194
+
195
+ ## Documentation
196
+
197
+ * Example of controlling the tempo.
198
+
199
+ ## Build
200
+
201
+ * Remove bin folder
202
+
203
+ # Version 6.0.0-beta.32
204
+
205
+ ## Bugs
206
+
207
+ * Some fixes to startChar and endChar when there are line continuations
208
+
209
+ * Error messages now report the absolute line in the file that the error occurs, not the offset from the first music line.
210
+
211
+ * Fix bug where multiple text lines would duplicate text.
212
+
213
+ * `a b !+!c` removing the end `!` from the `!+!` will cause the decoration to bleed to the first element in the line.
214
+
215
+ * Fix audio control buttons on Safari
216
+
217
+ * Make creating audio more efficient. (was creating buffer twice as long as needed.)
218
+
219
+ * Fix click-a-note-to-play-it to handle microtones.
220
+
221
+ * Get rid of audio warning when key changes.
222
+
223
+ * Fix Safari not making sound when first using playEvent.
224
+
225
+ * Fix crash when wrapping when using oneSvgPerLine.
226
+
227
+ ## Features
228
+
229
+ * Change the pitch change variable from "warp" to "cents".
230
+
231
+ * support microtones in midi output.
232
+
233
+ ## Refactoring
234
+
235
+ * Improvements to the handling of line continuations
236
+
237
+ * Remove some midi.js remnants
238
+
239
+ * Refactoring of the parser
240
+
241
+ ## Build
242
+
243
+ * update dependencies and fix webpack for v5
244
+
245
+ ## Documentation
246
+
247
+ * Add microtone demo.
248
+
249
+ * update docs to vuepress2
250
+
251
+ # Version 6.0.0-beta.31
252
+
253
+ ## Bugs
254
+
255
+ * Fix crash when no key signature is passed in.
256
+
257
+ * Octave clefs were double transposing.
258
+
259
+ * Made the audio control more robust in dark mode and when the page's css defines basic buttons.
260
+
261
+ ## Features
262
+
263
+ * Support audio for quarter sharp and quarter flat.
264
+
265
+ * Allow getMidiFile to accept a tune object as well as a string.
266
+
267
+ ## Build
268
+
269
+ * Remove more of the midi.js code
270
+
271
+ * Deliver the /dist folder for npm.
272
+
273
+ * Add entry points for testing.
274
+
275
+ * Start of parser refactoring
276
+
277
+ # Version 6.0.0-beta.30
278
+
279
+ ## Bugs
280
+
281
+ * Fix npm deployment.
282
+
283
+ # Version 6.0.0-beta.29
284
+
285
+ ## Bugs
286
+
287
+ * Fix stem direction on overlay voices.
288
+
289
+ ## Features
290
+
291
+ * Add support for invisible multi-measure rest "X"
292
+
293
+ * enhance typescript types
294
+
295
+ ## Build
296
+
297
+ * Remove build of midi version
298
+
299
+ * Simplify the webpack config
300
+
301
+ * Remove references to "master"
302
+
303
+ # Version 6.0.0-beta.28
304
+
305
+ ## Bugs
306
+
307
+ * Fix some problems with the visual synth control getting out of sync with the music.
308
+
309
+ * Fix stem direction on overlay voices.
310
+
311
+ * Don't print accidentals on percussion staves.
312
+
313
+ * Keep dragging notes from jumping around when the svg is scaled (on Chrome & Safari)
314
+
315
+ * Fix placement of multi-measure rest.
316
+
317
+ * Fix crash when using the parser twice instead of creating a new one.
318
+
319
+ * Fix bug in drawing slurs over the end of a line when there is more than one staff.
320
+
321
+ * Fix bug in counting measures in the element classes.
322
+
323
+ ## Features
324
+
325
+ * Support dark mode.
326
+
327
+ * Add support for `%%percmap`, allowing specifying a shape for each sound.
328
+
329
+ * Implement the audio for `%%percmap`.
330
+
331
+ * Add "triangle" as a note head shape.
332
+
333
+ ## Documentation
334
+
335
+ * Add a "Start here" section to the demo TOC.
336
+
337
+ * Add demo of tune analysis; fix docs on tune analysis
338
+
339
+ * Add "zoom to fit" demo.
340
+
341
+ ## Build
342
+
343
+ * Move SVG to separate files.
344
+
345
+ # Version 6.0.0-beta.27
346
+
347
+ ## Bugs
348
+
349
+ * Fix regression bug with setting the tempo when there is no Q: in the ABC string.
350
+
351
+ * Fix measure class numbering when the line starts with a bar line.
352
+
353
+ * Fix slur placement over a line break when there is more than one voice.
354
+
355
+ * Recreate audio when changing the tune in the editor.
356
+
357
+ * Fix wrapping crash when the first line in the tune is a subtitle.
358
+
359
+ * Fix synchronization of timing callbacks after changing the tempo.
360
+
361
+ * Fix regression bug when creating audio buffer in Safari.
362
+
363
+ * If an audio context is passed in, always use it.
364
+
365
+ ## Documentation
366
+
367
+ * Add warning if audio CSS is missing.
368
+
369
+ * Improve the animation demo.
370
+
371
+ * Add warning if a nonsensical rhythm is encountered.
372
+
373
+ * Add warning if audio CSS is missing.
374
+
375
+ * Change default branch to main
376
+
377
+ * Add links and info for old versions.
378
+
379
+ * Redo the animation demo.
380
+
381
+ * Add responsive demo.
382
+
383
+ * Change alt text for example's logo
384
+
385
+ * Some tweaks to transposition demo.
386
+
387
+ # Version 6.0.0-beta.26
388
+
389
+ ## Build
390
+
391
+ * Added types for TypeScript for `renderAbc` function
392
+
393
+ * Change midi.js to a peerDependency.
394
+
395
+ ## Accessibility
396
+
397
+ * Add foregroundColor parameter and set the default to currentColor (for high contrast)
398
+
399
+ * Add option to set the aria-label; by default aria-label is set to the title.
400
+
401
+ ## Bugs
402
+
403
+ * Fixed some regressions in changing the audio tempo.
404
+
405
+ * Fix some timing and crashing issues on synth.
406
+
407
+ * Fix the currentTrackMilliseconds for meters with eighth note denominators that are not compound.
408
+
409
+ ## Features
410
+
411
+ * Add support for triple broken rhythm symbols `>>>` and `<<<`
412
+
413
+ * Add `minPadding` parameter to keep the notes from getting too close together on crowded lines.
414
+
415
+ * Change the fadeLength default to 200ms
416
+
417
+ # Version 6.0.0-beta.25
418
+
419
+ ## Bugs
420
+
421
+ * Fix the way pause/resume is handled in the timing callbacks.
422
+
423
+ * Fix problems with changing the tempo with "warp"
424
+
425
+ * Keep key sig changes when wrapping.
426
+
427
+ * Make wrapping use one less line in some cases.
428
+
429
+ * Fix crash when wrapping music that has unusual voice mismatches.
430
+
431
+ * Fix meter display when wrapping.
432
+
433
+ * Prevent out of memory when wrapping long tune.
434
+
435
+ * Fix some cases where P: and Q: were not handled correctly.
436
+
437
+ * Fix changing tempo when there is a repeat.
438
+
439
+ * Fix audio seek: Seek percent should take the fade length into account.
440
+
441
+ * Fix crash when a tie is right before a repeat sign.
442
+
443
+ * Improve error handling when creating audio.
444
+
445
+ ## Features
446
+
447
+ * Add entry point in synth controller to programmatically seek
448
+
449
+ * %%stretchlast takes a number parameter
450
+
451
+ * Deliver the elapsed time in whole notes as well as milliseconds in the timing callbacks.
452
+
453
+ * Return the position of the notehead in the click listener.
454
+
455
+ * Add SynthControl.disable() so that the user can't click on the control before the tune is ready.
456
+
457
+ ## Tasks
458
+
459
+ * Remove many old versions of the minified releases.
460
+
461
+ * Change the destination folder for the build.
462
+
463
+ * Refactor wrapping
464
+
465
+ ## Documentation
466
+
467
+ * Some clarification of the build process in the docs.
468
+
469
+ * Create the example generator.
470
+
471
+ * Add FAQ
472
+
473
+ * Some tweaking to the demos; create demo table of contents.
474
+
475
+ * Add a little css for the examples
476
+
477
+ * Improvements to examples/basic-transpose.html
478
+
479
+ * Disabled spellcheck for ABC input textareas
480
+
481
+ * Document afterParsing function
482
+
483
+ * Document synthParamChanged
484
+
485
+ # Version 6.0.0-beta.24
486
+
487
+ ## Bugs
488
+
489
+ * If there are pickup notes and a drum track, don't start drum until the first full measure.
490
+
491
+ * If a dotted slur crosses a line, the slur on the next line should also be dotted.
492
+
493
+ * Make the audio buffer a little longer so the last note can fade out more naturally.
494
+
495
+ * Fix abcjs-mmXX class when there are non-music lines present.
496
+
497
+ * Fix height of bottom text: it was calculating a line too many.
498
+
499
+ * Fix a couple of crashes when calculating the timing of a tune.
500
+
501
+ * Fix documentation about how to directly play sound.
502
+
503
+ ## Features
504
+
505
+ * Add resets to MIDI file; carry forward "pan" option to MIDI file.
506
+
507
+ * %%titleleft should also affect subtitle.
508
+
509
+ * Add class for the measure count from the start of the tune.
510
+
511
+ # Version 6.0.0-beta.23
512
+
513
+ ## Bugs
514
+
515
+ * Fix calculation of bottom text height when there are blank lines.
516
+
517
+ * Center chord symbols better.
518
+
519
+ * Fix crash in the timer when lineEndCallback is not specified.
520
+
521
+ ## Features
522
+
523
+ * Add the staff Y coordinates to the clickListener.
524
+
525
+ * Implemented %%titleleft
526
+
527
+ # Version 6.0.0-beta.22
528
+
529
+ ## Bugs
530
+
531
+ * Fix crash in audio when there is an odd measure that contains chords.
532
+
533
+ * Fix definition of some jazz chords, particularly the 13th
534
+
535
+ * Fix timing on multiple voices when the tempo changes.
536
+
537
+ * Fix downloading WAV files in stereo.
538
+
539
+ * Fix the last line in the line end callbacks.
540
+
541
+ * Simplified and fixed some edge cases when seeking; added return value for eventCallback.
542
+
543
+ * Fix tempo change in multiple voices
544
+
545
+ * Fix the reporting of measure numbers in the timing callbacks when there are multiple voices.
546
+
547
+ * Add more info to the lineEndingCallback so the client can see all of the lines.
548
+
549
+ * Fix the alignment of %%center text.
550
+
551
+ * Don't crash if the current beat is later than the last event (can happen when the animation timer is delayed)
552
+
553
+ * Fix line end callback anticipation handling.
554
+
555
+ * Fix lower volume of default soundfont to prevent clipping.
556
+
557
+ * Fix crash when doing audio for tune with subtitle
558
+
559
+ ## Features
560
+
561
+ * Add programOffsets parameter for audio.
562
+
563
+ * Handle `%%MIDI channel 10` when it is in the middle of a tune.
564
+
565
+ * Add the note style (grace or decoration) to the sequenceCallback.
566
+
567
+ * Add classes for pinpointing where slurs start and end (abcjs-start-m0-n0, abcjs-end-m0-n0)
568
+
569
+ * Round many paths to 2 dec. places; add "abcjs-dotted" to dotted slurs.
570
+
571
+ * Add abcjs-dynamics class to the !f!, etc. symbols.
572
+
573
+ * Differentiate between slurs and ties in the classes.
574
+
575
+ * Add more info to the lineEndingCallback so the client can see all of the lines.
576
+
577
+ * Add some details about the beat callback to straighten out doing a smooth cursor.
578
+
579
+ # Version 6.0.0-beta.21
580
+
581
+ ## Bugs
582
+
583
+ * Don't require soundFontUrl to end in a slash.
584
+
585
+ * Force stretchlast on all lines except the last when printing one svg per line.
586
+
587
+ * Fix placement of brackets and braces when there are two voices on a staff.
588
+
589
+ * Fix typo in lead_8_bass_lead instrument name.
590
+
591
+ ## Features
592
+
593
+ * Added soundFontVolumeMultiplier parameter;
594
+
595
+ * made the abcjs soundfont the default.
596
+
597
+ # Version 6.0.0-beta.20
598
+
599
+ ## Bugs
600
+
601
+ * Fixed bug in smooth cursor when repeat is on one line.
602
+
603
+ * Fix timing callbacks calling stop() when playing in a loop.
604
+
605
+ ## Documentation
606
+
607
+ * Add example for adding swing.
608
+
609
+ * Add example for playing on repeat.
610
+
611
+ # Version 6.0.0-beta.19
612
+
613
+ ## Bugs
614
+
615
+ * Fix crash when processing a string that contains no note events.
616
+
617
+ * Don't let odd crescendo or diminuendo cause a nonsensical volume.
618
+
619
+ * Initialize the gap in audio files.
620
+
621
+ * Fix bug in timing callbacks when the position changes inside an event handler.
622
+
623
+ * Fix bug in turning off individual voices.
624
+
625
+ * Fixed chord placement when there are more than one chord in a measure in compound meter.
626
+
627
+ ## Features
628
+
629
+ * Implement a smooth cursor in the timing callbacks.
630
+
631
+ * Expose setWarp so that the tempo can be changed programmatically.
632
+
633
+ # Version 6.0.0-beta.18
634
+
635
+ ## Bugs
636
+
637
+ * Slight speedup when laying out scores with names in the voices.
638
+
639
+ * Increase the size of the annotation's lane to account for descenders.
640
+
641
+ * Fix calculation of beat length for 3/8 time.
642
+
643
+ ## Features
644
+
645
+ * Return the cursor position for each beat in the timing callbacks.
646
+
647
+ * Add the x position of the end of each note to the note timings.
648
+
649
+ ## Documentation
650
+
651
+ * Document the renderer debug option.
652
+
653
+ * Document the new parameter on the TimingCallback's beatCallback.
654
+
655
+ # Version 6.0.0-beta.17
656
+
657
+ ## Bugs
658
+
659
+ * Fix positioning of "3" on triplets.
660
+
661
+ * Add a tiny bit on margin for the annotation lanes.
662
+
663
+ * Fix positioning of lower annotations (that is: "_annotation").
664
+
665
+ * Fix generating audio using the SynthSequence object.
666
+
667
+ # Version 6.0.0-beta.16
668
+
669
+ ## Features
670
+ * If there is a repeat, then include both of the currentTrackMilliseconds in the callback. (Note: if you consume this, be sure you can handle either a number or an array.)
671
+
672
+ * Allow as many lanes as needed for annotations below the staff.
673
+
674
+ * Add Tune.getElementFromChar method for convenience.
675
+
676
+ * Allow setTiming to be called without parameters.
677
+
678
+ ## Bugs
679
+
680
+ * Fix the audio interpretation of dynamics.
681
+
682
+ * Fix vertical positioning of annotations when they appear on the same line as other annotations.
683
+
684
+ * Fix bug when there is a spacer in a triplet.
685
+
686
+ * Fix drawing of slur at beginning of line.
687
+
688
+ * Fix bug where editor swallows the clickListener callback.
689
+
690
+ * Fix timing when there are tempo changes.
691
+
692
+ * Move tempo note up slightly so it aligns with the number, not the font's baseline.
693
+
694
+ ## Documentation
695
+
696
+ * Document the return value of renderAbc
697
+
698
+ * A little improvement to the Editor documentation.
699
+
700
+ * Document classes a little more comprehensively.
701
+
702
+ * Document lineBreaks parameter.
703
+
704
+ * Remove the circular requirement for abcjs in the docs.
705
+
706
+ * Start to document the rest of the options for renderAbc
707
+
708
+ * Create example of how to annotate music.
709
+
710
+ * Improve documentation of audio.
711
+
712
+ * Changed the object that onEnded is passed in with to match documentation.
713
+
714
+ # Version 6.0.0-beta.15
715
+
716
+ ## Bugs
717
+ * Slightly increase the spacing for the dynamics lane.
718
+ * Fix crash when inline tempo is the first thing in the file.
719
+ * If `selectTypes` is not passed in, then the click behavior matches the last version of abcjs.
720
+ * Various positioning tweaks for clefs and key signatures.
721
+ * Get the fingerings to not interfere with chords.
722
+ * Fix dynamic volume calculation when dynamic is defined on bar line.
723
+ * Fix regression when wrapping short lines.
724
+ * Don't crash when creating a drum track (the inserted rests don't have elements attached.)
725
+ * Create AudioContext if one isn't passed in.
726
+ * fix some minor positioning problems with text boxes.
727
+
728
+ ## Features
729
+ * Use two lines for annotations and chords if they would run into each other.
730
+ * Recognize `!^!` as a synonym for `!marcato!`.
731
+ * Add a little more vertical space so nearby elements don't touch.
732
+ * Add support for dotted slurs and dotted ties.
733
+ * Pass back original mouse event when an element is clicked.
734
+ * Implement `vocalspace`.
735
+ * Add `showDebug` parameter to display element placement.
736
+ * Support `beambr1` and `beambr2`.
737
+ * Add the option `fontboxpadding`.
738
+ * Allow `annotationfont`, `composerfont`, `historyfont`, `infofont`, `subtitlefont`, `textfont`, `titlefont`, and `voicefont` to have a text box.
739
+
740
+ ## Refactoring
741
+ * Some refactoring of layout functionality.
742
+
743
+ ## Documentation
744
+ * Change all the examples to use the `/dist` folder so the path doesn't change every release.
745
+ * Create test for web audio.
746
+ * Set a custom font for the chords in the docs.
747
+
748
+ # Version 6.0.0-beta.14
749
+
750
+ ## Bugs
751
+
752
+ * Don't crash if `setTiming` is called too early.
753
+
754
+ * Fix length of accompaniment notes in compound meters.
755
+
756
+ * Fix inaccuracies with JS floating point on the length of notes.
757
+
758
+ * Fix crash when unmatched quote is in V: line.
759
+
760
+ * Get the multi-measure rest to have the correct duration for both display and audio.
761
+
762
+ * Fix crash "undefined size".
763
+
764
+ * Fix computing the pickup length when there are triplets.
765
+
766
+ * Don't transpose the perc clef.
767
+
768
+ * The audio should ignore the visualTranspose.
769
+
770
+ * Fix tempo calculation.
771
+
772
+ ## Features
773
+
774
+ * Improve the drawing of the double flat symbol.
775
+
776
+ * Detect chords that aren't on the beat and move them.
777
+
778
+ * Play chords on incomplete measures.
779
+
780
+ * Fix selection of tempo element.
781
+
782
+ * Handle no key sig in transpose.
783
+
784
+ * Allow synth parameters to be changed on the fly when using the editor.
785
+
786
+ * Don't require generate_warnings in editor params if warnings_id is present.
787
+
788
+ * Accept an element as well as an ID in warnings_id.
789
+
790
+ ## Refactoring
791
+
792
+ * Refactor the way notes are placed to create audio.
793
+
794
+ * Move layout functionality to a separate directory.
795
+
796
+ ## Documentation
797
+
798
+ * Make a better example of how to transpose.
799
+
800
+ ## Testing
801
+
802
+ * Add Mocha
803
+
804
+ * Add mocha tests covering most of the audio note placement.
805
+
806
+ * Add mocha tests for the selectable items.
807
+
808
+ * Add mocha tests for the line wrapping code.
809
+
810
+ * Add mocha tests that will run cross browser.
811
+
812
+ # Version 6.0.0-beta.13
813
+
814
+ ## Bugs
815
+ * Fix staff spacing bug when nothing is below the staff (like with bass clef only containing high notes)
816
+
817
+ * If a triplet is beamed with anything else, add a bracket.
818
+
819
+ * Fix supportsAudio() so it always return a bool
820
+
821
+ * allow more than one brace on a system
822
+
823
+ * Don't start dragging a note unless only the main mouse button is clicked.
824
+
825
+ * Don't crash audio if the time signature is malformed.
826
+
827
+ * Fix tempo on 9/4 and 12/4 meters
828
+
829
+ * Restore staccato note length
830
+
831
+ * fix bug in audio transposing middle C
832
+
833
+ * fix placement and sizing of text and the text box
834
+
835
+ * fix bug with sizing gchordfont
836
+
837
+ * Fix some crashes and bugs in the visible audio control.
838
+
839
+ ## Features
840
+ * Calculate tempo using passed in bpm if the millisecondsPerMeasure is not supplied.
841
+
842
+ * Refactor the editor to use renderAbc so that all the renderAbc functionality is available.
843
+
844
+ * allow multiple lines on a voice name
845
+
846
+ * center the voice name when there is one name in a brace.
847
+
848
+ * Implement vskip for regular music lines.
849
+
850
+ * allow changing gchordfont in the middle of the tune
851
+
852
+ * Create chords from whichever voice chords are encountered first.
853
+
854
+ * Get the octave clefs to sound in the correct octave.
855
+
856
+ ## Documentation
857
+ * update example to show onSvgPerLine and use new audio.
858
+
859
+ * Fix example links in docs.
860
+
861
+ * Add example for playing synth with no visual music.
862
+
863
+ * Fix midi download link on full synth example.
864
+
865
+ ## Refactoring
866
+
867
+ * split tunebook from tunebook parsing.
868
+
869
+ * More refactoring of the drawing code.
870
+
871
+ * separate bottom text into creation/drawing stages; cut down on dependencies in the draw functions.
872
+
873
+ * separate editarea from editor to allow function redefinitions
874
+
875
+ # Version 6.0.0-beta.12
876
+
877
+ ## Bugs
878
+
879
+ * Fix selection of items in a cross-browser way, in different markups and css that the SVG can appear.
880
+
881
+ * Fixes #440 second staff rendering too early.
882
+
883
+ * Fix regression bug when rendering.
884
+
885
+ # Version 6.0.0-beta.11
886
+
887
+ ## Features
888
+
889
+ * Allow "K:C none" to be the same as "K:C clef=none"
890
+ * Allow a finer grained selection mechanism.
891
+ * Allow braces to be selected.
892
+ * Allow o 0 and ^ as input for º ø and ∆ in chords.
893
+ * Don't play notes that are drawn with the rhythm notehead: replace with chord.
894
+ * Implement graceslurs
895
+ * Make the annotation not take horizontal space.
896
+
897
+ ## Bugs
898
+
899
+ * Crash in Firefox <= 50 when selecting.
900
+ * Don't crash if a rest is put inside a chord i.e. `[z]`
901
+ * Improve downward stem and beam rendering
902
+ * Remove the gaps between notes in audio.
903
+ * When removing latex commands, don't mess up the character positioning.
904
+ * fix to scale the click coords when paper is set to responsive
905
+ * support viewBox differences between chrome and firefox
906
+
907
+ ## Refactoring
908
+
909
+ * Extract the chord/annotation function to a separate file.
910
+ * Much refactoring to start putting all of the drawing commands together.
911
+
912
+ ## Documentation
913
+
914
+ * Add example for using wrap.
915
+ * Improve documentation for the call to initialize the synth.
916
+ * use https link over ssh for building documentation
917
+
918
+ # Version 6.0.0-beta.10
919
+
920
+ ## Features
921
+
922
+ * Add option to turn off individual voices when producing the audio.
923
+ * Add track names to midi file output.
924
+
925
+ ## Documentation
926
+
927
+ * Example of how to play only chords or only melody.
928
+
929
+ ## Bugs
930
+
931
+ * Fix placement of multiline overlay voices.
932
+ * Fix crash when setting the name of the midi file to download.
933
+ * Many timing tweaks and other improvements to the audio creation.
934
+ * Playback treble+8, etc. clefs in the correct octave.
935
+ * Don't transpose chord accompaniment more than an octave.
936
+ * Extra resume of audio context for Safari 13
937
+ * Fix setting the sound font url.
938
+ * Support pppp and ffff in audio.
939
+ * Fill midiPitches when doing any timing operation.
940
+ * Fix seeking when paused moved the cursor but not the audio.
941
+ * Fix audio timing when there are grace notes present.
942
+ * Fix end tie that happens over an ending.
943
+ * Fix audio for ties when there are accidentals.
944
+ * Fix the alternating bass note for chords with #5 and b5.
945
+ * Fix arithmetic inaccuracies in triplets.
946
+ * Fix interpreting a "maj" chord as minor.
947
+ * Fix tempo of 3/4 tunes.
948
+
949
+ # Version 6.0.0-beta.9
950
+
951
+ ## Bugs
952
+
953
+ * Add a fail-safe timer for the timingCallbacks (for some mobile devices that don't properly do requestAnimationFrame)
954
+
955
+ ## Tasks
956
+
957
+ * Add Docker files for running npm.
958
+
1
959
  # Version 6.0.0-beta.8
2
960
 
3
961
  ## Bugs
@@ -347,7 +1305,7 @@
347
1305
 
348
1306
  ## Features
349
1307
 
350
- * Add a new method of creating synthesized sound. (see [Synth Documentation](docs/synth.md) )
1308
+ * Add a new method of creating synthesized sound. (see [Synth Documentation](docs/audio/synthesized-sound.md) )
351
1309
 
352
1310
  * Implement "setbarnb" measure number
353
1311