@musodojo/music-theory-data 20.0.0 → 20.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -93,7 +93,9 @@ export function getNoteNamesFromRootAndIntervals(
93
93
  rootNote: RootNote,
94
94
  intervals: readonly Interval[],
95
95
  options: TransformIntervalsOptions = {},
96
- ): NoteName[];
96
+ ): NoteName[] {
97
+ //...
98
+ }
97
99
  ```
98
100
 
99
101
  ## Installation
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@musodojo/music-theory-data",
3
- "version": "20.0.0",
3
+ "version": "20.1.0",
4
4
  "description": "The musician-friendly TypeScript library for modes, scales, chords, and more.",
5
5
  "keywords": [
6
6
  "music",
@@ -482,7 +482,6 @@ export const intervalQualityToIntegerMap: ReadonlyMap<
482
482
  ][],
483
483
  );
484
484
 
485
- //TODO: add beyond an octave
486
485
  const _intervalToIntervalQualityMap = {
487
486
  "𝄫1": "dd1",
488
487
  "♭1": "d1",
@@ -491,14 +490,14 @@ const _intervalToIntervalQualityMap = {
491
490
  "♯1": "A1",
492
491
  "𝄪1": "AA1",
493
492
 
494
- "𝄫2": "dd2",
493
+ "𝄫2": "d2",
495
494
  "♭2": "m2",
496
495
  "2": "M2",
497
496
  "♮2": "M2",
498
497
  "♯2": "A2",
499
498
  "𝄪2": "AA2",
500
499
 
501
- "𝄫3": "dd3",
500
+ "𝄫3": "d3",
502
501
  "♭3": "m3",
503
502
  "3": "M3",
504
503
  "♮3": "M3",
@@ -519,19 +518,75 @@ const _intervalToIntervalQualityMap = {
519
518
  "♯5": "A5",
520
519
  "𝄪5": "AA5",
521
520
 
522
- "𝄫6": "dd6",
521
+ "𝄫6": "d6",
523
522
  "♭6": "m6",
524
523
  "6": "M6",
525
524
  "♮6": "M6",
526
525
  "♯6": "A6",
527
526
  "𝄪6": "AA6",
528
527
 
529
- "𝄫7": "dd7",
528
+ "𝄫7": "d7",
530
529
  "♭7": "m7",
531
530
  "7": "M7",
532
531
  "♮7": "M7",
533
532
  "♯7": "A7",
534
533
  "𝄪7": "AA7",
534
+
535
+ "𝄫8": "dd8",
536
+ "♭8": "d8",
537
+ "8": "P8",
538
+ "♮8": "P8",
539
+ "♯8": "A8",
540
+ "𝄪8": "AA8",
541
+
542
+ "𝄫9": "d9",
543
+ "♭9": "m9",
544
+ "9": "M9",
545
+ "♮9": "M9",
546
+ "♯9": "A9",
547
+ "𝄪9": "AA9",
548
+
549
+ "𝄫10": "d10",
550
+ "♭10": "m10",
551
+ "10": "M10",
552
+ "♮10": "M10",
553
+ "♯10": "A10",
554
+ "𝄪10": "AA10",
555
+
556
+ "𝄫11": "dd11",
557
+ "♭11": "d11",
558
+ "11": "P11",
559
+ "♮11": "P11",
560
+ "♯11": "A11",
561
+ "𝄪11": "AA11",
562
+
563
+ "𝄫12": "dd12",
564
+ "♭12": "d12",
565
+ "12": "P12",
566
+ "♮12": "P12",
567
+ "♯12": "A12",
568
+ "𝄪12": "AA12",
569
+
570
+ "𝄫13": "d13",
571
+ "♭13": "m13",
572
+ "13": "M13",
573
+ "♮13": "M13",
574
+ "♯13": "A13",
575
+ "𝄪13": "AA13",
576
+
577
+ "𝄫14": "d14",
578
+ "♭14": "m14",
579
+ "14": "M14",
580
+ "♮14": "M14",
581
+ "♯14": "A14",
582
+ "𝄪14": "AA14",
583
+
584
+ "𝄫15": "dd15",
585
+ "♭15": "d15",
586
+ "15": "P15",
587
+ "♮15": "P15",
588
+ "♯15": "A15",
589
+ "𝄪15": "AA15",
535
590
  } as const;
536
591
 
537
592
  export const intervalToIntervalQualityMap: ReadonlyMap<
@@ -544,7 +599,6 @@ export const intervalToIntervalQualityMap: ReadonlyMap<
544
599
  ][],
545
600
  );
546
601
 
547
- //TODO: add beyond an octave
548
602
  const _intervalQualityToIntervalMap = {
549
603
  "dd1": "𝄫1",
550
604
  "d1": "♭1",
@@ -552,15 +606,13 @@ const _intervalQualityToIntervalMap = {
552
606
  "A1": "♯1",
553
607
  "AA1": "𝄪1",
554
608
 
555
- "dd2": "𝄫2",
556
- "d2": "♭2",
609
+ "d2": "𝄫2",
557
610
  "m2": "♭2",
558
611
  "M2": "2",
559
612
  "A2": "♯2",
560
613
  "AA2": "𝄪2",
561
614
 
562
- "dd3": "𝄫3",
563
- "d3": "♭3",
615
+ "d3": "𝄫3",
564
616
  "m3": "♭3",
565
617
  "M3": "3",
566
618
  "A3": "♯3",
@@ -578,19 +630,65 @@ const _intervalQualityToIntervalMap = {
578
630
  "A5": "♯5",
579
631
  "AA5": "𝄪5",
580
632
 
581
- "dd6": "𝄫6",
582
- "d6": "♭6",
633
+ "d6": "𝄫6",
583
634
  "m6": "♭6",
584
635
  "M6": "6",
585
636
  "A6": "♯6",
586
637
  "AA6": "𝄪6",
587
638
 
588
- "dd7": "𝄫7",
589
- "d7": "♭7",
639
+ "d7": "𝄫7",
590
640
  "m7": "♭7",
591
641
  "M7": "7",
592
642
  "A7": "♯7",
593
643
  "AA7": "𝄪7",
644
+
645
+ "dd8": "𝄫8",
646
+ "d8": "♭8",
647
+ "P8": "8",
648
+ "A8": "♯8",
649
+ "AA8": "𝄪8",
650
+
651
+ "d9": "𝄫9",
652
+ "m9": "♭9",
653
+ "M9": "9",
654
+ "A9": "♯9",
655
+ "AA9": "𝄪9",
656
+
657
+ "d10": "𝄫10",
658
+ "m10": "♭10",
659
+ "M10": "10",
660
+ "A10": "♯10",
661
+ "AA10": "𝄪10",
662
+
663
+ "dd11": "𝄫11",
664
+ "d11": "♭11",
665
+ "P11": "11",
666
+ "A11": "♯11",
667
+ "AA11": "𝄪11",
668
+
669
+ "dd12": "𝄫12",
670
+ "d12": "♭12",
671
+ "P12": "12",
672
+ "A12": "♯12",
673
+ "AA12": "𝄪12",
674
+
675
+ "d13": "𝄫13",
676
+ "m13": "♭13",
677
+ "M13": "13",
678
+ "A13": "♯13",
679
+ "AA13": "𝄪13",
680
+
681
+ "d14": "𝄫14",
682
+ "m14": "♭14",
683
+ "M14": "14",
684
+ "A14": "♯14",
685
+ "AA14": "𝄪14",
686
+
687
+ "dd15": "𝄫15",
688
+ "d15": "♭15",
689
+ "P15": "15",
690
+ "A15": "♯15",
691
+ "AA15": "𝄪15",
594
692
  } as const;
595
693
 
596
694
  export const intervalQualityToIntervalMap: ReadonlyMap<
@@ -8,13 +8,13 @@ export type MidiNoteSequenceDirection =
8
8
  | "ascending-descending"
9
9
  | "descending-ascending";
10
10
 
11
- // TODO: add property `restsAtEnd` to add null values to array end
12
11
  export interface MidiNoteSequenceOptions {
13
12
  rootNoteMidi: MidiNoteNumber;
14
13
  intervals: Interval[];
15
14
  direction: MidiNoteSequenceDirection;
16
15
  startFromIndex?: number;
17
16
  filterOutOctave?: boolean;
17
+ restsAtEnd?: number;
18
18
  numNotes?: number;
19
19
  numOctaves?: number;
20
20
  extraNotes?: number;
@@ -109,6 +109,7 @@ export function getMidiNoteSequence(
109
109
  filterOutOctave = true,
110
110
  numNotes,
111
111
  numOctaves = 1,
112
+ restsAtEnd = 0,
112
113
  extraNotes = 0,
113
114
  } = options;
114
115
 
@@ -164,5 +165,7 @@ export function getMidiNoteSequence(
164
165
  }
165
166
  }
166
167
 
168
+ if (restsAtEnd > 0) sequence.push(...Array(restsAtEnd).fill(null));
169
+
167
170
  return sequence;
168
171
  }