C64 上的实时 DSP 类型效果:这怎么可能?
I just saw this, and it is one of the most amazing things I've ever seen:
http://www.youtube.com/watch?v=MDrqBYkco-Y
I am not even able to fathom this. What is going on here?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
本文深入解释了正在发生的事情。主要技术是语音压缩,其工作原理与音乐音序器或跟踪器相同,但针对语音量身定制。这使得调整音高和速度变得容易一些(因为这就是跟踪器所做的)。添加一些典型的 C64 技巧来同步所有内容并利用每个 CPU 周期。
This paper provides an in-depth explanation of what is going on. The primary technique is voice compression that works the same was as a music sequencer, or tracker, but tailored for voice. This makes it somewhat easy to do pitch and velocity adjustments (since, that's what a tracker does). Throw in some typical C64 trickery to synchronize everything and utilize every CPU cycle.
我在 Atari 2600 上完成了四声波表合成。每 76 个 CPU 周期输出一个样本——46 个周期用于音乐,30 个周期用于显示和其他东西。每个样本基本上必须执行以下操作:
进位标志必须在进入样本生成代码时清除,并在退出时清除。 Y 寄存器和累加器在进入时可以是任何内容,并且在退出时将被丢弃。不使用 X 寄存器。
我猜测 64 的 Cubase 演示使用跟踪器循环每个音素,然后使用一些相当简单的代码来实现回声效果,同时使用 C64 的硬件过滤和音量控制来实现过滤和音量效果。
I've done four-voice wave-table synthesis on an Atari 2600. Outputting one sample every 76 CPU cycles--46 cycles for music and 30 cycles for display and other stuff. Each sample had to do essentially the following:
The carry flag must be clear on entry to the sample-generation code, and will be clear on exit. The Y register and accumulator may be anything on entry, and will be trashed on exit. The X register is not used.
I would guess the Cubase demo for the 64 has each phoneme looped using a tracker, and then uses some fairly simple code for the echo effect, while using the C64's hardware filtering and volume control for the filter and volume effects.