C64 上的实时 DSP 类型效果:这怎么可能?

发布于 2024-09-26 06:30:23 字数 185 浏览 1 评论 0原文

我刚刚看到了这个,这是我见过的最令人惊奇的事情之一:

http ://www.youtube.com/watch?v=MDrqBYkco-Y

我什至无法理解这一点。这是怎么回事?

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

猫九 2024-10-03 06:30:23

本文深入解释了正在发生的事情。主要技术是语音压缩,其工作原理与音乐音序器或跟踪器相同,但针对语音量身定制。这使得调整音高和速度变得容易一些(因为这就是跟踪器所做的)。添加一些典型的 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.

近箐 2024-10-03 06:30:23

我在 Atari 2600 上完成了四声波表合成。每 76 个 CPU 周期输出一个样本——46 个周期用于音乐,30 个周期用于显示和其他东西。每个样本基本上必须执行以下操作:

  out1 = table1[phase1] + table2[phase2];
  out2 = table3[phase3] + table4[phase4];
  phase1 = (phase1 + freq1) mod length1;
  phase2 = (phase2 + freq2) mod length2;
  phase3 = (phase3 + freq3) mod length3;
  phase4 = (phase4 + freq4) mod length4;

进位标志必须在进入样本生成代码时清除,并在退出时清除。 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:

  out1 = table1[phase1] + table2[phase2];
  out2 = table3[phase3] + table4[phase4];
  phase1 = (phase1 + freq1) mod length1;
  phase2 = (phase2 + freq2) mod length2;
  phase3 = (phase3 + freq3) mod length3;
  phase4 = (phase4 + freq4) mod length4;

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文