Artifact
33d19bafe2391d02181f4681918af14c5bc88fdb73a1ac7d39e2846d769cb88b:
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 53 6f 6c 66 65 67 65 escribe('Solfege
0070: 27 29 2e 61 64 64 42 61 74 63 68 28 7b 0a 20 20 ').addBatch({.
0080: 27 43 20 69 6e 20 43 20 6d 69 6e 6f 72 27 3a 20 'C in C minor':
0090: 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0a 20 20 20 function() {.
00a0: 20 76 61 72 20 6e 6f 74 65 20 3d 20 74 65 6f 72 var note = teor
00b0: 69 61 2e 6e 6f 74 65 28 27 63 27 29 3b 0a 20 20 ia.note('c');.
00c0: 20 20 61 73 73 65 72 74 2e 65 71 75 61 6c 28 6e assert.equal(n
00d0: 6f 74 65 2e 73 6f 6c 66 65 67 65 28 74 65 6f 72 ote.solfege(teor
00e0: 69 61 2e 73 63 61 6c 65 28 6e 6f 74 65 2c 20 27 ia.scale(note, '
00f0: 6d 69 6e 6f 72 27 29 29 2c 20 27 64 6f 27 29 3b minor')), 'do');
0100: 0a 20 20 7d 2c 0a 0a 20 20 27 41 20 69 6e 20 64 . },.. 'A in d
0110: 20 6d 61 6a 6f 72 27 3a 20 66 75 6e 63 74 69 6f major': functio
0120: 6e 28 29 20 7b 0a 20 20 20 20 76 61 72 20 6e 6f n() {. var no
0130: 74 65 20 3d 20 74 65 6f 72 69 61 2e 6e 6f 74 65 te = teoria.note
0140: 28 27 61 27 29 3b 0a 20 20 20 20 76 61 72 20 74 ('a');. var t
0150: 6f 6e 69 63 20 3d 20 74 65 6f 72 69 61 2e 6e 6f onic = teoria.no
0160: 74 65 28 27 64 27 29 3b 0a 20 20 20 20 61 73 73 te('d');. ass
0170: 65 72 74 2e 65 71 75 61 6c 28 6e 6f 74 65 2e 73 ert.equal(note.s
0180: 6f 6c 66 65 67 65 28 74 65 6f 72 69 61 2e 73 63 olfege(teoria.sc
0190: 61 6c 65 28 74 6f 6e 69 63 2c 20 27 6d 61 6a 6f ale(tonic, 'majo
01a0: 72 27 29 29 2c 20 27 73 6f 27 29 3b 0a 20 20 7d r')), 'so');. }
01b0: 2c 0a 0a 20 20 27 46 23 20 69 6e 20 42 20 6d 61 ,.. 'F# in B ma
01c0: 6a 6f 72 27 3a 20 66 75 6e 63 74 69 6f 6e 28 29 jor': function()
01d0: 20 7b 0a 20 20 20 20 76 61 72 20 6e 6f 74 65 20 {. var note
01e0: 3d 20 74 65 6f 72 69 61 2e 6e 6f 74 65 28 27 66 = teoria.note('f
01f0: 23 27 29 3b 0a 20 20 20 20 76 61 72 20 74 6f 6e #');. var ton
0200: 69 63 20 3d 20 74 65 6f 72 69 61 2e 6e 6f 74 65 ic = teoria.note
0210: 28 27 42 27 29 3b 0a 20 20 20 20 61 73 73 65 72 ('B');. asser
0220: 74 2e 65 71 75 61 6c 28 6e 6f 74 65 2e 73 6f 6c t.equal(note.sol
0230: 66 65 67 65 28 74 65 6f 72 69 61 2e 73 63 61 6c fege(teoria.scal
0240: 65 28 74 6f 6e 69 63 2c 20 27 6d 61 6a 6f 72 27 e(tonic, 'major'
0250: 29 29 2c 20 27 73 6f 27 29 3b 0a 20 20 7d 2c 0a )), 'so');. },.
0260: 0a 20 20 27 43 34 20 69 6e 20 43 34 20 6d 69 6e . 'C4 in C4 min
0270: 6f 72 27 3a 20 66 75 6e 63 74 69 6f 6e 28 29 20 or': function()
0280: 7b 0a 20 20 20 20 76 61 72 20 6e 6f 74 65 20 3d {. var note =
0290: 20 74 65 6f 72 69 61 2e 6e 6f 74 65 28 27 63 34 teoria.note('c4
02a0: 27 29 3b 0a 20 20 20 20 76 61 72 20 73 63 61 6c ');. var scal
02b0: 65 20 3d 20 74 65 6f 72 69 61 2e 73 63 61 6c 65 e = teoria.scale
02c0: 28 6e 6f 74 65 2c 20 27 6d 69 6e 6f 72 27 29 3b (note, 'minor');
02d0: 0a 20 20 20 20 61 73 73 65 72 74 2e 65 71 75 61 . assert.equa
02e0: 6c 28 6e 6f 74 65 2e 73 6f 6c 66 65 67 65 28 73 l(note.solfege(s
02f0: 63 61 6c 65 2c 20 74 72 75 65 29 2c 20 27 64 6f cale, true), 'do
0300: 27 29 3b 0a 20 20 7d 2c 0a 0a 20 20 27 41 33 20 ');. },.. 'A3
0310: 69 6e 20 44 34 20 6d 61 6a 6f 72 27 3a 20 66 75 in D4 major': fu
0320: 6e 63 74 69 6f 6e 28 29 20 7b 0a 20 20 20 20 76 nction() {. v
0330: 61 72 20 6e 6f 74 65 20 3d 20 74 65 6f 72 69 61 ar note = teoria
0340: 2e 6e 6f 74 65 28 27 61 33 27 29 3b 0a 20 20 20 .note('a3');.
0350: 20 76 61 72 20 73 63 61 6c 65 20 3d 20 74 65 6f var scale = teo
0360: 72 69 61 2e 73 63 61 6c 65 28 27 64 34 27 2c 20 ria.scale('d4',
0370: 27 6d 61 6a 6f 72 27 29 3b 0a 20 20 20 20 61 73 'major');. as
0380: 73 65 72 74 2e 65 71 75 61 6c 28 6e 6f 74 65 2e sert.equal(note.
0390: 73 6f 6c 66 65 67 65 28 73 63 61 6c 65 2c 20 74 solfege(scale, t
03a0: 72 75 65 29 2c 20 27 73 6f 2c 27 29 3b 0a 20 20 rue), 'so,');.
03b0: 7d 2c 0a 0a 20 20 27 46 23 36 20 69 6e 20 42 35 },.. 'F#6 in B5
03c0: 20 6d 61 6a 6f 72 27 3a 20 66 75 6e 63 74 69 6f major': functio
03d0: 6e 28 29 20 7b 0a 20 20 20 20 76 61 72 20 6e 6f n() {. var no
03e0: 74 65 20 3d 20 74 65 6f 72 69 61 2e 6e 6f 74 65 te = teoria.note
03f0: 28 27 66 23 36 27 29 3b 0a 20 20 20 20 76 61 72 ('f#6');. var
0400: 20 73 63 61 6c 65 20 3d 20 74 65 6f 72 69 61 2e scale = teoria.
0410: 73 63 61 6c 65 28 27 62 35 27 2c 20 27 6d 61 6a scale('b5', 'maj
0420: 6f 72 27 29 3b 0a 20 20 20 20 61 73 73 65 72 74 or');. assert
0430: 2e 65 71 75 61 6c 28 6e 6f 74 65 2e 73 6f 6c 66 .equal(note.solf
0440: 65 67 65 28 73 63 61 6c 65 2c 20 74 72 75 65 29 ege(scale, true)
0450: 2c 20 27 73 6f 27 29 3b 0a 20 20 7d 2c 0a 0a 20 , 'so');. },..
0460: 20 27 46 32 20 69 6e 20 45 36 20 70 68 72 79 67 'F2 in E6 phryg
0470: 69 61 6e 27 3a 20 66 75 6e 63 74 69 6f 6e 28 29 ian': function()
0480: 20 7b 0a 20 20 20 20 76 61 72 20 6e 6f 74 65 20 {. var note
0490: 3d 20 74 65 6f 72 69 61 2e 6e 6f 74 65 28 27 66 = teoria.note('f
04a0: 32 27 29 3b 0a 20 20 20 20 76 61 72 20 73 63 61 2');. var sca
04b0: 6c 65 20 3d 20 74 65 6f 72 69 61 2e 73 63 61 6c le = teoria.scal
04c0: 65 28 27 65 36 27 2c 20 27 70 68 72 79 67 69 61 e('e6', 'phrygia
04d0: 6e 27 29 3b 0a 20 20 20 20 61 73 73 65 72 74 2e n');. assert.
04e0: 65 71 75 61 6c 28 6e 6f 74 65 2e 73 6f 6c 66 65 equal(note.solfe
04f0: 67 65 28 73 63 61 6c 65 2c 20 74 72 75 65 29 2c ge(scale, true),
0500: 20 27 72 61 2c 2c 2c 2c 27 29 3b 0a 20 20 7d 2c 'ra,,,,');. },
0510: 0a 0a 20 20 27 45 62 31 30 20 69 6e 20 45 38 20 .. 'Eb10 in E8
0520: 64 6f 72 69 61 6e 27 3a 20 66 75 6e 63 74 69 6f dorian': functio
0530: 6e 28 29 20 7b 0a 20 20 20 20 76 61 72 20 6e 6f n() {. var no
0540: 74 65 20 3d 20 74 65 6f 72 69 61 2e 6e 6f 74 65 te = teoria.note
0550: 28 27 65 62 31 30 27 29 3b 0a 20 20 20 20 76 61 ('eb10');. va
0560: 72 20 73 63 61 6c 65 20 3d 20 74 65 6f 72 69 61 r scale = teoria
0570: 2e 73 63 61 6c 65 28 27 65 38 27 2c 20 27 64 6f .scale('e8', 'do
0580: 72 69 61 6e 27 29 3b 0a 20 20 20 20 61 73 73 65 rian');. asse
0590: 72 74 2e 65 71 75 61 6c 28 6e 6f 74 65 2e 73 6f rt.equal(note.so
05a0: 6c 66 65 67 65 28 73 63 61 6c 65 2c 20 74 72 75 lfege(scale, tru
05b0: 65 29 2c 20 27 64 65 5c 27 5c 27 27 29 3b 0a 20 e), 'de\'\'');.
05c0: 20 7d 2c 0a 0a 20 20 27 41 23 36 20 69 6e 20 42 },.. 'A#6 in B
05d0: 62 34 20 6c 6f 63 72 69 61 6e 27 3a 20 66 75 6e b4 locrian': fun
05e0: 63 74 69 6f 6e 28 29 20 7b 0a 20 20 20 20 76 61 ction() {. va
05f0: 72 20 6e 6f 74 65 20 3d 20 74 65 6f 72 69 61 2e r note = teoria.
0600: 6e 6f 74 65 28 27 41 23 36 27 29 3b 0a 20 20 20 note('A#6');.
0610: 20 76 61 72 20 73 63 61 6c 65 20 3d 20 74 65 6f var scale = teo
0620: 72 69 61 2e 73 63 61 6c 65 28 27 42 62 34 27 2c ria.scale('Bb4',
0630: 20 27 6c 6f 63 72 69 61 6e 27 29 3b 0a 20 20 20 'locrian');.
0640: 20 61 73 73 65 72 74 2e 65 71 75 61 6c 28 6e 6f assert.equal(no
0650: 74 65 2e 73 6f 6c 66 65 67 65 28 73 63 61 6c 65 te.solfege(scale
0660: 2c 20 74 72 75 65 29 2c 20 27 74 61 69 5c 27 27 , true), 'tai\''
0670: 29 3b 0a 20 20 7d 2c 0a 0a 20 20 27 45 32 20 69 );. },.. 'E2 i
0680: 6e 20 43 33 20 6d 61 6a 6f 72 27 3a 20 66 75 6e n C3 major': fun
0690: 63 74 69 6f 6e 28 29 20 7b 0a 20 20 20 20 76 61 ction() {. va
06a0: 72 20 6e 6f 74 65 20 3d 20 74 65 6f 72 69 61 2e r note = teoria.
06b0: 6e 6f 74 65 28 27 65 32 27 29 3b 0a 20 20 20 20 note('e2');.
06c0: 76 61 72 20 73 63 61 6c 65 20 3d 20 74 65 6f 72 var scale = teor
06d0: 69 61 2e 73 63 61 6c 65 28 27 63 33 27 2c 20 27 ia.scale('c3', '
06e0: 6d 61 6a 6f 72 27 29 3b 0a 20 20 20 20 61 73 73 major');. ass
06f0: 65 72 74 2e 65 71 75 61 6c 28 6e 6f 74 65 2e 73 ert.equal(note.s
0700: 6f 6c 66 65 67 65 28 73 63 61 6c 65 2c 20 74 72 olfege(scale, tr
0710: 75 65 29 2c 20 27 6d 69 2c 27 29 3b 0a 20 20 7d ue), 'mi,');. }
0720: 0a 7d 29 2e 65 78 70 6f 72 74 28 6d 6f 64 75 6c .}).export(modul
0730: 65 29 3b 0a e);.