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:
014  44100Hz 
15  41160Hz 
16  38587Hz 
17  36317Hz 
18  34300Hz 
19  32494Hz 
20  30870Hz 
21  29400Hz 
22  28063Hz 
23  26843Hz 
24  25725Hz 
25  24696Hz 
26  23746Hz 
27  22866Hz 
28  22050Hz 
29  21289Hz 
30  20580Hz 
31  19916Hz 
32  19293Hz 
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.
