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.
精彩评论