FS#5130 - SID codec based on tinysid

Attached to Project: Rockbox
Opened by Dave Chapman (linuxstb) - Saturday, 15 April 2006, 11:30 GMT
Task Type Patches
Category Codecs
Status Closed
Assigned To No-one
Operating System All players
Severity Low
Priority Normal
Reported Version
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 0
Private No


I'm uploading this patch on behalf of the author, Rainer Sinsch.

The codec is working in realtime on both Coldfire and ARM targets. The only real issue is track running time - currently all tracks are hard-coded to display a 2 minute running time, and they never stop - you need to manually press NEXT to go to the next track.
This task depends upon

Closed by  Dave Chapman (linuxstb)
Monday, 17 April 2006, 10:40 GMT
Reason for closing:  Out of Date
Additional comments about closing:  Updated version of the patch uploaded by its author here:
Comment by David Brown (ep0ch) - Saturday, 15 April 2006, 12:01 GMT
Simply brilliant! Been waiting for sid playback for a while and it plays back with little boost (about 8% on 5g)

Any idea how to implement navigating through subsongs?
Comment by Eli Sherer (elisherer) - Saturday, 15 April 2006, 12:26 GMT
it's interesting
even on winamp there isn't a length or seeking capabilites
and SID files are ment to be looped.
2:00 minutes is a bit too much concidering the files are not over 6KB

Comment by Dave Chapman (linuxstb) - Saturday, 15 April 2006, 12:45 GMT
The HSVC SID collection contains a song length database - an MD5 checksum and running time for all SIDs included in that collection - some of these are lot longer than 2 minutes.

I think the only solution to track lengths is to somehow incorporate this database into Rockbox. The codec can then calculate the MD5 checksum of the .sid file, and stop playing after the specified length of time.

subsongs are more troublesome - Rockbox doesn't have a concept of multiple tracks within a single file.
Comment by Eli Sherer (elisherer) - Saturday, 15 April 2006, 13:14 GMT
but i have sid files not from sid collections so what about my files?

maybe there's a calculation you can do before playing the file to measure the length of the track?
Comment by Dave Chapman (linuxstb) - Saturday, 15 April 2006, 14:14 GMT
I don't believe you can auto-detect the track length from a SID file - I think it needs to be specified manually. But that's a good point - when track length handling is added, we need a mechanism for a user to add track lengths for files not included in the standard database (if we go with the database route).
Comment by Paul Louden (darkkone) - Saturday, 15 April 2006, 23:16 GMT
Forgive my ignorance in the way SIDs play, but if they loop doesn't that mean there's eventually a point where you reload (or go back over) data that you've played before? Why isn't it possible to stop at that point? Or is this one of those "I can explain why SID songs can't be stopped after one run, but it's complex and technical?" I will accept that as an answer, but if a fairly simple, summarized, or otherwise explanation is available, I'd like to see it. I know it can't be that simple because then it'd be done, but I'm mostly curious about what makes it difficult.
Comment by Jonas Häggqvist (rasher) - Sunday, 16 April 2006, 09:16 GMT
The reason is, as far as I understand it, that SID songs are not just song-data, but programs that output sound. This makes it quite difficult (or even impossible?) to determine when a song loops or ends. I guess it's possible to do some analysis on the entire output, but that's probably too taxing for the targets.

Now, a bug-report: I seem to be getting only "half" of the songs' channels on my Iriver H120, or at least, not the entire output. For a song like Galway_Martin/Arkanoid.sid from the HVSC I only hear the background chords, not the actual melody.