SIDPLAYER for VGA
Oldbitcollector (Jeff)
Posts: 8,091
Just finished up a revision of my SIDPLAYER for VGA configurations. (Updated)
Designed with QuickVGA+ in mind, this will work on any Demoboard setup with additional SD configuration.
Grab a copy it from here (There is a file of SID DMP files as well)
Edit: Ahle2 was kind enough to share his personal DMP collection as well:
SidDumpsMegaArchive_zip
OriginalSIDcogDemoTunes_zip
Dump the DMP files into a folder called "dmp" on your SD card.
OBC
Designed with QuickVGA+ in mind, this will work on any Demoboard setup with additional SD configuration.
Grab a copy it from here (There is a file of SID DMP files as well)
Edit: Ahle2 was kind enough to share his personal DMP collection as well:
SidDumpsMegaArchive_zip
OriginalSIDcogDemoTunes_zip
Dump the DMP files into a folder called "dmp" on your SD card.
OBC
Comments
I'm barely keeping up with all your cool code at the moment. Keep up the good work OBC.
Nice 8-bit look
It doesn't work in overclocked environment (vga driver fails)
It can see only 10 (from over 100) files on my fat32 sdhc card (it seems only Kye's SD driver can read this card well) ....
It looks that it is a time to have a vga media player. At least two of us started to making one.
I started this from something like "dos" - now it has only two commands. "dir" to list a directory and "play" to play a sid.
And it was a first try to get it all working together: Kye's fat32 driver, Ahle's sidcog, kbd/mouse combo and my Nostalgic VGA.
Nice! I need to work Kye's fat32 driver back into my code. My version of Sidplayer currently uses fsrw meaning that your DMP files need to be in the root of the SD card.
OBC
Standardizing on drivers for SD and VGA would be a good next progression. At the very least, document which SD driver and VGA driver is being used. This would be much more friendly to Propeller novices like myself. The current situation can be a bit frustrating.
--tom
Sorry about that! I really prefer the look/accuracy of the VGA picture over the composite NTSC signal. With the recent work being done by Karl, Alex, Marko, and pik33, we've got a lot of really great options for VGA displays.
@pik33,
Love the highlighter approach to selecting a SID file! Well done!
OBC
There is only one SD driver which can work with SDHC FAT32 cards: Kye's one.
It is harder to use than fsrw, (I still have to understand how to handle this abort stuff it uses instead of error codes) but fsrw can't see all files in the main directory of my 8 GB SDHC card.
And, yes, there are A LOT of different drivers for everything.... and I I added another one for vga...
I had to dig out my old demo board (it's from 2007) to test out these VGA enabled players. I was shocked once again of the POOR audio quality. I wonder if Parallax fixed the low cutoff frequency on the demo board and C3??
It really is a matter of awful versus quite good. I'm guessing that some people turns down the Propeller as a viable solution for audio playback when they have tested the demo board. (or the C3)
And if these audio circuits are not good... maybe it is worth to try some free demo board pins (4..7, 0..3 are used by sd card) with RC circuit as audio out?
Have a look at this old thread: http://forums.parallax.com/showthread.php?129224
The difference is quite big!
Now, two things to do (1) measure it (2) make a correction...
I am using the GadgetGangster VGA+. Do I need to change any code?
Thanks,
Tom
Could you post a copy of your work that runs that these settings?
OBC
I'm only seeing the DMP files that are in DOS filename format (8.3). The other names show up truncated. Even if I type in the full file name, it fails (flips to the start screen, then right back).
--tom
I've updated the SIDPLAYER, (grab a new copy from the archive) with KyeDos so it should support the files now. Naturally, you'll need to type them in in their "truncated" form for them to load. Also, create a sub-directory on your SD card called, "dmp" and move them all there. This version supports Kye's sub directory commands.
OBC
Looks like there is a timing issue in the pik33's VGA code. I'm getting a flashing screen here.
Edit: Looks like Marko's got a fix, but I'll let him post it.
OBC
Comment _clkfreq=117_xxx_xxx in the header
Uncomment _clkfreq=80_000_000
I change these 3 crystals (5,6.25,7.3) from time to time to test if it works and it is why there are 3 _clkfreq lines in the header (2 of them commented)
It should work.
Added a new version of this driver with positive sync, frq manually patched for 80 MHz and some bug fixes.
Measured my board output with oscilloscope. There is low pass filter there....
Changes:
- some mess removed
- some bugs removed
- used new vga driver version with positive sync and patched frqa
- default clkfreq set at 80 MHz
Main file is siddos.spin
I added a couple line to give it folder support "\DMP" Those DMP files can become a bit of a mess when you've got a bunch of them.
siddos.spin
Do you mind if I add a copy of this to my VGA program archive?
OBC
Change this:
fat.changeDirectory(@folder)
to this:
\fat.changeDirectory(@folder)
(in both players)
to catch an abort. Without it the program will hang, if there is not "dmp" directory on disk. With it it will simply work in main dir
Good catch! I'll add it to both!
OBC
Alpha warning!!! Alpha, alpha, alpha... Needs heavy debugging. It can hang when changing a tune. VGA driver needs heavy debugging and updating, too
New user interface
Playing method with separate cog, doesn't interfere with user interface
There is place for directory selector
Edit: and no more muffled demoboard sound. I patched it with 680 R resistors.
It is easy to write something, which plays. It is much harder to do it well...
This main loop play code looks like it is working well
but it delays. @ 200 Hz, it plays 10 sec of music in about 12 seconds
This doesn't delay:
but hangs somewhere about 200 Hz playrate. Sometimes this:
c:=fat.readdata(@buffer2,25)
is too slow and then it will wait full cnt circle
So maybe this...
This glitches from time to time (it seems to glitch every several tens of seconds...it seems once at every cnt full loop)
This:
glitches, too
Both of these two procedures hangs for about a second every cnt full circle.. when cnt go over $8000_0000
This works:
And this is still a raw patch, not a solution. The problem is caused by too slow unbuffered sector read from SD. SD reading has to be removed from play loop. The play loop has to read buffered data delivered by another thread / another cog.
But it still can play...
Of course still alpha...
Also, which file is the main? In the "sidplay005" release, there was no "siddos.spin", so I copied over the siddos.spin from the previous version. Did not work.
I was planning to demo this at Maker Faire NC tomorrow :
http://makerfairenc.com
Do you want me to include your name and/or URL in the information about your software? I want to properly credit you. Send by private message if you wish.
--tom
I'm curious if this one is working for you? (Since there are actually two different players discussed on this thread.)
https://www.dropbox.com/s/jz1rz0wzr58yto9/VGASIDPLAYER.zip
OBC