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-14 | 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.
|