functor import HS at '../../HarmonisedScore.ozf' export GetIntervals Get11LimitDiamondChords Get7LimitDiamondChords Get5LimitDiamondChords define /** %% The two chords which constitute the 11-limit tonality diamond. All other 6*6-2=34 chords of this diamond are transpositions of these two by the proportions of the other. %% */ DiamondChords_11Limit = chords(chord(pitchClasses:[1#1 9#8 5#4 11#8 3#2 7#4] roots:[1#1] comment:"Otonality") chord(pitchClasses:[1#1 16#9 8#5 16#11 4#3 8#7] roots:[1#1 4#3] % !! roots comment:"Utonality")) DiamondChords_7Limit = chords(chord(pitchClasses:[1#1 5#4 3#2 7#4] roots:[1#1] comment:"Otonality") chord(pitchClasses:[1#1 8#5 4#3 8#7] roots:[1#1 4#3] % !! roots comment:"Utonality")) DiamondChords_5Limit = chords(chord(pitchClasses:[1#1 5#4 3#2] roots:[1#1] comment:"Otonality") chord(pitchClasses:[1#1 8#5 4#3] roots:[1#1 4#3] % !! roots comment:"Utonality")) /** %% Returns a database with the two chords which constitute the 11-limit tonality diamond. All other 6*6-2=34 chords of this diamond are transpositions of these two by the proportions of the other. %% For usage in HS, each chord's pitchclasses and root are rounded to the nearest pitch class depending on KeysPerOctave (an int). %% %% NB: two possible roots are specified for the Utonality chords: 1/1 (the 'mirror-root') and 4/3 (following convention and Hindemiths root definition). For example, in C-minor 1/1 is g and 4/3 is c. %% */ fun {Get11LimitDiamondChords KeysPerOctave} {Record.map DiamondChords_11Limit fun {$ X} {HS.db.ratiosInDBEntryToPCs X KeysPerOctave} end} end fun {Get7LimitDiamondChords KeysPerOctave} {Record.map DiamondChords_7Limit fun {$ X} {HS.db.ratiosInDBEntryToPCs X KeysPerOctave} end} end fun {Get5LimitDiamondChords KeysPerOctave} {Record.map DiamondChords_5Limit fun {$ X} {HS.db.ratiosInDBEntryToPCs X KeysPerOctave} end} end /** %% The Partch intervals. The dissonance degrees are set (approximately) according to the one-footed bridge (cf. Partch [1974]). %% */ Intervals = intervals(interval(interval:1#1 dissonanceDegree:0 limit:1 %% resemblanceWithTradition comment: 'unison') interval(interval:81#80 dissonanceDegree:8 limit:5 %% resemblanceWithTradition comment: 'syntonic (didymic) comma') interval(interval:33#32 dissonanceDegree:8 limit:11 %% resemblanceWithTradition comment:'undecimal comma') interval(interval:21#20 dissonanceDegree:8 limit:7 %% resemblanceWithTradition comment:'minor semitone') interval(interval:16#15 dissonanceDegree:8 limit:5 %% resemblanceWithTradition comment:'minor diatonic semitone') interval(interval:12#11 dissonanceDegree:7 limit:11 %% resemblanceWithTradition comment:'3/4-tone, undecimal neutral second') interval(interval:11#10 dissonanceDegree:7 limit:11 %% resemblanceWithTradition comment:'4/5-tone') interval(interval:10#9 dissonanceDegree:6 limit:5 %% resemblanceWithTradition comment:'minor whole tone') interval(interval:9#8 dissonanceDegree:6 limit:3 %% resemblanceWithTradition comment:'major whole tone') interval(interval:8#7 dissonanceDegree:4 limit:7 %% resemblanceWithTradition comment:'septimal whole tone') interval(interval:7#6 dissonanceDegree:4 limit:7 %% resemblanceWithTradition comment:'septimal minor third') interval(interval:32#27 dissonanceDegree:8 limit:3 %% resemblanceWithTradition comment:'Pythagorean minor third') interval(interval:6#5 dissonanceDegree:2 % same as 5/4 limit:5 %% resemblanceWithTradition comment:'minor third') interval(interval:11#9 dissonanceDegree:6 limit:11 %% resemblanceWithTradition comment:'undecimal neutral third') interval(interval:5#4 dissonanceDegree:2 limit:5 %% resemblanceWithTradition comment:'major third') interval(interval:14#11 dissonanceDegree:6 limit:11 %% resemblanceWithTradition comment:'') interval(interval:9#7 dissonanceDegree:5 limit:7 %% resemblanceWithTradition comment:'septimal major third') interval(interval:21#16 dissonanceDegree:8 limit:7 %% resemblanceWithTradition comment:'narrow fourth') interval(interval:4#3 dissonanceDegree:1 % always as complementary interval (is this OK?) limit:3 %% resemblanceWithTradition comment:'perfect forth') interval(interval:27#20 dissonanceDegree:8 limit:5 %% resemblanceWithTradition comment:'acute fourth') interval(interval:11#8 dissonanceDegree:6 limit:11 %% resemblanceWithTradition comment:'harmonic augmented fourth') interval(interval:7#5 dissonanceDegree:4 limit:7 %% resemblanceWithTradition comment:'septimal tritone') interval(interval:10#7 dissonanceDegree:4 limit:7 %% resemblanceWithTradition comment:'Euler\'s tritone') interval(interval:16#11 dissonanceDegree:6 limit:11 %% resemblanceWithTradition comment:'harmonic diminished fifth') interval(interval:40#27 dissonanceDegree:8 limit:5 %% resemblanceWithTradition comment:'narrow fifth') interval(interval:3#2 dissonanceDegree:1 limit:3 %% resemblanceWithTradition comment:'perfect fifth') interval(interval:32#21 dissonanceDegree:8 limit:7 %% resemblanceWithTradition comment:'wide fifth') interval(interval:14#9 dissonanceDegree:5 limit:7 %% resemblanceWithTradition comment:'septimal minor sixth') interval(interval:11#7 dissonanceDegree:6 limit:11 %% resemblanceWithTradition comment:'') interval(interval:8#5 dissonanceDegree:3 limit:5 %% resemblanceWithTradition comment:'minor sixth') interval(interval:18#11 dissonanceDegree:6 limit:11 %% resemblanceWithTradition comment:'undecimal neutral sixth') interval(interval:5#3 dissonanceDegree:3 limit:5 %% resemblanceWithTradition comment:'major sixth') interval(interval:27#16 dissonanceDegree:8 limit:3 %% resemblanceWithTradition comment:'Pythagorean major sixth') interval(interval:12#7 dissonanceDegree:4 limit:7 %% resemblanceWithTradition comment:'septimal major sixth') interval(interval:7#4 dissonanceDegree:4 limit:7 %% resemblanceWithTradition comment:'harmonic seventh') interval(interval:16#9 dissonanceDegree:6 limit:3 %% resemblanceWithTradition comment:'Pythagorean minor seventh') interval(interval:9#5 dissonanceDegree:6 limit:5 %% resemblanceWithTradition comment:'just minor seventh') interval(interval:20#11 dissonanceDegree:7 limit:11 %% resemblanceWithTradition comment:'') interval(interval:11#6 dissonanceDegree:7 limit:11 %% resemblanceWithTradition comment:'21/4-tone, undecimal neutral seventh') interval(interval:15#8 dissonanceDegree:8 limit:5 %% resemblanceWithTradition comment:'classic major seventh') interval(interval:40#21 dissonanceDegree:8 limit:7 %% resemblanceWithTradition comment:'') interval(interval:64#33 dissonanceDegree:8 limit:11 %% resemblanceWithTradition comment:'') interval(interval:160#81 dissonanceDegree:8 limit:5 %% resemblanceWithTradition comment:'octave - syntonic (didymic) comma') ) /** %% Returns a database with the Partch intervals. For usage in HS, the intervals are rounded to the nearest pitch class interval depending on KeysPerOctave (an int). %% */ fun {GetIntervals KeysPerOctave} {Record.map Intervals fun {$ X} {HS.db.ratiosInDBEntryToPCs X KeysPerOctave} end} end end