Commodore 64 and Raspberry Pi 4 = Synth6581
raspberrypi.org
raspberrypi.org
There are a few pseudo-SID hardware projects[1,2,3] that can produce 'good enough' SID-like sounds, maybe the more honourable thing is to rework this project into something that uses those ?
---
[1] https://www.c64-wiki.com/wiki/SwinSID
For some it's probably fine, for others it's just not the same.
[2]https://www.facebook.com/plugins/post.php?href=https%3A%2F%2...
I'm working on the latter one, Sidmax, so if there are any questions happy to answer.
Part of the sid sound comes from the non-linearity due to approximation in its design. For example the state variable filters are very non-linear on the 6581. It even differs significantly from each individual chip to chip[1]. The best software models I'm aware of are in residfp[2] and jsidplay[3]. After some work in octave I found the filter model can be recreated without the large lookup tables used in this software.
Of course getting the digital part correct is also important. There is a lot of documentation on this resulting from the decap [4].
Some features like bitfade, multiple driven bits in the wave corruption etc do not translate well to FPGA. They can be approximated with timers and lookup tables.
[1] Filter response chart: https://csdb.dk/forums/?roomid=14&topicid=105719
[2] residfp: https://bel.fi/alankila/c64-sw/index-cpp.html
[3] jsidplay2: https://haendel.ddns.net/~ken/
[4] Sid internals: https://sourceforge.net/p/sidplay-residfp/wiki/SID%20interna...
Still managed to get myself a working dual SID configuration with one 6581 and one 8580. But even That is obviously not ideal, since you can’t do cool stereo SID with that, at least if you want to it sound good. I thought maybe it would be OK, but a lot of tracks really need one or the other, the filters are usually pretty mucked up on one or the other. But you know, beggars can’t be choosers. Maybe I could do a stereo setup with one SwinSID.
Even though I didn’t grow up with a C64 though, man, nothing really beats the real thing when it comes to SID. It’s a shame it’s so damn challenging to emulate.
Optimally the end result would be a 6581 chip model (or possibly just some parts of the chip) with 2d input indicating what kind of chip to use today, possibly another input for temperature, and then driven by those existing 6581 emulators.
It could potentially use insane amounts of compute power just to run it, if it uses the same approach as those researchers that did a speech synthesizer that produced one sample at a time from the network.. But it could also have very compelling results.