@musodojo/music-theory-data 15.4.0 → 16.0.6

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@musodojo/music-theory-data",
3
- "version": "15.4.0",
3
+ "version": "16.0.6",
4
4
  "description": "The musician-friendly TypeScript library for modes, scales, chords, and more.",
5
5
  "keywords": [
6
6
  "music",
@@ -12,7 +12,7 @@
12
12
  "main": "src/mod.ts",
13
13
  "repository": {
14
14
  "type": "git",
15
- "url": "https://github.com/conor-dowdall/music-theory-data.git"
15
+ "url": "git+https://github.com/conor-dowdall/music-theory-data.git"
16
16
  },
17
17
  "bugs": {
18
18
  "url": "https://github.com/conor-dowdall/music-theory-data/issues"
@@ -366,76 +366,106 @@ export const compoundToSimpleIntervalMap: ReadonlyMap<
366
366
  ][],
367
367
  );
368
368
 
369
- export type IntervalQualityType = "d" | "m" | "P" | "M" | "A";
369
+ export type IntervalQualityType = "dd" | "d" | "m" | "P" | "M" | "A" | "AA";
370
370
 
371
371
  const _intervalQualityToIntegerMap = {
372
+ "dd1": -2,
372
373
  "d1": -1,
373
374
  "P1": 0,
374
375
  "A1": 1,
376
+ "AA1": 2,
375
377
 
378
+ "dd2": -1,
376
379
  "d2": 0,
377
380
  "m2": 1,
378
381
  "M2": 2,
379
382
  "A2": 3,
383
+ "AA2": 4,
380
384
 
385
+ "dd3": 1,
381
386
  "d3": 2,
382
387
  "m3": 3,
383
388
  "M3": 4,
384
389
  "A3": 5,
390
+ "AA3": 6,
385
391
 
392
+ "dd4": 3,
386
393
  "d4": 4,
387
394
  "P4": 5,
388
395
  "A4": 6,
396
+ "AA4": 7,
389
397
 
398
+ "dd5": 5,
390
399
  "d5": 6,
391
400
  "P5": 7,
392
401
  "A5": 8,
402
+ "AA5": 9,
393
403
 
404
+ "dd6": 6,
394
405
  "d6": 7,
395
406
  "m6": 8,
396
407
  "M6": 9,
397
408
  "A6": 10,
409
+ "AA6": 11,
398
410
 
411
+ "dd7": 8,
399
412
  "d7": 9,
400
413
  "m7": 10,
401
414
  "M7": 11,
402
415
  "A7": 12,
416
+ "AA7": 13,
403
417
 
418
+ "dd8": 10,
404
419
  "d8": 11,
405
420
  "P8": 12,
406
421
  "A8": 13,
422
+ "AA8": 14,
407
423
 
424
+ "dd9": 11,
408
425
  "d9": 12,
409
426
  "m9": 13,
410
427
  "M9": 14,
411
428
  "A9": 15,
429
+ "AA9": 16,
412
430
 
431
+ "dd10": 13,
413
432
  "d10": 14,
414
433
  "m10": 15,
415
434
  "M10": 16,
416
435
  "A10": 17,
436
+ "AA10": 18,
417
437
 
438
+ "dd11": 15,
418
439
  "d11": 16,
419
440
  "P11": 17,
420
441
  "A11": 19,
442
+ "AA11": 20,
421
443
 
444
+ "dd12": 17,
422
445
  "d12": 18,
423
446
  "P12": 19,
424
447
  "A12": 20,
448
+ "AA12": 21,
425
449
 
450
+ "dd13": 18,
426
451
  "d13": 19,
427
452
  "m13": 20,
428
453
  "M13": 21,
429
454
  "A13": 22,
455
+ "AA13": 23,
430
456
 
457
+ "dd14": 20,
431
458
  "d14": 21,
432
459
  "m14": 22,
433
460
  "M14": 23,
434
461
  "A14": 24,
462
+ "AA14": 25,
435
463
 
464
+ "dd15": 22,
436
465
  "d15": 23,
437
466
  "P15": 24,
438
467
  "A15": 25,
468
+ "AA15": 26,
439
469
  } as const;
440
470
 
441
471
  export type IntervalQuality = keyof typeof _intervalQualityToIntegerMap;
@@ -449,3 +479,124 @@ export const intervalQualityToIntegerMap: ReadonlyMap<
449
479
  number,
450
480
  ][],
451
481
  );
482
+
483
+ //TODO: add beyond an octave
484
+ const _intervalToIntervalQualityMap = {
485
+ "𝄫1": "dd1",
486
+ "♭1": "d1",
487
+ "1": "P1",
488
+ "♮1": "P1",
489
+ "♯1": "A1",
490
+ "𝄪1": "AA1",
491
+
492
+ "𝄫2": "dd2",
493
+ "♭2": "m2",
494
+ "2": "M2",
495
+ "♮2": "M2",
496
+ "♯2": "A2",
497
+ "𝄪2": "AA2",
498
+
499
+ "𝄫3": "dd3",
500
+ "♭3": "m3",
501
+ "3": "M3",
502
+ "♮3": "M3",
503
+ "♯3": "A3",
504
+ "𝄪3": "AA3",
505
+
506
+ "𝄫4": "dd4",
507
+ "♭4": "d4",
508
+ "4": "P4",
509
+ "♮4": "P4",
510
+ "♯4": "A4",
511
+ "𝄪4": "AA4",
512
+
513
+ "𝄫5": "dd5",
514
+ "♭5": "d5",
515
+ "5": "P5",
516
+ "♮5": "P5",
517
+ "♯5": "A5",
518
+ "𝄪5": "AA5",
519
+
520
+ "𝄫6": "dd6",
521
+ "♭6": "m6",
522
+ "6": "M6",
523
+ "♮6": "M6",
524
+ "♯6": "A6",
525
+ "𝄪6": "AA6",
526
+
527
+ "𝄫7": "dd7",
528
+ "♭7": "m7",
529
+ "7": "M7",
530
+ "♮7": "M7",
531
+ "♯7": "A7",
532
+ "𝄪7": "AA7",
533
+ } as const;
534
+
535
+ export const intervalToIntervalQualityMap: ReadonlyMap<
536
+ Interval,
537
+ IntervalQuality
538
+ > = new Map(
539
+ Object.entries(_intervalToIntervalQualityMap) as [
540
+ Interval,
541
+ IntervalQuality,
542
+ ][],
543
+ );
544
+
545
+ //TODO: add beyond an octave
546
+ const _intervalQualityToIntervalMap = {
547
+ "dd1": "𝄫1",
548
+ "d1": "♭1",
549
+ "P1": "1",
550
+ "A1": "♯1",
551
+ "AA1": "𝄪1",
552
+
553
+ "dd2": "𝄫2",
554
+ "d2": "♭2",
555
+ "m2": "♭2",
556
+ "M2": "2",
557
+ "A2": "♯2",
558
+ "AA2": "𝄪2",
559
+
560
+ "dd3": "𝄫3",
561
+ "d3": "♭3",
562
+ "m3": "♭3",
563
+ "M3": "3",
564
+ "A3": "♯3",
565
+ "AA3": "𝄪3",
566
+
567
+ "dd4": "𝄫4",
568
+ "d4": "♭4",
569
+ "P4": "4",
570
+ "A4": "♯4",
571
+ "AA4": "𝄪4",
572
+
573
+ "dd5": "𝄫5",
574
+ "d5": "♭5",
575
+ "P5": "5",
576
+ "A5": "♯5",
577
+ "AA5": "𝄪5",
578
+
579
+ "dd6": "𝄫6",
580
+ "d6": "♭6",
581
+ "m6": "♭6",
582
+ "M6": "6",
583
+ "A6": "♯6",
584
+ "AA6": "𝄪6",
585
+
586
+ "dd7": "𝄫7",
587
+ "d7": "♭7",
588
+ "m7": "♭7",
589
+ "M7": "7",
590
+ "A7": "♯7",
591
+ "AA7": "𝄪7",
592
+ } as const;
593
+
594
+ export const intervalQualityToIntervalMap: ReadonlyMap<
595
+ IntervalQuality,
596
+ Interval
597
+ > = new Map(
598
+ Object.entries(_intervalQualityToIntervalMap) as [
599
+ IntervalQuality,
600
+ Interval,
601
+ ][],
602
+ );
@@ -1,6 +1,7 @@
1
- import type { NoteCollection } from "../../types/note-collections.d.ts";
1
+ import type { ChordCollection } from "../../types/note-collections.d.ts";
2
2
 
3
- const augmentedTriad: NoteCollection = {
3
+ const augmentedTriad: ChordCollection = {
4
+ category: "chord",
4
5
  primaryName: "aug",
5
6
  names: ["aug", "+", "Augmented Triad"],
6
7
  intervals: ["1", "3", "♯5"],
@@ -11,7 +12,20 @@ const augmentedTriad: NoteCollection = {
11
12
  patternShort: ["M3", "M3"],
12
13
  } as const;
13
14
 
14
- const italian6: NoteCollection = {
15
+ const augmented7: ChordCollection = {
16
+ category: "chord",
17
+ primaryName: "aug7",
18
+ names: ["aug7", "+7", "7♯5", "Augmented Seventh"],
19
+ intervals: ["1", "3", "♯5", "♭7"],
20
+ integers: [0, 4, 8, 10],
21
+ type: ["augmented", "dominant", "chord", "arpeggio", "tetrad"],
22
+ characteristics: ["tense", "unstable", "dissonant", "dominant function"],
23
+ pattern: ["major third", "major third", "minor second"],
24
+ patternShort: ["M3", "M3", "m2"],
25
+ } as const;
26
+
27
+ const italian6: ChordCollection = {
28
+ category: "chord",
15
29
  primaryName: "It+6",
16
30
  names: ["It+6", "Italian 6th"],
17
31
  intervals: ["1", "3", "♭6"],
@@ -26,7 +40,8 @@ const italian6: NoteCollection = {
26
40
  patternShort: ["M3", "d4"],
27
41
  } as const;
28
42
 
29
- const french6: NoteCollection = {
43
+ const french6: ChordCollection = {
44
+ category: "chord",
30
45
  primaryName: "Fr+6",
31
46
  names: ["Fr+6", "French 6th"],
32
47
  intervals: ["1", "3", "♯4", "♭6"],
@@ -42,7 +57,8 @@ const french6: NoteCollection = {
42
57
  patternShort: ["M3", "m2", "M2"],
43
58
  } as const;
44
59
 
45
- const german6: NoteCollection = {
60
+ const german6: ChordCollection = {
61
+ category: "chord",
46
62
  primaryName: "Ger+6",
47
63
  names: ["Ger+6", "German 6th"],
48
64
  intervals: ["1", "3", "5", "♭6"],
@@ -58,25 +74,15 @@ const german6: NoteCollection = {
58
74
  patternShort: ["M3", "m3", "A1"],
59
75
  } as const;
60
76
 
61
- const augmented7: NoteCollection = {
62
- primaryName: "aug7",
63
- names: ["aug7", "+7", "7♯5", "Augmented Seventh"],
64
- intervals: ["1", "3", "♯5", "♭7"],
65
- integers: [0, 4, 8, 10],
66
- type: ["augmented", "dominant", "chord", "arpeggio", "tetrad"],
67
- characteristics: ["tense", "unstable", "dissonant", "dominant function"],
68
- pattern: ["major third", "major third", "minor second"],
69
- patternShort: ["M3", "M3", "m2"],
70
- } as const;
71
-
72
- export const _augmented = {
77
+ export const _augmentedVariants = {
73
78
  augmentedTriad,
79
+ augmented7,
74
80
  italian6,
75
81
  french6,
76
82
  german6,
77
- augmented7,
78
83
  } as const;
79
84
 
80
- export type AugmentedKey = keyof typeof _augmented;
85
+ export type AugmentedVariantKey = keyof typeof _augmentedVariants;
81
86
 
82
- export const augmented: Record<AugmentedKey, NoteCollection> = _augmented;
87
+ export const augmentedVariants: Record<AugmentedVariantKey, ChordCollection> =
88
+ _augmentedVariants;
@@ -1,6 +1,8 @@
1
- import type { NoteCollection } from "../../types/note-collections.d.ts";
1
+ import type { ScaleCollection } from "../../types/note-collections.d.ts";
2
2
 
3
- const ionian: NoteCollection = {
3
+ const ionian: ScaleCollection = {
4
+ category: "scale",
5
+ rotation: 0,
4
6
  primaryName: "Major",
5
7
  names: [
6
8
  "Major",
@@ -11,7 +13,6 @@ const ionian: NoteCollection = {
11
13
  ],
12
14
  intervals: ["1", "2", "3", "4", "5", "6", "7", "8"],
13
15
  integers: [0, 2, 4, 5, 7, 9, 11],
14
- rotation: 0,
15
16
  type: [
16
17
  "major",
17
18
  "ionian",
@@ -40,7 +41,9 @@ const ionian: NoteCollection = {
40
41
  patternShort: ["W", "W", "H", "W", "W", "W", "H"],
41
42
  } as const;
42
43
 
43
- const dorian: NoteCollection = {
44
+ const dorian: ScaleCollection = {
45
+ category: "scale",
46
+ rotation: 1,
44
47
  primaryName: "Dorian",
45
48
  names: [
46
49
  "Dorian",
@@ -49,7 +52,6 @@ const dorian: NoteCollection = {
49
52
  ],
50
53
  intervals: ["1", "2", "♭3", "4", "5", "6", "♭7", "8"],
51
54
  integers: [0, 2, 3, 5, 7, 9, 10],
52
- rotation: 1,
53
55
  type: [
54
56
  "minor",
55
57
  "dorian",
@@ -78,7 +80,9 @@ const dorian: NoteCollection = {
78
80
  patternShort: ["W", "H", "W", "W", "W", "H", "W"],
79
81
  } as const;
80
82
 
81
- const phrygian: NoteCollection = {
83
+ const phrygian: ScaleCollection = {
84
+ category: "scale",
85
+ rotation: 2,
82
86
  primaryName: "Phrygian",
83
87
  names: [
84
88
  "Phrygian",
@@ -87,7 +91,6 @@ const phrygian: NoteCollection = {
87
91
  ],
88
92
  intervals: ["1", "♭2", "♭3", "4", "5", "♭6", "♭7", "8"],
89
93
  integers: [0, 1, 3, 5, 7, 8, 10],
90
- rotation: 2,
91
94
  type: [
92
95
  "minor",
93
96
  "phrygian",
@@ -114,12 +117,13 @@ const phrygian: NoteCollection = {
114
117
  patternShort: ["H", "W", "W", "W", "H", "W", "W"],
115
118
  } as const;
116
119
 
117
- const lydian: NoteCollection = {
120
+ const lydian: ScaleCollection = {
121
+ category: "scale",
122
+ rotation: 3,
118
123
  primaryName: "Lydian",
119
124
  names: ["Lydian", "Major ♯4", "Lydian Mode"],
120
125
  intervals: ["1", "2", "3", "♯4", "5", "6", "7", "8"],
121
126
  integers: [0, 2, 4, 6, 7, 9, 11],
122
- rotation: 3,
123
127
  type: [
124
128
  "major",
125
129
  "lydian",
@@ -144,7 +148,9 @@ const lydian: NoteCollection = {
144
148
  patternShort: ["W", "W", "W", "H", "W", "W", "H"],
145
149
  } as const;
146
150
 
147
- const mixolydian: NoteCollection = {
151
+ const mixolydian: ScaleCollection = {
152
+ category: "scale",
153
+ rotation: 4,
148
154
  primaryName: "Mixolydian",
149
155
  names: [
150
156
  "Mixolydian",
@@ -154,7 +160,6 @@ const mixolydian: NoteCollection = {
154
160
  ],
155
161
  intervals: ["1", "2", "3", "4", "5", "6", "♭7", "8"],
156
162
  integers: [0, 2, 4, 5, 7, 9, 10],
157
- rotation: 4,
158
163
  type: [
159
164
  "major",
160
165
  "dominant",
@@ -180,7 +185,9 @@ const mixolydian: NoteCollection = {
180
185
  patternShort: ["W", "W", "H", "W", "W", "H", "W"],
181
186
  } as const;
182
187
 
183
- const aeolian: NoteCollection = {
188
+ const aeolian: ScaleCollection = {
189
+ category: "scale",
190
+ rotation: 5,
184
191
  primaryName: "Minor",
185
192
  names: [
186
193
  "Minor",
@@ -191,7 +198,6 @@ const aeolian: NoteCollection = {
191
198
  ],
192
199
  intervals: ["1", "2", "♭3", "4", "5", "♭6", "♭7", "8"],
193
200
  integers: [0, 2, 3, 5, 7, 8, 10],
194
- rotation: 5,
195
201
  type: [
196
202
  "minor",
197
203
  "aeolian",
@@ -217,7 +223,9 @@ const aeolian: NoteCollection = {
217
223
  patternShort: ["W", "H", "W", "W", "H", "W", "W"],
218
224
  } as const;
219
225
 
220
- const locrian: NoteCollection = {
226
+ const locrian: ScaleCollection = {
227
+ category: "scale",
228
+ rotation: 6,
221
229
  primaryName: "Locrian",
222
230
  names: [
223
231
  "Locrian",
@@ -226,7 +234,6 @@ const locrian: NoteCollection = {
226
234
  ],
227
235
  intervals: ["1", "♭2", "♭3", "4", "♭5", "♭6", "♭7", "8"],
228
236
  integers: [0, 1, 3, 5, 6, 8, 10],
229
- rotation: 6,
230
237
  type: [
231
238
  "diminished",
232
239
  "locrian",
@@ -263,5 +270,5 @@ const _diatonicModes = {
263
270
 
264
271
  export type DiatonicModeKey = keyof typeof _diatonicModes;
265
272
 
266
- export const diatonicModes: Record<DiatonicModeKey, NoteCollection> =
273
+ export const diatonicModes: Record<DiatonicModeKey, ScaleCollection> =
267
274
  _diatonicModes;
@@ -1,6 +1,11 @@
1
- import type { NoteCollection } from "../../types/note-collections.d.ts";
1
+ import type {
2
+ ChordCollection,
3
+ NoteCollection,
4
+ ScaleCollection,
5
+ } from "../../types/note-collections.d.ts";
2
6
 
3
- const diminishedTriad: NoteCollection = {
7
+ const diminishedTriad: ChordCollection = {
8
+ category: "chord",
4
9
  primaryName: "dim",
5
10
  names: ["dim", "°", "Diminished Triad"],
6
11
  intervals: ["1", "♭3", "♭5"],
@@ -11,7 +16,8 @@ const diminishedTriad: NoteCollection = {
11
16
  patternShort: ["m3", "m3"],
12
17
  } as const;
13
18
 
14
- const diminished7: NoteCollection = {
19
+ const diminished7: ChordCollection = {
20
+ category: "chord",
15
21
  primaryName: "dim7",
16
22
  names: ["dim7", "°7", "Diminished 7th"],
17
23
  intervals: ["1", "♭3", "♭5", "𝄫7"],
@@ -22,7 +28,8 @@ const diminished7: NoteCollection = {
22
28
  patternShort: ["m3", "m3", "m3"],
23
29
  } as const;
24
30
 
25
- const halfDiminished7: NoteCollection = {
31
+ const halfDiminished7: ChordCollection = {
32
+ category: "chord",
26
33
  primaryName: "m7♭5",
27
34
  names: ["m7♭5", "ø7", "Half Diminished 7th"],
28
35
  intervals: ["1", "♭3", "♭5", "♭7"],
@@ -33,10 +40,11 @@ const halfDiminished7: NoteCollection = {
33
40
  patternShort: ["m3", "m3", "M3"],
34
41
  } as const;
35
42
 
36
- const wholeHalfDiminished: NoteCollection = {
43
+ const wholeHalfDiminished: ScaleCollection = {
44
+ category: "scale",
37
45
  primaryName: "Whole Half Diminished",
38
46
  names: ["Whole Half Diminished"],
39
- intervals: ["1", "2", "♭3", "4", "♭5", "♭6", "6", "7"],
47
+ intervals: ["1", "2", "♭3", "4", "♭5", "♭6", "6", "7", "8"],
40
48
  integers: [0, 2, 3, 5, 6, 8, 9, 11],
41
49
  type: ["diminished", "scale", "symmetrical", "octatonic"],
42
50
  characteristics: ["tense", "jazzy", "symmetrical", "alternating tones"],
@@ -44,10 +52,11 @@ const wholeHalfDiminished: NoteCollection = {
44
52
  patternShort: ["W", "H", "W", "H", "W", "H", "W", "H"],
45
53
  } as const;
46
54
 
47
- const halfWholeDiminished: NoteCollection = {
55
+ const halfWholeDiminished: ScaleCollection = {
56
+ category: "scale",
48
57
  primaryName: "Half Whole Diminished",
49
58
  names: ["Half Whole Diminished", "Dominant Diminished"],
50
- intervals: ["1", "♭2", "♭3", "3", "♯4", "5", "6", "♭7"],
59
+ intervals: ["1", "♭2", "♭3", "3", "♯4", "5", "6", "♭7", "8"],
51
60
  integers: [0, 1, 3, 4, 6, 7, 9, 10],
52
61
  type: ["diminished", "dominant", "scale", "symmetrical", "octatonic"],
53
62
  characteristics: [
@@ -60,7 +69,7 @@ const halfWholeDiminished: NoteCollection = {
60
69
  patternShort: ["H", "W", "H", "W", "H", "W", "H", "W"],
61
70
  } as const;
62
71
 
63
- export const _diminished = {
72
+ export const _diminishedVariants = {
64
73
  diminishedTriad,
65
74
  diminished7,
66
75
  halfDiminished7,
@@ -68,6 +77,7 @@ export const _diminished = {
68
77
  halfWholeDiminished,
69
78
  } as const;
70
79
 
71
- export type DiminishedKey = keyof typeof _diminished;
80
+ export type DiminishedVariantKey = keyof typeof _diminishedVariants;
72
81
 
73
- export const diminished: Record<DiminishedKey, NoteCollection> = _diminished;
82
+ export const diminishedVariants: Record<DiminishedVariantKey, NoteCollection> =
83
+ _diminishedVariants;
@@ -1,6 +1,11 @@
1
- import type { NoteCollection } from "../../types/note-collections.d.ts";
1
+ import type {
2
+ ChordCollection,
3
+ NoteCollection,
4
+ ScaleCollection,
5
+ } from "../../types/note-collections.d.ts";
2
6
 
3
- const dominant7: NoteCollection = {
7
+ const dominant7: ChordCollection = {
8
+ category: "chord",
4
9
  primaryName: "7",
5
10
  names: ["7", "dom7", "Dominant 7th", "Dominant Seventh"],
6
11
  intervals: ["1", "3", "5", "♭7"],
@@ -23,7 +28,8 @@ const dominant7: NoteCollection = {
23
28
  patternShort: ["M3", "m3", "m3"],
24
29
  } as const;
25
30
 
26
- const dominant9: NoteCollection = {
31
+ const dominant9: ChordCollection = {
32
+ category: "chord",
27
33
  primaryName: "9",
28
34
  names: ["9", "dom9", "Dominant 9th", "Dominant Ninth"],
29
35
  intervals: ["1", "3", "5", "♭7", "9"],
@@ -42,7 +48,8 @@ const dominant9: NoteCollection = {
42
48
  patternShort: ["M3", "m3", "m3", "M3"],
43
49
  } as const;
44
50
 
45
- const dominant11: NoteCollection = {
51
+ const dominant11: ChordCollection = {
52
+ category: "chord",
46
53
  primaryName: "11",
47
54
  names: ["11", "dom11", "Dominant 11th", "Dominant Eleventh"],
48
55
  intervals: ["1", "3", "5", "♭7", "9", "11"],
@@ -69,7 +76,8 @@ const dominant11: NoteCollection = {
69
76
  patternShort: ["M3", "m3", "m3", "M3", "m3"],
70
77
  } as const;
71
78
 
72
- const dominant13: NoteCollection = {
79
+ const dominant13: ChordCollection = {
80
+ category: "chord",
73
81
  primaryName: "13",
74
82
  names: ["13", "dom13", "Dominant 13th", "Dominant Thirteenth"],
75
83
  intervals: ["1", "3", "5", "♭7", "9", "11", "13"],
@@ -97,11 +105,24 @@ const dominant13: NoteCollection = {
97
105
  patternShort: ["M3", "m3", "m3", "M3", "m3", "m3"],
98
106
  } as const;
99
107
 
108
+ const dominantPentatonic: ScaleCollection = {
109
+ category: "scale",
110
+ primaryName: "Dominant Pentatonic",
111
+ names: ["Dominant Pentatonic"],
112
+ intervals: ["1", "2", "3", "5", "♭7", "8"],
113
+ integers: [0, 2, 4, 7, 10],
114
+ type: ["dominant", "pentatonic", "scale", "gapped scale"],
115
+ characteristics: ["bluesy", "dominant feel", "mixolydian flavor"],
116
+ pattern: ["whole", "whole", "minor third", "minor third"],
117
+ patternShort: ["W", "W", "m3", "m3"],
118
+ } as const;
119
+
100
120
  export const _dominantVariants = {
101
121
  dominant7,
102
122
  dominant9,
103
123
  dominant11,
104
124
  dominant13,
125
+ dominantPentatonic,
105
126
  } as const;
106
127
 
107
128
  export type DominantVariantKey = keyof typeof _dominantVariants;