八度和键数的声音频率
Sound Frequency to Octave and Key Number
给定一个波的频率,确定从0到7的八度音程和调号,其中0是C,6是B,C#是7,A#是11。
你可以用一系列 if 语句来解决它,但必须有更好的方法来做到这一点。我的项目使用的语言是 Clojure,但我猜任何解决方案都可以轻松移植到任何语言。
以下假设您使用的是经过锻炼的chromatic scale。音符具有频率的对数刻度。每个八度音阶将频率乘以二。在一个八度内,C、C#、D、D#、E、F、F#、G、G#、A、A#、B有十二个等比例的音级,编号从零到十一。
从频率中获取八度数和音符数:
- 将频率的对数以2为底
- 减去中间C频率的对数。
- 整数部分为八度数;
- (正)余数乘以十二,
是音符编号。这将不准确。
中央 C 下方的音符具有负八度数。
给定一个波的频率,确定从0到7的八度音程和调号,其中0是C,6是B,C#是7,A#是11。
你可以用一系列 if 语句来解决它,但必须有更好的方法来做到这一点。我的项目使用的语言是 Clojure,但我猜任何解决方案都可以轻松移植到任何语言。
以下假设您使用的是经过锻炼的chromatic scale。音符具有频率的对数刻度。每个八度音阶将频率乘以二。在一个八度内,C、C#、D、D#、E、F、F#、G、G#、A、A#、B有十二个等比例的音级,编号从零到十一。
从频率中获取八度数和音符数:
- 将频率的对数以2为底
- 减去中间C频率的对数。
- 整数部分为八度数;
- (正)余数乘以十二, 是音符编号。这将不准确。
中央 C 下方的音符具有负八度数。