avatar_DaDMaN

New Amstrad CPC Sound Board (aka Sonique Sound Board) - SID Part (WIP)

Started by DaDMaN, 22:57, 22 November 15

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

DaDMaN

Hi everyone.

First, sorry for my english.

I want to announce the development of a "new" sound board for the Amstrad CPC based on Swinkels SwinSID project. SwinSID is an actual clone of the 8580 SID sound chip from Commodore 64 and 128.

Why SwinSID SID clone and no real SID?

       
  • Real SID are hard to find nowadays in a full working condition (from ebay, for example).
  • If you find one, is not cheap.
  • There are basically 2 type of SID chips (6581 and 8580). The first one need 12v and 5v to work and the second one 9v and 5v. You need aditional power source (as Bryce's CPCSID project needs) and more components to work with.
  • Some real SID needs refrigeration (overheating problems).
  • SwinSID can be easily reproduced and is cheap (I've made 4 of them easily in my house).
  • SwinSID is not exactly as a real SID and doesn't sound exactly as a real SID. A great notice for people that doesn't like SID (or Commodore hardware).
  • SwinSID adds some features to the standart SID IC like 5 more wave types.
  • ...
My sound interface will be a X4 board. The sound board includes 4 digital (samples) 8 bit stereo channels, like Amiga (WIP) fully microcontroller assisted with 512KB of sound RAM for samples and 6 stereo synthesizer channels (3 left and 3 right) with "2 SwinsID" (fully working). An stereo LINE-IN is planned too to mix stereo output from Amstrad CPC or PlayCITY.

* The "SID" part *

I've addressed SID chips in a different way (more "natural" way I think). I only need 6 I/O ports to address the 2 SID chips instead of 50 ports (one port for each SID register).


       
  • F9D0 - Data port for MONO 3 Channels mode (2 SIDs working together)
  • F9D1 - Data port for SID1 (left)
  • F9D2 - Data port for SID2 (right)
  • FAD0 - Register select port for MONO 3 channels mode *
  • FAD1 - Register select port for SID1
  • FAD2 - Register select port for SID2
* FAD0 is the "real" register port. FAD1 and FAD2 are "ghost" ports derived from FAD0 added to the design for "best programming" and "best optimization" for Z80 coders (you can use OUTI, for example). FAD0, FAD1 and FAD2 selects the same register latch then and the last selected register keeps stored until you select a new one. When you send the DATA to one of the three DATA ports, the correspondent SID is selected and the DATA is send to the previosly selected register.

When the Sonique Sound Board will be completed, tested and fully working, I will upload all the design information and schemes.

By now, thanks to Syx, Augusto Ruiz and Javier García Navarro, there is a very limited SID player for my interface based on the Sam Coupé one and a Caprice32 version with the SID part of my inteface fully integrated and working for testing. This Caprice32 will be released when the "sample part" is finished.

I've added a RC Low pass filter to the board too for best sound quality.

And here you have some tracks recorded directly from my "CPC + Sonique Sound Board" playing some SID files (3 channels, MONO mode).

I hope you like it.

Cheers,

DaDMaN.

https://soundcloud.com/david-donaire-s-nchez/sets/amstrad-cpc-sonique-sound



TFM


Congratulations! You put a lot of effort in this project.

Quote from: DaDMaN on 22:57, 22 November 15
* FAD0 is the "real" register port. FAD1 and FAD2 are "ghost" ports derived from FAD0 added to the design for "best programming" and "best optimization" for Z80 coders (you can use OUTI, for example).
Sorry, no, you can't because OUTI can't be used. Because OUTI decreases B, C is not changed. So you need ghost ports with increasing value in B (like the 8255IDE card has).

You have to use something like:

&F8D0
&F9D0
&FAD0
&FBD0

In this case you could use OUTI four times.


But why do you use the SID (clone)? Why not using modern technology when starting from scratch anyway?
TFM of FutureSoft
Also visit the CPC and Plus users favorite OS: FutureOS - The Revolution on CPC6128 and 6128Plus

CraigsBar

IRC:  #Retro4All on Freenode

DaDMaN

Quote from: TFM on 23:33, 22 November 15
Congratulations! You put a lot of effort in this project.
Sorry, no, you can't because OUTI can't be used. Because OUTI decreases B, C is not changed. So you need ghost ports with increasing value in B (like the 8255IDE card has).

You have to use something like:

&F8D0
&F9D0
&FAD0
&FBD0

In this case you could use OUTI four times.


But why do you use the SID (clone)? Why not using modern technology when starting from scratch anyway?

Ports are mapped in "pairs" to the correspondent SID:


       
  • F9D0 | FAD0: Data and Register of virtual Mono mode SID
  • F9D1 | FAD1: Data and Register of SID1
  • F9D2 | FAD2: Data and Register of SID2
To write to SID2, you first select the register number writting to &FAD2 and put the value into the data register &F9D2. B is decremented in one.

Syx helped me with this I/O layout anyway.

I've used SID because I like SID sound and is still a powerful "retro" synthesizer for "retro" machines nowadays

TFM

Well, imho is was powerful 40 years ago, but let't not discuss about the prophets beard. Music is always a personal taste thing.  :)


Can you give a coding example for your OUTI idea?
TFM of FutureSoft
Also visit the CPC and Plus users favorite OS: FutureOS - The Revolution on CPC6128 and 6128Plus

DaDMaN

Quote from: TFM on 23:45, 22 November 15
Well, imho is was powerful 40 years ago, but let't not discuss about the prophets beard. Music is always a personal taste thing.  :)


Can you give a coding example for your OUTI idea?

It's a Syx OUTI idea. Ask him. My first version used 50 ports instead (like Bryce's CPCSID project did). I'm not a "real" coder.

TFM

Ok, I guess his idea was that the IO addresses at &F9xx are the shadow IO addresses of &FAxx ports. So one could save 1 us (INC B) and write two bytes, 1. register, 2. data. Maybe that. Did listen to your sound examples. Well, sounds better than a c64.  ;D

TFM of FutureSoft
Also visit the CPC and Plus users favorite OS: FutureOS - The Revolution on CPC6128 and 6128Plus

DaDMaN

Quote from: TFM on 23:55, 22 November 15
Ok, I guess his idea was that the IO addresses at &F9xx are the shadow IO addresses of &FAxx ports. So one could save 1 us (INC B) and write two bytes, 1. register, 2. data. Maybe that. Did listen to your sound examples. Well, sounds better than a c64.  ;D

And It will sound better with a Z80/CPC propietary player playing 6 channels music instead of playing C64 SIDs with the CPC emulating the 6510 CPU  ;)

TFM

TFM of FutureSoft
Also visit the CPC and Plus users favorite OS: FutureOS - The Revolution on CPC6128 and 6128Plus

Grim

Been listening to the tunes on your soundcloud and other SwinSID videos on YT ... It consistently lacked the somewhat organic wobbling vibes of the original SID. Which can be a real problem for SwinSID as a SID replacement, but not that much in my opinion for a new CPC expansion based on it.

Quote from: DaDMaN on 22:57, 22 November 154 digital (samples) 8 bit stereo channels, like Amiga (WIP) fully microcontroller assisted with 512KB of sound RAM for samples
Might be too early to ask, but:
• What microcontroller?
• Assisted how? Paula-DMA-like or something more sophisticated (eg. built-in music & fx player running onboard)?
• Could that microcontroller access the SID registers too?

Anyway, I quite like how it is coming already. Also I hope you're prepared to see your board sadly taking dust for several years before proper software emerge (ie. not just quick tech-demo hacks).

Quote from: CraigsBar on 23:41, 22 November 15
More new hardware on the must have list. ;)
Agreed. Only problem, my Mother-X4 is full already.
@TotO : any plan for a Mother-X8? :)

DaDMaN

Quote from: Grim on 00:44, 23 November 15
Been listening to the tunes on your soundcloud and other SwinSID videos on YT ... It consistently lacked the somewhat organic wobbling vibes of the original SID. Which can be a real problem for SwinSID as a SID replacement, but not that much in my opinion for a new CPC expansion based on it.
Might be too early to ask, but:
• What microcontroller?
• Assisted how? Paula-DMA-like or something more sophisticated (eg. built-in music & fx player running onboard)?
• Could that microcontroller access the SID registers too?

Anyway, I quite like how it is coming already. Also I hope you're prepared to see your board sadly taking dust for several years before proper software emerge (ie. not just quick tech-demo hacks).
Agreed. Only problem, my Mother-X4 is full already.
@TotO : any plan for a Mother-X8? :)

I agree. As I said, it doesn't sound exactly as a real SID does. Not a problem for CPC users and simplifies a lot the design of the interface (and we don't need to use old stock canivalized SIDs from real Commodores).

I'm trying ATMEGA88PA (the same used with SwinSID) clocked at 32Mhz (the main clock of the board thanks to SwinSID design). It will be a "sample player". My idea is to load samples to interface RAM with a specific format including sample index number, loop enabled (or not), and loop start and end offset.

On the CPC side you only need to send commands to play or stop playing specified sample on the specified channel, set channel volume and channel playing frequency. That's all. The microcontroller will play the sample but the CPC controlles it on "real time".

That's all by now.

Grim

Ok, the Amiga way then. Hence your sample-chip will need a name (I vote to name it Gertrude! :).

dodogildo

I'd vote for INGRID as she's my favorite game character. [emoji3]
M'enfin!

MacDeath

What about getting the MSx soundcard/chips instead or as well ?
;D

anyway, nice idea and project.


will it run well alongside the plAYcitY or the built-in AY ?
good that it uses the X4 design... this has becomed the de-facto new standard and it would be a shame not to use it.


Now I guess some proper MIDI card would be nice in order to turn a CPC into a freaking cool modern Chiptune station.

villain

Ingrid, Gertrude... Guys, if you need any other very traditional german names, like Friedlinde, let us know. :-)

Cool project, btw!  8)

TotO

I'm personally not fan about playing other computers sound on CPC (SID, FM, ...). Changing its identity.
If I want SID, I can run musics on an C64... But, good luck for your project!  8)

Quote from: Grim on 00:44, 23 November 15@TotO : any plan for a Mother-X8? :)
Any plan for a 6ch player?  ;D
About MotherX8, I think it is first possible to link an special second board side to side to expand the existing slots.
"You make one mistake in your life and the internet will never let you live it down" (Keith Goodyer)

Bryce

Nice project. I hope your designing it so that the SwinSID is socketed and a real 8580 can be use too if the owner has one?

I never actually built the CPCSID, it only made it as far as a design concept on paper... And then I got bored and built something else :D

Bryce.

dodogildo

Quote from: villain on 07:54, 23 November 15
Ingrid, Gertrude... Guys, if you need any other very traditional german names, like Friedlinde, let us know. :-)


She's not german, she's gnome: Ingrid's Back - Wikipedia, the free encyclopedia  ;)
M'enfin!

DaDMaN

Quote from: Bryce on 09:43, 23 November 15
Nice project. I hope your designing it so that the SwinSID is socketed and a real 8580 can be use too if the owner has one?

I never actually built the CPCSID, it only made it as far as a design concept on paper... And then I got bored and built something else :D

Bryce.

The SwinSID are now socketed for the prototyping stage but you can't use real SID with this design. There is not 9V or 12V power source and there is not need of real SID capacitors for SID filter to work. I think there is not need of real SID on the CPC and the design is a lot cheaper and easy with SwinSID instead.

The board will not be socketed in the final version anyway. The SwinSID design will be integrated in the mother board and will use a common 32Mhz clock source.

:)

Gryzor

Those sample tunes sound really lovely! Nice stuff all around... :)

DaDMaN

Quote from: TotO on 09:37, 23 November 15
I'm personally not fan about playing other computers sound on CPC (SID, FM, ...). Changing its identity.
If I want SID, I can run musics on an C64... But, good luck for your project!  8)
Any plan for a 6ch player?  ;D
About MotherX8, I think it is first possible to link an special second board side to side to expand the existing slots.

But SID can sounds like an AY if you want too!!!  ;D

TotO

"You make one mistake in your life and the internet will never let you live it down" (Keith Goodyer)

DaDMaN

Quote from: TotO on 13:11, 23 November 15
Jejeje!  ;D

Or you can reprogram microcontroller firmware with another one if you want. With YMZ emulation, for example  :D :D :D :D

TotO

Sure, all is possible.  ;)
For the CTC-AY, I have chosen the YMZ because its size and easy to interface. But, it is an expensive IC...
With a programmed microcontroller, it was interresting to break some limitation like the AY-8930 offer.
"You make one mistake in your life and the internet will never let you live it down" (Keith Goodyer)

Grim

Quote from: TotO on 09:37, 23 November 15Any plan for a 6ch player?  ;D
Not anymore, it's already a solved problem. How to feed that player however, is not :(

Quote from: DaDMaN on 14:07, 23 November 15
Or you can reprogram microcontroller firmware with another one if you want. With YMZ emulation, for example  :D :D :D :D
If that could be done from the CPC (I mean uploading a new firmware to Gertrude), please, do it! :)

Powered by SMFPacks Menu Editor Mod