Web Experiment: SID 6581 Visualizer

I grew up listening to the music from my Commodore 64. As time goes by I still find those tunes interesting and I always wonder how did the musicians accomplish those sounds with such a limited hardware.
Last week I did this web experiment that visualizes the state changes in the chip synthetizer during the playback of any SID song.

Visualizing SIDs

Commodore 64 was famous for being one of the first personal computers with a dedicated sound chip able to play several voices simultaneously and with some degrees of freedom to create more interestig sounds that the regular beep sounds.

Thanks to that many games had amazing soundtracks that I still like to revisit (because of nostalgia) but also because of how intrincate they sound for today standards.

Some weeks ago I discovered jsSID, a nice project in github that ports to javascript all the known implementations of the MOS6581 chip synthetizer (from all the C64 emulators).

Messing around with it I discovered that all the data related to the state of the chip was easily accesible, so I decided to create a front-end to visualize the state during the playback.

The problem with SID music is that musicians back in the day used all the tricks available to create new and interesting sounds, and to do so they relied on sending hundreds of messages per second to the sound chip (to fake extra voices or to create new wave forms).

Because of that, visualizing the state of the chip is not so easy, all the values change very fast and without a propper representation over time you would miss the interesting parts.

Thats why I started playing with timeline representations. I still have plenty of room for improvement in the representation but I’m happy to see that all the features in the chip are mapped on the screen so you can see the whole state of the chip.

Playing with the SID

Once I had the representation I thought about allowing the user to interact with the SID in runtime, – what would happend if I change this value? lets find out! – The only problem with interacting with the chip while is playing a soung is that the state keeps being overwritten constanly so any change made will last for less than a second.

To avoid that I tweaked the implementation of the synth so you can block some messages to some parts of the chips, freezing the state to the current one.

From there I kept improving the interface till I thought that it would be nice to hook a MIDI keyboard to the chip, and thanks to the MIDI API I was able to do it very fast.

The problem is still that using a regular MIDI keyboard with a chip sounds bland, to get the full performance of the chip you need to add a layer of control over the synth to transform the notes from the MIDI to interesting sounds in the chip. But that could be a nice project for the future.

Feel free to play with the synth and let me know what you think!

4 Responses to “Web Experiment: SID 6581 Visualizer”

  1. JCH Says:

    I just found this visualizer and I must say I’m very impressed, it’s really informative. I had thought about doing something exactly like this these days (only using Hermit’s jsSID instead) and even started coding a smattering of it, but then I thought I’d search the internet first to see if someone had come up with the same idea.

    Good thing I didn’t get very far. 🙂

    One idea I had was to make horizontal pulse width slider bars for each channel. There could be a progress bar or a pin moving according to the pulse width. On top of the bars, there would be sort of a flat pyramid, indicating that the pulse gets thinner in each side of the bar but clearest right in the middle. Being a C64 composer of old days, I would find that really interesting to look at.

    I was also thinking of having the entire HVSC tree in the left side, ready to browse through.

  2. tamat Says:

    Hey JCH, glad you liked it. Thanks for the comments.

    Its a pity I dont have more time to invest in this project, there are more parameters I could show as you said, maybe one day I will resume it, meanwhile, feel free to take the code and fork it: https://github.com/jagenjo/sidviz

    About HVSC, Im not sure I can do that, I mean, I guess the songs have copyright issues, but it would be awesome.

    Cheers!

  3. JCH Says:

    Thanks, I will have a look at it.

  4. JCH Says:

    I have now improved the SID visualizer with pulse width boxes as well as various other minor tweaks. I hope you like it. The new version has its own blog post here:

    http://chordian.net/2018/03/18/improved-sid-visualizer/

    If you want the updated source codes, I’ll PM them to you. 🙂

Leave a Reply


eight − 7 =