首页 时政热点 科技头条 智能AI 安全攻防 数码硬件 开发者生态 归档 标签 关于

Xenharmlib(音乐理论库)添加了对 Just Intonation 的支持

2026-07-28 1 阅读 约8分钟阅读 retooth
分享:
字号:
xenharmlib 0.4.0 有什么新功能? ¶ 就新功能而言,0.4.0 版本不是一步,而是一次飞跃。 Xenharmlib 的核心已经过重构,不仅允许等分音律,还允许使用多个生成器间隔进行调音。这意味着它现在支持整个范围的常规音律,包括纯音调。除了不规则音律(例如“Werckmeister 音律”)之外,xenharmlib 最终可以用数学形式表示整个音乐传统宇宙。现在,它可以用于准确分析拜占庭帝国、欧洲文艺复兴、印度古典音乐、印度尼西亚加美兰传统、阿拉伯木卡姆和 20 世纪美国实验音乐(例如 Harry Partch 或 Ben Johnston 的作品)。为了与整体方法保持一致,xenharmlib 允许使用现有的分析工具来分析所有常规音律,前提是它们在数学上兼容。例如,质数形式和范式计算也可以在(多维)规则音律上执行。此外,文档已完全修改:功能示例按调音和符号进行组织,并为所有谐波基元提供全面的专用文档。我们将在下文中简要概述上述(和其他)功能。 (完整的变更日志请参见此处) Just Intonation / Prime Limit Tunings Just Intonation 是指基于“纯音程”的调音。纯区间的特征是两个整数的分数,例如\(\frac{3}{2}\) 。从历史上看,大多数调音系统都是基于纯音调的。直到18世纪和19世纪,平均律体系才开始在实践中得到广泛接受。 Xenharmlib 现在引入了对带有 Prime Limit Tuning 构造的 Just Intonation 的支持: from xenharmlib import PrimeLimitTuning limit11 = PrimeLimitTuning ( 11 ) 例如,现在可以通过从根音堆叠 5 个升序纯五度和 6 个降序纯五度来生成毕达哥拉斯 12 音半音阶: from xenharmlib import PrimeLimitTuning from xenharmlib import periodical pythagorean = PrimeLimitTuning(3) C0 = 毕达哥拉斯。 rs_pitch('1/1') P5 = 勾股定理。 rs_interval ( '3/2' ) iseq_a = 毕达哥拉斯 . Interval_seq ([ P5 ] * 5 ) iseq_b = 毕达哥拉斯 。 Interval_seq([-P5] * 6) chromatic_scale = (C0.scale(iseq_a)|C0.scale(iseq_b))。 pcs_normalized () print ( chromatic_scale ) PrimeLimitPitchScale([1, 256/243, 9/8, 32/27, 81/64, 4/3, 1024/729, 3/2, 128/81, 27/16, 16/9, 243/128], 3-Limit) 大多数软件程序实现函数因为正义语调不是一个完整的算术系统,而是一个标量换位系统。例如,在五度音阶转置的情况下,通常使用半音阶的定义(例如上面提到的)作为基础,并且转置被理解为 7 个音阶的移位:对于范围 (0, 12) 中的 i:pitch = chromatic_scale [ i ] result = periodical 。 scalar_transpose ( chromatic_scale , 音调 , 7 ) 间隔 = 音调 。间隔 ( 结果 ) print ( f ' { 音调 . Short_repr } --> { 结果 . Short_repr } ( { 间隔 . Short_repr } )' ) 1 --> 3/2 (3/2) 256/243 --> 128/81 (3/2) 9/8 --> 27/16 (3/2) 32/27 --> 16/9 (3/2) 81/64 --> 243/128 (3/2) 4/3 --> 2 (3/2) 1024/729 --> 512/243 (3/2) 3/2 --> 9/4 (3/2) 128/81 --> 64/27 (3/2) 27/16 --> 81/32 (3/2) 16/9 --> 8/3 (3/2) 243/128 --> 2048/729 (262144/177147) 正如您在输出的最后一个音高 ( \(\frac{243}{128}\) ) 中看到的那样,毕达哥拉斯半音阶中按音阶度数进行的转置并不总是会导致相关音程的实际转置。在对每个八度音阶只有有限数量的音符的键盘乐器(例如钢琴或羽管键琴)进行调音时,这是一个常见问题。从数学上来说,五度换位的定义是不规则的:五度的大小根据选择哪个音符作为起点而变化。与键盘乐器不同,没有音品或人声的弦乐器不存在音符选择有限的问题。因此,Xenharmlib 将其默认变调实现为常规变调,而不是标量变调,其效果是上述音阶的最后一个音符的变调结果具有不再在音阶本身中表示的音级。对于范围 ( 0 , 12 ) 内的 i: 音调 = chromatic_scale [ i ] 结果 = 音调 。转置 (P5) 音程 = 音高。间隔(结果)尝试:scale_ Degree = periodical 。索引 ( chromatic_scale , result ) except ValueError : scale_ Degree = '不在比例中' print ( f ' {itch .short_repr } --> { result .short_repr } ' , end = '' ) print ( f '( {interval .short_repr } ) - 度数: {scale_ Degree } ' ) 1 --> 3/2 (3/2) - 度数: 7 256/243 --> 128/81 (3/2) - 度数:8 9/8 --> 27/16 (3/2) - 度数:9 32/27 -->
这篇文章对您有帮助吗?

订阅66必读

每日精选科技资讯,直达你的邮箱