I had a bit of fun with the Teensy Audio Library and implemented a MOS6581 / SID emulation using the
Teensy 3.1. It can play SID-Dump Files, which are register dumps of 25 registers updating 50/60 times a
second and setting the corresponding SID-Registers.
I am handling the register changes in a simple routine and setting the corresponding oscillator frequencies, filter cutoff frequency,
filter routing, filter resonance etc. according to it.
Here is how it sounds (sorry for the shaky video):
Features supported so far:
* Write to 25 of the SID registers
* Set global volume via register
* Set each oscillators frequency smoothly via registers
* Change waveform of each voice
* Noise (Linear Feedback Shift Register) implemented and working
* Filter controls / routing working
* Filter masks working
* Envelope registers working (timing needs to be verified, though)
There are still a few bugs:
* The ring modulation doesn't work so well yet - the output gets too silent.
* Oscillator sync is not implemented yet
And also a few things I'd like to include one day (possibly one of you could help?):
* 6502 CPU Emulation, for supporting real SID files (can be ported from libsidplay)
* Making a library out of it, for easier usage
* Combined waveforms support
I will release the source code soon - it's just a big mess of spaghetti-code now, but it works.
Teensy 3.1. It can play SID-Dump Files, which are register dumps of 25 registers updating 50/60 times a
second and setting the corresponding SID-Registers.
I am handling the register changes in a simple routine and setting the corresponding oscillator frequencies, filter cutoff frequency,
filter routing, filter resonance etc. according to it.
Here is how it sounds (sorry for the shaky video):
Features supported so far:
* Write to 25 of the SID registers
* Set global volume via register
* Set each oscillators frequency smoothly via registers
* Change waveform of each voice
* Noise (Linear Feedback Shift Register) implemented and working
* Filter controls / routing working
* Filter masks working
* Envelope registers working (timing needs to be verified, though)
There are still a few bugs:
* The ring modulation doesn't work so well yet - the output gets too silent.
* Oscillator sync is not implemented yet
And also a few things I'd like to include one day (possibly one of you could help?):
* 6502 CPU Emulation, for supporting real SID files (can be ported from libsidplay)
* Making a library out of it, for easier usage
* Combined waveforms support
I will release the source code soon - it's just a big mess of spaghetti-code now, but it works.
Last edited: