News:

Printed Amstrad Addict magazine announced, check it out here!

Main Menu
avatar_BSC

SID tracker / player on CPC (non plus)

Started by BSC, 13:35, 05 November 13

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

BSC

Hi everybody,

a while ago I started working on a SID engine - just out of curiosity originall. I wanted to know whether the CPC was able to play sync buzzers and all those effects that were native to the Atari ST for ages. And I wanted to know how it sounded. I know there were a handful of attempts (or conversions from the Atari, I suppose), like in Overflows Backtro, but I wanted my own engine and a tracker to create that kind of music, as well..

So, what I came up with about 1 year ago (and which literally came to a halt since) is a 1 channel waveplayer engine that is capable of playing arbitrary small wave forms at around 13.8 khz. I picked square, triangle, sine and square with variable duty cycle for no obvious reason ;-) The main objective was stable replay rate and good audio quality so you don't have that annoying 50hz hum that's a feature of most of the mod players etc. The player is also capable of mixing the 3 native AY voices, either replacing or modulating one AY voice at a time. This could only be achieved by interweaving sample output with AY voice control, but the results sound quite nice and are worth the effort, I think :) After all, this is just a fun project!

Here are some examples of the player output (recorded from an emulated CPC, but I ran this on my real 6128 and it sounded even better!)

CPCSid by Carl Carbunckel on SoundCloud - Hear the world's sounds
CPCSid next try by Carl Carbunckel on SoundCloud - Hear the world's sounds

(I also have a .sna file available that I might post here)

As you can hear, the player is basically fully functional, but the tracker itself is only halfway done. There's some basic instrument and pattern editing facility,
but most of the work to make a usable tool out of it is still to do. And I just don't find the time anymore to continue working on it. And I also don't want it to die
in the confines of my virtual 3" disk box.

tl:dr; So I am basically looking for someone (or some-many) to take over the project / help me with completing it. I have a couple of docs / drawings / ideas / concepts
as to how to solve the upcoming tasks and one big part of it is probably generative programming, i.e. the tightly timed play routine should be generated at startup-time instead of hard-coded. If anyone is interested in helping me on this project, I could post it on github and we could see how it evolves. One more thing: The current dev platform is on Mac, using vim, Make, zasm (iirc) and a custom Makefile which injects the object code into a existing snapshot file. But I think that it's fairly easy to port to another platform / dev toolchain etc. It would be great, though, if I was still able to contribute in the future..

So, what do you think?
BSC

** My SID player/tracker AYAY Kaeppttn! on github **  Some CPC music and experiments ** Other music ** More music on scenestream (former nectarine) ** Some shaders ** Some Soundtrakker tunes ** Some tunes in Javascript

My hardware: ** Schneider CPC 464 with colour screen, 64k extension, 3" and 5,25 drives and more ** Amstrad CPC 6128 with M4 board, GreaseWeazle.

redbox

This is very interesting and I've been working on a SID player too.

Quote from: BSC on 13:35, 05 November 13
So, what I came up with about 1 year ago (and which literally came to a halt since) is a 1 channel waveplayer engine that is capable of playing arbitrary small wave forms at around 13.8 khz. I picked square, triangle, sine and square with variable duty cycle for no obvious reason ;-)

This sounds in principal very much like the "Sinus-SID" effect on the Atari ST, but it was only used by Tao I think. 

What made you take this approach?  It's different to the other ways of doing it I've seen so far on the CPC - which are just altering the volume every 64us line (like a lot of Atari ST routines do, albeit at a higher frequency rate) and it's why it's easy to do with the Plus DMA.  However, on a CPC this would mean a frequency of 15.625hz where as you've got your waveforms at 13.8khz so I assume you're doing the standard AY routine/calcs first then playing your sample (much in the same way as a digidrum) rather than interleaving the routine so it runs every line...?

Quote from: BSC on 13:35, 05 November 13
I have a couple of docs / drawings / ideas / concepts as to how to solve the upcoming tasks and one big part of it is probably generative programming, i.e. the tightly timed play routine should be generated at startup-time instead of hard-coded. If anyone is interested in helping me on this project, I could post it on github and we could see how it evolves.

I'd be interested in seeing the source code and working out the approach you've taken so far.

My approach was to take the standard Atari ST timers and then divide them into the nearest multiple that works on the CPC.  I know that Offset has already done this for the Plus using DMA but there's no reason it can't be done on a normal CPC (but it will take a lot of CPU time). 

And what makes this approach more interesting is the CTC-AY which has 2 x 2Mhz YM chips, a full timer AND direct (no PPI) access to the soundchips - imagine an "adapted" routine that works with this ;)

arnoldemu

Quote from: redbox on 20:40, 05 November 13

And what makes this approach more interesting is the CTC-AY which has 2 x 2Mhz YM chips, a full timer AND direct (no PPI) access to the soundchips - imagine an "adapted" routine that works with this ;)
Yes, or a routine for kc compact (for the 3 of us that have one ;) ). This too has timers :)
My games. My Games
My website with coding examples: Unofficial Amstrad WWW Resource

BSC

Quote from: redbox on 20:40, 05 November 13
This is very interesting and I've been working on a SID player too.

Do you have some previews that I could see, I am really curious to see/hear your player :)

Quote from: redbox on 20:40, 05 November 13
This sounds in principal very much like the "Sinus-SID" effect on the Atari ST, but it was only used by Tao I think. 

What made you take this approach?  It's different to the other ways of doing it I've seen so far on the CPC - which are just altering the volume every 64us line (like a lot of Atari ST routines do, albeit at a higher frequency rate) and it's why it's easy to do with the Plus DMA.  However, on a CPC this would mean a frequency of 15.625hz where as you've got your waveforms at 13.8khz so I assume you're doing the standard AY routine/calcs first then playing your sample (much in the same way as a digidrum) rather than interleaving the routine so it runs every line...?

I started with a really basic loop with fixed delays (e.g. resulting in a 200hz tone) where I toggled the a volume register between 0 and 15, another approach was toggling a voice through register 7, both sounded nice, but the timing was really awkward and complicated. Two things occured to me when playing around with this for a while:

1. I need a fixed loop instead of variable delays between playing 2 samples
2. When I have a fixed loop anyway, I am not limited to just toggling a volume register because I have to play a sample on each iteration anyway

After tinkering with this for a while, I came up with a new approach where I play a sample (i.e. write one value from my waveform to a volume register) every 64us (as you suggested in your post) and instead of controlling pitch by changing the delay between 2 samples, I use a 256 bytes (page aligned) wavetable which I cycle by using the hi byte of a 16 bit offset which is increased by another 16 bit offset depending on the target frequency of the tone I want to play. That enabled me to play any 256 byte waveform at arbitrary frequencies. 64us would have resulted in a sample frequency of 15.625hz, as you pointed out, but I had to interweave code to write the other AY registers in between and the quickest that I could come up with (with pre-loaded register values in both register sets) to select register N, write its value, then select register S (for samples), then write its value took 71us, so I re-aligned everything to 72us, i.e. around 13.8khz sample frequency, which is still good enough for most of the notes. Of course, there is aliasing noise on the higher notes (also depending on the waveform, sine, for example, is comparably resistant to aliasing), but as you can hear in the examples, it is quite acceptable (and you can't do anything about it anyway)

Ah, and about the interweaving: I basically have a loop which just plays a sample every 72us that is preluded by a block of code where I write all the other AY registers depending on AY music that I want to play (just as in the legendary soundtrakker play routine :-D). So I read the current value of register 0, select and write it, select the sample register (which is configurable from the current SID instrument at play) and write the current sample value. Then register 1 and so on until register 11 currently.

There is some work to do on that part, as I mentioned, but nothing that can't be resolved in some way, I hope..

Quote from: redbox on 20:40, 05 November 13
I'd be interested in seeing the source code and working out the approach you've taken so far.

My approach was to take the standard Atari ST timers and then divide them into the nearest multiple that works on the CPC.  I know that Offset has already done this for the Plus using DMA but there's no reason it can't be done on a normal CPC (but it will take a lot of CPU time). 

I guess I will put the project on github soon and link it here, so you can have a look at it. I will also upload my demo snapshot file so you can play around with
what is currently possible. It's probably much easier that way and I don't have to write tons of text to explain what's going on ;-)
** My SID player/tracker AYAY Kaeppttn! on github **  Some CPC music and experiments ** Other music ** More music on scenestream (former nectarine) ** Some shaders ** Some Soundtrakker tunes ** Some tunes in Javascript

My hardware: ** Schneider CPC 464 with colour screen, 64k extension, 3" and 5,25 drives and more ** Amstrad CPC 6128 with M4 board, GreaseWeazle.

BSC

Quote from: arnoldemu on 10:47, 06 November 13
Yes, or a routine for kc compact (for the 3 of us that have one ;) ). This too has timers :)

Currently I am not interested in any hardware stuff. The whole idea of this project is about playing SID effects using software routines on a standard CPC. I might change my mind in the future, but ... the future is yet to come ;-)

** My SID player/tracker AYAY Kaeppttn! on github **  Some CPC music and experiments ** Other music ** More music on scenestream (former nectarine) ** Some shaders ** Some Soundtrakker tunes ** Some tunes in Javascript

My hardware: ** Schneider CPC 464 with colour screen, 64k extension, 3" and 5,25 drives and more ** Amstrad CPC 6128 with M4 board, GreaseWeazle.

redbox

Quote from: BSC on 11:51, 06 November 13
Do you have some previews that I could see, I am really curious to see/hear your player :)

Well my progress has been a lot of theory and work "in principle" - I managed to get SID voices playing via DMA using a YM dump from the Atari ST but have yet to adapt it for the normal CPC.

Quote from: BSC on 11:51, 06 November 13
After tinkering with this for a while, I came up with a new approach where I play a sample (i.e. write one value from my waveform to a volume register) every 64us (as you suggested in your post) and instead of controlling pitch by changing the delay between 2 samples, I use a 256 bytes (page aligned) wavetable which I cycle by using the hi byte of a 16 bit offset which is increased by another 16 bit offset depending on the target frequency of the tone I want to play. That enabled me to play any 256 byte waveform at arbitrary frequencies.

I think I understand your approach now and essentially you are achieving is what the Atari ST can do, but in reverse. 

From my understanding, on the ST, they use the master clock (21492Hz) and divide it into multiples which then alter the volume register via interrupt.  This is done every frame and also means that you can achieve a lot of different Hz rates.  But essentially what they are doing by changing the clock multiple is creating a different waveform over several frames (sine, square, triangle etc) which "overlaps" the main YM sound.

Where as your routine takes these waveforms and instead of using the clock to determine them (because the CPC doesn't have one except at 300hz) you are storing them as "samples" which means you can keep all the timings to one frequency rate (13.8Hz), yet still achieve the desired waveforms.

Your approach is a good one when you consider you want to make a tracker because selecting the waveform (instead of worrying about clocks etc) would be a lot simpler.  Have you seen the SID voices in the  maxYMiser tracker?  This reminds me quite a lot of your approach.

Quote from: BSC on 11:51, 06 November 13
Ah, and about the interweaving: I basically have a loop which just plays a sample every 72us that is preluded by a block of code where I write all the other AY registers depending on AY music that I want to play (just as in the legendary soundtrakker play routine :-D). So I read the current value of register 0, select and write it, select the sample register (which is configurable from the current SID instrument at play) and write the current sample value. Then register 1 and so on until register 11 currently.

Well this then should be quite easily adaptable for other hardware such as the Plus and CTC-AY.  Would be nice to have a player that makes use of all the available hardware ;)

BSC

#6
I have attached a disk image of the current incarnation of AYAY Kaeppttn to this message!

Please also note that the pattern editor in fact does work, so you can go there, type in some notes (and use different instruments) and have a listen to the different instruments / sounds AYAY can produce :)



And here's kind of a manual:

First there are some global keys that work in each of the modes:

TAB - to switch modes (see below)

ctrl Y - toggle AY music playback

If enabled, you'll hear some normal AY music on channel A that you can jam to or modulate.
This is also very basic yet. In later versions, this AY music will be generated from any of the
AY channels / patterns you can create and will either be mixed with the Sid voice or modulated by it.
(note! this does currently not work as described as I was in the progress of writing the code that plays AY music from the patterns!)

DEL - turn of all sounds (useful if you have AY music on)

shift + cursor up / down - decrease / increase octave (from 00 to 07). There is a small bug here
that sometimes makes you keep stuck in octave dec/inc. Try shift + cursor key again to break free.

shift + cursor left / right - previous / next instrument. You have only 13 hard-coded instruments
currently (00 to 0c) and there's no way to create new ones yet. When you change instrument, the 4
tables below will display the new instruments start position in each of them.

French keyboard will probably act funny on some of the keys :-P

There are 3 modes which can be changed hitting the tab-key (the cursor will jump to reflect that):

1. Parameter mode (top of the screen) - here you can change the instruments parameters directly

The only keys you can use here (apart from the global ones) are the cursor keys to move left or right
and to decrease / increase the current value.

The 5 parameters you see are: target AY register and offset / vibrato / waveform / volume tables offsets.
You'll see what it means when you toggle instruments. Useful AY registers are 8 to 10 (for the 3 voices),
all others will only yield funny noises or nothing.. Except for the ones needed for Sync Buzzing in later
incarnations of AYAY.

2. Instrument mode (middle area) - here you can edit the different instrument tables

Use the cursor keys to wander around the 4 tables. Each table has 2 columns, an index and the
value at that index, separated by a colon. On the waveform column, you will also have the current
waveform drawn to the right. Valid values here go from 15 to 38

The values might look a bit weird.. But it's just unsigned hexadecimal stuff.. Everything between 00
and 7f is positive, FF to 81 is negative (and FF means -1, FE is -2 and so on). 80 is a special value
meaning jump to the index that comes in the next row (i.e. 80 followed by 03 will cause a jump to
position 03 in that table). This might look complicated at the first sight, but it is very flexible and
(which is important to get decent audio quality) also very fast in the player.

Use ctrl + cursor up / down to change the current value. Press ENTER to enter 2 hexadecimal
digits as the new value (useful to enter jump (jp) commands, which are at value 80) or ESC to cancel.
Press space to use the current position (the one thats on the left side of the colon) in the current table
for the current instrument, i.e. when you are on position 5 in the vibrator table, pressing space will
set the 3rd value of the instrument params to 05.

3. Pattern mode (bottom area) - you will be able to edit patterns here. This one is not finished yet,
so I won't go into detail here now.. I hope to get some more functionality done .. soon .. 

All of the work flows are just in-progress and beta and so on. Apart from how the instruments and
the 4 tables work - it's unlikely that this will work differently. But I am sure it's possible to make editing
a lot easier than it is now.

I am curious to hear what you ppl think (or should I say you one guy that took part in the discussion so far?) about it.
** My SID player/tracker AYAY Kaeppttn! on github **  Some CPC music and experiments ** Other music ** More music on scenestream (former nectarine) ** Some shaders ** Some Soundtrakker tunes ** Some tunes in Javascript

My hardware: ** Schneider CPC 464 with colour screen, 64k extension, 3" and 5,25 drives and more ** Amstrad CPC 6128 with M4 board, GreaseWeazle.

BSC



Quote from: redbox on 13:52, 06 November 13
Well my progress has been a lot of theory and work "in principle" - I managed to get SID voices playing via DMA using a YM dump from the Atari ST but have yet to adapt it for the normal CPC.

I think I understand your approach now and essentially you are achieving is what the Atari ST can do, but in reverse. 

From my understanding, on the ST, they use the master clock (21492Hz) and divide it into multiples which then alter the volume register via interrupt.  This is done every frame and also means that you can achieve a lot of different Hz rates.  But essentially what they are doing by changing the clock multiple is creating a different waveform over several frames (sine, square, triangle etc) which "overlaps" the main YM sound.

Where as your routine takes these waveforms and instead of using the clock to determine them (because the CPC doesn't have one except at 300hz) you are storing them as "samples" which means you can keep all the timings to one frequency rate (13.8Hz), yet still achieve the desired waveforms.

Your approach is a good one when you consider you want to make a tracker because selecting the waveform (instead of worrying about clocks etc) would be a lot simpler.  Have you seen the SID voices in the  maxYMiser tracker?  This reminds me quite a lot of your approach.

Well this then should be quite easily adaptable for other hardware such as the Plus and CTC-AY.  Would be nice to have a player that makes use of all the available hardware ;)


It might be the reverse but I think comparing it the any of the (technical) approaches on the Atari ST does not make a lot of sense because the CPC just does not have any timers and
so you have no choice but do it in "realtime", just as you do when you make split-rasters or play sampled sounds or whatever takes as much time as it takes. And as some guys (on the
pushnpop forum for example) already said: The SID effect itself is not very hard to achieve. What's hard (or painful) is to make it live alongside a player that provides AY generated sound
on the other channels. A SID voice on it's own sounds nice but is also pretty boring. And, as I said before, I think you don't have to toggle the volume register of your target voice between
0 and the current value to achieve a SID sound effect, this is just one approach - mainly the most known one because that's how it was done on the Atari in the first place (and because the
Atari has those timers..). And if I stuck to that approach, I would not be able to also play sine, triangle, sawtooth and have full control over the pulse width. Just have a look at the snapshot
I provided and all the different instruments there. There's a couple of SID sounds that have a wavelist that sweeps over a set of square waves of different pulse width. You might argue that
it's a waste of memory to have so many different square samples, but I think it's worth because you have full control over the effect. I have heard of maxYMizer but never seen it in action
because I could not get a useful ST emulator on my Mac :(


** My SID player/tracker AYAY Kaeppttn! on github **  Some CPC music and experiments ** Other music ** More music on scenestream (former nectarine) ** Some shaders ** Some Soundtrakker tunes ** Some tunes in Javascript

My hardware: ** Schneider CPC 464 with colour screen, 64k extension, 3" and 5,25 drives and more ** Amstrad CPC 6128 with M4 board, GreaseWeazle.

redbox

Quote from: BSC on 22:53, 07 November 13
It might be the reverse but I think comparing it the any of the (technical) approaches on the Atari ST does not make a lot of sense because the CPC just does not have any timers and
so you have no choice but do it in "realtime", just as you do when you make split-rasters or play sampled sounds or whatever takes as much time as it takes.

Oh yes, I totally agree, but I was just coming my viewpoint (and only experience of SID voice on the CPC) of having tried to import Atari ST music.  Your approach, as I said, makes much more sense when trying to create a tracker or original music on the CPC :)

Quote from: BSC on 22:53, 07 November 13
And as some guys (on the pushnpop forum for example) already said: The SID effect itself is not very hard to achieve. What's hard (or painful) is to make it live alongside a player that provides AY generated sound
on the other channels

That's why they all cheat and use the DMA ;)

Quote from: BSC on 22:53, 07 November 13
A SID voice on it's own sounds nice but is also pretty boring. And, as I said before, I think you don't have to toggle the volume register of your target voice between
0 and the current value to achieve a SID sound effect, this is just one approach - mainly the most known one because that's how it was done on the Atari in the first place (and because the
Atari has those timers..). And if I stuck to that approach, I would not be able to also play sine, triangle, sawtooth and have full control over the pulse width.

I agree with you - but this was how SID voices on the YM "evolved" - somebody worked out that the modulation could occur by altering the volume frequency and luckily the ST had timers to use.  I think the evolution of this is what maxYMiser (on the Atari ST) was trying to address and hence your tool and approach as well.

Quote from: BSC on 22:53, 07 November 13
Just have a look at the snapshot I provided and all the different instruments there. There's a couple of SID sounds that have a wavelist that sweeps over a set of square waves of different pulse width. You might argue that it's a waste of memory to have so many different square samples, but I think it's worth because you have full control over the effect.

Your tracker is really cool, I managed to get some nice SID sounds out of it :)

I'd love to also have DMA/CTC-AY functionality and it should be relatively easy - are you able to share the source code for it?

TFM

Quote from: redbox on 11:04, 08 November 13
I'd love to also have DMA/CTC-AY functionality and it should be relatively easy - are you able to share the source code for it?


Quote from: BSC on 11:53, 06 November 13Currently I am not interested in any hardware stuff. The whole idea of this project is about playing SID effects using software routines on a standard CPC. I might change my mind in the future, but ... the future is yet to come ;-)
TFM of FutureSoft
Also visit the CPC and Plus users favorite OS: FutureOS - The Revolution on CPC6128 and 6128Plus

redbox

It was clear I wanted to add the functionality myself hence asking for the source code.

You add nothing to the conversation and are just being obtuse.


tastefulmrship

Quote from: BSC on 22:34, 07 November 13
I am curious to hear what you ppl think (or should I say you one guy that took part in the discussion so far?) about it.
Please understand that just because only one person has responded so far that the rest of us are not interested. I, for one, am fascinated by this thread and applaud your work so far. It is absolutely fabulous and I can see myself spending many, many hours converting SID tunes to CPC with more than just 1 "pulse" sound.

A few people here are helping me to create another one of my "shyte musicdisks" (ie just a bunch of badly converted .mod and .sid files to STarkos tracker) and it would be amazing to have a "proper" SID tune in there, as well, running on a CPCnorm.



In short; to both BSC and redbox; please, please, please... keep up the great work you're doing and develop the best SID-voice tracker possible!


On behalf of everyone else who has read & followed this thread, thank you.
- JTMS.

ralferoo

I agree. This is an interesting project, but I've been too busy to actually take a listen to what you've done. But even from the description I know I'll enjoy it when I manage to make the time! :)

arnoldemu

I too am interested in the SID voice and both approaches, but I don't currently have the time to look at both works more closely so I feel I can't comment.

I believe BSCs approach is a very good one.

So I know the problem is one that integrating a player like this into a demo or game is considered very hard... but I already have plans to find a way around that in a more automated way.

But this is another topic entirely.
My games. My Games
My website with coding examples: Unofficial Amstrad WWW Resource

Gryzor

I removed the three last posts because they were not adding anything to an otherwise interesting discussion.


TFM, take this as a warning, if you can't contribute please don't spoil it with your opinions. Feel free to open another thread.

Devilmarkus

#15
I can understand Gryzor.

Someone asks for sources.

It's a thing between BSC and redbox.

I don't understand now, why you have to get involved into this. There's really no reason for it.

And if some people bug many people for sources, toilet paper or whatever...

Why do you care about that?

I also often ask for sources, and so on... Ask SyX, CNGSoft, yourself, etc... And sure some of them are bored of me ;) but hey, it's CPC we are talking about and not redbox's ballsize (sorry, redbox!) or whatever ;)
When you put your ear on a hot stove, you can smell how stupid you are ...

Amstrad CPC games in your webbrowser

JavaCPC Desktop Full Release

Gryzor

I care, because I'm the admin here. And people have complained more than once, not about this thread only. And of course I did not mind anyone asking for source code or anything - maybe you've missed some posts.


Anyhow, this discussion is over -in this thread, at least. Let's not gett further off topic.

BSC

Thanks Gryzor to bring us back on track! I am a bit busy atm but will soon post more infos and a link to the sources on github. Everyone who is interested is invited to have a look!
** My SID player/tracker AYAY Kaeppttn! on github **  Some CPC music and experiments ** Other music ** More music on scenestream (former nectarine) ** Some shaders ** Some Soundtrakker tunes ** Some tunes in Javascript

My hardware: ** Schneider CPC 464 with colour screen, 64k extension, 3" and 5,25 drives and more ** Amstrad CPC 6128 with M4 board, GreaseWeazle.

McKlain

Is anyone else having problems with the downloaded .zip? It seems that it's corrupted, whatever the browser I use to download it.

Gryzor


BSC

Quote from: McKlain on 15:20, 15 November 13
Is anyone else having problems with the downloaded .zip? It seems that it's corrupted, whatever the browser I use to download it.


The problem is that the file was only available for 7 days (I could not choose a longer ttl there) and the link is now reused by another file ("updated dbs.zip"), and not cpc.sna.zip..
Can't I upload it here on the forum? Or does anyone know another free file sharing site where I could upload it to?
** My SID player/tracker AYAY Kaeppttn! on github **  Some CPC music and experiments ** Other music ** More music on scenestream (former nectarine) ** Some shaders ** Some Soundtrakker tunes ** Some tunes in Javascript

My hardware: ** Schneider CPC 464 with colour screen, 64k extension, 3" and 5,25 drives and more ** Amstrad CPC 6128 with M4 board, GreaseWeazle.

McKlain

mediafire.com or mega.co.nz, they don't have any kind of restrictions and you get 50GB of space with a free account. Mega is probably the best of the 2. Just for the record, I still have stuff from 2007 on my mediafire account.

tastefulmrship

Quote from: BSC on 23:12, 15 November 13
Can't I upload it here on the forum?
Can't you just attach it to a post? If the file is only a small .sna file (even zipped), then it shouldn't be a problem.
There's an "Attachments and other options" button under the text-edit box. Click the '+' icon and then the "Browse" button.

Gryzor

Thanks, tastefulmrship! Why are we talking about mediafire and mega and whatever? :D


@BSC: Sure mate, go ahead and attach it here, filesize limit is high enough!

BSC

Quote from: Gryzor on 09:55, 16 November 13
@BSC: Sure mate, go ahead and attach it here, filesize limit is high enough!


Done! Have a look at Reply #6
** My SID player/tracker AYAY Kaeppttn! on github **  Some CPC music and experiments ** Other music ** More music on scenestream (former nectarine) ** Some shaders ** Some Soundtrakker tunes ** Some tunes in Javascript

My hardware: ** Schneider CPC 464 with colour screen, 64k extension, 3" and 5,25 drives and more ** Amstrad CPC 6128 with M4 board, GreaseWeazle.

Powered by SMFPacks Menu Editor Mod