Angelic47
Angelic47
你好,感谢指出,欢迎提交一个pullrequests
https://github.com/Angelic47/LibWaveSynther/blob/bd0b71a59a46dab562f13f67424242d722b26779/LibWaveSynther/synther.c#L68 简单说这里用了一个算法: 音频变速重采样。 对于一个波表来说,首先我们要知道其“周期数”。在这个程序里因为所有的表都是仅保存了一个完整的周期,因此周期数固定为1。 那么我们假如要输出44100hz,假设要弹奏钢琴的国际标准音A4(440.000hz)。然后这个程序里的波表是512个点,周期是完整一个周期。 那么每个周期的点数毫无疑问是512 / 1 = 512。 而A4这个音要以440hz播放这个周期,也就是说每秒播放440个完整周期。那么能够算出来512 * 440 = 225280个点。 由于最终输出要44100hz,而我们算得原始情况下要一秒225280个点。为了进行重采样,我们要的就是在不改变输出频率的情况下改变波表的正确播放速度,让这个225280以正确的播放速度重采样到44100。则计算225280 / 44100 = 5.108,最终得出结论若播放A4音,则渲染每个点的时候需要跳跃5.108个下标来查波表。 此时这里会发现下标出现了小数。解决方法是使用线性插值,对两个临近的点进行插值计算。即result = table[5] + table[6] * 0.108。 而对于浮点数的问题,为了提高性能,改用定点数优化掉即可。 如此可见其实算法是一致的,而改变音高,唯一的参数实际上就是每次渲染要跳跃多少个点。 为了提高效率,这个参数没必要动态计算,可以直接先在编译之前计算好,直接打表,即这里的keydelta.c。用的时候直接根据音高读出来即可。...
关于这个字体,其字体文件中描述字段显示“这是日文字体Misaki基础上补充的”。 至于原作者,我经过各种搜索,已经无法查证…… 因此版权暂不明确,但也没有证据可以证明原作者已经放弃了版权,但考虑到Misaki是一个开源字体,在没有原作者附加说明的情况下应当是可以商业使用的。 如果原作者认为本项目字体侵权,也欢迎联系我。
Hello, I recently discovered this project and conducted some further in-depth research on it. Here's what I tested on my stm32f412 development board: 1. I wrote a standard hello world...
Yes, that's exactly what I'm getting at - aside from booting from SRAM, there might be another path to success. At least, that's how the hardware seems to behave. I'm...
Regarding voltage fault injection, from what I know: It's not strictly necessary to use an FPGA, even though it is a very suitable solution. [Picofly](https://github.com/Ansem-SoD/Picofly) managed to carry out an...
Ultimately, my attempt was unsuccessful. Here is the story that unfolded over these past few weeks: As mentioned before, I discovered that the STM32F412 I'm working with completely locks access...
So far, I've roughly confirmed that the STM32F412 has a firmware self-destruction feature. At least, the chips I have on hand behave this way. In the past, besides attempting voltage...