Skip to main content
Topic: Hybrid SID Player (Read 81951 times) previous topic - next topic

Re: Hybrid SID Player

Reply #30
Thanks, nice project.  115200 baud will be too slow for newish digi tunes like 'Fanta in Space' or 'Pollycracker'.  Can the FT2232D on the Papilio be configured to use higher baud rates?  100+ kB/s are needed for those tunes.  Would it be difficult to buffer not a specific amount of bytes (16 kB) but a specific amount of cycles, say 100 kcycles?  This way you would get a fixed latency not dependant on the data rate.

Re: Hybrid SID Player

Reply #31
Yes the FTDI can easily go up to 3mbits. That is the reason I was sort of asking what baud you were running your board at. I found out the limitation when I tried to play tunes with samples such as Isengard as in your video. It won't be hard at all to increase the baud rate. As for the buffering lag anything is possible with a bit more time and effort :)

Re: Hybrid SID Player

Reply #32
Thanks for sharing your player, I'll post it up.
Got a question? Please ask in the forum for the fastest answers.

Re: Hybrid SID Player

Reply #33
[quote author="d18c7db"]No, I'm using a SID VHDL core with unknown attribution, I suspect it's possibly made by Kevin Horton at http://blog.kevtris.org and on his blog he states he implemented the filter externally to the FPGA in hardware.[/quote]
I can't read VHDL (yet), so I am hoping that someone here can satisfy my curiosity: What is the 'audio' output of the FPGA? Is it a parallel data bus feeding a DAC, or is it a single bit? The SID triangle and other waveforms imply that a DAC would be needed for reasonable emulation. A quick scan of the MOS Tech SID Wikipedia entry confirms that the original is a hybrid analog+digital chip, so I imagine that an FPGA recreation would also need some analog stuff outside the FPGA in order to make all sounds.

Re: Hybrid SID Player

Reply #34
Yes and no, the only "analog stuff" outside the FPGA is a resistor and capacitor. The design uses a one bit digital pin to implement D/A using this Delta-Sigma modulation http://www.xilinx.com/support/documenta ... app154.pdf

Re: Hybrid SID Player

Reply #35
Hi Markus I saw your SID player has evolved into a 'Network SID device' that's pretty cool. Do you have plans to release the latest schematic with a parts list, so newbies with a soldering iron (I am speaking about myself here) have a chance of putting one of these together?


Re: Hybrid SID Player

Reply #37
I guess I will give this project a go, I am just getting into electronics and I am very nostalgic for the great C64 sound. All I need to do is learn how to read your schematic <newbie I know>. I read that the LCD you used is no longer available, can you recommend an alternative?

You also mentioned your PIC32 board is custom built, does this mean I can't use the CUI32 PIC32MX Development Stick sold on Sparkfun Electronics?

I spotted this chipKIT Max32 which claims to use the PIC32MX795F512. Would that be drop in compatible with your board? I am not sure if its exactly the same or not.

Re: Hybrid SID Player

Reply #38
The specific OLED break-out board from SeeedStudio is no longer available, but any SSD1308 (and likely SSD1306 as well) based boards with an SPI interface broken out should work fine.  This one [1] probably works.

The CUI32 currently sold by SparkFun uses a PIC32 with too little RAM.  The chipKIT Max32 uses the same chip as I do, except that mine is the 64 pin version and the Max32 uses the 100 pin version, so you would have to find the correct pins for the connections yourself.  If you can wait a few weeks, SeeedStudio is coming up with a new version of the CUI32 called the CUI32Stem.  It will carry the PIC32MX795F512H, which is exactly the one I used.

[1] https://www.adafruit.com/products/326

Re: Hybrid SID Player

Reply #39
Hi Markus, thanks for that I will wait for the CUI32Stem to come out as it will save me the hell of soldering all those tiny pins. I am trying to figure out the parts you have used, what is that red stick marked SOIC(W) it looks like you modify it in later pictures?

It would be a real help if you could create a parts list and detail and mods you have made. Especially for those people who come after me.

Re: Hybrid SID Player

Reply #40
The "red stick" is just a piece of proto-board holding the ST662AB DC-DC converter including it's charge pump and bypass capacitors.  Is's depicted in the schematic.  I will add an arrow to the schematic to make it more clear that the ST662AB is the SOIC.

Pumping the 5V to 12V using the DC-DC converter and then regulating it to 9V using the linear regulator leads to a very smooth 9V analog power supply for the SID.  You could use any other part or parts combination which will provide you with the required 9V supply for the 8580 (12V for the 6581).  Just make sure it does not contain any noise or AC-ripple, as it would be audible in the analog output signal.  And avoid under any circumstances voltage spikes (e.g. when turning off a transformer) as they will kill your beloved SID.

Re: Hybrid SID Player

Reply #41
Hi,

I thought it would be nice to have my SID player hardware located next to the stereo equipment and have its audio output connected to it.  Having an USB cable running to the laptop from which ACID 64 sends the SID data isn't convenient, so I looked for a simple wireless solution.

Since my latop already has bluetooth built in, I bought an HC-06 module from ITead Studio for $13 (before spotting them for about half that price with shipping included on eBay).  These little modules provide a virtual COM connection through the SPP (Serial Port Profile), so almost no modification was necessary for the Python socket server which already sends the data to a virtual COM port.

On the firmware side I added support for receiving the SID data from one of the six UARTs of the PIC32 (If no USB cable is connected).  I noticed one drawback when using Bluetooth SPP instead of the USB virtual COM port: While throughput is quite ok, and can be set to nice high baud rates, latency is not. If you use some protocol over the emulated COM port which uses some form of acknowledgment handshaking, performance degrades a lot, because round-trip latency is about 20 ms to 40 ms, which is a long time for my use case.  However for normal tunes without digi-data it is fast enough.

Here are some pictures.  Note the small PCB trace antenna lurking just below the OLED display:

[attachment=3]
[attachment=2]
[attachment=1]
As always, please find the latest firmware attached.

Have fun,
Markus

Re: Hybrid SID Player

Reply #42
Nice project, are you going to produce a kit? I could understand if it came sans SID chip. Failing that how about listing the parts you used so people can go grab them and put one of these babies together?

Re: Hybrid SID Player

Reply #43
There is a chance to port this project on a ChipKIT UNO32 / MAX 32 Board?

Re: Hybrid SID Player

Reply #44
The chipKIT Uno32 uses a PIC32 with too little RAM for the stand-alone SID playing firmware.  The chipKIT Max32 uses almost the same PIC32, but in a larger package with more pins, so the used pins would have different pin numbers.  Theoretically it should work.

SeeedStudio is currently preparing "mass production" (I think 100 units in the first run) of an updated CUI32 board, the CUI32Stem, which carries the same PIC32 used here.  It should be available within a few weeks.  I will write a short notice here when they have it in their store.