[转]MIDI note/frequency conversion

博客给出了一段C语言代码,用于实现MIDI到频率的转换,函数名为MIDItoFreq,通过特定公式计算频率,还提供了代码来源及可用于核对的表格链接。
  [code]
 double MIDItoFreq(int keynum) {
        return 440.0 * Math.pow(2.0, ((double) keynum - 69.0) / 12.0);
    }
[/code]



source:
http://www.musicdsp.org/showone.php?id=125

“Here is some C code: double MIDItoFreq( char keynum ) { return 440.0 * pow( 2.0, ((double)keynum - 69.0) / 12.0 ); } you can double-check the table here: http://tomscarff.tripod.com/midi_analyser/midi_note_frequency.htm
`nh.param("/odom_frequency_conversion/frequency", odom_freq, 200);` 是 ROS 中用于从参数服务器获取参数值的常用方法。下面是对这行代码的详细解释: ### 功能说明 这行代码从 ROS 参数服务器中获取名为 `/odom_frequency_conversion/frequency` 的参数值,并将其存储在变量 `odom_freq` 中。如果参数服务器中没有这个参数,则使用默认值 `200`。 ### 参数分解 1. **`nh`** `ros::NodeHandle` 对象,用于与 ROS 参数服务器交互。 2. **`.param()`** ROS 提供的参数获取方法,用于从参数服务器读取参数值。 3. **`"/odom_frequency_conversion/frequency"`** 要获取的参数名称(使用斜杠 `/` 表示层级结构)。 4. **`odom_freq`** 用于存储获取到的参数值的变量(必须预先声明)。 5. **`200`** 默认值,当参数服务器中不存在该参数时使用。 ### 执行流程 1. ROS 会首先在参数服务器中查找 `/odom_frequency_conversion/frequency` 参数。 2. 如果找到,将其值赋给 `odom_freq`。 3. 如果未找到,则将 `odom_freq` 设为默认值 `200`。 ### 典型应用场景 - 从启动文件 (`launch`) 或命令行动态加载配置参数 - 为节点提供可配置的运行时参数 - 设置默认值防止参数缺失导致错误 ### 注意事项 - 变量 `odom_freq` 需要预先声明(通常是 `int` 或 `double` 类型) - 参数名称区分大小写 - 参数可以在启动文件中设置,例如: ```xml <param name="/odom_frequency_conversion/frequency" value="100" /> ``` ### 替代方法 如果想强制必须存在该参数(不使用默认值),可以用: ```cpp nh.getParam("/odom_frequency_conversion/frequency", odom_freq); ``` (但如果参数不存在会返回 `false`,需要错误处理)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值