abcjs 6.0.0-beta.9 → 6.0.2

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