Theremin的声音在The Beach Boys歌曲中永垂不朽 Good Vibrations”中。许多人还将其声音与原始《星际迷航》系列的主题相关联,尽管显然这是女高音的模仿。
这个挑战要求您实施Theremin。
输入值
- 从鼠标或其他输入设备(例如,可以使用操纵杆)进行二维输入,这将从音频输出设备产生音调,如下所示:
- 增加x将增加音调的频率。请注意,频率随着音符呈指数增加,因此必须在鼠标x位置和音符之间实现线性关系,并且
- 增加y将增加音调的音量。
- 真实的人体产生的波形似乎有些混乱,因此,为简单起见,必须使用正弦波(或其近似)。
规则
- 产生的音调必须至少具有2个八度音阶范围。更大的范围是可以接受的。A-440必须在范围内。
- 为了创建连续可变的频率和幅度的可听外观,从输入设备的两个维度考虑的值范围必须至少为500。实现可以打开一个窗口(至少500x500像素)以从鼠标光标位置读取输入。或者不打开窗口,就可以直接从鼠标或其他输入设备读取坐标。
- 必须有一种简单的方法来停止程序-组合键,鼠标单击或其他常用输入设备。CTRL-c就足够了。
- 可以使用任何标准库,只要它们无需其他工作即可完全实现解决方案即可。
- Code Golf和I / O的标准规则
- 您可能会因为鼠标或输入设备失去对输入框的关注而停止。
笔记
- 由于输出音是动态生成的,因此必须注意确保音是连续波形。即不会因相位或振幅的突然变化而引起咔嗒声或爆裂声。
- 您可以将输入大小区域限制为500 x 500,但可能更大。
这是代码高尔夫球,因此任何语言中的最短答案都可以胜出。
特别感谢
特别感谢Digital Trauma提出的挑战并将其发布在Secret Santa's Sandbox中。我做了一些编辑,这是原始帖子。