abcjs 6.6.2 → 6.6.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/RELEASE.md +41 -0
- package/dist/abcjs-basic-min.js +2 -2
- package/dist/abcjs-basic.js +698 -171
- package/dist/abcjs-basic.js.map +1 -1
- package/dist/abcjs-plugin-min.js +2 -2
- package/package.json +1 -1
- package/src/api/abc_timing_callbacks.js +45 -15
- package/src/parse/abc_parse.js +2 -0
- package/src/parse/abc_parse_header.js +3 -1
- package/src/parse/abc_parse_key_voice.js +35 -0
- package/src/synth/chord-track.js +379 -130
- package/src/synth/create-synth.js +14 -8
- package/src/synth/repeats.js +2 -2
- package/src/write/creation/abstract-engraver.js +5 -4
- package/src/write/creation/create-note-head.js +6 -5
- package/src/write/creation/elements/relative-element.js +3 -0
- package/src/write/draw/absolute.js +6 -0
- package/src/write/draw/print-line.js +1 -2
- package/src/write/draw/print-stem.js +1 -1
- package/src/write/draw/triplet.js +3 -3
- package/src/write/engraver-controller.js +1 -1
- package/src/write/layout/layout.js +90 -0
- package/src/write/layout/set-upper-and-lower-elements.js +18 -2
- package/src/write/layout/to-time-and-staff-based.js +35 -0
- package/src/write/layout/triplet.js +61 -14
- package/src/write/renderer.js +1 -1
- package/types/index.d.ts +133 -34
- package/version.js +1 -1
package/src/synth/chord-track.js
CHANGED
|
@@ -255,14 +255,19 @@ ChordTrack.prototype.interpretChord = function (name) {
|
|
|
255
255
|
}
|
|
256
256
|
|
|
257
257
|
ChordTrack.prototype.chordNotes = function (bass, modifier) {
|
|
258
|
-
|
|
258
|
+
// accept either chord spelling
|
|
259
|
+
modifier = modifier.replace(/♭/g,'b').replace(/♯/g,'#')
|
|
260
|
+
|
|
261
|
+
var intervals = chordIntervals[modifier];
|
|
259
262
|
if (!intervals) {
|
|
263
|
+
// If the chord isn't in our list, we can at least guess
|
|
264
|
+
// whether it is major or minor.
|
|
260
265
|
if (modifier.slice(0, 2).toLowerCase() === 'ma' || modifier[0] === 'M')
|
|
261
|
-
intervals =
|
|
266
|
+
intervals = chordIntervals.M;
|
|
262
267
|
else if (modifier[0] === 'm' || modifier[0] === '-')
|
|
263
|
-
intervals =
|
|
268
|
+
intervals = chordIntervals.m;
|
|
264
269
|
else
|
|
265
|
-
intervals =
|
|
270
|
+
intervals = chordIntervals.M;
|
|
266
271
|
}
|
|
267
272
|
bass += 12; // the chord is an octave above the bass note.
|
|
268
273
|
|
|
@@ -416,7 +421,7 @@ function extractNote(chord, index) {
|
|
|
416
421
|
// This creates an arpeggio note no matter how many notes are in the chord - if it runs out of notes it continues in the next octave
|
|
417
422
|
var octave = Math.floor(index / chord.chick.length)
|
|
418
423
|
var note = chord.chick[index % chord.chick.length]
|
|
419
|
-
//console.log(chord.chick, {index, octave, note
|
|
424
|
+
//console.log(chord.chick, {index, octave, note, index % chord.chick.length)
|
|
420
425
|
return note + octave * 12
|
|
421
426
|
}
|
|
422
427
|
|
|
@@ -477,131 +482,375 @@ ChordTrack.prototype.basses = {
|
|
|
477
482
|
'A': 33, 'B': 35, 'C': 36, 'D': 38, 'E': 40, 'F': 41, 'G': 43
|
|
478
483
|
};
|
|
479
484
|
|
|
480
|
-
|
|
481
|
-
//
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
485
|
+
var chordIntervals = {
|
|
486
|
+
// unusual chords
|
|
487
|
+
"-addb2": [0, 1, 3, 7],
|
|
488
|
+
"maddb2": [0, 1, 3, 7],
|
|
489
|
+
"addb2": [0, 1, 4, 7],
|
|
490
|
+
"susb2": [0, 1, 7],
|
|
491
|
+
"-add2": [0, 2, 3, 7],
|
|
492
|
+
"madd2": [0, 2, 3, 7],
|
|
493
|
+
"add2": [0, 2, 4, 7],
|
|
494
|
+
"sus2": [0, 2, 7],
|
|
495
|
+
"-7sus2": [0, 2, 7, 10],
|
|
496
|
+
"7sus2": [0, 2, 7, 10],
|
|
497
|
+
"m7sus2": [0, 2, 7, 10],
|
|
498
|
+
"min7sus2": [0, 2, 7, 10],
|
|
499
|
+
"7sus2/9": [0, 2, 7, 10, 14],
|
|
500
|
+
"add#2": [0, 3, 4, 7],
|
|
501
|
+
"-add4": [0, 3, 5, 7],
|
|
502
|
+
"madd4": [0, 3, 5, 7],
|
|
503
|
+
|
|
504
|
+
// diminished chords
|
|
505
|
+
"dim": [0, 3, 6],
|
|
506
|
+
"m(b5)": [0, 3, 6],
|
|
507
|
+
"°": [0, 3, 6],
|
|
508
|
+
"˚": [0, 3, 6],
|
|
509
|
+
"-add#4": [0, 3, 6, 7],
|
|
510
|
+
"madd#4": [0, 3, 6, 7],
|
|
511
|
+
"dim7": [0, 3, 6, 9],
|
|
512
|
+
"°7": [0, 3, 6, 9],
|
|
513
|
+
"˚7": [0, 3, 6, 9],
|
|
514
|
+
"-7(b5)": [0, 3, 6, 10],
|
|
515
|
+
"-7b5": [0, 3, 6, 10],
|
|
516
|
+
"m7(b5)": [0, 3, 6, 10],
|
|
517
|
+
"m7b5": [0, 3, 6, 10],
|
|
518
|
+
"ø": [0, 3, 6, 10],
|
|
519
|
+
"ø7": [0, 3, 6, 10],
|
|
520
|
+
|
|
521
|
+
// minor chords
|
|
522
|
+
"-": [0, 3, 7],
|
|
523
|
+
"m": [0, 3, 7],
|
|
524
|
+
"-(b6)": [0, 3, 7, 8],
|
|
525
|
+
"-b6": [0, 3, 7, 8],
|
|
526
|
+
"m(b6)": [0, 3, 7, 8],
|
|
527
|
+
"mb6": [0, 3, 7, 8],
|
|
528
|
+
"-6": [0, 3, 7, 9],
|
|
529
|
+
"m6": [0, 3, 7, 9],
|
|
530
|
+
"-6(9)": [0, 3, 7, 9, 14],
|
|
531
|
+
"-6/9": [0, 3, 7, 9, 14],
|
|
532
|
+
"-69": [0, 3, 7, 9, 14],
|
|
533
|
+
"m6(9)": [0, 3, 7, 9, 14],
|
|
534
|
+
"m6/9": [0, 3, 7, 9, 14],
|
|
535
|
+
"m69": [0, 3, 7, 9, 14],
|
|
536
|
+
"-7": [0, 3, 7, 10],
|
|
537
|
+
"m7": [0, 3, 7, 10],
|
|
538
|
+
"-7(b9)": [0, 3, 7, 10, 13],
|
|
539
|
+
"-7b9": [0, 3, 7, 10, 13],
|
|
540
|
+
"-7(9)": [0, 3, 7, 10, 14],
|
|
541
|
+
"-7/9": [0, 3, 7, 10, 14],
|
|
542
|
+
"-9": [0, 3, 7, 10, 14],
|
|
543
|
+
"m7(9)": [0, 3, 7, 10, 14],
|
|
544
|
+
"m7/9": [0, 3, 7, 10, 14],
|
|
545
|
+
"m9": [0, 3, 7, 10, 14],
|
|
546
|
+
"-7(9,11)": [0, 3, 7, 10, 14, 17],
|
|
547
|
+
"-7/9/11": [0, 3, 7, 10, 14, 17],
|
|
548
|
+
"m7(9,11)": [0, 3, 7, 10, 14, 17],
|
|
549
|
+
"m7/9/11": [0, 3, 7, 10, 14, 17],
|
|
550
|
+
"-13": [0, 3, 7, 10, 14, 17, 21],
|
|
551
|
+
"-7(9,11,13)": [0, 3, 7, 10, 14, 17, 21],
|
|
552
|
+
"-7/9/11/13": [0, 3, 7, 10, 14, 17, 21],
|
|
553
|
+
"m13": [0, 3, 7, 10, 14, 17, 21],
|
|
554
|
+
"m7(9,11,13)": [0, 3, 7, 10, 14, 17, 21],
|
|
555
|
+
"m7/9/11/13": [0, 3, 7, 10, 14, 17, 21],
|
|
556
|
+
"-7(9,13)": [0, 3, 7, 10, 14, 21],
|
|
557
|
+
"-7/9/13": [0, 3, 7, 10, 14, 21],
|
|
558
|
+
"m7(9,13)": [0, 3, 7, 10, 14, 21],
|
|
559
|
+
"m7/9/13": [0, 3, 7, 10, 14, 21],
|
|
560
|
+
"-7(11)": [0, 3, 7, 10, 17],
|
|
561
|
+
"-7/11": [0, 3, 7, 10, 17],
|
|
562
|
+
"m7(11)": [0, 3, 7, 10, 17],
|
|
563
|
+
"m7/11": [0, 3, 7, 10, 17],
|
|
564
|
+
"-7(11,13)": [0, 3, 7, 10, 17, 21],
|
|
565
|
+
"-7/11/13": [0, 3, 7, 10, 17, 21],
|
|
566
|
+
"m7(11,13)": [0, 3, 7, 10, 17, 21],
|
|
567
|
+
"m7/11/13": [0, 3, 7, 10, 17, 21],
|
|
568
|
+
"-(maj7)": [0, 3, 7, 11],
|
|
569
|
+
"-7M": [0, 3, 7, 11],
|
|
570
|
+
"-maj7": [0, 3, 7, 11],
|
|
571
|
+
"-∆7": [0, 3, 7, 11],
|
|
572
|
+
"m(maj7)": [0, 3, 7, 11],
|
|
573
|
+
"mM7": [0, 3, 7, 11],
|
|
574
|
+
"min(maj7)": [0, 3, 7, 11],
|
|
575
|
+
"-9+7": [0, 3, 7, 11, 13],
|
|
576
|
+
"-(maj9)": [0, 3, 7, 11, 14],
|
|
577
|
+
"-7M(9)": [0, 3, 7, 11, 14],
|
|
578
|
+
"-maj9": [0, 3, 7, 11, 14],
|
|
579
|
+
"-∆9": [0, 3, 7, 11, 14],
|
|
580
|
+
"m(maj9)": [0, 3, 7, 11, 14],
|
|
581
|
+
"mM9": [0, 3, 7, 11, 14],
|
|
582
|
+
"min(maj9)": [0, 3, 7, 11, 14],
|
|
583
|
+
"-11": [0, 3, 7, 11, 14, 17],
|
|
584
|
+
"m11": [0, 3, 7, 11, 14, 17],
|
|
585
|
+
"-addb9": [0, 3, 7, 13],
|
|
586
|
+
"maddb9": [0, 3, 7, 13],
|
|
587
|
+
"-add9": [0, 3, 7, 14],
|
|
588
|
+
"madd9": [0, 3, 7, 14],
|
|
589
|
+
"-add11": [0, 3, 7, 17],
|
|
590
|
+
"madd11": [0, 3, 7, 17],
|
|
591
|
+
"-add#11": [0, 3, 7, 18],
|
|
592
|
+
"madd#11": [0, 3, 7, 18],
|
|
593
|
+
|
|
594
|
+
// altered minor chords
|
|
595
|
+
"-#5": [0, 3, 8],
|
|
596
|
+
"-(#5)": [0, 3, 8],
|
|
597
|
+
"m#5": [0, 3, 8],
|
|
598
|
+
"m(#5)": [0, 3, 8],
|
|
599
|
+
"-7#5": [0, 3, 8, 10],
|
|
600
|
+
"-7(#5)": [0, 3, 8, 10],
|
|
601
|
+
"dim7(b13)": [0, 3, 9, 20],
|
|
602
|
+
"°7(b13)": [0, 3, 9, 20],
|
|
603
|
+
"˚7(b13)": [0, 3, 9, 20],
|
|
604
|
+
|
|
605
|
+
// altered major chords
|
|
606
|
+
"add4": [0, 4, 5, 7],
|
|
607
|
+
"maj(b5)": [0, 4, 6],
|
|
608
|
+
"majb5": [0, 4, 6],
|
|
609
|
+
"add#4": [0, 4, 6, 7],
|
|
610
|
+
"7(b5)": [0, 4, 6, 10],
|
|
611
|
+
"7b5": [0, 4, 6, 10],
|
|
612
|
+
"7(b5,b9)": [0, 4, 6, 10, 13],
|
|
613
|
+
"7(b9,b5)": [0, 4, 6, 10, 13],
|
|
614
|
+
"7b5(b9)": [0, 4, 6, 10, 13],
|
|
615
|
+
"7b9,b5": [0, 4, 6, 10, 13],
|
|
616
|
+
"7b9b5": [0, 4, 6, 10, 13],
|
|
617
|
+
"7(b5,b9,b13)": [0, 4, 6, 10, 13, 20],
|
|
618
|
+
"7/b5/b9/b13": [0, 4, 6, 10, 13, 20],
|
|
619
|
+
"7b5/b9/b13": [0, 4, 6, 10, 13, 20],
|
|
620
|
+
"7(b5,b9,13)": [0, 4, 6, 10, 13, 21],
|
|
621
|
+
"7/b5/b9/13": [0, 4, 6, 10, 13, 21],
|
|
622
|
+
"7b5/b9/13": [0, 4, 6, 10, 13, 21],
|
|
623
|
+
"7(9,b5)": [0, 4, 6, 10, 14],
|
|
624
|
+
"7(b5,9)": [0, 4, 6, 10, 14],
|
|
625
|
+
"7b5(9)": [0, 4, 6, 10, 14],
|
|
626
|
+
"9b5": [0, 4, 6, 10, 14],
|
|
627
|
+
"13(b5)": [0, 4, 6, 10, 14, 21],
|
|
628
|
+
"13b5": [0, 4, 6, 10, 14, 21],
|
|
629
|
+
"7(b5,9,13)": [0, 4, 6, 10, 14, 21],
|
|
630
|
+
"7/b5/9/13": [0, 4, 6, 10, 14, 21],
|
|
631
|
+
"7b5/9/13": [0, 4, 6, 10, 14, 21],
|
|
632
|
+
"7#9b5": [0, 4, 6, 10, 15],
|
|
633
|
+
"7(#9,b5)": [0, 4, 6, 10, 15],
|
|
634
|
+
"7(b5,#9)": [0, 4, 6, 10, 15],
|
|
635
|
+
"7b5(#9)": [0, 4, 6, 10, 15],
|
|
636
|
+
"7(b5,#9,b13)": [0, 4, 6, 10, 15, 20],
|
|
637
|
+
"7/b5/#9/b13": [0, 4, 6, 10, 15, 20],
|
|
638
|
+
"7b5/#9/b13": [0, 4, 6, 10, 15, 20],
|
|
639
|
+
"7(b5,#9,13)": [0, 4, 6, 10, 15, 21],
|
|
640
|
+
"7/b5/#9/13": [0, 4, 6, 10, 15, 21],
|
|
641
|
+
"7b5/#9/13": [0, 4, 6, 10, 15, 21],
|
|
642
|
+
"7(b5,b13)": [0, 4, 6, 10, 20],
|
|
643
|
+
"7/b5/b13": [0, 4, 6, 10, 20],
|
|
644
|
+
"7b5/b13": [0, 4, 6, 10, 20],
|
|
645
|
+
"7(b5,13)": [0, 4, 6, 10, 21],
|
|
646
|
+
"7/b5/13": [0, 4, 6, 10, 21],
|
|
647
|
+
"7b5(13)": [0, 4, 6, 10, 21],
|
|
648
|
+
"7b5/13": [0, 4, 6, 10, 21],
|
|
649
|
+
"7M(b5)": [0, 4, 6, 11],
|
|
650
|
+
"maj7(b5)": [0, 4, 6, 11],
|
|
651
|
+
"maj7b5": [0, 4, 6, 11],
|
|
652
|
+
"7M(b5,9)": [0, 4, 6, 11, 14],
|
|
653
|
+
"maj7(b5,9)": [0, 4, 6, 11, 14],
|
|
654
|
+
"maj7b5/9": [0, 4, 6, 11, 14],
|
|
655
|
+
"7M(b5,9,13)": [0, 4, 6, 11, 14, 21],
|
|
656
|
+
"maj7(b5,9,13)": [0, 4, 6, 11, 14, 21],
|
|
657
|
+
"maj7b5/9/13": [0, 4, 6, 11, 14, 21],
|
|
658
|
+
"7M(b5,13)": [0, 4, 6, 11, 21],
|
|
659
|
+
"maj7(b5,13)": [0, 4, 6, 11, 21],
|
|
660
|
+
"maj7b5/13": [0, 4, 6, 11, 21],
|
|
661
|
+
|
|
662
|
+
// major chords
|
|
663
|
+
"M": [0, 4, 7],
|
|
664
|
+
"Δ": [0, 4, 7],
|
|
665
|
+
"∆": [0, 4, 7],
|
|
666
|
+
"6": [0, 4, 7, 9],
|
|
667
|
+
"6(9)": [0, 4, 7, 9, 14],
|
|
668
|
+
"6/9": [0, 4, 7, 9, 14],
|
|
669
|
+
"69": [0, 4, 7, 9, 14],
|
|
670
|
+
"6add9": [0, 4, 7, 9, 14],
|
|
671
|
+
"6(9,11)": [0, 4, 7, 9, 14, 17],
|
|
672
|
+
"6/9/11": [0, 4, 7, 9, 14, 17],
|
|
673
|
+
"6911": [0, 4, 7, 9, 14, 17],
|
|
674
|
+
"6(9,#11)": [0, 4, 7, 9, 14, 18],
|
|
675
|
+
"6/9/#11": [0, 4, 7, 9, 14, 18],
|
|
676
|
+
"69#11": [0, 4, 7, 9, 14, 18],
|
|
677
|
+
"6(11)": [0, 4, 7, 9, 17],
|
|
678
|
+
"6/11": [0, 4, 7, 9, 17],
|
|
679
|
+
"611": [0, 4, 7, 9, 17],
|
|
680
|
+
"6#11": [0, 4, 7, 9, 18],
|
|
681
|
+
"6(#11)": [0, 4, 7, 9, 18],
|
|
682
|
+
"6/#11": [0, 4, 7, 9, 18],
|
|
683
|
+
"7": [0, 4, 7, 10],
|
|
684
|
+
"7(b9)": [0, 4, 7, 10, 13],
|
|
685
|
+
"7b9": [0, 4, 7, 10, 13],
|
|
686
|
+
"7(9)": [0, 4, 7, 10, 14],
|
|
687
|
+
"7/9": [0, 4, 7, 10, 14],
|
|
688
|
+
"9": [0, 4, 7, 10, 14],
|
|
689
|
+
"7(9,11)": [0, 4, 7, 10, 14, 17],
|
|
690
|
+
"7/9/11": [0, 4, 7, 10, 14, 17],
|
|
691
|
+
"7(9,11,13)": [0, 4, 7, 10, 14, 17, 21],
|
|
692
|
+
"7/9/11/13": [0, 4, 7, 10, 14, 17, 21],
|
|
693
|
+
"7#11": [0, 4, 7, 10, 14, 18],
|
|
694
|
+
"7(#11)": [0, 4, 7, 10, 14, 18],
|
|
695
|
+
"9#11": [0, 4, 7, 10, 14, 18],
|
|
696
|
+
"9(#11)": [0, 4, 7, 10, 14, 18],
|
|
697
|
+
"(13)": [0, 4, 7, 10, 14, 21],
|
|
698
|
+
"13": [0, 4, 7, 10, 14, 21],
|
|
699
|
+
"7(9,13)": [0, 4, 7, 10, 14, 21],
|
|
700
|
+
"7/9/13": [0, 4, 7, 10, 14, 21],
|
|
701
|
+
"9/13": [0, 4, 7, 10, 14, 21],
|
|
702
|
+
"7#9": [0, 4, 7, 10, 15],
|
|
703
|
+
"7(#9)": [0, 4, 7, 10, 15],
|
|
704
|
+
"7(#9,b13)": [0, 4, 7, 10, 15, 20],
|
|
705
|
+
"7(11)": [0, 4, 7, 10, 17],
|
|
706
|
+
"7/11": [0, 4, 7, 10, 17],
|
|
707
|
+
"7(11,13)": [0, 4, 7, 10, 17, 21],
|
|
708
|
+
"7/11/13": [0, 4, 7, 10, 17, 21],
|
|
709
|
+
"13#11": [0, 4, 7, 10, 18, 21],
|
|
710
|
+
"13(#11)": [0, 4, 7, 10, 18, 21],
|
|
711
|
+
"7(b13)": [0, 4, 7, 10, 20],
|
|
712
|
+
"7b13": [0, 4, 7, 10, 20],
|
|
713
|
+
"7(13)": [0, 4, 7, 10, 21],
|
|
714
|
+
"7/13": [0, 4, 7, 10, 21],
|
|
715
|
+
"7M": [0, 4, 7, 11],
|
|
716
|
+
"maj7": [0, 4, 7, 11],
|
|
717
|
+
"Δ7": [0, 4, 7, 11],
|
|
718
|
+
"∆7": [0, 4, 7, 11],
|
|
719
|
+
"7M(9)": [0, 4, 7, 11, 14],
|
|
720
|
+
"7M/9": [0, 4, 7, 11, 14],
|
|
721
|
+
"maj7(9)": [0, 4, 7, 11, 14],
|
|
722
|
+
"maj7/9": [0, 4, 7, 11, 14],
|
|
723
|
+
"maj9": [0, 4, 7, 11, 14],
|
|
724
|
+
"Δ9": [0, 4, 7, 11, 14],
|
|
725
|
+
"∆9": [0, 4, 7, 11, 14],
|
|
726
|
+
"7M(9,11)": [0, 4, 7, 11, 14, 17],
|
|
727
|
+
"7M/9/11": [0, 4, 7, 11, 14, 17],
|
|
728
|
+
"maj11": [0, 4, 7, 11, 14, 17],
|
|
729
|
+
"maj7(9,11)": [0, 4, 7, 11, 14, 17],
|
|
730
|
+
"maj7/9/11": [0, 4, 7, 11, 14, 17],
|
|
731
|
+
"Δ11": [0, 4, 7, 11, 14, 17],
|
|
732
|
+
"∆11": [0, 4, 7, 11, 14, 17],
|
|
733
|
+
"7M(9,11,13)": [0, 4, 7, 11, 14, 17, 21],
|
|
734
|
+
"7M/9/11/13": [0, 4, 7, 11, 14, 17, 21],
|
|
735
|
+
"maj13": [0, 4, 7, 11, 14, 17, 21],
|
|
736
|
+
"maj7(9,11,13)": [0, 4, 7, 11, 14, 17, 21],
|
|
737
|
+
"maj7/9/11/13": [0, 4, 7, 11, 14, 17, 21],
|
|
738
|
+
"Δ11(13)": [0, 4, 7, 11, 14, 17, 21],
|
|
739
|
+
"Δ13": [0, 4, 7, 11, 14, 17, 21],
|
|
740
|
+
"∆11(13)": [0, 4, 7, 11, 14, 17, 21],
|
|
741
|
+
"7M(9,#11)": [0, 4, 7, 11, 14, 18],
|
|
742
|
+
"7M/9/#11": [0, 4, 7, 11, 14, 18],
|
|
743
|
+
"maj7(9,#11)": [0, 4, 7, 11, 14, 18],
|
|
744
|
+
"maj7/9/#11": [0, 4, 7, 11, 14, 18],
|
|
745
|
+
"maj9#11": [0, 4, 7, 11, 14, 18],
|
|
746
|
+
"maj9(#11)": [0, 4, 7, 11, 14, 18],
|
|
747
|
+
"maj9/#11": [0, 4, 7, 11, 14, 18],
|
|
748
|
+
"Δ9(#11)": [0, 4, 7, 11, 14, 18],
|
|
749
|
+
"7M(9,#11,13)": [0, 4, 7, 11, 14, 18, 21],
|
|
750
|
+
"7M/9/#11/13": [0, 4, 7, 11, 14, 18, 21],
|
|
751
|
+
"maj13#11": [0, 4, 7, 11, 14, 18, 21],
|
|
752
|
+
"maj13(#11)": [0, 4, 7, 11, 14, 18, 21],
|
|
753
|
+
"maj13/#11": [0, 4, 7, 11, 14, 18, 21],
|
|
754
|
+
"Δ13(#11)": [0, 4, 7, 11, 14, 18, 21],
|
|
755
|
+
"∆13(#11)": [0, 4, 7, 11, 14, 18, 21],
|
|
756
|
+
"7M(9,13)": [0, 4, 7, 11, 14, 21],
|
|
757
|
+
"7M/9/13": [0, 4, 7, 11, 14, 21],
|
|
758
|
+
"maj7(9,13)": [0, 4, 7, 11, 14, 21],
|
|
759
|
+
"maj7/9/13": [0, 4, 7, 11, 14, 21],
|
|
760
|
+
"maj9(13)": [0, 4, 7, 11, 14, 21],
|
|
761
|
+
"Δ9(13)": [0, 4, 7, 11, 14, 21],
|
|
762
|
+
"∆9(13)": [0, 4, 7, 11, 14, 21],
|
|
763
|
+
"7M(11)": [0, 4, 7, 11, 17],
|
|
764
|
+
"7M/11": [0, 4, 7, 11, 17],
|
|
765
|
+
"maj7(11)": [0, 4, 7, 11, 17],
|
|
766
|
+
"maj7/11": [0, 4, 7, 11, 17],
|
|
767
|
+
"Δ7(11)": [0, 4, 7, 11, 17],
|
|
768
|
+
"∆7(11)": [0, 4, 7, 11, 17],
|
|
769
|
+
"7M(#11)": [0, 4, 7, 11, 18],
|
|
770
|
+
"7M/#11": [0, 4, 7, 11, 18],
|
|
771
|
+
"maj7(#11)": [0, 4, 7, 11, 18],
|
|
772
|
+
"maj7/#11": [0, 4, 7, 11, 18],
|
|
773
|
+
"Δ7(#11)": [0, 4, 7, 11, 18],
|
|
774
|
+
"∆7(#11)": [0, 4, 7, 11, 18],
|
|
775
|
+
"7M(13)": [0, 4, 7, 11, 21],
|
|
776
|
+
"7M/13": [0, 4, 7, 11, 21],
|
|
777
|
+
"maj7(13)": [0, 4, 7, 11, 21],
|
|
778
|
+
"maj7/13": [0, 4, 7, 11, 21],
|
|
779
|
+
"Δ7(13)": [0, 4, 7, 11, 21],
|
|
780
|
+
"∆7(13)": [0, 4, 7, 11, 21],
|
|
781
|
+
"addb9": [0, 4, 7, 13],
|
|
782
|
+
"add9": [0, 4, 7, 14],
|
|
783
|
+
"add#9": [0, 4, 7, 15],
|
|
784
|
+
"add11": [0, 4, 7, 17],
|
|
785
|
+
"add#11": [0, 4, 7, 18],
|
|
786
|
+
|
|
787
|
+
// augmented chords
|
|
788
|
+
"+": [0, 4, 8],
|
|
789
|
+
"aug": [0, 4, 8],
|
|
790
|
+
"+7": [0, 4, 8, 10],
|
|
791
|
+
"7#5": [0, 4, 8, 10],
|
|
792
|
+
"7(#5)": [0, 4, 8, 10],
|
|
793
|
+
"7+5": [0, 4, 8, 10],
|
|
794
|
+
"aug7": [0, 4, 8, 10],
|
|
795
|
+
"7(b9,#5)": [0, 4, 8, 10, 13],
|
|
796
|
+
"7b9#5": [0, 4, 8, 10, 13],
|
|
797
|
+
"9#5": [0, 4, 8, 10, 14],
|
|
798
|
+
"9(#5)": [0, 4, 8, 10, 14],
|
|
799
|
+
"9+5": [0, 4, 8, 10, 14],
|
|
800
|
+
"13#5": [0, 4, 8, 10, 14, 21],
|
|
801
|
+
"13(#5)": [0, 4, 8, 10, 14, 21],
|
|
802
|
+
"7M(#5)": [0, 4, 8, 11],
|
|
803
|
+
"maj7#5": [0, 4, 8, 11],
|
|
804
|
+
"maj7(#5)": [0, 4, 8, 11],
|
|
805
|
+
"7M(#5,9)": [0, 4, 8, 11, 14],
|
|
806
|
+
"maj7#5/9": [0, 4, 8, 11, 14],
|
|
807
|
+
"maj7(#5,9)": [0, 4, 8, 11, 14],
|
|
808
|
+
"maj7#5#11": [0, 4, 8, 11, 18],
|
|
809
|
+
"maj7(#5,#11)": [0, 4, 8, 11, 18],
|
|
810
|
+
|
|
811
|
+
// sus4 chords
|
|
812
|
+
"sus": [0, 5, 7],
|
|
813
|
+
"sus4": [0, 5, 7],
|
|
814
|
+
"-7sus4": [0, 5, 7, 10],
|
|
815
|
+
"7sus": [0, 5, 7, 10],
|
|
816
|
+
"7sus4": [0, 5, 7, 10],
|
|
817
|
+
"m7sus4": [0, 5, 7, 10],
|
|
818
|
+
"min7sus4": [0, 5, 7, 10],
|
|
819
|
+
"7sus(b9)": [0, 5, 7, 10, 13],
|
|
820
|
+
"7sus4(b9)": [0, 5, 7, 10, 13],
|
|
821
|
+
"-9sus4": [0, 5, 7, 10, 14],
|
|
822
|
+
"7sus4(9)": [0, 5, 7, 10, 14],
|
|
823
|
+
"7sus4/9": [0, 5, 7, 10, 14],
|
|
824
|
+
"9sus": [0, 5, 7, 10, 14],
|
|
825
|
+
"9sus4": [0, 5, 7, 10, 14],
|
|
826
|
+
"m9sus4": [0, 5, 7, 10, 14],
|
|
827
|
+
"min9sus4": [0, 5, 7, 10, 14],
|
|
828
|
+
"11sus4": [0, 5, 7, 10, 14, 17],
|
|
829
|
+
"13sus4": [0, 5, 7, 10, 14, 21],
|
|
830
|
+
"7sus(#9)": [0, 5, 7, 10, 15],
|
|
831
|
+
"7sus4(#9)": [0, 5, 7, 10, 15],
|
|
832
|
+
"7sus4(11)": [0, 5, 7, 10, 17],
|
|
833
|
+
"7sus4(13)": [0, 5, 7, 10, 21],
|
|
834
|
+
"7Msus": [0, 5, 7, 11],
|
|
835
|
+
"7Msus4": [0, 5, 7, 11],
|
|
836
|
+
"maj7sus": [0, 5, 7, 11],
|
|
837
|
+
"maj7sus4": [0, 5, 7, 11],
|
|
838
|
+
|
|
839
|
+
// power chords and unusual chords
|
|
840
|
+
"#4": [0, 6],
|
|
841
|
+
"b5": [0, 6],
|
|
842
|
+
"sus#4": [0, 6, 7],
|
|
843
|
+
"7Msus#4": [0, 6, 11],
|
|
844
|
+
"maj7sus#4": [0, 6, 11],
|
|
845
|
+
"5": [0, 7],
|
|
846
|
+
"11": [0, 7, 10, 14, 17],
|
|
847
|
+
"5(8)": [0, 7, 12],
|
|
848
|
+
"5add8": [0, 7, 12],
|
|
849
|
+
"5(9)": [0, 7, 14],
|
|
850
|
+
"5add9": [0, 7, 14],
|
|
851
|
+
"#5": [0, 8],
|
|
852
|
+
"b6": [0, 8],
|
|
853
|
+
}
|
|
605
854
|
|
|
606
855
|
ChordTrack.prototype.rhythmPatterns = {
|
|
607
856
|
"2/2": ['boom', '', '', '', 'chick', '', '', ''],
|
|
@@ -317,8 +317,14 @@ function CreateSynth() {
|
|
|
317
317
|
|
|
318
318
|
var noteMapTracks = createNoteMap(self.flattened);
|
|
319
319
|
|
|
320
|
-
if (self.options.swing)
|
|
321
|
-
|
|
320
|
+
if (self.options.swing) {
|
|
321
|
+
// If we have a drum intro, then the pickup is already incorporated into the beat.
|
|
322
|
+
// That is, without a drum intro, the first note starts at 0 whether it
|
|
323
|
+
// is a pickup or not. With a drum intro, the first note will be in its
|
|
324
|
+
// proper place.
|
|
325
|
+
var pickupLength = self.options.drumIntro ? 0 : self.pickupLength
|
|
326
|
+
addSwing(noteMapTracks, self.options.swing, self.meterFraction, pickupLength)
|
|
327
|
+
}
|
|
322
328
|
|
|
323
329
|
if (self.sequenceCallback)
|
|
324
330
|
self.sequenceCallback(noteMapTracks, self.callbackContext);
|
|
@@ -564,7 +570,7 @@ function CreateSynth() {
|
|
|
564
570
|
function addSwing(noteMapTracks, swing, meterFraction, pickupLength) {
|
|
565
571
|
|
|
566
572
|
// we can only swing in X/4 and X/8 meters.
|
|
567
|
-
if (meterFraction.den
|
|
573
|
+
if (meterFraction.den !== 4 && meterFraction.den !== 8)
|
|
568
574
|
return;
|
|
569
575
|
|
|
570
576
|
swing = parseFloat(swing);
|
|
@@ -586,7 +592,7 @@ function CreateSynth() {
|
|
|
586
592
|
// could be also in the settings. Try out values such 0.1, 0.2
|
|
587
593
|
var volumeIncrease = 0.0;
|
|
588
594
|
|
|
589
|
-
// the beatLength in X/
|
|
595
|
+
// the beatLength in X/4 meters
|
|
590
596
|
var beatLength = 0.25;
|
|
591
597
|
|
|
592
598
|
// in X/8 meters the 16s swing so the beatLength is halved
|
|
@@ -605,15 +611,15 @@ function CreateSynth() {
|
|
|
605
611
|
var event = track[i];
|
|
606
612
|
if (
|
|
607
613
|
// is halfbeat
|
|
608
|
-
(event.start-pickupLength) % halfbeatLength
|
|
614
|
+
(event.start-pickupLength) % halfbeatLength === 0 && (event.start-pickupLength) % beatLength !== 0
|
|
609
615
|
&& (
|
|
610
616
|
// the previous note is on the beat or before OR there is no previous note
|
|
611
|
-
i
|
|
617
|
+
i === 0
|
|
612
618
|
|| track[i-1].start <= track[i].start - halfbeatLength
|
|
613
619
|
)
|
|
614
620
|
&& (
|
|
615
621
|
// the next note is on the beat or after OR there is no next note
|
|
616
|
-
i
|
|
622
|
+
i === track.length - 1
|
|
617
623
|
|| track[i+1].start >= track[i].start + halfbeatLength
|
|
618
624
|
)
|
|
619
625
|
) {
|
|
@@ -626,7 +632,7 @@ function CreateSynth() {
|
|
|
626
632
|
|
|
627
633
|
// if there is a previous note ending at the start of this note, extend its end
|
|
628
634
|
// and decrease its volume
|
|
629
|
-
if (i > 0 && track[i-1].end
|
|
635
|
+
if (i > 0 && track[i-1].end === oldEventStart) {
|
|
630
636
|
track[i-1].end = event.start;
|
|
631
637
|
track[i-1].volume *= 1 - volumeIncrease;
|
|
632
638
|
}
|
package/src/synth/repeats.js
CHANGED
|
@@ -15,10 +15,10 @@ function Repeats(voice) {
|
|
|
15
15
|
this.sections.push({type: "startRepeat", index: this.sections[this.sections.length-1].index})
|
|
16
16
|
this.sections.push({type: "endRepeat", index: thisIndex})
|
|
17
17
|
}
|
|
18
|
-
if (isStartRepeat)
|
|
19
|
-
this.sections.push({type:"startRepeat", index: thisIndex})
|
|
20
18
|
if (startEnding)
|
|
21
19
|
this.sections.push({type:"startEnding", index: thisIndex, endings: startEnding})
|
|
20
|
+
if (isStartRepeat)
|
|
21
|
+
this.sections.push({type:"startRepeat", index: thisIndex})
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
this.resolveRepeats = function() {
|
|
@@ -718,8 +718,9 @@ AbstractEngraver.prototype.addNoteToAbcElement = function (abselem, elem, dot, s
|
|
|
718
718
|
}
|
|
719
719
|
|
|
720
720
|
var hasStem = !nostem && durlog <= -1;
|
|
721
|
+
var chordPos = pp > 1 ? p+1 : null
|
|
721
722
|
var ret = createNoteHead(abselem, c, elem.pitches[p],
|
|
722
|
-
{ dir: dir, extrax: -roomTaken, flag: flag, dot: dot, dotshiftx: dotshiftx, scale: this.voiceScale, accidentalSlot: accidentalSlot, shouldExtendStem: !stemdir, printAccidentals: !voice.isPercussion });
|
|
723
|
+
{ dir: dir, extrax: -roomTaken, flag: flag, dot: dot, dotshiftx: dotshiftx, scale: this.voiceScale, accidentalSlot: accidentalSlot, shouldExtendStem: !stemdir, printAccidentals: !voice.isPercussion, chordPos: chordPos });
|
|
723
724
|
symbolWidth = Math.max(glyphs.getSymbolWidth(c), symbolWidth);
|
|
724
725
|
abselem.extraw -= ret.extraLeft;
|
|
725
726
|
noteHead = ret.notehead;
|
|
@@ -765,7 +766,7 @@ AbstractEngraver.prototype.addNoteToAbcElement = function (abselem, elem, dot, s
|
|
|
765
766
|
return { noteHead: noteHead, roomTaken: roomTaken, roomTakenRight: roomTakenRight, min: min, additionalLedgers: additionalLedgers, dir: dir, symbolWidth: symbolWidth };
|
|
766
767
|
};
|
|
767
768
|
|
|
768
|
-
AbstractEngraver.prototype.addLyric = function (abselem, elem) {
|
|
769
|
+
AbstractEngraver.prototype.addLyric = function (abselem, elem, voiceNumber) {
|
|
769
770
|
var lyricStr = "";
|
|
770
771
|
elem.lyric.forEach(function (ly) {
|
|
771
772
|
var div = ly.divider === ' ' ? "" : ly.divider;
|
|
@@ -773,7 +774,7 @@ AbstractEngraver.prototype.addLyric = function (abselem, elem) {
|
|
|
773
774
|
});
|
|
774
775
|
var lyricDim = this.getTextSize.calc(lyricStr, 'vocalfont', "lyric");
|
|
775
776
|
var position = elem.positioning ? elem.positioning.vocalPosition : 'below';
|
|
776
|
-
abselem.addCentered(new RelativeElement(lyricStr, 0, lyricDim.width, undefined, { type: "lyric", position: position, height: lyricDim.height / spacing.STEP, dim: this.getTextSize.attr('vocalfont', "lyric") }));
|
|
777
|
+
abselem.addCentered(new RelativeElement(lyricStr, 0, lyricDim.width, undefined, { type: "lyric", position: position, height: lyricDim.height / spacing.STEP, dim: this.getTextSize.attr('vocalfont', "lyric"), voiceNumber: voiceNumber }));
|
|
777
778
|
};
|
|
778
779
|
|
|
779
780
|
AbstractEngraver.prototype.createNote = function (elem, nostem, isSingleLineStaff, voice) { //stem presence: true for drawing stemless notehead
|
|
@@ -827,7 +828,7 @@ AbstractEngraver.prototype.createNote = function (elem, nostem, isSingleLineStaf
|
|
|
827
828
|
}
|
|
828
829
|
|
|
829
830
|
if (elem.lyric !== undefined) {
|
|
830
|
-
this.addLyric(abselem, elem);
|
|
831
|
+
this.addLyric(abselem, elem, voice.voicenumber);
|
|
831
832
|
}
|
|
832
833
|
|
|
833
834
|
if (elem.gracenotes !== undefined) {
|