来自打印机的音乐?

3D打印 g代码
2021-05-15 07:42:40

回到“唱歌磁盘驱动器”的时代,我想知道是否有人写的音乐要在 3D 打印机上演奏。我们大多数人都注意到,用于 X 和 Y 驱动器的伺服电机会根据运动速度产生不同的螺距。通过一些细心和实验,人们可以编写 g 代码来产生一个音调,甚至一个 2 音和弦。那么——这已经完成了吗?有人想这样做吗?(请注意,无需同时制作打印件,但这会更优雅)。

2个回答

是的,以前做过,请看这里这里。

上面链接的第一个存储库的 README 文件包含对所涉及的基本思想/计算的详细说明。一个简短的摘录:

由于您可以通过设置 G1 的参数来精确控制沿某个轴运动的速度和距离,因此您可以控制步进电机的运行频率以及完成运动的实际时间。

另一方面(双关语),您还可以使用代码播放音乐M300

我实际上是在我的 Malyan M150 上这样做的。

经过根本没有那么多的实验,结果证明产生的音调的频率与电机的速度成线性比例。由于人类感知音乐的方式的性质,实际频率根本无关紧要,只是音调之间频率的相对差异。这意味着让 3D 打印机播放曲调实际上真的很容易,您只需要确保当下一个音调的频率需要比上一个高出 20% 时,电机需要移动速度提高 20%,无需实际测量打印机以何种速度产生何种色调。

主要问题之一是电机的最大速度,对于一些高音来说,这还不够高,但是这个问题可以通过将所有速度乘以一个小于 1 的数字来解决,从而降低所需的速度,同时仍保持原始旋律。事实证明,同时演奏两种音调对于我不太出色的编程技能来说有点太难了,同时也不值得付出努力,因为不知何故,电机之间的音量差异很大。

最后,我制作了一个 MATLAB 脚本,将 MIDI 文件转换为 G 代码,结果如下:3D 打印机播放爆米花歌曲