【问题标题】:How to write a program in Linux/C to simulate a single octave piano using keyboard [closed]如何在 Linux/C 中编写程序以使用键盘模拟单八度钢琴 [关闭]
【发布时间】:2020-10-05 16:48:20
【问题描述】:

如何在 Linux/C 中编写程序以使用键盘模拟单八度钢琴。 就像我们从用户 a 那里得到输入,那么钢琴节点 C 应该是健全的。为了获得 d 的输入,钢琴节点 E 应该是健全的。我是 linux 编程新手,无法理解如何将键盘键与 Piano 节点接口。

【问题讨论】:

  • Music Trackers 采用的方法是记录已知频率的音符。然后,您重新采样此声音以使其在所有其他键的音高上调低或调高。
  • 您需要能够在不等待Enter 被按下的情况下检测按键。一种方法是使用termios 库。

标签: c linux linux-kernel linux-device-driver embedded-linux


【解决方案1】:

如何在 Linux/C 中编写程序以使用键盘模拟单八度钢琴

详细了解soundsFourier 转换以及Taylor seriesfloating point 数字。

第 1 步:找到一个(或多个)不错的库来帮助处理键盘和声音(可能还有视频),这样您就不必自己担心“许多环境”(例如命令行、KDE ​​和 Gnome) )。您可能会对libSDLGTK 和 GNOME、libSFMLQtALSA 等感兴趣...通过研究他们的源代码(因为它们是 open source),您可以学到很多东西。

第 2 步:阅读您选择的库(或多个库)的文档,尝试弄清楚如何编写程序,并尽您所能来实现它。另请阅读 Advanced Linux Programmingsyscalls(2)

第 3 步:如果您遇到困难,请针对该问题提出新问题,同时尽可能具体地提出您的问题(包括您尝试过的方法,如果适用)。

【讨论】:

  • 嗯。对于只有一个八度音阶(12 个音符?)的初学者来说,我非常不会为傅立叶变换或泰勒级数或其他极其不必要的过度复杂化而烦恼。只需录制 12 个音符并在需要时“按原样”演奏。我也不会为任何“高级 Linux”废话而烦恼 - 学习编写可移植代码(并使用可移植库)。
  • 由于缺少谐波,协奏曲听起来不像钢琴。可能FFT很好。 (而且你忘了提对应的库)
猜你喜欢
  • 1970-01-01
  • 2011-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-24
  • 2020-07-31
  • 1970-01-01
相关资源
最近更新 更多