webSID project
At the time the project was still called Tiny'R'Sid based on the name of the TinySid player that it had been derived from. The added 'R' in the name signified that this was an enhanced version of TinySid that also supported the playback of a file type called "RSID" (which the original player doesn't support). See C64 music section for more information.
Shortly after the creation of the Tiny'R'Sid Flash version, WebAudio was introduced in 2012, and around 2013 I ported the player to this new infrastructure. At the time it wasn't clear if the new experimental WebAudio infrastructure would be there to stay.
Originally I had not planned to do anything more than just port the existing TinySid player. But somewhere along the way the memories of the childhood home computer which had not been on my mind for the previous two decades must have struck a chord. And analyzing flaws of the existing code from the top down prooved to be a rather entertaining pasttime: Somebody would send me a music file that the player did not play and I'd have a look at the music program's 6510 assembly code to figure out why that was.
The Tiny'R'Sid project had started out with general improvements (e.g. fixes on waveform and envelope generation, adding full support for illegal CPU instructions, etc) and with enhancements to play "RSID" type files: Adding support for NMI (non-maskable-interrupt) timer based sample playback and a "predictive" approach for some of the timing related features (e.g. the SID chip's "ADSR delay bug", etc). This approach kept the added runtime overhead low - allowing the player to still run on slow devices. But while many RSID songs now seemed to play reasonable well, the inflow of bug reports soon made it painfully obvious that there just were certain types of problems that this implementation would never be able to handle. (In particular the code originating from the C64's "demo scene" oftentimes sails close to the hardware's limitations while using every obscure feature that mihgt help to squeeze the maximum out of the ancient hardware. For this code to work correctly stuff has to happen precisely at the right moment down to the correct clock cycle. To take any kind of emulation shortcut in this context is usually a recipe for disaster.)
Since (unsurprisingly) devices again had grown faster these past years, I finally decided (I guess it was in 2019) that the performance aspect was now largely irrelevant and that it might be fun to rewrite the player based on a proper cycle-by-cycle emulation and get rid of the flaws of the 'predictive' implementation. (You may still come across the old player version under the name "WebSid (Legacy)".) The rewritten player implementation now emulates what happens to the various C64 hardware components (CPU, timers, VIC II) in each clock cycle (~1MHz clock speed) - and little remains of the original TinySid code.
Over the years webSID has received various minor enhancements, like the support for stereo output and realtime visualization of SID chip internals. You might want to visit the SPECIALS section for more information.
Feel free to use my Web player (and plugins, e.g. webSID) in your non commercial Web projects. The source code can be found
here on bitbucket.org.
credits
This project had started based on the TinySid PSID emulator by T. Hinrichs, R. Sinsch (though there is little of that code left by now). The "combined waveform" generation, "waveform anti-aliasing" and "filter" implementation was originally created by Hermit (see http://hermit.sidrip.com) and webSID uses somewhat "improved" versions of that code. I could not have done this without the reverse engineering information published by Christian Bauer, Wolfgang Lorenz, resid team, etc. The playback of Compute! .mus files is based on "Enhanced Sidplayer" by Craig Chamberlain. MD5 Message-Digest Algorithm, Copyright (C) 1990, RSA Data Security. Many thanks also go to Wilfred Bos and to Markus Klein for their patient feedback.
As for the 3rd party emulators in the Chiptunes forever section, detailed credits as well as more technical information are best looked up in the respective project repositories.
about this site
I've created this Tiny'R'Sid / webSID site back in 2012 and except for the text content I've made few changes over the years. In fact I still regret my decision to use this as an experiment to try Joomla and I now try to touch that garbage as little as possible (more explanations about this aversion can be found here in my blog).This also means that the layout was designed for "large" computer displays at a time when "responsive Webdesign" had not yet been invented. You'll probably not be happy when trying to use it on a smartphone.
A recurring pattern that has plaged the Internet (and also this site) throughout the past two decades are the countless bugs that Google and their subsidiary Mozilla have deliberately and/or incompetently managed to automatically "push down" their user's throats. It seems reasonable to presume that this pattern is not going to change in the future. But I have no intention to waste any more of my time debugging their garbage for free or to write workarounds that will undoubtedly cause even more work with their next forced update. I recommend that you just try a different browser if something suddenly no longer works correctly. (I am aware that at the moment (2024) Google's garbage incorrectly calculates the "mouse over" positions on the EXPLORER page - making ît difficult to click on the correct items. This same functionality currently still works fine in Firefox. But who knows what they will fuck up tomorrow..) Thank's to the dimwits responsible for our "favorite" browsers you may also experience some inconvenience with the automatic audio playback (some examples for respective idiotic design decisions can be found in my blog post here.) As a workaround you may need to manually click the "stop" and then the "play" button in the embedded music player widgets - or you can try to locate the place in the browser's configuration where you can white-list a specific site to auto-play music. (I'll not waste my time trying to explain where that setting can be found now, since by the time that you read this the morons will most certainly already have moved it elsewhere once again..)
Comments
- No comments found
Leave your comments