0000: 76 61 72 20 76 6f 77 73 20 3d 20 72 65 71 75 69 var vows = requi
0010: 72 65 28 27 76 6f 77 73 27 29 2c 0a 20 20 20 20 re('vows'),.
0020: 61 73 73 65 72 74 20 3d 20 72 65 71 75 69 72 65 assert = require
0030: 28 27 61 73 73 65 72 74 27 29 2c 0a 20 20 20 20 ('assert'),.
0040: 74 65 6f 72 69 61 20 3d 20 72 65 71 75 69 72 65 teoria = require
0050: 28 27 2e 2e 2f 27 29 3b 0a 0a 76 6f 77 73 2e 64 ('../');..vows.d
0060: 65 73 63 72 69 62 65 28 27 43 68 6f 72 64 73 27 escribe('Chords'
0070: 29 2e 61 64 64 42 61 74 63 68 28 7b 0a 20 20 27 ).addBatch({. '
0080: 43 68 6f 72 64 20 70 61 72 73 65 72 27 3a 20 7b Chord parser': {
0090: 0a 20 20 20 20 27 45 6d 61 6a 37 27 3a 20 66 75 . 'Emaj7': fu
00a0: 6e 63 74 69 6f 6e 28 29 20 7b 0a 20 20 20 20 20 nction() {.
00b0: 20 61 73 73 65 72 74 2e 64 65 65 70 45 71 75 61 assert.deepEqua
00c0: 6c 28 74 65 6f 72 69 61 2e 63 68 6f 72 64 28 27 l(teoria.chord('
00d0: 45 6d 61 6a 37 27 29 2e 73 69 6d 70 6c 65 28 29 Emaj7').simple()
00e0: 2c 20 5b 27 65 27 2c 20 27 67 23 27 2c 20 27 62 , ['e', 'g#', 'b
00f0: 27 2c 20 27 64 23 27 5d 29 3b 0a 20 20 20 20 7d ', 'd#']);. }
0100: 2c 0a 0a 20 20 20 20 27 41 2b 27 3a 20 66 75 6e ,.. 'A+': fun
0110: 63 74 69 6f 6e 28 29 20 7b 0a 20 20 20 20 20 20 ction() {.
0120: 61 73 73 65 72 74 2e 64 65 65 70 45 71 75 61 6c assert.deepEqual
0130: 28 74 65 6f 72 69 61 2e 63 68 6f 72 64 28 27 41 (teoria.chord('A
0140: 2b 27 29 2e 73 69 6d 70 6c 65 28 29 2c 20 5b 27 +').simple(), ['
0150: 61 27 2c 20 27 63 23 27 2c 20 27 65 23 27 5d 29 a', 'c#', 'e#'])
0160: 3b 0a 20 20 20 20 7d 2c 0a 0a 20 20 20 20 27 42 ;. },.. 'B
0170: 62 2b 27 3a 20 66 75 6e 63 74 69 6f 6e 28 29 20 b+': function()
0180: 7b 0a 20 20 20 20 20 20 61 73 73 65 72 74 2e 64 {. assert.d
0190: 65 65 70 45 71 75 61 6c 28 74 65 6f 72 69 61 2e eepEqual(teoria.
01a0: 63 68 6f 72 64 28 27 42 62 2b 27 29 2e 73 69 6d chord('Bb+').sim
01b0: 70 6c 65 28 29 2c 20 5b 27 62 62 27 2c 20 27 64 ple(), ['bb', 'd
01c0: 27 2c 20 27 66 23 27 5d 29 3b 0a 20 20 20 20 7d ', 'f#']);. }
01d0: 2c 0a 0a 20 20 20 20 27 46 23 6d 61 6a 37 27 3a ,.. 'F#maj7':
01e0: 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0a 20 20 function() {.
01f0: 20 20 20 20 61 73 73 65 72 74 2e 64 65 65 70 45 assert.deepE
0200: 71 75 61 6c 28 74 65 6f 72 69 61 2e 63 68 6f 72 qual(teoria.chor
0210: 64 28 27 46 23 6d 61 6a 37 27 29 2e 73 69 6d 70 d('F#maj7').simp
0220: 6c 65 28 29 2c 20 5b 27 66 23 27 2c 20 27 61 23 le(), ['f#', 'a#
0230: 27 2c 20 27 63 23 27 2c 20 27 65 23 27 5d 29 3b ', 'c#', 'e#']);
0240: 0a 20 20 20 20 7d 2c 0a 0a 20 20 20 20 27 48 6d . },.. 'Hm
0250: 61 6a 37 27 3a 20 66 75 6e 63 74 69 6f 6e 28 29 aj7': function()
0260: 20 7b 0a 20 20 20 20 20 20 61 73 73 65 72 74 2e {. assert.
0270: 64 65 65 70 45 71 75 61 6c 28 74 65 6f 72 69 61 deepEqual(teoria
0280: 2e 63 68 6f 72 64 28 27 48 6d 61 6a 37 27 29 2e .chord('Hmaj7').
0290: 73 69 6d 70 6c 65 28 29 2c 20 5b 27 62 27 2c 20 simple(), ['b',
02a0: 27 64 23 27 2c 20 27 66 23 27 2c 20 27 61 23 27 'd#', 'f#', 'a#'
02b0: 5d 29 3b 0a 20 20 20 20 7d 2c 0a 0a 20 20 20 20 ]);. },..
02c0: 27 48 23 6d 61 6a 37 27 3a 20 66 75 6e 63 74 69 'H#maj7': functi
02d0: 6f 6e 28 29 20 7b 0a 20 20 20 20 20 20 61 73 73 on() {. ass
02e0: 65 72 74 2e 64 65 65 70 45 71 75 61 6c 28 74 65 ert.deepEqual(te
02f0: 6f 72 69 61 2e 63 68 6f 72 64 28 27 48 23 6d 61 oria.chord('H#ma
0300: 6a 37 27 29 2e 73 69 6d 70 6c 65 28 29 2c 20 5b j7').simple(), [
0310: 27 62 23 27 2c 20 27 64 78 27 2c 20 27 66 78 27 'b#', 'dx', 'fx'
0320: 2c 20 27 61 78 27 5d 29 3b 0a 20 20 20 20 7d 2c , 'ax']);. },
0330: 0a 0a 20 20 20 20 27 43 37 62 35 27 3a 20 66 75 .. 'C7b5': fu
0340: 6e 63 74 69 6f 6e 28 29 20 7b 0a 20 20 20 20 20 nction() {.
0350: 20 61 73 73 65 72 74 2e 64 65 65 70 45 71 75 61 assert.deepEqua
0360: 6c 28 74 65 6f 72 69 61 2e 63 68 6f 72 64 28 27 l(teoria.chord('
0370: 43 37 62 35 27 29 2e 73 69 6d 70 6c 65 28 29 2c C7b5').simple(),
0380: 20 5b 27 63 27 2c 20 27 65 27 2c 20 27 67 62 27 ['c', 'e', 'gb'
0390: 2c 20 27 62 62 27 5d 29 3b 0a 20 20 20 20 7d 2c , 'bb']);. },
03a0: 0a 0a 20 20 20 20 27 45 62 37 62 35 27 3a 20 66 .. 'Eb7b5': f
03b0: 75 6e 63 74 69 6f 6e 28 29 20 7b 0a 20 20 20 20 unction() {.
03c0: 20 20 61 73 73 65 72 74 2e 64 65 65 70 45 71 75 assert.deepEqu
03d0: 61 6c 28 74 65 6f 72 69 61 2e 63 68 6f 72 64 28 al(teoria.chord(
03e0: 27 45 62 37 62 35 27 29 2e 73 69 6d 70 6c 65 28 'Eb7b5').simple(
03f0: 29 2c 20 5b 27 65 62 27 2c 20 27 67 27 2c 20 27 ), ['eb', 'g', '
0400: 62 62 62 27 2c 20 27 64 62 27 5d 29 3b 0a 20 20 bbb', 'db']);.
0410: 20 20 7d 2c 0a 0a 20 20 20 20 27 44 23 37 62 35 },.. 'D#7b5
0420: 27 3a 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0a ': function() {.
0430: 20 20 20 20 20 20 61 73 73 65 72 74 2e 64 65 65 assert.dee
0440: 70 45 71 75 61 6c 28 74 65 6f 72 69 61 2e 63 68 pEqual(teoria.ch
0450: 6f 72 64 28 27 44 23 37 62 35 27 29 2e 73 69 6d ord('D#7b5').sim
0460: 70 6c 65 28 29 2c 20 5b 27 64 23 27 2c 20 27 66 ple(), ['d#', 'f
0470: 78 27 2c 20 27 61 27 2c 20 27 63 23 27 5d 29 3b x', 'a', 'c#']);
0480: 0a 20 20 20 20 7d 2c 0a 0a 20 20 20 20 27 43 39 . },.. 'C9
0490: 27 3a 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0a ': function() {.
04a0: 20 20 20 20 20 20 61 73 73 65 72 74 2e 64 65 65 assert.dee
04b0: 70 45 71 75 61 6c 28 74 65 6f 72 69 61 2e 63 68 pEqual(teoria.ch
04c0: 6f 72 64 28 27 43 39 27 29 2e 73 69 6d 70 6c 65 ord('C9').simple
04d0: 28 29 2c 20 5b 27 63 27 2c 20 27 65 27 2c 20 27 (), ['c', 'e', '
04e0: 67 27 2c 20 27 62 62 27 2c 20 27 64 27 5d 29 3b g', 'bb', 'd']);
04f0: 0a 20 20 20 20 7d 2c 0a 0a 20 20 20 20 27 45 62 . },.. 'Eb
0500: 39 27 3a 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b 9': function() {
0510: 0a 20 20 20 20 20 20 61 73 73 65 72 74 2e 64 65 . assert.de
0520: 65 70 45 71 75 61 6c 28 74 65 6f 72 69 61 2e 63 epEqual(teoria.c
0530: 68 6f 72 64 28 27 45 62 39 27 29 2e 73 69 6d 70 hord('Eb9').simp
0540: 6c 65 28 29 2c 20 5b 27 65 62 27 2c 20 27 67 27 le(), ['eb', 'g'
0550: 2c 20 27 62 62 27 2c 20 27 64 62 27 2c 20 27 66 , 'bb', 'db', 'f
0560: 27 5d 29 3b 0a 20 20 20 20 7d 2c 0a 0a 20 20 20 ']);. },..
0570: 20 27 47 23 28 23 39 29 27 3a 20 66 75 6e 63 74 'G#(#9)': funct
0580: 69 6f 6e 28 29 20 7b 0a 20 20 20 20 20 20 61 73 ion() {. as
0590: 73 65 72 74 2e 64 65 65 70 45 71 75 61 6c 28 74 sert.deepEqual(t
05a0: 65 6f 72 69 61 2e 63 68 6f 72 64 28 27 47 23 28 eoria.chord('G#(
05b0: 23 39 29 27 29 2e 73 69 6d 70 6c 65 28 29 2c 20 #9)').simple(),
05c0: 5b 27 67 23 27 2c 20 27 62 23 27 2c 20 27 64 23 ['g#', 'b#', 'd#
05d0: 27 2c 20 27 66 23 27 2c 20 27 61 78 27 5d 29 3b ', 'f#', 'ax']);
05e0: 0a 20 20 20 20 7d 2c 0a 0a 20 20 20 20 27 41 62 . },.. 'Ab
05f0: 28 62 39 29 27 3a 20 66 75 6e 63 74 69 6f 6e 28 (b9)': function(
0600: 29 20 7b 0a 20 20 20 20 20 20 61 73 73 65 72 74 ) {. assert
0610: 2e 64 65 65 70 45 71 75 61 6c 28 74 65 6f 72 69 .deepEqual(teori
0620: 61 2e 63 68 6f 72 64 28 27 41 62 28 62 39 29 27 a.chord('Ab(b9)'
0630: 29 2e 73 69 6d 70 6c 65 28 29 2c 20 5b 27 61 62 ).simple(), ['ab
0640: 27 2c 20 27 63 27 2c 20 27 65 62 27 2c 20 27 67 ', 'c', 'eb', 'g
0650: 62 27 2c 20 27 62 62 62 27 5d 29 3b 0a 20 20 20 b', 'bbb']);.
0660: 20 7d 2c 0a 0a 20 20 20 20 27 46 23 28 23 31 31 },.. 'F#(#11
0670: 29 27 3a 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b )': function() {
0680: 0a 20 20 20 20 20 20 61 73 73 65 72 74 2e 64 65 . assert.de
0690: 65 70 45 71 75 61 6c 28 74 65 6f 72 69 61 2e 63 epEqual(teoria.c
06a0: 68 6f 72 64 28 27 46 23 28 23 31 31 29 27 29 2e hord('F#(#11)').
06b0: 73 69 6d 70 6c 65 28 29 2c 20 5b 27 66 23 27 2c simple(), ['f#',
06c0: 20 27 61 23 27 2c 20 27 63 23 27 2c 20 27 65 27 'a#', 'c#', 'e'
06d0: 2c 20 27 67 23 27 2c 20 27 62 23 27 5d 29 3b 0a , 'g#', 'b#']);.
06e0: 20 20 20 20 7d 2c 0a 0a 20 20 20 20 27 41 62 31 },.. 'Ab1
06f0: 33 27 3a 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b 3': function() {
0700: 0a 20 20 20 20 20 20 61 73 73 65 72 74 2e 64 65 . assert.de
0710: 65 70 45 71 75 61 6c 28 74 65 6f 72 69 61 2e 63 epEqual(teoria.c
0720: 68 6f 72 64 28 27 41 62 31 33 27 29 2e 73 69 6d hord('Ab13').sim
0730: 70 6c 65 28 29 2c 20 5b 27 61 62 27 2c 20 27 63 ple(), ['ab', 'c
0740: 27 2c 20 27 65 62 27 2c 20 27 67 62 27 2c 20 27 ', 'eb', 'gb', '
0750: 62 62 27 2c 20 27 64 62 27 2c 20 27 66 27 5d 29 bb', 'db', 'f'])
0760: 3b 0a 20 20 20 20 7d 2c 0a 0a 20 20 20 20 27 43 ;. },.. 'C
0770: 37 73 75 73 34 27 3a 20 66 75 6e 63 74 69 6f 6e 7sus4': function
0780: 28 29 20 7b 0a 20 20 20 20 20 20 61 73 73 65 72 () {. asser
0790: 74 2e 64 65 65 70 45 71 75 61 6c 28 74 65 6f 72 t.deepEqual(teor
07a0: 69 61 2e 63 68 6f 72 64 28 27 43 37 73 75 73 34 ia.chord('C7sus4
07b0: 27 29 2e 73 69 6d 70 6c 65 28 29 2c 20 5b 27 63 ').simple(), ['c
07c0: 27 2c 20 27 66 27 2c 20 27 67 27 2c 20 27 62 62 ', 'f', 'g', 'bb
07d0: 27 5d 29 3b 0a 20 20 20 20 7d 2c 0a 0a 20 20 20 ']);. },..
07e0: 20 27 43 6d 61 6a 39 27 3a 20 66 75 6e 63 74 69 'Cmaj9': functi
07f0: 6f 6e 28 29 20 7b 0a 20 20 20 20 20 20 61 73 73 on() {. ass
0800: 65 72 74 2e 64 65 65 70 45 71 75 61 6c 28 74 65 ert.deepEqual(te
0810: 6f 72 69 61 2e 63 68 6f 72 64 28 27 43 6d 61 6a oria.chord('Cmaj
0820: 39 27 29 2e 73 69 6d 70 6c 65 28 29 2c 20 5b 27 9').simple(), ['
0830: 63 27 2c 20 27 65 27 2c 20 27 67 27 2c 20 27 62 c', 'e', 'g', 'b
0840: 27 2c 20 27 64 27 5d 29 3b 0a 20 20 20 20 7d 2c ', 'd']);. },
0850: 0a 0a 20 20 20 20 27 44 6d 62 36 27 3a 20 66 75 .. 'Dmb6': fu
0860: 6e 63 74 69 6f 6e 28 29 20 7b 0a 20 20 20 20 20 nction() {.
0870: 20 61 73 73 65 72 74 2e 64 65 65 70 45 71 75 61 assert.deepEqua
0880: 6c 28 74 65 6f 72 69 61 2e 63 68 6f 72 64 28 27 l(teoria.chord('
0890: 44 6d 62 36 27 29 2e 73 69 6d 70 6c 65 28 29 2c Dmb6').simple(),
08a0: 20 5b 27 64 27 2c 20 27 66 27 2c 20 27 61 27 2c ['d', 'f', 'a',
08b0: 20 27 62 62 27 5d 29 3b 0a 20 20 20 20 7d 2c 0a 'bb']);. },.
08c0: 0a 20 20 20 20 27 43 23 28 23 35 23 39 29 27 3a . 'C#(#5#9)':
08d0: 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0a 20 20 function() {.
08e0: 20 20 20 20 61 73 73 65 72 74 2e 64 65 65 70 45 assert.deepE
08f0: 71 75 61 6c 28 74 65 6f 72 69 61 2e 63 68 6f 72 qual(teoria.chor
0900: 64 28 27 43 23 28 23 35 23 39 29 27 29 2e 73 69 d('C#(#5#9)').si
0910: 6d 70 6c 65 28 29 2c 20 5b 27 63 23 27 2c 20 27 mple(), ['c#', '
0920: 65 23 27 2c 20 27 67 78 27 2c 20 27 62 27 2c 20 e#', 'gx', 'b',
0930: 27 64 78 27 5d 29 3b 0a 20 20 20 20 7d 2c 0a 0a 'dx']);. },..
0940: 20 20 20 20 27 43 6d 28 6d 61 6a 37 29 27 3a 20 'Cm(maj7)':
0950: 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0a 20 20 20 function() {.
0960: 20 20 20 61 73 73 65 72 74 2e 64 65 65 70 45 71 assert.deepEq
0970: 75 61 6c 28 74 65 6f 72 69 61 2e 63 68 6f 72 64 ual(teoria.chord
0980: 28 27 43 6d 28 6d 61 6a 37 29 27 29 2e 73 69 6d ('Cm(maj7)').sim
0990: 70 6c 65 28 29 2c 20 5b 27 63 27 2c 20 27 65 62 ple(), ['c', 'eb
09a0: 27 2c 20 27 67 27 2c 20 27 62 27 5d 29 3b 0a 20 ', 'g', 'b']);.
09b0: 20 20 20 7d 2c 0a 0a 20 20 20 20 27 46 23 6d 28 },.. 'F#m(
09c0: 31 31 62 35 62 39 29 27 3a 20 66 75 6e 63 74 69 11b5b9)': functi
09d0: 6f 6e 28 29 20 7b 0a 20 20 20 20 20 20 61 73 73 on() {. ass
09e0: 65 72 74 2e 64 65 65 70 45 71 75 61 6c 28 74 65 ert.deepEqual(te
09f0: 6f 72 69 61 2e 63 68 6f 72 64 28 27 46 23 6d 28 oria.chord('F#m(
0a00: 31 31 62 35 62 39 29 27 29 2e 73 69 6d 70 6c 65 11b5b9)').simple
0a10: 28 29 2c 20 5b 27 66 23 27 2c 20 27 61 27 2c 20 (), ['f#', 'a',
0a20: 27 63 27 2c 20 27 65 27 2c 20 27 67 27 2c 20 27 'c', 'e', 'g', '
0a30: 62 27 5d 29 3b 0a 20 20 20 20 7d 2c 0a 0a 20 20 b']);. },..
0a40: 20 20 27 43 2f 65 27 3a 20 66 75 6e 63 74 69 6f 'C/e': functio
0a50: 6e 28 29 20 7b 0a 20 20 20 20 20 20 61 73 73 65 n() {. asse
0a60: 72 74 2e 64 65 65 70 45 71 75 61 6c 28 74 65 6f rt.deepEqual(teo
0a70: 72 69 61 2e 63 68 6f 72 64 28 27 43 2f 65 27 29 ria.chord('C/e')
0a80: 2e 73 69 6d 70 6c 65 28 29 2c 20 5b 27 65 27 2c .simple(), ['e',
0a90: 20 27 63 27 2c 20 27 67 27 5d 29 3b 0a 20 20 20 'c', 'g']);.
0aa0: 20 7d 2c 0a 0a 20 20 20 20 27 41 37 2f 67 27 3a },.. 'A7/g':
0ab0: 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0a 20 20 function() {.
0ac0: 20 20 20 20 61 73 73 65 72 74 2e 64 65 65 70 45 assert.deepE
0ad0: 71 75 61 6c 28 74 65 6f 72 69 61 2e 63 68 6f 72 qual(teoria.chor
0ae0: 64 28 27 41 37 2f 67 27 29 2e 73 69 6d 70 6c 65 d('A7/g').simple
0af0: 28 29 2c 20 5b 27 67 27 2c 20 27 61 27 2c 20 27 (), ['g', 'a', '
0b00: 63 23 27 2c 20 27 65 27 5d 29 3b 0a 20 20 20 20 c#', 'e']);.
0b10: 7d 2c 0a 0a 20 20 20 20 27 47 2f 66 23 27 3a 20 },.. 'G/f#':
0b20: 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0a 20 20 20 function() {.
0b30: 20 20 20 61 73 73 65 72 74 2e 64 65 65 70 45 71 assert.deepEq
0b40: 75 61 6c 28 74 65 6f 72 69 61 2e 63 68 6f 72 64 ual(teoria.chord
0b50: 28 27 47 2f 66 23 27 29 2e 73 69 6d 70 6c 65 28 ('G/f#').simple(
0b60: 29 2c 20 5b 27 66 23 27 2c 20 27 67 27 2c 20 27 ), ['f#', 'g', '
0b70: 62 27 2c 20 27 64 27 5d 29 3b 0a 20 20 20 20 7d b', 'd']);. }
0b80: 2c 0a 0a 20 20 20 20 27 43 36 27 3a 20 66 75 6e ,.. 'C6': fun
0b90: 63 74 69 6f 6e 28 29 20 7b 0a 20 20 20 20 20 20 ction() {.
0ba0: 61 73 73 65 72 74 2e 64 65 65 70 45 71 75 61 6c assert.deepEqual
0bb0: 28 74 65 6f 72 69 61 2e 63 68 6f 72 64 28 27 43 (teoria.chord('C
0bc0: 36 27 29 2e 73 69 6d 70 6c 65 28 29 2c 20 5b 27 6').simple(), ['
0bd0: 63 27 2c 20 27 65 27 2c 20 27 67 27 2c 20 27 61 c', 'e', 'g', 'a
0be0: 27 5d 29 3b 0a 20 20 20 20 7d 2c 0a 0a 20 20 20 ']);. },..
0bf0: 20 27 41 23 36 27 3a 20 66 75 6e 63 74 69 6f 6e 'A#6': function
0c00: 28 29 20 7b 0a 20 20 20 20 20 20 61 73 73 65 72 () {. asser
0c10: 74 2e 64 65 65 70 45 71 75 61 6c 28 74 65 6f 72 t.deepEqual(teor
0c20: 69 61 2e 63 68 6f 72 64 28 27 41 23 36 27 29 2e ia.chord('A#6').
0c30: 73 69 6d 70 6c 65 28 29 2c 20 5b 27 61 23 27 2c simple(), ['a#',
0c40: 20 27 63 78 27 2c 20 27 65 23 27 2c 20 27 66 78 'cx', 'e#', 'fx
0c50: 27 5d 29 3b 0a 20 20 20 20 7d 2c 0a 0a 20 20 20 ']);. },..
0c60: 20 27 42 62 36 27 3a 20 66 75 6e 63 74 69 6f 6e 'Bb6': function
0c70: 28 29 20 7b 0a 20 20 20 20 20 20 61 73 73 65 72 () {. asser
0c80: 74 2e 64 65 65 70 45 71 75 61 6c 28 74 65 6f 72 t.deepEqual(teor
0c90: 69 61 2e 63 68 6f 72 64 28 27 42 62 36 27 29 2e ia.chord('Bb6').
0ca0: 73 69 6d 70 6c 65 28 29 2c 20 5b 27 62 62 27 2c simple(), ['bb',
0cb0: 20 27 64 27 2c 20 27 66 27 2c 20 27 67 27 5d 29 'd', 'f', 'g'])
0cc0: 3b 0a 20 20 20 20 7d 2c 0a 0a 20 20 20 20 27 41 ;. },.. 'A
0cd0: 6d 36 27 3a 20 66 75 6e 63 74 69 6f 6e 28 29 20 m6': function()
0ce0: 7b 0a 20 20 20 20 20 20 61 73 73 65 72 74 2e 64 {. assert.d
0cf0: 65 65 70 45 71 75 61 6c 28 74 65 6f 72 69 61 2e eepEqual(teoria.
0d00: 63 68 6f 72 64 28 27 41 6d 36 27 29 2e 73 69 6d chord('Am6').sim
0d10: 70 6c 65 28 29 2c 20 5b 27 61 27 2c 20 27 63 27 ple(), ['a', 'c'
0d20: 2c 20 27 65 27 2c 20 27 66 23 27 5d 29 3b 0a 20 , 'e', 'f#']);.
0d30: 20 20 20 7d 2c 0a 0a 20 20 20 20 27 44 28 23 36 },.. 'D(#6
0d40: 29 27 3a 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b )': function() {
0d50: 0a 20 20 20 20 20 20 61 73 73 65 72 74 2e 64 65 . assert.de
0d60: 65 70 45 71 75 61 6c 28 74 65 6f 72 69 61 2e 63 epEqual(teoria.c
0d70: 68 6f 72 64 28 27 44 28 23 36 29 27 29 2e 73 69 hord('D(#6)').si
0d80: 6d 70 6c 65 28 29 2c 20 5b 27 64 27 2c 20 27 66 mple(), ['d', 'f
0d90: 23 27 2c 20 27 61 27 2c 20 27 62 23 27 5d 29 3b #', 'a', 'b#']);
0da0: 0a 20 20 20 20 7d 2c 0a 0a 20 20 20 20 27 45 6f . },.. 'Eo
0db0: 27 3a 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0a ': function() {.
0dc0: 20 20 20 20 20 20 61 73 73 65 72 74 2e 64 65 65 assert.dee
0dd0: 70 45 71 75 61 6c 28 74 65 6f 72 69 61 2e 63 68 pEqual(teoria.ch
0de0: 6f 72 64 28 27 45 6f 27 29 2e 73 69 6d 70 6c 65 ord('Eo').simple
0df0: 28 29 2c 20 5b 27 65 27 2c 20 27 67 27 2c 20 27 (), ['e', 'g', '
0e00: 62 62 27 5d 29 3b 0a 20 20 20 20 7d 2c 0a 0a 20 bb']);. },..
0e10: 20 20 20 27 45 c3 b8 27 3a 20 66 75 6e 63 74 69 'E..': functi
0e20: 6f 6e 28 29 20 7b 0a 20 20 20 20 20 20 61 73 73 on() {. ass
0e30: 65 72 74 2e 64 65 65 70 45 71 75 61 6c 28 74 65 ert.deepEqual(te
0e40: 6f 72 69 61 2e 63 68 6f 72 64 28 27 45 c3 b8 27 oria.chord('E..'
0e50: 29 2e 73 69 6d 70 6c 65 28 29 2c 20 5b 27 65 27 ).simple(), ['e'
0e60: 2c 20 27 67 27 2c 20 27 62 62 27 2c 20 27 64 27 , 'g', 'bb', 'd'
0e70: 5d 29 3b 0a 20 20 20 20 7d 2c 0a 0a 20 20 20 20 ]);. },..
0e80: 27 44 6f 27 3a 20 66 75 6e 63 74 69 6f 6e 28 29 'Do': function()
0e90: 20 7b 0a 20 20 20 20 20 20 61 73 73 65 72 74 2e {. assert.
0ea0: 64 65 65 70 45 71 75 61 6c 28 74 65 6f 72 69 61 deepEqual(teoria
0eb0: 2e 63 68 6f 72 64 28 27 44 6f 27 29 2e 73 69 6d .chord('Do').sim
0ec0: 70 6c 65 28 29 2c 20 5b 27 64 27 2c 20 27 66 27 ple(), ['d', 'f'
0ed0: 2c 20 27 61 62 27 5d 29 3b 0a 20 20 20 20 7d 2c , 'ab']);. },
0ee0: 0a 0a 20 20 20 20 27 44 c3 b8 27 3a 20 66 75 6e .. 'D..': fun
0ef0: 63 74 69 6f 6e 28 29 20 7b 0a 20 20 20 20 20 20 ction() {.
0f00: 61 73 73 65 72 74 2e 64 65 65 70 45 71 75 61 6c assert.deepEqual
0f10: 28 74 65 6f 72 69 61 2e 63 68 6f 72 64 28 27 44 (teoria.chord('D
0f20: c3 b8 27 29 2e 73 69 6d 70 6c 65 28 29 2c 20 5b ..').simple(), [
0f30: 27 64 27 2c 20 27 66 27 2c 20 27 61 62 27 2c 20 'd', 'f', 'ab',
0f40: 27 63 27 5d 29 3b 0a 20 20 20 20 7d 2c 0a 0a 20 'c']);. },..
0f50: 20 20 20 27 46 6f 37 27 3a 20 66 75 6e 63 74 69 'Fo7': functi
0f60: 6f 6e 28 29 20 7b 0a 20 20 20 20 20 20 61 73 73 on() {. ass
0f70: 65 72 74 2e 64 65 65 70 45 71 75 61 6c 28 74 65 ert.deepEqual(te
0f80: 6f 72 69 61 2e 63 68 6f 72 64 28 27 46 6f 37 27 oria.chord('Fo7'
0f90: 29 2e 73 69 6d 70 6c 65 28 29 2c 20 5b 27 66 27 ).simple(), ['f'
0fa0: 2c 20 27 61 62 27 2c 20 27 63 62 27 2c 20 27 65 , 'ab', 'cb', 'e
0fb0: 62 62 27 5d 29 3b 0a 20 20 20 20 7d 2c 0a 0a 20 bb']);. },..
0fc0: 20 20 20 27 47 23 c3 b8 37 27 3a 20 66 75 6e 63 'G#..7': func
0fd0: 74 69 6f 6e 28 29 20 7b 0a 20 20 20 20 20 20 61 tion() {. a
0fe0: 73 73 65 72 74 2e 64 65 65 70 45 71 75 61 6c 28 ssert.deepEqual(
0ff0: 74 65 6f 72 69 61 2e 63 68 6f 72 64 28 27 47 23 teoria.chord('G#
1000: c3 b8 37 27 29 2e 73 69 6d 70 6c 65 28 29 2c 20 ..7').simple(),
1010: 5b 27 67 23 27 2c 20 27 62 27 2c 20 27 64 27 2c ['g#', 'b', 'd',
1020: 20 27 66 23 27 5d 29 3b 0a 20 20 20 20 7d 2c 0a 'f#']);. },.
1030: 0a 20 20 20 20 27 43 6d 69 6e 27 3a 20 66 75 6e . 'Cmin': fun
1040: 63 74 69 6f 6e 28 29 20 7b 0a 20 20 20 20 20 20 ction() {.
1050: 61 73 73 65 72 74 2e 64 65 65 70 45 71 75 61 6c assert.deepEqual
1060: 28 74 65 6f 72 69 61 2e 63 68 6f 72 64 28 27 43 (teoria.chord('C
1070: 6d 69 6e 27 29 2e 73 69 6d 70 6c 65 28 29 2c 20 min').simple(),
1080: 5b 27 63 27 2c 20 27 65 62 27 2c 20 27 67 27 5d ['c', 'eb', 'g']
1090: 29 3b 0a 20 20 20 20 7d 2c 0a 0a 20 20 20 20 27 );. },.. '
10a0: 42 6d 69 6e 31 31 27 3a 20 66 75 6e 63 74 69 6f Bmin11': functio
10b0: 6e 28 29 20 7b 0a 20 20 20 20 20 20 61 73 73 65 n() {. asse
10c0: 72 74 2e 64 65 65 70 45 71 75 61 6c 28 74 65 6f rt.deepEqual(teo
10d0: 72 69 61 2e 63 68 6f 72 64 28 27 42 6d 69 6e 31 ria.chord('Bmin1
10e0: 31 27 29 2e 73 69 6d 70 6c 65 28 29 2c 20 5b 27 1').simple(), ['
10f0: 62 27 2c 20 27 64 27 2c 20 27 66 23 27 2c 20 27 b', 'd', 'f#', '
1100: 61 27 2c 20 27 63 23 27 2c 20 27 65 27 5d 29 3b a', 'c#', 'e']);
1110: 0a 20 20 20 20 7d 2c 0a 0a 20 20 20 20 27 43 2b . },.. 'C+
1120: 4d 37 27 3a 20 66 75 6e 63 74 69 6f 6e 28 29 20 M7': function()
1130: 7b 0a 20 20 20 20 20 20 61 73 73 65 72 74 2e 64 {. assert.d
1140: 65 65 70 45 71 75 61 6c 28 74 65 6f 72 69 61 2e eepEqual(teoria.
1150: 63 68 6f 72 64 28 27 43 2b 4d 37 27 29 2e 73 69 chord('C+M7').si
1160: 6d 70 6c 65 28 29 2c 20 5b 27 63 27 2c 20 27 65 mple(), ['c', 'e
1170: 27 2c 20 27 67 23 27 2c 20 27 62 27 5d 29 3b 0a ', 'g#', 'b']);.
1180: 20 20 20 20 7d 2c 0a 0a 20 20 20 20 27 42 62 64 },.. 'Bbd
1190: 6f 6d 37 62 35 27 3a 20 66 75 6e 63 74 69 6f 6e om7b5': function
11a0: 28 29 20 7b 0a 20 20 20 20 20 20 61 73 73 65 72 () {. asser
11b0: 74 2e 64 65 65 70 45 71 75 61 6c 28 74 65 6f 72 t.deepEqual(teor
11c0: 69 61 2e 63 68 6f 72 64 28 27 42 62 64 6f 6d 37 ia.chord('Bbdom7
11d0: 62 35 27 29 2e 73 69 6d 70 6c 65 28 29 2c 20 5b b5').simple(), [
11e0: 27 62 62 27 2c 20 27 64 27 2c 20 27 66 62 27 2c 'bb', 'd', 'fb',
11f0: 20 27 61 62 27 5d 29 3b 0a 20 20 20 20 7d 2c 0a 'ab']);. },.
1200: 0a 20 20 20 20 27 45 35 27 3a 20 66 75 6e 63 74 . 'E5': funct
1210: 69 6f 6e 28 29 20 7b 0a 20 20 20 20 20 20 61 73 ion() {. as
1220: 73 65 72 74 2e 64 65 65 70 45 71 75 61 6c 28 74 sert.deepEqual(t
1230: 65 6f 72 69 61 2e 63 68 6f 72 64 28 27 45 35 27 eoria.chord('E5'
1240: 29 2e 73 69 6d 70 6c 65 28 29 2c 20 5b 27 65 27 ).simple(), ['e'
1250: 2c 20 27 62 27 5d 29 3b 0a 20 20 20 20 7d 2c 0a , 'b']);. },.
1260: 0a 20 20 20 20 27 41 35 27 3a 20 66 75 6e 63 74 . 'A5': funct
1270: 69 6f 6e 28 29 20 7b 0a 20 20 20 20 20 20 61 73 ion() {. as
1280: 73 65 72 74 2e 64 65 65 70 45 71 75 61 6c 28 74 sert.deepEqual(t
1290: 65 6f 72 69 61 2e 63 68 6f 72 64 28 27 41 35 27 eoria.chord('A5'
12a0: 29 2e 73 69 6d 70 6c 65 28 29 2c 20 5b 27 61 27 ).simple(), ['a'
12b0: 2c 20 27 65 27 5d 29 3b 0a 20 20 20 20 7d 2c 0a , 'e']);. },.
12c0: 0a 20 20 20 20 27 43 31 33 23 39 62 35 27 3a 20 . 'C13#9b5':
12d0: 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0a 20 20 20 function() {.
12e0: 20 20 20 61 73 73 65 72 74 2e 64 65 65 70 45 71 assert.deepEq
12f0: 75 61 6c 28 74 65 6f 72 69 61 2e 63 68 6f 72 64 ual(teoria.chord
1300: 28 27 43 31 33 23 39 62 35 27 29 2e 73 69 6d 70 ('C13#9b5').simp
1310: 6c 65 28 29 2c 20 5b 27 63 27 2c 20 27 65 27 2c le(), ['c', 'e',
1320: 20 27 67 62 27 2c 20 27 62 62 27 2c 20 27 64 23 'gb', 'bb', 'd#
1330: 27 2c 20 27 66 27 2c 20 27 61 27 5d 29 3b 0a 20 ', 'f', 'a']);.
1340: 20 20 20 7d 2c 0a 0a 20 20 20 20 27 44 31 33 23 },.. 'D13#
1350: 35 62 39 27 3a 20 66 75 6e 63 74 69 6f 6e 28 29 5b9': function()
1360: 20 7b 0a 20 20 20 20 20 20 61 73 73 65 72 74 2e {. assert.
1370: 64 65 65 70 45 71 75 61 6c 28 74 65 6f 72 69 61 deepEqual(teoria
1380: 2e 63 68 6f 72 64 28 27 44 31 33 23 35 62 39 27 .chord('D13#5b9'
1390: 29 2e 73 69 6d 70 6c 65 28 29 2c 20 5b 27 64 27 ).simple(), ['d'
13a0: 2c 20 27 66 23 27 2c 20 27 61 23 27 2c 20 27 63 , 'f#', 'a#', 'c
13b0: 27 2c 20 27 65 62 27 2c 20 27 67 27 2c 20 27 62 ', 'eb', 'g', 'b
13c0: 27 5d 29 3b 0a 20 20 20 20 7d 2c 0a 0a 20 20 20 ']);. },..
13d0: 20 27 43 36 2f 39 27 3a 20 66 75 6e 63 74 69 6f 'C6/9': functio
13e0: 6e 28 29 20 7b 0a 20 20 20 20 20 20 61 73 73 65 n() {. asse
13f0: 72 74 2e 64 65 65 70 45 71 75 61 6c 28 74 65 6f rt.deepEqual(teo
1400: 72 69 61 2e 63 68 6f 72 64 28 27 43 36 2f 39 27 ria.chord('C6/9'
1410: 29 2e 73 69 6d 70 6c 65 28 29 2c 20 5b 27 63 27 ).simple(), ['c'
1420: 2c 20 27 65 27 2c 20 27 67 27 2c 20 27 61 27 2c , 'e', 'g', 'a',
1430: 20 27 64 27 5d 29 3b 0a 20 20 20 20 7d 2c 0a 0a 'd']);. },..
1440: 20 20 20 20 27 41 62 36 2f 39 27 3a 20 66 75 6e 'Ab6/9': fun
1450: 63 74 69 6f 6e 28 29 20 7b 0a 20 20 20 20 20 20 ction() {.
1460: 61 73 73 65 72 74 2e 64 65 65 70 45 71 75 61 6c assert.deepEqual
1470: 28 74 65 6f 72 69 61 2e 63 68 6f 72 64 28 27 41 (teoria.chord('A
1480: 62 36 2f 39 27 29 2e 73 69 6d 70 6c 65 28 29 2c b6/9').simple(),
1490: 20 5b 27 61 62 27 2c 20 27 63 27 2c 20 27 65 62 ['ab', 'c', 'eb
14a0: 27 2c 20 27 66 27 2c 20 27 62 62 27 5d 29 3b 0a ', 'f', 'bb']);.
14b0: 20 20 20 20 7d 2c 0a 0a 20 20 20 20 27 43 4d 37 },.. 'CM7
14c0: 27 3a 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0a ': function() {.
14d0: 20 20 20 20 20 20 61 73 73 65 72 74 2e 64 65 65 assert.dee
14e0: 70 45 71 75 61 6c 28 74 65 6f 72 69 61 2e 63 68 pEqual(teoria.ch
14f0: 6f 72 64 28 27 43 4d 37 27 29 2e 73 69 6d 70 6c ord('CM7').simpl
1500: 65 28 29 2c 20 5b 27 63 27 2c 20 27 65 27 2c 20 e(), ['c', 'e',
1510: 27 67 27 2c 20 27 62 27 5d 29 3b 0a 20 20 20 20 'g', 'b']);.
1520: 7d 2c 0a 0a 20 20 20 20 27 43 6d 4d 37 27 3a 20 },.. 'CmM7':
1530: 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0a 20 20 20 function() {.
1540: 20 20 20 61 73 73 65 72 74 2e 64 65 65 70 45 71 assert.deepEq
1550: 75 61 6c 28 74 65 6f 72 69 61 2e 63 68 6f 72 64 ual(teoria.chord
1560: 28 27 43 6d 4d 37 27 29 2e 73 69 6d 70 6c 65 28 ('CmM7').simple(
1570: 29 2c 20 5b 27 63 27 2c 20 27 65 62 27 2c 20 27 ), ['c', 'eb', '
1580: 67 27 2c 20 27 62 27 5d 29 3b 0a 20 20 20 20 7d g', 'b']);. }
1590: 2c 0a 0a 20 20 20 20 27 44 4d 27 3a 20 66 75 6e ,.. 'DM': fun
15a0: 63 74 69 6f 6e 28 29 20 7b 0a 20 20 20 20 20 20 ction() {.
15b0: 61 73 73 65 72 74 2e 64 65 65 70 45 71 75 61 6c assert.deepEqual
15c0: 28 74 65 6f 72 69 61 2e 63 68 6f 72 64 28 27 44 (teoria.chord('D
15d0: 4d 27 29 2e 73 69 6d 70 6c 65 28 29 2c 20 5b 27 M').simple(), ['
15e0: 64 27 2c 20 27 66 23 27 2c 20 27 61 27 5d 29 3b d', 'f#', 'a']);
15f0: 0a 20 20 20 20 7d 2c 0a 0a 20 20 20 20 27 45 4d . },.. 'EM
1600: 23 35 27 3a 20 66 75 6e 63 74 69 6f 6e 28 29 20 #5': function()
1610: 7b 0a 20 20 20 20 20 20 61 73 73 65 72 74 2e 64 {. assert.d
1620: 65 65 70 45 71 75 61 6c 28 74 65 6f 72 69 61 2e eepEqual(teoria.
1630: 63 68 6f 72 64 28 27 45 4d 23 35 27 29 2e 73 69 chord('EM#5').si
1640: 6d 70 6c 65 28 29 2c 20 5b 27 65 27 2c 20 27 67 mple(), ['e', 'g
1650: 23 27 2c 20 27 62 23 27 5d 29 3b 0a 20 20 20 20 #', 'b#']);.
1660: 7d 2c 0a 0a 20 20 20 20 27 46 4d 39 27 3a 20 66 },.. 'FM9': f
1670: 75 6e 63 74 69 6f 6e 28 29 20 7b 0a 20 20 20 20 unction() {.
1680: 20 20 61 73 73 65 72 74 2e 64 65 65 70 45 71 75 assert.deepEqu
1690: 61 6c 28 74 65 6f 72 69 61 2e 63 68 6f 72 64 28 al(teoria.chord(
16a0: 27 46 4d 39 27 29 2e 73 69 6d 70 6c 65 28 29 2c 'FM9').simple(),
16b0: 20 5b 27 66 27 2c 20 27 61 27 2c 20 27 63 27 2c ['f', 'a', 'c',
16c0: 20 27 65 27 2c 20 27 67 27 5d 29 3b 0a 20 20 20 'e', 'g']);.
16d0: 20 7d 2c 0a 0a 20 20 20 20 27 44 6d 69 27 3a 20 },.. 'Dmi':
16e0: 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0a 20 20 20 function() {.
16f0: 20 20 20 61 73 73 65 72 74 2e 64 65 65 70 45 71 assert.deepEq
1700: 75 61 6c 28 74 65 6f 72 69 61 2e 63 68 6f 72 64 ual(teoria.chord
1710: 28 27 44 6d 69 27 29 2e 73 69 6d 70 6c 65 28 29 ('Dmi').simple()
1720: 2c 20 5b 27 64 27 2c 20 27 66 27 2c 20 27 61 27 , ['d', 'f', 'a'
1730: 5d 29 3b 0a 0a 20 20 20 20 7d 2c 0a 0a 20 20 20 ]);.. },..
1740: 20 27 45 6d 69 37 27 3a 20 66 75 6e 63 74 69 6f 'Emi7': functio
1750: 6e 28 29 20 7b 0a 20 20 20 20 20 20 61 73 73 65 n() {. asse
1760: 72 74 2e 64 65 65 70 45 71 75 61 6c 28 74 65 6f rt.deepEqual(teo
1770: 72 69 61 2e 63 68 6f 72 64 28 27 45 6d 69 37 27 ria.chord('Emi7'
1780: 29 2e 73 69 6d 70 6c 65 28 29 2c 20 5b 27 65 27 ).simple(), ['e'
1790: 2c 20 27 67 27 2c 20 27 62 27 2c 20 27 64 27 5d , 'g', 'b', 'd']
17a0: 29 3b 0a 20 20 20 20 7d 2c 0a 0a 20 20 20 20 27 );. },.. '
17b0: 44 6d 61 27 3a 20 66 75 6e 63 74 69 6f 6e 28 29 Dma': function()
17c0: 20 7b 0a 20 20 20 20 20 20 61 73 73 65 72 74 2e {. assert.
17d0: 64 65 65 70 45 71 75 61 6c 28 74 65 6f 72 69 61 deepEqual(teoria
17e0: 2e 63 68 6f 72 64 28 27 44 6d 61 27 29 2e 73 69 .chord('Dma').si
17f0: 6d 70 6c 65 28 29 2c 20 5b 27 64 27 2c 20 27 66 mple(), ['d', 'f
1800: 23 27 2c 20 27 61 27 5d 29 3b 0a 20 20 20 20 7d #', 'a']);. }
1810: 2c 0a 0a 20 20 20 20 27 45 6d 61 39 27 3a 20 66 ,.. 'Ema9': f
1820: 75 6e 63 74 69 6f 6e 28 29 20 7b 0a 20 20 20 20 unction() {.
1830: 20 20 61 73 73 65 72 74 2e 64 65 65 70 45 71 75 assert.deepEqu
1840: 61 6c 28 74 65 6f 72 69 61 2e 63 68 6f 72 64 28 al(teoria.chord(
1850: 27 45 6d 61 39 27 29 2e 73 69 6d 70 6c 65 28 29 'Ema9').simple()
1860: 2c 20 5b 27 65 27 2c 20 27 67 23 27 2c 20 27 62 , ['e', 'g#', 'b
1870: 27 2c 20 27 64 23 27 2c 20 27 66 23 27 5d 29 3b ', 'd#', 'f#']);
1880: 0a 20 20 20 20 7d 0a 20 20 7d 2c 0a 0a 20 20 27 . }. },.. '
1890: 43 61 73 65 20 64 6f 65 73 6e 5c 27 74 20 6d 61 Case doesn\'t ma
18a0: 74 74 65 72 27 3a 20 7b 0a 20 20 20 20 27 42 62 tter': {. 'Bb
18b0: 44 6f 6d 27 3a 20 66 75 6e 63 74 69 6f 6e 28 29 Dom': function()
18c0: 20 7b 0a 20 20 20 20 20 20 61 73 73 65 72 74 2e {. assert.
18d0: 64 65 65 70 45 71 75 61 6c 28 74 65 6f 72 69 61 deepEqual(teoria
18e0: 2e 63 68 6f 72 64 28 27 42 62 44 6f 6d 27 29 2e .chord('BbDom').
18f0: 73 69 6d 70 6c 65 28 29 2c 20 74 65 6f 72 69 61 simple(), teoria
1900: 2e 63 68 6f 72 64 28 27 42 62 64 6f 6d 27 29 2e .chord('Bbdom').
1910: 73 69 6d 70 6c 65 28 29 29 3b 0a 20 20 20 20 7d simple());. }
1920: 2c 0a 0a 20 20 20 20 27 45 62 4d 61 6a 39 27 3a ,.. 'EbMaj9':
1930: 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0a 20 20 function() {.
1940: 20 20 20 20 61 73 73 65 72 74 2e 64 65 65 70 45 assert.deepE
1950: 71 75 61 6c 28 74 65 6f 72 69 61 2e 63 68 6f 72 qual(teoria.chor
1960: 64 28 27 45 62 4d 61 6a 39 27 29 2e 73 69 6d 70 d('EbMaj9').simp
1970: 6c 65 28 29 2c 20 74 65 6f 72 69 61 2e 63 68 6f le(), teoria.cho
1980: 72 64 28 27 45 62 6d 61 6a 39 27 29 2e 73 69 6d rd('Ebmaj9').sim
1990: 70 6c 65 28 29 29 3b 0a 20 20 20 20 7d 2c 0a 0a ple());. },..
19a0: 20 20 20 20 27 41 53 75 73 34 27 3a 20 66 75 6e 'ASus4': fun
19b0: 63 74 69 6f 6e 28 29 20 7b 0a 20 20 20 20 20 20 ction() {.
19c0: 61 73 73 65 72 74 2e 64 65 65 70 45 71 75 61 6c assert.deepEqual
19d0: 28 74 65 6f 72 69 61 2e 63 68 6f 72 64 28 27 41 (teoria.chord('A
19e0: 53 75 73 34 27 29 2e 73 69 6d 70 6c 65 28 29 2c Sus4').simple(),
19f0: 20 74 65 6f 72 69 61 2e 63 68 6f 72 64 28 27 41 teoria.chord('A
1a00: 73 75 73 34 27 29 2e 73 69 6d 70 6c 65 28 29 29 sus4').simple())
1a10: 3b 0a 20 20 20 20 7d 2c 0a 0a 20 20 20 20 27 45 ;. },.. 'E
1a20: 41 64 64 39 27 3a 20 66 75 6e 63 74 69 6f 6e 28 Add9': function(
1a30: 29 20 7b 0a 20 20 20 20 20 20 61 73 73 65 72 74 ) {. assert
1a40: 2e 64 65 65 70 45 71 75 61 6c 28 74 65 6f 72 69 .deepEqual(teori
1a50: 61 2e 63 68 6f 72 64 28 27 45 41 64 64 39 27 29 a.chord('EAdd9')
1a60: 2e 73 69 6d 70 6c 65 28 29 2c 20 74 65 6f 72 69 .simple(), teori
1a70: 61 2e 63 68 6f 72 64 28 27 45 61 64 64 39 27 29 a.chord('Eadd9')
1a80: 2e 73 69 6d 70 6c 65 28 29 29 3b 0a 20 20 20 20 .simple());.
1a90: 7d 0a 20 20 7d 2c 0a 0a 20 20 27 43 68 6f 72 64 }. },.. 'Chord
1aa0: 20 4d 65 74 68 6f 64 73 27 3a 20 7b 0a 20 20 20 Methods': {.
1ab0: 20 27 23 62 61 73 73 20 6f 66 20 43 6d 61 6a 37 '#bass of Cmaj7
1ac0: 27 3a 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0a ': function() {.
1ad0: 20 20 20 20 20 20 61 73 73 65 72 74 2e 65 71 75 assert.equ
1ae0: 61 6c 28 74 65 6f 72 69 61 2e 63 68 6f 72 64 28 al(teoria.chord(
1af0: 27 43 6d 61 6a 37 27 29 2e 62 61 73 73 28 29 2e 'Cmaj7').bass().
1b00: 74 6f 53 74 72 69 6e 67 28 74 72 75 65 29 2c 20 toString(true),
1b10: 27 63 27 29 3b 0a 20 20 20 20 7d 2c 0a 0a 20 20 'c');. },..
1b20: 20 20 27 23 62 61 73 73 20 6f 66 20 41 2f 43 23 '#bass of A/C#
1b30: 27 3a 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0a ': function() {.
1b40: 20 20 20 20 20 20 61 73 73 65 72 74 2e 65 71 75 assert.equ
1b50: 61 6c 28 74 65 6f 72 69 61 2e 63 68 6f 72 64 28 al(teoria.chord(
1b60: 27 41 2f 43 23 27 29 2e 62 61 73 73 28 29 2e 74 'A/C#').bass().t
1b70: 6f 53 74 72 69 6e 67 28 74 72 75 65 29 2c 20 27 oString(true), '
1b80: 63 23 27 29 3b 0a 20 20 20 20 7d 2c 0a 0a 20 20 c#');. },..
1b90: 20 20 27 23 62 61 73 73 20 6f 66 20 44 36 2f 39 '#bass of D6/9
1ba0: 27 3a 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0a ': function() {.
1bb0: 20 20 20 20 20 20 61 73 73 65 72 74 2e 65 71 75 assert.equ
1bc0: 61 6c 28 74 65 6f 72 69 61 2e 63 68 6f 72 64 28 al(teoria.chord(
1bd0: 27 44 36 2f 39 27 29 2e 62 61 73 73 28 29 2e 74 'D6/9').bass().t
1be0: 6f 53 74 72 69 6e 67 28 74 72 75 65 29 2c 20 27 oString(true), '
1bf0: 64 27 29 3b 0a 20 20 20 20 7d 2c 0a 0a 20 20 20 d');. },..
1c00: 20 27 23 71 75 61 6c 69 74 79 28 29 20 6f 66 20 '#quality() of
1c10: 42 6d 61 6a 37 27 3a 20 66 75 6e 63 74 69 6f 6e Bmaj7': function
1c20: 28 29 20 7b 0a 20 20 20 20 20 20 61 73 73 65 72 () {. asser
1c30: 74 2e 65 71 75 61 6c 28 74 65 6f 72 69 61 2e 63 t.equal(teoria.c
1c40: 68 6f 72 64 28 27 42 6d 61 6a 37 27 29 2e 71 75 hord('Bmaj7').qu
1c50: 61 6c 69 74 79 28 29 2c 20 27 6d 61 6a 6f 72 27 ality(), 'major'
1c60: 29 3b 0a 20 20 20 20 7d 2c 0a 0a 20 20 20 20 27 );. },.. '
1c70: 23 71 75 61 6c 69 74 79 28 29 20 6f 66 20 45 37 #quality() of E7
1c80: 27 3a 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0a ': function() {.
1c90: 20 20 20 20 20 20 61 73 73 65 72 74 2e 65 71 75 assert.equ
1ca0: 61 6c 28 74 65 6f 72 69 61 2e 63 68 6f 72 64 28 al(teoria.chord(
1cb0: 27 45 37 27 29 2e 71 75 61 6c 69 74 79 28 29 2c 'E7').quality(),
1cc0: 20 27 64 6f 6d 69 6e 61 6e 74 27 29 3b 0a 20 20 'dominant');.
1cd0: 20 20 7d 2c 0a 0a 20 20 20 20 27 23 71 75 61 6c },.. '#qual
1ce0: 69 74 79 28 29 20 6f 66 20 44 62 6d 37 62 35 27 ity() of Dbm7b5'
1cf0: 3a 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0a 20 : function() {.
1d00: 20 20 20 20 20 61 73 73 65 72 74 2e 65 71 75 61 assert.equa
1d10: 6c 28 74 65 6f 72 69 61 2e 63 68 6f 72 64 28 27 l(teoria.chord('
1d20: 44 62 6d 37 62 35 27 29 2e 71 75 61 6c 69 74 79 Dbm7b5').quality
1d30: 28 29 2c 20 27 68 61 6c 66 2d 64 69 6d 69 6e 69 (), 'half-dimini
1d40: 73 68 65 64 27 29 3b 0a 20 20 20 20 7d 2c 0a 0a shed');. },..
1d50: 20 20 20 20 27 23 71 75 61 6c 69 74 79 28 29 20 '#quality()
1d60: 6f 66 20 43 6d 69 6e 31 31 27 3a 20 66 75 6e 63 of Cmin11': func
1d70: 74 69 6f 6e 28 29 20 7b 0a 20 20 20 20 20 20 61 tion() {. a
1d80: 73 73 65 72 74 2e 65 71 75 61 6c 28 74 65 6f 72 ssert.equal(teor
1d90: 69 61 2e 63 68 6f 72 64 28 27 43 6d 69 6e 31 31 ia.chord('Cmin11
1da0: 27 29 2e 71 75 61 6c 69 74 79 28 29 2c 20 27 6d ').quality(), 'm
1db0: 69 6e 6f 72 27 29 3b 0a 20 20 20 20 7d 2c 0a 0a inor');. },..
1dc0: 20 20 20 20 27 23 71 75 61 6c 69 74 79 28 29 20 '#quality()
1dd0: 6f 66 20 41 2b 27 3a 20 66 75 6e 63 74 69 6f 6e of A+': function
1de0: 28 29 20 7b 0a 20 20 20 20 20 20 61 73 73 65 72 () {. asser
1df0: 74 2e 65 71 75 61 6c 28 74 65 6f 72 69 61 2e 63 t.equal(teoria.c
1e00: 68 6f 72 64 28 27 41 2b 27 29 2e 71 75 61 6c 69 hord('A+').quali
1e10: 74 79 28 29 2c 20 27 61 75 67 6d 65 6e 74 65 64 ty(), 'augmented
1e20: 27 29 3b 0a 20 20 20 20 7d 2c 0a 0a 20 20 20 20 ');. },..
1e30: 27 23 71 75 61 6c 69 74 79 28 29 20 6f 66 20 41 '#quality() of A
1e40: 23 28 62 31 33 29 27 3a 20 66 75 6e 63 74 69 6f #(b13)': functio
1e50: 6e 28 29 20 7b 0a 20 20 20 20 20 20 61 73 73 65 n() {. asse
1e60: 72 74 2e 65 71 75 61 6c 28 74 65 6f 72 69 61 2e rt.equal(teoria.
1e70: 63 68 6f 72 64 28 27 41 23 28 62 31 33 29 27 29 chord('A#(b13)')
1e80: 2e 71 75 61 6c 69 74 79 28 29 2c 20 27 64 6f 6d .quality(), 'dom
1e90: 69 6e 61 6e 74 27 29 3b 0a 20 20 20 20 7d 2c 0a inant');. },.
1ea0: 0a 20 20 20 20 27 23 71 75 61 6c 69 74 79 28 29 . '#quality()
1eb0: 20 6f 66 20 47 6d 62 35 27 3a 20 66 75 6e 63 74 of Gmb5': funct
1ec0: 69 6f 6e 28 29 20 7b 0a 20 20 20 20 20 20 61 73 ion() {. as
1ed0: 73 65 72 74 2e 65 71 75 61 6c 28 74 65 6f 72 69 sert.equal(teori
1ee0: 61 2e 63 68 6f 72 64 28 27 47 6d 62 35 27 29 2e a.chord('Gmb5').
1ef0: 71 75 61 6c 69 74 79 28 29 2c 20 27 64 69 6d 69 quality(), 'dimi
1f00: 6e 69 73 68 65 64 27 29 3b 0a 20 20 20 20 7d 2c nished');. },
1f10: 0a 0a 20 20 20 20 27 23 71 75 61 6c 69 74 79 28 .. '#quality(
1f20: 29 20 6f 66 20 41 73 75 73 34 27 3a 20 66 75 6e ) of Asus4': fun
1f30: 63 74 69 6f 6e 28 29 20 7b 0a 20 20 20 20 20 20 ction() {.
1f40: 61 73 73 65 72 74 2e 65 71 75 61 6c 28 74 65 6f assert.equal(teo
1f50: 72 69 61 2e 63 68 6f 72 64 28 27 41 73 75 73 34 ria.chord('Asus4
1f60: 27 29 2e 71 75 61 6c 69 74 79 28 29 2c 20 75 6e ').quality(), un
1f70: 64 65 66 69 6e 65 64 29 3b 0a 20 20 20 20 7d 2c defined);. },
1f80: 0a 0a 20 20 20 20 27 23 71 75 61 6c 69 74 79 28 .. '#quality(
1f90: 29 20 6f 66 20 46 6d 23 35 27 3a 20 66 75 6e 63 ) of Fm#5': func
1fa0: 74 69 6f 6e 28 29 20 7b 0a 20 20 20 20 20 20 61 tion() {. a
1fb0: 73 73 65 72 74 2e 65 71 75 61 6c 28 74 65 6f 72 ssert.equal(teor
1fc0: 69 61 2e 63 68 6f 72 64 28 27 46 6d 23 35 27 29 ia.chord('Fm#5')
1fd0: 2e 71 75 61 6c 69 74 79 28 29 2c 20 27 6d 69 6e .quality(), 'min
1fe0: 6f 72 27 29 3b 0a 20 20 20 20 7d 2c 0a 0a 20 20 or');. },..
1ff0: 20 20 27 23 63 68 6f 72 64 54 79 70 65 28 29 20 '#chordType()
2000: 6f 66 20 43 27 3a 20 66 75 6e 63 74 69 6f 6e 28 of C': function(
2010: 29 20 7b 0a 20 20 20 20 20 20 61 73 73 65 72 74 ) {. assert
2020: 2e 65 71 75 61 6c 28 74 65 6f 72 69 61 2e 63 68 .equal(teoria.ch
2030: 6f 72 64 28 27 43 27 29 2e 63 68 6f 72 64 54 79 ord('C').chordTy
2040: 70 65 28 29 2c 20 27 74 72 69 61 64 27 29 3b 0a pe(), 'triad');.
2050: 20 20 20 20 7d 2c 0a 0a 20 20 20 20 27 23 63 68 },.. '#ch
2060: 6f 72 64 54 79 70 65 28 29 20 6f 66 20 44 6d 27 ordType() of Dm'
2070: 3a 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0a 20 : function() {.
2080: 20 20 20 20 20 61 73 73 65 72 74 2e 65 71 75 61 assert.equa
2090: 6c 28 74 65 6f 72 69 61 2e 63 68 6f 72 64 28 27 l(teoria.chord('
20a0: 44 6d 27 29 2e 63 68 6f 72 64 54 79 70 65 28 29 Dm').chordType()
20b0: 2c 20 27 74 72 69 61 64 27 29 3b 0a 20 20 20 20 , 'triad');.
20c0: 7d 2c 0a 0a 20 20 20 20 27 23 63 68 6f 72 64 54 },.. '#chordT
20d0: 79 70 65 28 29 20 6f 66 20 41 37 27 3a 20 66 75 ype() of A7': fu
20e0: 6e 63 74 69 6f 6e 28 29 20 7b 0a 20 20 20 20 20 nction() {.
20f0: 20 61 73 73 65 72 74 2e 65 71 75 61 6c 28 74 65 assert.equal(te
2100: 6f 72 69 61 2e 63 68 6f 72 64 28 27 41 37 27 29 oria.chord('A7')
2110: 2e 63 68 6f 72 64 54 79 70 65 28 29 2c 20 27 74 .chordType(), 't
2120: 65 74 72 61 64 27 29 3b 0a 20 20 20 20 7d 2c 0a etrad');. },.
2130: 0a 20 20 20 20 27 23 63 68 6f 72 64 54 79 70 65 . '#chordType
2140: 28 29 20 6f 66 20 42 73 75 73 34 27 3a 20 66 75 () of Bsus4': fu
2150: 6e 63 74 69 6f 6e 28 29 20 7b 0a 20 20 20 20 20 nction() {.
2160: 20 61 73 73 65 72 74 2e 65 71 75 61 6c 28 74 65 assert.equal(te
2170: 6f 72 69 61 2e 63 68 6f 72 64 28 27 42 73 75 73 oria.chord('Bsus
2180: 34 27 29 2e 63 68 6f 72 64 54 79 70 65 28 29 2c 4').chordType(),
2190: 20 27 74 72 69 63 68 6f 72 64 27 29 3b 0a 20 20 'trichord');.
21a0: 20 20 7d 2c 0a 0a 20 20 20 20 27 23 63 68 6f 72 },.. '#chor
21b0: 64 54 79 70 65 28 29 20 6f 66 20 45 35 27 3a 20 dType() of E5':
21c0: 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0a 20 20 20 function() {.
21d0: 20 20 20 61 73 73 65 72 74 2e 65 71 75 61 6c 28 assert.equal(
21e0: 74 65 6f 72 69 61 2e 63 68 6f 72 64 28 27 45 35 teoria.chord('E5
21f0: 27 29 2e 63 68 6f 72 64 54 79 70 65 28 29 2c 20 ').chordType(),
2200: 27 64 79 61 64 27 29 3b 0a 20 20 20 20 7d 2c 0a 'dyad');. },.
2210: 20 20 7d 0a 7d 29 2e 65 78 70 6f 72 74 28 6d 6f }.}).export(mo
2220: 64 75 6c 65 29 3b 0a dule);.