void OPL_initalize()
{
int fn;
/* frequency base */
freqbase = (rate != 0) ? ((double)clock / rate) / 72 : 0;
/* Timer base time */
TimerBase = 1.0 / ((double)clock / 72.0);
/* make time tables */
Init_timetables(OPL_ARRATE, OPL_DRRATE);
/* make fnumber . increment counter table */
for (fn = 0; fn < 1024; fn++)
{
FN_TABLE[fn] = (uint)(freqbase * fn * FREQ_RATE * (1 << 7) / 2);
}
/* LFO freq.table */
amsIncr = (int)(rate != 0 ? (double)AMS_ENT * (1 << AMS_SHIFT) / rate * 3.7 * ((double)clock / 3600000) : 0);
vibIncr = (int)(rate != 0 ? (double)VIB_ENT * (1 << VIB_SHIFT) / rate * 6.4 * ((double)clock / 3600000) : 0);
}