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(); }