示例#1
0
 /// <summary>
 /// Ducks all sounds with a priority lower than the one passed.
 /// </summary>
 /// <param name="DuckPri">The ducking priority under which to duck other sounds.</param>
 public void Duck(HITDuckingPriorities DuckPri)
 {
     for (int i = 0; i < Threads.Count; i++)
     {
         //0 means least importance, so it gets ducked.
         if (Threads[i].DuckPriority < DuckPri)
         {
             switch (DuckPri)
             {
                 case HITDuckingPriorities.duckpri_low:
                     Threads[i].SetVolume(0.15f, Threads[i].Pan);
                     break;
                 case HITDuckingPriorities.duckpri_normal:
                     Threads[i].SetVolume(0.25f, Threads[i].Pan);
                     break;
                 case HITDuckingPriorities.duckpri_high:
                     Threads[i].SetVolume(0.45f, Threads[i].Pan);
                     break;
                 case HITDuckingPriorities.duckpri_higher:
                     Threads[i].SetVolume(0.65f, Threads[i].Pan);
                     break;
                 case HITDuckingPriorities.duckpri_evenhigher:
                     //Threads[i].SetVolume(0.85f, Threads[i].Pan);
                     //If ducking priority is duckpri_never, it shouldn't be ducked!
                     break;
             }
         }
     }
 }
示例#2
0
        /// <summary>
        /// Ducks all sounds with a priority lower than the one passed.
        /// </summary>
        /// <param name="DuckPri">The ducking priority under which to duck other sounds.</param>
        public void Duck(HITDuckingPriorities DuckPri)
        {
            for (int i = 0; i < Threads.Count; i++)
            {
                //0 means least importance, so it gets ducked.
                if (Threads[i].DuckPriority < DuckPri)
                {
                    switch (DuckPri)
                    {
                    case HITDuckingPriorities.duckpri_low:
                        Threads[i].SetVolume(0.15f, Threads[i].Pan);
                        break;

                    case HITDuckingPriorities.duckpri_normal:
                        Threads[i].SetVolume(0.25f, Threads[i].Pan);
                        break;

                    case HITDuckingPriorities.duckpri_high:
                        Threads[i].SetVolume(0.45f, Threads[i].Pan);
                        break;

                    case HITDuckingPriorities.duckpri_higher:
                        Threads[i].SetVolume(0.65f, Threads[i].Pan);
                        break;

                    case HITDuckingPriorities.duckpri_evenhigher:
                        //Threads[i].SetVolume(0.85f, Threads[i].Pan);
                        //If ducking priority is duckpri_never, it shouldn't be ducked!
                        break;
                    }
                }
            }
        }
示例#3
0
        /// <summary>
        /// Creates a new track.
        /// </summary>
        /// <param name="Filedata">The data to create the track from.</param>
        public Track(byte[] Filedata)
        {
            BinaryReader Reader = new BinaryReader(new MemoryStream(Filedata));

            MagicNumber = new string(Reader.ReadChars(4));

            if (MagicNumber == "2DKT")
            {
                TWODKT = true;
            }

            int    CurrentVal = 8;
            string data;

            if (!TWODKT)
            {
                data = new string(Reader.ReadChars(Filedata.Length));
            }
            else
            {
                data = new string(Reader.ReadChars(Reader.ReadInt32()));
            }
            string[] Values = data.Split(',');

            //MagicNumber = Values[0];
            Version   = ParseHexString(Values[1]);
            TrackName = Values[2];
            SoundID   = ParseHexString(Values[3]);
            TrackID   = ParseHexString(Values[4]);
            if (Values[5] != "\r\n" && Values[5] != "ETKD" && Values[5] != "") //some tracks terminate here...
            {
                ArgType      = (HITArgs)ParseHexString(Values[5]);
                ControlGroup = (HITControlGroups)ParseHexString(Values[7]);

                if (Version == 2)
                {
                    CurrentVal++;
                }

                CurrentVal += 3; //skip two unknowns and clsid

                DuckingPriority = (HITDuckingPriorities)ParseHexString(Values[CurrentVal]);
                CurrentVal++;
                Looped      = ParseHexString(Values[CurrentVal]);
                LoopDefined = true;
                CurrentVal++;
                Volume = ParseHexString(Values[CurrentVal]);
            }

            Reader.Close();
        }
示例#4
0
        private bool TWODKT = false; //Optional encoding as Pascal string, typical Maxis...

        #endregion Fields

        #region Constructors

        /// <summary>
        /// Creates a new track.
        /// </summary>
        /// <param name="Filedata">The data to create the track from.</param>
        public Track(byte[] Filedata)
        {
            BinaryReader Reader = new BinaryReader(new MemoryStream(Filedata));

            MagicNumber = new string(Reader.ReadChars(4));

            if(MagicNumber == "2DKT")
                TWODKT = true;

            int CurrentVal = 8;
            string data;

            if(!TWODKT)
                data = new string(Reader.ReadChars(Filedata.Length));
            else
                data = new string(Reader.ReadChars(Reader.ReadInt32()));
            string[] Values = data.Split(',');

            //MagicNumber = Values[0];
            Version = ParseHexString(Values[1]);
            TrackName = Values[2];
            SoundID = ParseHexString(Values[3]);
            TrackID = ParseHexString(Values[4]);
            if (Values[5] != "\r\n" && Values[5] != "ETKD" && Values[5] != "") //some tracks terminate here...
            {
                ArgType = (HITArgs)ParseHexString(Values[5]);
                ControlGroup = (HITControlGroups)ParseHexString(Values[7]);

                if (Version == 2)
                    CurrentVal++;

                CurrentVal += 2;

                DuckingPriority = (HITDuckingPriorities)ParseHexString(Values[CurrentVal]);
                CurrentVal++;
                Looped = ParseHexString(Values[CurrentVal]);
                CurrentVal++;
                Volume = ParseHexString(Values[CurrentVal]);
            }

            Reader.Close();
        }