I've gathered here a bit of technical details about the GF1. Some may not interest everyone, but I hope coders and hardware freaks will find this stuff enjoyable reading. :)

GF1 playback frequency


The Gravis GF1 is a pipeline processor, capable of processing a maximum of 32 voices. As servicing one pipeline takes 32 clock cycles and the clock for GF1 comes from a 19.7568MHz crystal (at least all of my Ultrasounds have one), we can calculate that servicing one voice uses

32*(1/19.7568E+6)=1.6197

microseconds. This result points us to a small quirk that has slightly annoyed people programming the GF1 directly. To achieve 44100Hz playback rate, one must use no more than 14 voices since the GF1 cannot service voices quickly enough if 15 or more voices are active. With the equation

1E+6/(1.6197*voices)=f_gf1

for the playback rate given in GF1 SDK documentation, we can calculate a table for the playback frequencies:

0-1444100Hz
1541160Hz
1638587Hz
1736317Hz
1834300Hz
1932494Hz
2030870Hz
2129400Hz
2228063Hz
2326843Hz
2425725Hz
2524696Hz
2623746Hz
2722866Hz
2822050Hz
2921289Hz
3020580Hz
3119916Hz
3219293Hz

To make a sample play at the same speed regardless of the number active voices, the programmer must calculate a new voice frequency using the equation:

f_real*(44100/f_gf1)=f_voice

So for 16 voices, the actual playing frequency for note frequency 8363Hz should be:

8363*(44100/38587)=9557.84Hz

Right? :)

GF1 chip pinouts?


The Gravis GF1 comes in a 84pin PLCC package, fitted into a socket on earlier boards but on ACE and Extreme it's soldered directly to the board. The socketed version could be removed and used with homebrew electronics projects. For example, it would certainly be interesting to try to interface the GF1 with an Amiga A1200. So if anyone has the pinouts of the GF1, I'd be really delighted to get them.