AY-3-8910 music files? Anyone know where to find?


skeezix

Internal Development
Joined
Mar 11, 2003
Messages
8,063
Website
www.codejedi.com
hey guys,

anyone know of a good AY-3-8910 music chiptunes archive?

ZX Spectrum, hundreds of arcade machines, dozens of home consoles and computers used the chip; most of my expertise is in Atari ST which uses the YM2149 (which is an AY-3-8910, but with some changes.) The YM archives tend to be either SNDH or YM files, and the YM files are usually YM specific.. ie: different frequency and such, so you can't directly play it back on an actual AY-3-8910.

I'm looking for register dumps/logging .. say 50 or 60hz dump of the registers of the AY-3-891x from any machine.

I'm not looking for those music formats that include the executable code (Z80, 68000, etc), as I'm not building a software emulator .. I'm actually building two things (main one is the Zikzak homebre computer/console you may have seen in other thread; other one is a AY-3-891x music player / synth box :) .. so as I suck entirely at music and especially chiptune authoring, I am just looking for some good AY register files I can feed into my chip for proving it and showing it off :) Right now all I have are some basic effects (laser shots etc). Feeding Atari ST YM2149 music in is really mucky, since they're just different enough as to be annoying :)

I'm betting our community has enough different hardware experience someone knows of a handy archive :)

jeff
 
The BBC Micro and Amstrad 464 machines used standard AY-3 parts I think, but I've never come across any sort of register dump format for the music, unlike SID files or anything like that.  There are a few BBC Micro music programs where all the notes are stored as frequencies and durations towards the head of the program, and it might be possible to work something out from those.

However, the BBC Micro OS exposes the AY-3 though SOUND and ENVELOPE BASIC commands (and appropriate OS calls).  I'm not sure what translation is involved, but I guess it's exposing the AY-3 pretty much as is.  The envelope command lets you define attack and sustain phases and so on, while 'SOUND' actually causes a sound on a channel, optionally using a pre-defined envelope.
 
Brain melt .. looked through about 8 or 9 file formats in last hour..  so many 'tracker' style (samples and sequences), not useful; stuff like .AY from Sinclair .. is z80 code that generates music on an AY chip.

I'm really surprised its hard to find raw logged AY register dumps, but every few months I go looking, and turn up nothing :)

Naturally, I should just write a logging thing for an emulator, and run a few games through, to generate my own dumps. But in this day and age, you'd think there'd be huge archives all over...

jeff
 
The Vectrex also used the AY-3-8910. The cartridges are very small, so maybe you could poke around in some of those? None of the music was that good though, although there was a guy called Alex Herbert who produced some new carts long after the Vectrex was officially dead - and he wrung every last bit of performance out of it - including some decent music (as far as I remember)...
 
As far as I can tell, even SID files are actually executable files you can load into a real C64 (after some header stuff added by a later author).

Wikipedia's page on the AY-3 sound chip has some interesting comments on the pinout, and suggests you need to find out if your register select MSB is 0000 or something else before you do anything else.  It also suggests a key difference between the BBC's SOUND command - the SOUND command takes a frequency with smaller numbers being lower in pitch, while on the AY-3 chip, the pitch control is apparently a frequency divider - but dividing what I couldn't tell you.  It can apparently produce 125kHz sounds, but dividing 125kHz by 4096 (or even 4097) doesn't get you anywhere near semitone control, which I can tell you the chip definitely has.

Edit: Actually, that's enough to get a semitone at least one decibel below middle C.  Perhaps that is what it does.
 
Last edited by a moderator:
The 0000 is part of the 'addressing'; the intended purpose was so they could have various manuf pick a code for the chip, and their build of the chip would only answer with ABCD???? type address.. but in practice, only code 0000 was ever made I think.

My pcb design definately works .. I've put together some basic test cases (make a laser sound sort of thig), and if I play random junk or random YM stuf fin, it does 'stuff'; the YM stuff soudns sort of right, but sort of wrong. So I'm pretty sure I'm all good.. I just need ot get some good actual music for it :)

Now, I am in fact running a z80 in there, so I could try to adapt some of that YM stuff, but bleh; I think I'll modify an emu to dump out the registers every vblank or something, shouldn't be too hard.. just figured it'd have 'been done', but only the Atari ST guys are really on top of that :)

jeff
 
Ah, wikipedia suggests devices with two AY-3 chips in had alternate MSB sets, and that ones with a different set to 0000 are in common circulation, especially amongst clones, but if you've tested that already, then you must have a good one.

Modifying an emulator sounds like perhaps the simplest way to get what you want.  Like I say, I suspect the BBC Micros SOUND and ENVELOPE commands correspond to those register states in the AY-3, but at least some translation occurs I think.  And I suppose there must be some sort of ticker to control the duration of notes, if the AY-3 just sits there making a tone until you tell it to stop at the hardware level.

Actually, polling every 50/60Hz may not be enough.  I guess those ENVELOPE commands especially fire off multiple state transitions to set all those registers, and it probably does it in sequential machine code instructions.  Unless you can find the model of the AY-3 register state and dump that out, just recording the pinout isn't going to cut it.

Edit: Which is exactly what you were proposing, come to read it again ;)
 
Last edited by a moderator:
Back
Top