Skip to content

A parser and player for C64 Sid files using the Web Audio Api.

License

Notifications You must be signed in to change notification settings

stevi84/sid-player

Repository files navigation

SID-Player

A modern parser and player for C64 SID files using the Web Audio API.

Overview

This SID-Player is a modern reimplementation of the classic Sidplayer by Craig Chamberlain in TypeScript. It uses the Web Audio API to reproduce the sound of the C64 SID chip. Like the original player it displays the played notes in real-time on a virtual piano keyboard. A number of songs can be selected from a drop down menu. Additionally files can be selected from the local drive (e.g. downloaded from Compute's Gazette Sid Collection).

Key Features

  • Supports all features of the original Sidplayer
  • Implementation of core SID chip functionalities
  • Pure TypeScript implementation without external dependencies

Live Demo

A live version of the player is available here: https://stevi84.github.io/sidplayer/

Technical Details

Web Audio API Integration

The player uses the Web Audio API for audio processing. The following diagram shows the structure of the audio network:

Web Audio Api Network

Known Limitations

  • Advanced Sidplayer features not yet implemented
  • Waveforms were intendedly not exactly copied from the C64
Command Description Supported
def Define phrase
cal Call phrase
end End phrase
hed Repeat head
tal Repeat tail
tem Tempo
utl Utility duration
vol Volume
bmp Increase/Decrease volume
f-m Filter mode
aut Auto filter voice
res Filter resonance
flt Filter voice
f-s Filter sweep
f-c Filter cutoff
f-x Filter external audio
atk Attack rate
dcy Decay rate
sus Sustain level
rls Release rate
pnt Release point
wav Waveform
p-w Pulse width
p-s Pulse width sweeping
snc Synchronisation
rng Ring modulation
vdp Vibrato depth
vrt Vibrato rate
por Portamento
dtn Detune
tps Transpose
ms# Measure no effect
3-O Voice 3 off
flg Flag no effect
hlt Halt
aux Auxiliary no effect
note Note
abs Absolute set pitch
triplet Triplet
rup Rate up
lfo Waveform type
rdn Rate down
src Modulation source
dst Modulation destination
sca Modulation scale
max Modulation maximum
pvd Pulse-width vibrato depth
pvr Pulse-width vibrato rate
utv Utility voice
hld Hold time
jif Jiffy length
p&v Portamento & vibrato
rtp Relative transposing

Installation and Usage

git clone https://github.com/stevi84/sid-player.git
cd sid-player
npm install
npm start

Further Resources

For further information about the Sidplayer and C64 SID technology:

Songs

License

This project is licensed under the MIT License. See the LICENSE file for details.

Contributing

Contributions to the project are welcome! Please submit a Pull Request or report issues via the Issue Tracker.

About

A parser and player for C64 Sid files using the Web Audio Api.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published