Beispiel #1
0
            /// <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);
            }
Beispiel #2
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;
                    }
                }
            }