/// <summary> /// /// </summary> public override void KeyOn() { base.KeyOn(); parentModule.hardReset(); //START parentModule.Tms5220DataW((byte)(0x60)); // Set freq if (timbre.BaseFreqency != 0) { parentModule.SetClock(parentModule.UnitNumber, (uint)Math.Round(640000 * (CalcCurrentFrequency() / timbre.BaseFreqency))); } // Send commands if (timbre.ToneType == ToneType.Custom) { var lpcd = timbre.RawCustomLpcData; if (lpcd != null) { foreach (var line in lpcd) { sendCommand(line); } } } else { var lpcd = timbre.PresetLpcData; if (lpcd != null) { foreach (var data in lpcd) { parentModule.Tms5220DataW(data); } } } //STOP sendCommand(0, 15, 0, 0, 0, 0, 0); }
/// <summary> /// /// </summary> /// <param name="data"></param> /// <param name="bitLength"></param> public void WriteBits(int data, int bitLength) { for (int i = bitLength - 1; i >= 0; i--) { writeData |= ((data >> i) & 1) << currentBitPos; currentBitPos++; if (currentBitPos == 8) { parentModule.Tms5220DataW((byte)writeData); //Debug.Write(writeData + " "); currentBitPos = 0; writeData = 0; } } }