Hi Bret, I have a basic program structure for determining if notes in a chorale are chord-tones or not. The following output is an analysis of chor368.krn. I currently only determine chord tones and have not yet resolved the functions of non-chord tones. Next week, I will resolve the functions of non-chord tone notes, so that a functional harmonic analysis is generated (which is more complete than the one output by my "quality" program). -=+Craig Here is the current intermediate analysis: A = Line number in input file B = Base40 pitch values (-1 = a humdrum ".") C = The note function (10 = a chord tone, -1 = undetermined) D = The chord inversion value (0 = root, etc, 32767 = unknown). E = The base 40 chord root (32767 = unknown). F = the chord type (106 = major, 32767 = unknown). A B C D E F ======================================================================= 14: {139:179:191:202} <10:10:10:10> i=0 r=19 q=106 15: {145:-1:-1:-1} <-1:-1:-1:-1> i=32767 r=32767 q=32767 16: {151:162:179:191} <10:10:10:10> i=1 r=19 q=106 17: {139:-1:-1:-1} <10:10:10:10> i=0 r=19 q=106 19: {122:162:179:185} <-1:-1:-1:-1> i=32767 r=32767 q=32767 20: {-1:-1:174:-1} <10:10:10:10> i=0 r=2 q=106 21: {-1:156:-1:-1} <10:10:10:10> i=0 r=2 q=112 22: {128:151:179:179} <10:10:10:10> i=0 r=8 q=105 24: {145:156:168:196} <10:10:10:10> i=0 r=25 q=105 25: {139:-1:-1:-1} <10:10:10:10> i=2 r=36 q=106 26: {133:-1:185:202} <10:10:10:10> i=1 r=2 q=110 27: {139:151:179:-1} <10:10:10:10> i=0 r=19 q=106 28: {-1:156:-1:208} <10:10:10:10> i=2 r=36 q=106 29: {-1:162:-1:214} <-1:-1:-1:-1> i=32767 r=32767 q=32767 31: {117:162:179:208} <-1:-1:-1:-1> i=32767 r=32767 q=32767 32: {122:-1:-1:-1} <-1:-1:-1:-1> i=32767 r=32767 q=32767 33: {128:156:-1:-1} <10:10:10:10> i=1 r=36 q=106 34: {-1:151:-1:-1} <10:10:10:10> i=0 r=8 q=105 35: {116:156:-1:-1} <10:10:10:10> i=0 r=36 q=106 37: {139:151:179:202} <10:10:10:10> i=0 r=19 q=106 39: {128:179:191:208} <10:10:10:10> i=0 r=8 q=105 40: {145:168:185:196} <10:10:10:10> i=0 r=25 q=105 41: {139:-1:-1:-1} <10:10:10:10> i=3 r=25 q=110 43: {134:162:185:202} <10:10:10:10> i=1 r=2 q=106 44: {-1:156:-1:-1} <10:10:10:10> i=1 r=2 q=112 45: {139:151:179:-1} <10:10:10:10> i=0 r=19 q=106 46: {134:-1:-1:-1} <10:10:10:10> i=3 r=19 q=113 47: {128:151:179:179} <10:10:10:10> i=0 r=8 q=105 48: {122:-1:-1:-1} <10:10:10:10> i=2 r=19 q=106 50: {128:168:179:196} <10:10:10:10> i=1 r=36 q=106 51: {134:162:185:-1} <10:10:10:10> i=1 r=2 q=112 52: {139:162:185:191} <-1:-1:-1:-1> i=32767 r=32767 q=32767 53: {139:-1:179:-1} <10:10:10:10> i=0 r=19 q=106 55: {122:162:174:185} <10:10:10:10> i=0 r=2 q=106 58: {139:179:191:202} <10:10:10:10> i=0 r=19 q=106 59: {145:-1:-1:-1} <-1:-1:-1:-1> i=32767 r=32767 q=32767 60: {151:162:179:191} <10:10:10:10> i=1 r=19 q=106 61: {139:-1:-1:-1} <10:10:10:10> i=0 r=19 q=106 63: {122:162:179:185} <-1:-1:-1:-1> i=32767 r=32767 q=32767 64: {-1:-1:174:-1} <10:10:10:10> i=0 r=2 q=106 65: {-1:156:-1:-1} <10:10:10:10> i=0 r=2 q=112 66: {128:151:179:179} <10:10:10:10> i=0 r=8 q=105 68: {145:156:168:196} <10:10:10:10> i=0 r=25 q=105 69: {139:-1:-1:-1} <10:10:10:10> i=2 r=36 q=106 70: {133:-1:185:202} <10:10:10:10> i=1 r=2 q=110 71: {139:151:179:-1} <10:10:10:10> i=0 r=19 q=106 72: {-1:156:-1:208} <10:10:10:10> i=2 r=36 q=106 73: {-1:162:-1:214} <-1:-1:-1:-1> i=32767 r=32767 q=32767 75: {117:162:179:208} <-1:-1:-1:-1> i=32767 r=32767 q=32767 76: {122:-1:-1:-1} <-1:-1:-1:-1> i=32767 r=32767 q=32767 77: {128:156:-1:-1} <10:10:10:10> i=1 r=36 q=106 78: {-1:151:-1:-1} <10:10:10:10> i=0 r=8 q=105 79: {116:156:-1:-1} <10:10:10:10> i=0 r=36 q=106 81: {139:151:179:202} <10:10:10:10> i=0 r=19 q=106 83: {128:179:191:208} <10:10:10:10> i=0 r=8 q=105 84: {145:168:185:196} <10:10:10:10> i=0 r=25 q=105 85: {139:-1:-1:-1} <10:10:10:10> i=3 r=25 q=110 87: {134:162:185:202} <10:10:10:10> i=1 r=2 q=106 88: {-1:156:-1:-1} <10:10:10:10> i=1 r=2 q=112 89: {139:151:179:-1} <10:10:10:10> i=0 r=19 q=106 90: {134:-1:-1:-1} <10:10:10:10> i=3 r=19 q=113 91: {128:151:179:179} <10:10:10:10> i=0 r=8 q=105 92: {122:-1:-1:-1} <10:10:10:10> i=2 r=19 q=106 94: {128:168:179:196} <10:10:10:10> i=1 r=36 q=106 95: {134:162:185:-1} <10:10:10:10> i=1 r=2 q=112 96: {139:162:185:191} <-1:-1:-1:-1> i=32767 r=32767 q=32767 97: {139:-1:179:-1} <10:10:10:10> i=0 r=19 q=106 99: {122:162:174:185} <10:10:10:10> i=0 r=2 q=106 102: {122:162:185:214} <10:10:10:10> i=0 r=2 q=106 103: {128:-1:179:-1} <-1:-1:-1:-1> i=32767 r=32767 q=32767 104: {134:-1:185:202} <10:10:10:10> i=1 r=2 q=106 105: {122:174:185:-1} <10:10:10:10> i=0 r=2 q=106 107: {139:162:185:191} <-1:-1:-1:-1> i=32767 r=32767 q=32767 108: {134:-1:-1:-1} <10:10:10:10> i=2 r=31 q=110 109: {139:-1:179:-1} <10:10:10:10> i=0 r=19 q=106 110: {156:156:179:208} <10:10:10:10> i=0 r=36 q=106 112: {134:156:185:203} <10:10:10:10> i=1 r=3 q=108 113: {139:151:191:208} <10:10:10:10> i=1 r=8 q=105 114: {128:168:196:-1} <10:10:10:10> i=1 r=36 q=102 115: {-1:162:191:214} <-1:-1:-1:-1> i=32767 r=32767 q=32767 116: {-1:-1:-1:219} <10:10:10:10> i=0 r=8 q=110 118: {128:156:185:214} <10:10:10:10> i=3 r=14 q=109 119: {-1:-1:179:-1} <-1:-1:-1:-1> i=32767 r=32767 q=32767 120: {123:151:185:-1} <10:10:10:10> i=1 r=31 q=112 121: {117:145:-1:-1} <10:10:10:10> i=2 r=14 q=105 122: {123:151:-1:-1} <10:10:10:10> i=1 r=31 q=112 123: {-1:-1:174:-1} <10:10:10:10> i=1 r=31 q=106 125: {128:151:179:191} <10:10:10:10> i=0 r=8 q=105 127: {156:156:179:208} <10:10:10:10> i=0 r=36 q=106 128: {151:-1:-1:-1} <10:10:10:10> i=3 r=36 q=113 129: {145:-1:185:214} <10:10:10:10> i=1 r=14 q=104 130: {-1:145:-1:-1} <10:10:10:10> i=1 r=14 q=103 131: {139:162:191:219} <10:10:10:10> i=0 r=19 q=106 133: {134:162:185:225} <10:10:10:10> i=1 r=2 q=106 134: {128:-1:179:-1} <-1:-1:-1:-1> i=32767 r=32767 q=32767 135: {134:-1:185:202} <10:10:10:10> i=1 r=2 q=106 136: {122:145:174:196} <10:10:10:10> i=0 r=2 q=112 138: {139:139:162:191} <10:10:10:10> i=0 r=19 q=106 139: {116:-1:156:168} <10:10:10:10> i=0 r=36 q=106 140: {-1:168:179:196} <10:10:10:10> i=0 r=36 q=106 142: {122:145:179:185} <-1:-1:-1:-1> i=32767 r=32767 q=32767 143: {116:-1:-1:-1} <-1:-1:-1:-1> i=32767 r=32767 q=32767 144: {122:162:174:-1} <10:10:10:10> i=0 r=2 q=106 145: {-1:-1:168:-1} <-1:-1:-1:-1> i=32767 r=32767 q=32767 146: {-1:156:174:-1} <10:10:10:10> i=0 r=2 q=112 148: {99:151:162:179} <10:10:10:10> i=0 r=19 q=106 Here is the generated voice function analysis. See http://dactyl.som.ohio-state.edu/Humdrum/representations/embel.rep.html for the eventual list of possible voice functions. A "?" means that I have not tried to figure out the note's function yet. Notice that around line 20, the vertical sonority is unknown. But by looking at the chord-tone functions of the voices, you can see that this should be a chord with a suspension in it. Such information might also be useful in determine the key or a phrase boundary. ct = chord tone. !!!COM: Bach, Johann Sebastian !!!OCL: Ludwig Erk !!!XEN: J.S. Bach Chorale Harmonizations !!!OTL: Hilf, Herr Jesu, lass gelingen !!!ONM: No. 368 !!!PDT: 1850, 1865 !!!SCT: BWV 454 !!!YEC: Copyright 1994, David Huron !!!YEM: Rights to all derivative electronic formats reserved. **embel **embel **embel **embel ! bass ! tenor ! alto ! soprano *M3/4 *M3/4 *M3/4 *M3/4 *F: *F: *F: *F: =1 =1 =1 =1 ct ct ct ct ? . . . ? is most likely a passing tone ct ct ct ct ct . . . =2 =2 =2 =2 ? ? ? ? obviously will be: ct ct sus ct . . ct . . ct . . ct ct ct ct =3 =3 =3 =3 ct ct ct ct ct . . . ct . ct ct ct ct ct . . ct . ct . ? . ? =4 =4 =4 =4 ? ? ? ? ? . . . ct ct . . . ct . . ct ct . . =5 =5 =5 =5 ct ct ct ct =6 =6 =6 =6 ct ct ct ct ct ct ct ct ct . . . =7 =7 =7 =7 ct ct ct ct . ct . . ct ct ct . ct . . . ct ct ct ct ct . . . =8 =8 =8 =8 ct ct ct ct ct ct ct . ? ? ? ? ct . ct . =9 =9 =9 =9 ct ct ct ct !! Repeat from the beginning. =1 =1 =1 =1 ct ct ct ct ? . . . ct ct ct ct ct . . . =2 =2 =2 =2 ? ? ? ? . . ct . . ct . . ct ct ct ct =3 =3 =3 =3 ct ct ct ct ct . . . ct . ct ct ct ct ct . . ct . ct . ? . ? =4 =4 =4 =4 ? ? ? ? ? . . . ct ct . . . ct . . ct ct . . =5 =5 =5 =5 ct ct ct ct =6 =6 =6 =6 ct ct ct ct ct ct ct ct ct . . . =7 =7 =7 =7 ct ct ct ct . ct . . ct ct ct . ct . . . ct ct ct ct ct . . . =8 =8 =8 =8 ct ct ct ct ct ct ct . ? ? ? ? ct . ct . =9 =9 =9 =9 ct ct ct ct !! Continuing. =10 =10 =10 =10 ct ct ct ct ? . ? . ct . ct ct ct ct ct . =11 =11 =11 =11 ? ? ? ? ct . . . ct . ct . ct ct ct ct =12 =12 =12 =12 ct ct ct ct ct ct ct ct ct ct ct . . ? ? ? . . . ct =13 =13 =13 =13 ct ct ct ct . . ? . ct ct ct . ct ct . . ct ct . . . . ct . =14 =14 =14 =14 ct ct ct ct =15 =15 =15 =15 ct ct ct ct ct . . . ct . ct ct . ct . . ct ct ct ct =16 =16 =16 =16 ct ct ct ct ? . ? . ct . ct ct ct ct ct ct =17 =17 =17 =17 ct ct ct ct ct . ct ct . ct ct ct =18 =18 =18 =18 ? ? ? ? ? . . . ct ct ct . . . ? . . ct ct . =19 =19 =19 =19 ct ct ct ct ==== ==== ==== ==== *- *- *- *- !!!CDT: 1685/3//-1750/7/28 !!!OCY: Deutschland !!!ODT: <1750 !!!PDT: 1784/-1787/ !!!AFR: chorale harmonization; four-part hymn !!!AST: homophony !!!AMT: simple triple !!!SCA: Bach-Werke-Verzeichnis !!!YOR: Ludwig Erk, Peters Editions of 1850, 1865; revised in light of !!!YOR: Friedrich Smend, Peters Edition of 1932 & Albert Riemenschneider, 1941. !!!AIN: vox !!!EEV: 1.0 !!!RDT: 1987 September !!!YER: 1995 March 1 !!!VTS: Here is the original input data: !!!COM: Bach, Johann Sebastian !!!OCL: Ludwig Erk !!!XEN: J.S. Bach Chorale Harmonizations !!!OTL: Hilf, Herr Jesu, lass gelingen !!!ONM: No. 368 !!!PDT: 1850, 1865 !!!SCT: BWV 454 !!!YEC: Copyright 1994, David Huron !!!YEM: Rights to all derivative electronic formats reserved. **kern **kern **kern **kern ! bass ! tenor ! alto ! soprano *M3/4 *M3/4 *M3/4 *M3/4 *F: *F: *F: *F: =1 =1 =1 =1 8F 4f 4a 4cc 8G . . . 4A 2c 2f 2a 4F . . . =2 =2 =2 =2 2C 4.c 4f 2g . . 4e . . 8B- . . 4D 4A 4f 4f =3 =3 =3 =3 8G 2B- 4d 4b- 8F . . . 4E- . 4g 4.cc 4F 8A 4f . . 16B- . 16dd . 16c . 16ee =4 =4 =4 =4 8BB 4c 2.f 2.dd 8C . . . 4D 8B- . . . 8A . . 4BB- 4B- . . =5 =5 =5 =5 2.F; 2.A; 2.f; 2.cc; =6 =6 =6 =6 4D 4f 4a 4dd 4G 2d 2g 2b- 4F . . . =7 =7 =7 =7 4E 8c 4g 2cc . 8B- . . 8F 4A 4f . 8E . . . 8D 4A 4f 4f 8C . . . =8 =8 =8 =8 8D 8d 8f 4b- 8E 8c 8g . 4F 2c 4g 2a 4F . 4f . =9 =9 =9 =9 2.C; 2.c; 2.e; 2.g; !! Repeat from the beginning. =1 =1 =1 =1 8F 4f 4a 4cc 8G . . . 4A 2c 2f 2a 4F . . . =2 =2 =2 =2 2C 4.c 4f 2g . . 4e . . 8B- . . 4D 4A 4f 4f =3 =3 =3 =3 8G 2B- 4d 4b- 8F . . . 4E- . 4g 4.cc 4F 8A 4f . . 16B- . 16dd . 16c . 16ee =4 =4 =4 =4 8BB 4c 2.f 2.dd 8C . . . 4D 8B- . . . 8A . . 4BB- 4B- . . =5 =5 =5 =5 2.F; 2.A; 2.f; 2.cc; =6 =6 =6 =6 4D 4f 4a 4dd 4G 2d 2g 2b- 4F . . . =7 =7 =7 =7 4E 8c 4g 2cc . 8B- . . 8F 4A 4f . 8E . . . 8D 4A 4f 4f 8C . . . =8 =8 =8 =8 8D 8d 8f 4b- 8E 8c 8g . 4F 2c 4g 2a 4F . 4f . =9 =9 =9 =9 2.C; 2.c; 2.e; 2.g; !! Continuing. =10 =10 =10 =10 8C 2c 8g 4ee 8D . 8f . 4E . 4g 2cc 4C 4e 4g . =11 =11 =11 =11 8F 2c 4g 2a 8E . . . 4F . 4f . 4B- [4B- 4f 4dd =12 =12 =12 =12 4E 4B-] 4g 4cc# 4F 4A 4a 4.dd 4D 8d 8b- . . 8c 8a 16ee . . . 16ff =13 =13 =13 =13 4D 4B- 8g 2.ee . . 8f . 8C# 8A 4.g . 8BBn 8G . . 4C# 4A . . . . 8e . =14 =14 =14 =14 2.D; 2.A; 2.f; 2.a; =15 =15 =15 =15 8B- 4.B- 4f 4dd 8A . . . 4G . 4g 4ee . 8G . . 4F 4c 4a 4ff =16 =16 =16 =16 8E 2c 8g 4gg 8D . 8f . 4E . 4g 4cc 4C 4G 4e 4b- =17 =17 =17 =17 4F 2F 4c 4a 2BB- . 4B- 4d . 4d 4f 4b- =18 =18 =18 =18 8C 4G 4f 2.g 8BB- . . . 2C 4c 8e . . . 8d . . 4B- 4e . =19 =19 =19 =19 2.FF; 2.A; 2.c; 2.f; ==== ==== ==== ==== *- *- *- *- !!!CDT: 1685/3//-1750/7/28 !!!OCY: Deutschland !!!ODT: <1750 !!!PDT: 1784/-1787/ !!!AFR: chorale harmonization; four-part hymn !!!AST: homophony !!!AMT: simple triple !!!SCA: Bach-Werke-Verzeichnis !!!YOR: Ludwig Erk, Peters Editions of 1850, 1865; revised in light of !!!YOR: Friedrich Smend, Peters Edition of 1932 & Albert Riemenschneider, 1941. !!!AIN: vox !!!EEV: 1.0 !!!RDT: 1987 September !!!YER: 1995 March 1 !!!VTS: