开发者

DSP-type effects in realtime on the C64: How is it possible?

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?


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.


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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜