digi-samples

The SID chip was never designed to directly play back recorded digi samples... it should therefore not be a surprise that people found different ways to do it anyway (see my text here for background information).

All of the found solutions have in common that the C64's CPU is quite heavily used to trigger the output of each individual audio sample and the achieved timing precision then heavily impacts the resulting audio quality.

Finally the little RAM that is available on the C64 (>64kB) is obviously a handicap for anyone that tries to play back sampled audio data: For comparison, the 16-bit PCM audio data that we know from our old CDs would completely fill up all the available RAM of the C64 with as little as 0.75 seconds worth of mono-audio.

Here some examples:

  • Among the first pulse-waveform based players are Castle_Wolfenstein released in 1983 (also used on later titles like 1984 Jump_Jet). It uses 1-bit samples played at around 7kHz and the quality is... not so great.
  • Back in 1984 Impossible_Mission then was one of the earlier examples that used the D418-volume-register to playback samples (4-bit). The sample rate fluctuates wildly in the 6kHz to 13kHz range.
  • Demos using nothing but a "digi playback loop" then demonstrated how quickly the C64 memory is completely filled up with sample data, and Kung Fu Fighting may serve as an example here.
  • For the years that followed the 4-bit D418-volume-register based stuff like Arcade_Classics, Arkanoid or Digi-Piece_for_Telecomsoft was considered state-of-the-art. And with any well behaved dead home computer the story would have ended here.. except that it didn't.
  • The C64 was already 15 years old when somebody found out that samples can also be played by switching between different waveforms: Ice_Guys
  • And three years later somebody came up with the idea to use pulse-width-modulation to play samples: Wonderland_IX_part_9 or the more recent Wonderland_XII-Digi_part_1 (unfortunately this approach is sometimes associated with an annoying carrier signal)
  • The next approach that surfaced around 2008 uses frequency-modulation and precisely timed sample intervals to achieve 8-bit samples, see Tristar_Boulder or Fanta_in_Space, or the more recent Devoid_of. An interesting case from 2010 is the song Cubase64 that also added a compression scheme on top.
  • The most recent approach is then probably this one here from 2014. It is based on the old D418-volume-register one, but by carefully configuring all three SID voices it creates an "environment" that works on all SID models - unlike the basic D418-approach which tends to work poorly on 8580 SID chips. On top, the used "environment" allows to also use the filter related bits in the D418-register - so instead of 4-bit samples ~8-bit samples can be played: Musik_Run_Stop
 

Leave your comments

0 / 400 Character restriction

People in this conversation

Comments (4)

  • Guest (Ben in Seattle)

    Permalink

    You have so many interesting techniques mentioned here and I'd love to hear them, but the only example I was able to get working is Impossible Mission which is embedded at the top. The rest of the links just go to the generic Tiny R Sid page. Could you maybe embedded the other SIDs on this page the same as you did for Impossible Mission? Thanks!

  • Guest (Tiny'R'Sid)

    In reply to: Ben in Seattle Permalink

    The other SIDs are already embedded the same way. I cannot reproduce your problem and on my Win10 machine all the links work fine in Chrome (131.0.6778.86) as well as in Firefox (104.0.2).

  • Guest (Royal Meservy)

    Permalink

    Are there any publicly available tools for composing songs in the last two methods listed above?

  • Guest (Tiny'R'Sid)

    In reply to: Royal Meservy Permalink

    There is a tool created by THCM that uses the second last approach (It is a converter for existing MOD files. AFAIK it hasn't been publicly released but you can always ask him.). Mahoney has well documented his work on Musik_Run_Stop - so that programmers can use it. But I don't know if there are any enduser tools.