0000: 2f 2f 20 4e 6f 74 65 20 63 6f 6f 72 64 69 6e 61 // Note coordina
0010: 74 65 73 20 5b 6f 63 74 61 76 65 2c 20 66 69 66 tes [octave, fif
0020: 74 68 5d 20 72 65 6c 61 74 69 76 65 20 74 6f 20 th] relative to
0030: 43 0a 6d 6f 64 75 6c 65 2e 65 78 70 6f 72 74 73 C.module.exports
0040: 20 3d 20 7b 0a 20 20 6e 6f 74 65 73 3a 20 7b 0a = {. notes: {.
0050: 20 20 20 20 63 3a 20 5b 30 2c 20 30 5d 2c 0a 20 c: [0, 0],.
0060: 20 20 20 64 3a 20 5b 2d 31 2c 20 32 5d 2c 0a 20 d: [-1, 2],.
0070: 20 20 20 65 3a 20 5b 2d 32 2c 20 34 5d 2c 0a 20 e: [-2, 4],.
0080: 20 20 20 66 3a 20 5b 31 2c 20 2d 31 5d 2c 0a 20 f: [1, -1],.
0090: 20 20 20 67 3a 20 5b 30 2c 20 31 5d 2c 0a 20 20 g: [0, 1],.
00a0: 20 20 61 3a 20 5b 2d 31 2c 20 33 5d 2c 0a 20 20 a: [-1, 3],.
00b0: 20 20 62 3a 20 5b 2d 32 2c 20 35 5d 2c 0a 20 20 b: [-2, 5],.
00c0: 20 20 68 3a 20 5b 2d 32 2c 20 35 5d 0a 20 20 7d h: [-2, 5]. }
00d0: 2c 0a 0a 20 20 69 6e 74 65 72 76 61 6c 73 3a 20 ,.. intervals:
00e0: 7b 0a 20 20 20 20 75 6e 69 73 6f 6e 3a 20 5b 30 {. unison: [0
00f0: 2c 20 30 5d 2c 0a 20 20 20 20 73 65 63 6f 6e 64 , 0],. second
0100: 3a 20 5b 33 2c 20 2d 35 5d 2c 0a 20 20 20 20 74 : [3, -5],. t
0110: 68 69 72 64 3a 20 5b 32 2c 20 2d 33 5d 2c 0a 20 hird: [2, -3],.
0120: 20 20 20 66 6f 75 72 74 68 3a 20 5b 31 2c 20 2d fourth: [1, -
0130: 31 5d 2c 0a 20 20 20 20 66 69 66 74 68 3a 20 5b 1],. fifth: [
0140: 30 2c 20 31 5d 2c 0a 20 20 20 20 73 69 78 74 68 0, 1],. sixth
0150: 3a 20 5b 33 2c 20 2d 34 5d 2c 0a 20 20 20 20 73 : [3, -4],. s
0160: 65 76 65 6e 74 68 3a 20 5b 32 2c 20 2d 32 5d 2c eventh: [2, -2],
0170: 0a 20 20 20 20 6f 63 74 61 76 65 3a 20 5b 31 2c . octave: [1,
0180: 20 30 5d 0a 20 20 7d 2c 0a 0a 20 20 69 6e 74 65 0]. },.. inte
0190: 72 76 61 6c 46 72 6f 6d 46 69 66 74 68 3a 20 5b rvalFromFifth: [
01a0: 27 73 65 63 6f 6e 64 27 2c 20 27 73 69 78 74 68 'second', 'sixth
01b0: 27 2c 20 27 74 68 69 72 64 27 2c 20 27 73 65 76 ', 'third', 'sev
01c0: 65 6e 74 68 27 2c 20 27 66 6f 75 72 74 68 27 2c enth', 'fourth',
01d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
01e0: 20 20 20 20 20 20 20 20 20 20 27 75 6e 69 73 6f 'uniso
01f0: 6e 27 2c 20 27 66 69 66 74 68 27 5d 2c 0a 0a 20 n', 'fifth'],..
0200: 20 69 6e 74 65 72 76 61 6c 73 49 6e 64 65 78 3a intervalsIndex:
0210: 20 5b 27 75 6e 69 73 6f 6e 27 2c 20 27 73 65 63 ['unison', 'sec
0220: 6f 6e 64 27 2c 20 27 74 68 69 72 64 27 2c 20 27 ond', 'third', '
0230: 66 6f 75 72 74 68 27 2c 20 27 66 69 66 74 68 27 fourth', 'fifth'
0240: 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ,.
0250: 20 20 20 20 20 20 20 20 27 73 69 78 74 68 27 2c 'sixth',
0260: 20 27 73 65 76 65 6e 74 68 27 2c 20 27 6f 63 74 'seventh', 'oct
0270: 61 76 65 27 2c 20 27 6e 69 6e 74 68 27 2c 20 27 ave', 'ninth', '
0280: 74 65 6e 74 68 27 2c 0a 20 20 20 20 20 20 20 20 tenth',.
0290: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 65 'e
02a0: 6c 65 76 65 6e 74 68 27 2c 20 27 74 77 65 6c 66 leventh', 'twelf
02b0: 74 68 27 2c 20 27 74 68 69 72 74 65 65 6e 74 68 th', 'thirteenth
02c0: 27 2c 20 27 66 6f 75 72 74 65 65 6e 74 68 27 2c ', 'fourteenth',
02d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
02e0: 20 20 20 20 20 20 20 27 66 69 66 74 65 65 6e 74 'fifteent
02f0: 68 27 5d 2c 0a 0a 2f 2f 20 6c 69 6e 65 61 72 20 h'],..// linear
0300: 69 6e 64 65 78 20 74 6f 20 66 69 66 74 68 20 3d index to fifth =
0310: 20 28 32 20 2a 20 69 6e 64 65 78 20 2b 20 31 29 (2 * index + 1)
0320: 20 25 20 37 0a 20 20 66 69 66 74 68 73 3a 20 5b % 7. fifths: [
0330: 27 66 27 2c 20 27 63 27 2c 20 27 67 27 2c 20 27 'f', 'c', 'g', '
0340: 64 27 2c 20 27 61 27 2c 20 27 65 27 2c 20 27 62 d', 'a', 'e', 'b
0350: 27 5d 2c 0a 20 20 61 63 63 69 64 65 6e 74 61 6c '],. accidental
0360: 73 3a 20 5b 27 62 62 27 2c 20 27 62 27 2c 20 27 s: ['bb', 'b', '
0370: 27 2c 20 27 23 27 2c 20 27 78 27 5d 2c 0a 0a 20 ', '#', 'x'],..
0380: 20 73 68 61 72 70 3a 20 5b 2d 34 2c 20 37 5d 2c sharp: [-4, 7],
0390: 0a 20 20 41 34 3a 20 5b 33 2c 20 33 5d 2c 0a 0a . A4: [3, 3],..
03a0: 20 20 64 75 72 61 74 69 6f 6e 73 3a 20 7b 0a 20 durations: {.
03b0: 20 20 20 27 30 2e 32 35 27 3a 20 27 6c 6f 6e 67 '0.25': 'long
03c0: 61 27 2c 0a 20 20 20 20 27 30 2e 35 27 3a 20 27 a',. '0.5': '
03d0: 62 72 65 76 65 27 2c 0a 20 20 20 20 27 31 27 3a breve',. '1':
03e0: 20 27 77 68 6f 6c 65 27 2c 0a 20 20 20 20 27 32 'whole',. '2
03f0: 27 3a 20 27 68 61 6c 66 27 2c 0a 20 20 20 20 27 ': 'half',. '
0400: 34 27 3a 20 27 71 75 61 72 74 65 72 27 2c 0a 20 4': 'quarter',.
0410: 20 20 20 27 38 27 3a 20 27 65 69 67 68 74 68 27 '8': 'eighth'
0420: 2c 0a 20 20 20 20 27 31 36 27 3a 20 27 73 69 78 ,. '16': 'six
0430: 74 65 65 6e 74 68 27 2c 0a 20 20 20 20 27 33 32 teenth',. '32
0440: 27 3a 20 27 74 68 69 72 74 79 2d 73 65 63 6f 6e ': 'thirty-secon
0450: 64 27 2c 0a 20 20 20 20 27 36 34 27 3a 20 27 73 d',. '64': 's
0460: 69 78 74 79 2d 66 6f 75 72 74 68 27 2c 0a 20 20 ixty-fourth',.
0470: 20 20 27 31 32 38 27 3a 20 27 68 75 6e 64 72 65 '128': 'hundre
0480: 64 2d 74 77 65 6e 74 79 2d 65 69 67 68 74 68 27 d-twenty-eighth'
0490: 0a 20 20 7d 2c 0a 0a 20 20 71 75 61 6c 69 74 79 . },.. quality
04a0: 4c 6f 6e 67 3a 20 7b 0a 20 20 20 20 50 3a 20 27 Long: {. P: '
04b0: 70 65 72 66 65 63 74 27 2c 0a 20 20 20 20 4d 3a perfect',. M:
04c0: 20 27 6d 61 6a 6f 72 27 2c 0a 20 20 20 20 6d 3a 'major',. m:
04d0: 20 27 6d 69 6e 6f 72 27 2c 0a 20 20 20 20 41 3a 'minor',. A:
04e0: 20 27 61 75 67 6d 65 6e 74 65 64 27 2c 0a 20 20 'augmented',.
04f0: 20 20 41 41 3a 20 27 64 6f 75 62 6c 79 20 61 75 AA: 'doubly au
0500: 67 6d 65 6e 74 65 64 27 2c 0a 20 20 20 20 64 3a gmented',. d:
0510: 20 27 64 69 6d 69 6e 69 73 68 65 64 27 2c 0a 20 'diminished',.
0520: 20 20 20 64 64 3a 20 27 64 6f 75 62 6c 79 20 64 dd: 'doubly d
0530: 69 6d 69 6e 69 73 68 65 64 27 0a 20 20 7d 2c 0a iminished'. },.
0540: 0a 20 20 61 6c 74 65 72 61 74 69 6f 6e 73 3a 20 . alterations:
0550: 7b 0a 20 20 20 20 70 65 72 66 65 63 74 3a 20 5b {. perfect: [
0560: 27 64 64 27 2c 20 27 64 27 2c 20 27 50 27 2c 20 'dd', 'd', 'P',
0570: 27 41 27 2c 20 27 41 41 27 5d 2c 0a 20 20 20 20 'A', 'AA'],.
0580: 6d 69 6e 6f 72 3a 20 5b 27 64 64 27 2c 20 27 64 minor: ['dd', 'd
0590: 27 2c 20 27 6d 27 2c 20 27 4d 27 2c 20 27 41 27 ', 'm', 'M', 'A'
05a0: 2c 20 27 41 41 27 5d 0a 20 20 7d 2c 0a 0a 20 20 , 'AA']. },..
05b0: 73 79 6d 62 6f 6c 73 3a 20 7b 0a 20 20 20 20 27 symbols: {. '
05c0: 6d 69 6e 27 3a 20 5b 27 6d 33 27 2c 20 27 50 35 min': ['m3', 'P5
05d0: 27 5d 2c 0a 20 20 20 20 27 6d 27 3a 20 5b 27 6d '],. 'm': ['m
05e0: 33 27 2c 20 27 50 35 27 5d 2c 0a 20 20 20 20 27 3', 'P5'],. '
05f0: 2d 27 3a 20 5b 27 6d 33 27 2c 20 27 50 35 27 5d -': ['m3', 'P5']
0600: 2c 0a 0a 20 20 20 20 27 4d 27 3a 20 5b 27 4d 33 ,.. 'M': ['M3
0610: 27 2c 20 27 50 35 27 5d 2c 0a 20 20 20 20 27 27 ', 'P5'],. ''
0620: 3a 20 5b 27 4d 33 27 2c 20 27 50 35 27 5d 2c 0a : ['M3', 'P5'],.
0630: 0a 20 20 20 20 27 2b 27 3a 20 5b 27 4d 33 27 2c . '+': ['M3',
0640: 20 27 41 35 27 5d 2c 0a 20 20 20 20 27 61 75 67 'A5'],. 'aug
0650: 27 3a 20 5b 27 4d 33 27 2c 20 27 41 35 27 5d 2c ': ['M3', 'A5'],
0660: 0a 0a 20 20 20 20 27 64 69 6d 27 3a 20 5b 27 6d .. 'dim': ['m
0670: 33 27 2c 20 27 64 35 27 5d 2c 0a 20 20 20 20 27 3', 'd5'],. '
0680: 6f 27 3a 20 5b 27 6d 33 27 2c 20 27 64 35 27 5d o': ['m3', 'd5']
0690: 2c 0a 0a 20 20 20 20 27 6d 61 6a 27 3a 20 5b 27 ,.. 'maj': ['
06a0: 4d 33 27 2c 20 27 50 35 27 2c 20 27 4d 37 27 5d M3', 'P5', 'M7']
06b0: 2c 0a 20 20 20 20 27 64 6f 6d 27 3a 20 5b 27 4d ,. 'dom': ['M
06c0: 33 27 2c 20 27 50 35 27 2c 20 27 6d 37 27 5d 2c 3', 'P5', 'm7'],
06d0: 0a 20 20 20 20 27 c3 b8 27 3a 20 5b 27 6d 33 27 . '..': ['m3'
06e0: 2c 20 27 64 35 27 2c 20 27 6d 37 27 5d 2c 0a 0a , 'd5', 'm7'],..
06f0: 20 20 20 20 27 35 27 3a 20 5b 27 50 35 27 5d 0a '5': ['P5'].
0700: 20 20 7d 2c 0a 0a 20 20 63 68 6f 72 64 53 68 6f },.. chordSho
0710: 72 74 3a 20 7b 0a 20 20 20 20 27 6d 61 6a 6f 72 rt: {. 'major
0720: 27 3a 20 27 4d 27 2c 0a 20 20 20 20 27 6d 69 6e ': 'M',. 'min
0730: 6f 72 27 3a 20 27 6d 27 2c 0a 20 20 20 20 27 61 or': 'm',. 'a
0740: 75 67 6d 65 6e 74 65 64 27 3a 20 27 61 75 67 27 ugmented': 'aug'
0750: 2c 0a 20 20 20 20 27 64 69 6d 69 6e 69 73 68 65 ,. 'diminishe
0760: 64 27 3a 20 27 64 69 6d 27 2c 0a 20 20 20 20 27 d': 'dim',. '
0770: 68 61 6c 66 2d 64 69 6d 69 6e 69 73 68 65 64 27 half-diminished'
0780: 3a 20 27 37 62 35 27 2c 0a 20 20 20 20 27 70 6f : '7b5',. 'po
0790: 77 65 72 27 3a 20 27 35 27 2c 0a 20 20 20 20 27 wer': '5',. '
07a0: 64 6f 6d 69 6e 61 6e 74 27 3a 20 27 37 27 0a 20 dominant': '7'.
07b0: 20 7d 2c 0a 0a 20 20 73 74 65 70 4e 75 6d 62 65 },.. stepNumbe
07c0: 72 3a 20 7b 0a 20 20 20 20 27 75 6e 69 73 6f 6e r: {. 'unison
07d0: 27 3a 20 31 2c 0a 20 20 20 20 27 66 69 72 73 74 ': 1,. 'first
07e0: 27 3a 20 31 2c 0a 20 20 20 20 27 73 65 63 6f 6e ': 1,. 'secon
07f0: 64 27 3a 20 32 2c 0a 20 20 20 20 27 74 68 69 72 d': 2,. 'thir
0800: 64 27 3a 20 33 2c 0a 20 20 20 20 27 66 6f 75 72 d': 3,. 'four
0810: 74 68 27 3a 20 34 2c 0a 20 20 20 20 27 66 69 66 th': 4,. 'fif
0820: 74 68 27 3a 20 35 2c 0a 20 20 20 20 27 73 69 78 th': 5,. 'six
0830: 74 68 27 3a 20 36 2c 0a 20 20 20 20 27 73 65 76 th': 6,. 'sev
0840: 65 6e 74 68 27 3a 20 37 2c 0a 20 20 20 20 27 6f enth': 7,. 'o
0850: 63 74 61 76 65 27 3a 20 38 2c 0a 20 20 20 20 27 ctave': 8,. '
0860: 6e 69 6e 74 68 27 3a 20 39 2c 0a 20 20 20 20 27 ninth': 9,. '
0870: 65 6c 65 76 65 6e 74 68 27 3a 20 31 31 2c 0a 20 eleventh': 11,.
0880: 20 20 20 27 74 68 69 72 74 65 65 6e 74 68 27 3a 'thirteenth':
0890: 20 31 33 0a 20 20 7d 2c 0a 0a 20 20 2f 2f 20 41 13. },.. // A
08a0: 64 6a 75 73 74 65 64 20 53 68 65 61 72 65 72 20 djusted Shearer
08b0: 73 79 6c 6c 61 62 6c 65 73 20 2d 20 43 68 72 6f syllables - Chro
08c0: 6d 61 74 69 63 20 73 6f 6c 66 65 67 65 20 73 79 matic solfege sy
08d0: 73 74 65 6d 0a 20 20 2f 2f 20 53 6f 6d 65 20 69 stem. // Some i
08e0: 6e 74 65 72 76 61 6c 73 20 61 72 65 20 6e 6f 74 ntervals are not
08f0: 20 70 72 6f 76 69 64 65 64 20 66 6f 72 2e 20 54 provided for. T
0900: 68 65 73 65 20 69 6e 63 6c 75 64 65 3a 0a 20 20 hese include:.
0910: 2f 2f 20 64 64 32 20 2d 20 44 6f 75 62 6c 79 20 // dd2 - Doubly
0920: 64 69 6d 69 6e 69 73 68 65 64 20 73 65 63 6f 6e diminished secon
0930: 64 0a 20 20 2f 2f 20 64 64 33 20 2d 20 44 6f 75 d. // dd3 - Dou
0940: 62 6c 79 20 64 69 6d 69 6e 69 73 68 65 64 20 74 bly diminished t
0950: 68 69 72 64 0a 20 20 2f 2f 20 41 41 33 20 2d 20 hird. // AA3 -
0960: 44 6f 75 62 6c 79 20 61 75 67 6d 65 6e 74 65 64 Doubly augmented
0970: 20 74 68 69 72 64 0a 20 20 2f 2f 20 64 64 36 20 third. // dd6
0980: 2d 20 44 6f 75 62 6c 79 20 64 69 6d 69 6e 69 73 - Doubly diminis
0990: 68 65 64 20 73 69 78 74 68 0a 20 20 2f 2f 20 64 hed sixth. // d
09a0: 64 37 20 2d 20 44 6f 75 62 6c 79 20 64 69 6d 69 d7 - Doubly dimi
09b0: 6e 69 73 68 65 64 20 73 65 76 65 6e 74 68 0a 20 nished seventh.
09c0: 20 2f 2f 20 41 41 37 20 2d 20 44 6f 75 62 6c 79 // AA7 - Doubly
09d0: 20 61 75 67 6d 65 6e 74 65 64 20 73 65 76 65 6e augmented seven
09e0: 74 68 0a 20 20 69 6e 74 65 72 76 61 6c 53 6f 6c th. intervalSol
09f0: 66 65 67 65 3a 20 7b 0a 20 20 20 20 27 64 64 31 fege: {. 'dd1
0a00: 27 3a 20 27 64 61 77 27 2c 0a 20 20 20 20 27 64 ': 'daw',. 'd
0a10: 31 27 3a 20 27 64 65 27 2c 0a 20 20 20 20 27 50 1': 'de',. 'P
0a20: 31 27 3a 20 27 64 6f 27 2c 0a 20 20 20 20 27 41 1': 'do',. 'A
0a30: 31 27 3a 20 27 64 69 27 2c 0a 20 20 20 20 27 41 1': 'di',. 'A
0a40: 41 31 27 3a 20 27 64 61 69 27 2c 0a 20 20 20 20 A1': 'dai',.
0a50: 27 64 32 27 3a 20 27 72 61 77 27 2c 0a 20 20 20 'd2': 'raw',.
0a60: 20 27 6d 32 27 3a 20 27 72 61 27 2c 0a 20 20 20 'm2': 'ra',.
0a70: 20 27 4d 32 27 3a 20 27 72 65 27 2c 0a 20 20 20 'M2': 're',.
0a80: 20 27 41 32 27 3a 20 27 72 69 27 2c 0a 20 20 20 'A2': 'ri',.
0a90: 20 27 41 41 32 27 3a 20 27 72 61 69 27 2c 0a 20 'AA2': 'rai',.
0aa0: 20 20 20 27 64 33 27 3a 20 27 6d 61 77 27 2c 0a 'd3': 'maw',.
0ab0: 20 20 20 20 27 6d 33 27 3a 20 27 6d 65 27 2c 0a 'm3': 'me',.
0ac0: 20 20 20 20 27 4d 33 27 3a 20 27 6d 69 27 2c 0a 'M3': 'mi',.
0ad0: 20 20 20 20 27 41 33 27 3a 20 27 6d 61 69 27 2c 'A3': 'mai',
0ae0: 0a 20 20 20 20 27 64 64 34 27 3a 20 27 66 61 77 . 'dd4': 'faw
0af0: 27 2c 0a 20 20 20 20 27 64 34 27 3a 20 27 66 65 ',. 'd4': 'fe
0b00: 27 2c 0a 20 20 20 20 27 50 34 27 3a 20 27 66 61 ',. 'P4': 'fa
0b10: 27 2c 0a 20 20 20 20 27 41 34 27 3a 20 27 66 69 ',. 'A4': 'fi
0b20: 27 2c 0a 20 20 20 20 27 41 41 34 27 3a 20 27 66 ',. 'AA4': 'f
0b30: 61 69 27 2c 0a 20 20 20 20 27 64 64 35 27 3a 20 ai',. 'dd5':
0b40: 27 73 61 77 27 2c 0a 20 20 20 20 27 64 35 27 3a 'saw',. 'd5':
0b50: 20 27 73 65 27 2c 0a 20 20 20 20 27 50 35 27 3a 'se',. 'P5':
0b60: 20 27 73 6f 27 2c 0a 20 20 20 20 27 41 35 27 3a 'so',. 'A5':
0b70: 20 27 73 69 27 2c 0a 20 20 20 20 27 41 41 35 27 'si',. 'AA5'
0b80: 3a 20 27 73 61 69 27 2c 0a 20 20 20 20 27 64 36 : 'sai',. 'd6
0b90: 27 3a 20 27 6c 61 77 27 2c 0a 20 20 20 20 27 6d ': 'law',. 'm
0ba0: 36 27 3a 20 27 6c 65 27 2c 0a 20 20 20 20 27 4d 6': 'le',. 'M
0bb0: 36 27 3a 20 27 6c 61 27 2c 0a 20 20 20 20 27 41 6': 'la',. 'A
0bc0: 36 27 3a 20 27 6c 69 27 2c 0a 20 20 20 20 27 41 6': 'li',. 'A
0bd0: 41 36 27 3a 20 27 6c 61 69 27 2c 0a 20 20 20 20 A6': 'lai',.
0be0: 27 64 37 27 3a 20 27 74 61 77 27 2c 0a 20 20 20 'd7': 'taw',.
0bf0: 20 27 6d 37 27 3a 20 27 74 65 27 2c 0a 20 20 20 'm7': 'te',.
0c00: 20 27 4d 37 27 3a 20 27 74 69 27 2c 0a 20 20 20 'M7': 'ti',.
0c10: 20 27 41 37 27 3a 20 27 74 61 69 27 2c 0a 20 20 'A7': 'tai',.
0c20: 20 20 27 64 64 38 27 3a 20 27 64 61 77 27 2c 0a 'dd8': 'daw',.
0c30: 20 20 20 20 27 64 38 27 3a 20 27 64 65 27 2c 0a 'd8': 'de',.
0c40: 20 20 20 20 27 50 38 27 3a 20 27 64 6f 27 2c 0a 'P8': 'do',.
0c50: 20 20 20 20 27 41 38 27 3a 20 27 64 69 27 2c 0a 'A8': 'di',.
0c60: 20 20 20 20 27 41 41 38 27 3a 20 27 64 61 69 27 'AA8': 'dai'
0c70: 0a 20 20 7d 0a 7d 3b 0a . }.};.