| |
AKA :
csidl
Website :
http://hermit.sidrip.com
Credits :
Download :
Look for downloads on external sites:
Pokefinder.org
User Comment Submitted by Hermit on 19 February 2022
The things mentioned below, and other improvements have lead to a new version:
cSID-light 1.1 | User Comment Submitted by Hermit on 4 July 2018
I found a better way to generate the combined waveforms. The result is very similar now to the recorded C64 samples used in VICE ReSID emulation, but without adequate oversampling (like in 1MHz cycle-based cSID) they sound noisy in 44kHz cSID-light. Therefore I won't release a new version of cSID-light with these 'better' combined waveforms, I just share the new modified generator code in case someone wants to experiment. (The full source code can still be requested from me by email if you don't find it elsewhere.)
void createCombinedWF(unsigned int* wfarray, float bitmul, float bitstrength, float treshold) {
int i,j,k;
for (i=0; i<4096; i++) { wfarray=0;
for (j=0; j<12;j++) {
float bitlevel=((i>>j)&1);
for (k=0; k<12; k++) if (!((i>>k)&1)) bitlevel -= bitmul / pow(bitstrength, fabs(k-j));
wfarray += (bitlevel>=treshold)? pow(2,j) : 0; }
wfarray*=12;
}
}
createCombinedWF(TriSaw_8580, 0.5, 2.2, 0.9);
createCombinedWF(PulseSaw_8580, 0.23, 1.27, 0.55);
createCombinedWF(PulseTriSaw_8580, 0.5, 1.6, 0.8);
The difference from the original code as you can see (only in 2 rows), that only the wave-selector bit-outputs with 0 value (ground) have significant effect on the others, pulling them downwards. It seems this is how this works inside the SID. (NMOS and HMOS drivers have weak 'resistors' towards Vcc/Vdd and much stronger FET-switches towards gnd.) | User Comment Submitted by Hermit on 1 January 2018
From now on I don't distribute C source code and Makefile. But I can send it to people who need it and think it's better than nothing.
As for the valuable comments about SID internals, I guess I'll release a separate document... | User Comment Submitted by Hermit on 3 June 2017
Nice to see the progress in compiling/porting to other platforms/OSs.
As a hint, I could imagine that floating point calculations sometimes peak the CPU usage, at least I've heard this issue mentioned by Delek of DefleMask when they worked on this code to include in their tool.
I'm not too good at how PCs optimize (or not) floating point calculations of near-zero numbers but it deserves an attention if performance issues may arise.
About SDL: I thought SDL is well-established enough to be a crossplatform choice of sound generation, but I only use the sample-playback routine of it so you don't have to stick to it when porting. I think it's fairly easy to use WinAPI or CoreAudio instead, or whatever is preferred on a given platform... PortAudio and similar libraries (there are some less known others in small size) can also be used if cross-platformness of the source is still wished. | User Comment Submitted by chatGPZ on 31 May 2017
it'd make more sense to contribute a proper audio path to SDL :) | User Comment Submitted by Hoild on 31 May 2017
Compiled out-of-box with a single warning on my OS X/PowerPC 10.5.8 system using Apple's Altivec-autovectorizing fork of GCC4.0.1 -- that was nice and unexpected on such an obsolete and obscure system. However, performance is abysmal with constant skipping and inconsistent playback speed also it somewhat hogs my 550 MHz XPC-7410 CPU, but this is quite usual with SDL audio and/or video output on this platform/architecture combo. If I had the time I would contribute native CoreAudio output support to it, for that would make a dramatic improvement to cSID-lite's performance on OS X/PowerPC and would also be nicer on current Macintels. The performance issue is almost certainly due to the SDL audio output -- MrSID's iTunes-style SIDPLAY.app works smooth on the same box with all of its GUI and waveform scope eye candy (just like native builds of VICE 2.2 with ReSID and CoreAudio output). | User Comment Submitted by soci on 29 May 2017
And now it includes the explanation of combined waveforms ;) The band limited pulse/saw generation I imagined differently, but this works too with a really minimal aliasing. | User Comment Submitted by Hermit on 29 May 2017
Despite the name, this cSID version is pretty much enhanced with better 6581 filter emulation (with filter-distortion) and playlist capabilities. Still operates in commandline (linux by default), and eats much less CPU resource than the original cSID which clocks sound emulation at 1MHz. Most SIDs can be played with csidl fine though due to the non-cyclebased operation ADSR can behave differently than on real machine...
No digi, as the purpose of this program is still to be easily runnable on any linux system (and compiled for other systems). I'm targetting fairly good sound with extra low CPU usage in this release... a poor man's SID-player, so to speak.
There's also a bash script 'csida' which plays every .sid/.SID file in the current folder. Easily modifiable for the cycle-based 'csid' to give it a kind of playlist support.
What might be the most important part for developers, I made a lot of comments in the source about my recent findings on the internals and workings of the SID chips. |
|
|
|
| Search CSDb |
| Navigate | |
|
| Detailed Info | |
|
| Fun Stuff | |
· Goofs · Hidden Parts · Trivia
|
|
| Forum | |
|
| Support CSDb | |
|
| |
|