public TownsPC98_FmSynthOperator(uint timerbase, uint rtt,
byte[] rateTable, byte[] shiftTable, byte[] attackDecayTable,
uint[] frqTable, uint[] sineTable, int[] tlevelOut, int[][] detuneTable)
{
_rtt = rtt;
_rateTbl = rateTable;
_rshiftTbl = shiftTable;
_adTbl = attackDecayTable;
_fTbl = frqTable;
_sinTbl = sineTable;
_tLvlTbl = tlevelOut;
_detnTbl = detuneTable;
_tickLength = timerbase * 2;
_state = EnvelopeState.Ready;
_currentLevel = 1023;
fs_a = new EvpState();
fs_d = new EvpState();
fs_r = new EvpState();
fs_s = new EvpState();
fs_a.rate = fs_a.shift = fs_d.rate = fs_d.shift = fs_s.rate = fs_s.shift = fs_r.rate = fs_r.shift = 0;
Reset();
}