Example #1
0
 /// <summary>
 /// Get low beta data by channel.
 /// </summary>
 public double GetLowBetaData(Channel_t channel)
 {
     if (_bandpowerBuff == null)
     {
         return(0);
     }
     else
     {
         return(_bandpowerBuff.BetalLPower(channel));
     }
 }
Example #2
0
        public int GetChanIndex(Channel_t chan)
        {
            int chanIndex = _devChannels.IndexOf(chan);

            if (chanIndex == -1)
            {
                return(-1); // TODO: return error
            }
            // UnityEngine.Debug.Log("GetChanIndex" + chanIndex);
            return((int)chanIndex);
        }
Example #3
0
 public static string ChannelToString(Channel_t chan)
 {
     foreach (KeyValuePair <Channel_t, string> kvp in list)
     {
         if (kvp.Key == chan)
         {
             return(kvp.Value);
         }
     }
     return("CHAN_UNKNOWN");
 }
Example #4
0
 //=== Motion data ===
 /// <summary>
 /// Get motion data by channel.
 /// </summary>
 public double[] GetMotionData(Channel_t chan)
 {
     if (_motionBuff == null)
     {
         return(null);
     }
     else
     {
         return(_motionBuff.GetData(chan));
     }
 }
Example #5
0
 /// <summary>
 /// Get alpha data by channel.
 /// </summary>
 public double GetAlphaData(Channel_t channel)
 {
     if (_bandpowerBuff == null)
     {
         return(0);
     }
     else
     {
         return(_bandpowerBuff.AlphaPower(channel));
     }
 }
Example #6
0
 /// <summary>
 /// Get EEG data by channel.
 /// </summary>
 public double[] GetEEGData(Channel_t chan)
 {
     if (_eegBuff == null)
     {
         return(null);
     }
     else
     {
         return(_eegBuff.GetData(chan));
     }
 }
Example #7
0
        // S_Init (void)
        public void Initialise( )
        {
            Host.Cvars.BgmVolume     = Host.CVars.Add("bgmvolume", 1f, ClientVariableFlags.Archive);       // = { "bgmvolume", "1", true };
            Host.Cvars.Volume        = Host.CVars.Add("volume", 0.7f, ClientVariableFlags.Archive);        // = { "volume", "0.7", true };
            Host.Cvars.NoSound       = Host.CVars.Add("nosound", false);                                   // = { "nosound", "0" };
            Host.Cvars.Precache      = Host.CVars.Add("precache", true);                                   // = { "precache", "1" };
            Host.Cvars.LoadAs8bit    = Host.CVars.Add("loadas8bit", false);                                // = { "loadas8bit", "0" };
            Host.Cvars.BgmBuffer     = Host.CVars.Add("bgmbuffer", 4096f);                                 // = { "bgmbuffer", "4096" };
            Host.Cvars.AmbientLevel  = Host.CVars.Add("ambient_level", 0.3f);                              // = { "ambient_level", "0.3" };
            Host.Cvars.AmbientFade   = Host.CVars.Add("ambient_fade", 100f);                               // = { "ambient_fade", "100" };
            Host.Cvars.NoExtraUpdate = Host.CVars.Add("snd_noextraupdate", false);                         // = { "snd_noextraupdate", "0" };
            Host.Cvars.Show          = Host.CVars.Add("snd_show", false);                                  // = { "snd_show", "0" };
            Host.Cvars.MixAhead      = Host.CVars.Add("_snd_mixahead", 0.1f, ClientVariableFlags.Archive); // = { "_snd_mixahead", "0.1", true };


            Host.Console.Print("\nSound Initialization\n");

            if (CommandLine.HasParam("-nosound"))
            {
                return;
            }

            for (var i = 0; i < _Channels.Length; i++)
            {
                _Channels[i] = new Channel_t( );
            }

            Host.Commands.Add("play", Play);
            Host.Commands.Add("playvol", PlayVol);
            Host.Commands.Add("stopsound", StopAllSoundsCmd);
            Host.Commands.Add("soundlist", SoundList);
            Host.Commands.Add("soundinfo", SoundInfo_f);

            _IsInitialized = true;

            Startup( );

            InitScaletable( );

            _NumSfx = 0;

            Host.Console.Print("Sound sampling rate: {0}\n", _shm.speed);

            // provides a tick sound until washed clean
            _AmbientSfx[AmbientDef.AMBIENT_WATER] = PrecacheSound("ambience/water1.wav");
            _AmbientSfx[AmbientDef.AMBIENT_SKY]   = PrecacheSound("ambience/wind2.wav");

            StopAllSounds(true);
        }
Example #8
0
 /// <summary>
 /// Get contact quality by channel.
 /// </summary>
 public double GetContactQuality(Channel_t channel)
 {
     if (_devBuff == null)
     {
         return(0);
     }
     else
     {
         double result = _devBuff.GetContactQuality(channel);
         if (result < 0)
         {
             result = 0;
         }
         return(result);
     }
 }
Example #9
0
        // SND_Spatialize
        private void Spatialize(Channel_t ch)
        {
            // anything coming from the view entity will allways be full volume
            if (ch.entnum == Host.Client.cl.viewentity)
            {
                ch.leftvol  = ch.master_vol;
                ch.rightvol = ch.master_vol;
                return;
            }

            // calculate stereo seperation and distance attenuation
            var snd        = ch.sfx;
            var source_vec = ch.origin - _ListenerOrigin;

            var dist = MathLib.Normalize(ref source_vec) * ch.dist_mult;
            var dot  = Vector3.Dot(_ListenerRight, source_vec);

            Single rscale, lscale;

            if (_shm.channels == 1)
            {
                rscale = 1.0f;
                lscale = 1.0f;
            }
            else
            {
                rscale = 1.0f + dot;
                lscale = 1.0f - dot;
            }

            // add in distance effect
            var scale = (1.0f - dist) * rscale;

            ch.rightvol = ( Int32 )(ch.master_vol * scale);
            if (ch.rightvol < 0)
            {
                ch.rightvol = 0;
            }

            scale      = (1.0f - dist) * lscale;
            ch.leftvol = ( Int32 )(ch.master_vol * scale);
            if (ch.leftvol < 0)
            {
                ch.leftvol = 0;
            }
        }
Example #10
0
        // return -1 if the moment there is no battery come.
        public double GetContactQuality(Channel_t channel)
        {
            if (channel == Channel_t.CHAN_FLEX_CMS || channel == Channel_t.CHAN_FLEX_DRL)
            {
                return(0);
            }
            double[] chanData;
            chanData = GetLatestDataFromBuffer(GetChanIndex(channel));

            if (chanData != null)
            {
                return(chanData[0]);
            }
            else
            {
                return(-1);
            }
        }
Example #11
0
        // SND_PaintChannelFrom16
        private void PaintChannelFrom16(Channel_t ch, SoundEffectCache_t sc, int count)
        {
            var leftvol  = ch.leftvol;
            var rightvol = ch.rightvol;
            var sfx      = sc.data;
            var offset   = ch.pos * 2; // sfx = (signed short *)sc->data + ch->pos;

            for (var i = 0; i < count; i++)
            {
                int data  = ( short )(( ushort )sfx[offset] + (( ushort )sfx[offset + 1] << 8));       // Uze: check is this is right!!!
                var left  = (data * leftvol) >> 8;
                var right = (data * rightvol) >> 8;
                this._PaintBuffer[i].left  += left;
                this._PaintBuffer[i].right += right;
                offset += 2;
            }

            ch.pos += count;
        }
Example #12
0
        // SND_PaintChannelFrom8
        private void PaintChannelFrom8(Channel_t ch, SoundEffectCache_t sc, int count)
        {
            if (ch.leftvol > 255)
            {
                ch.leftvol = 255;
            }
            if (ch.rightvol > 255)
            {
                ch.rightvol = 255;
            }

            var lscale = ch.leftvol >> 3;
            var rscale = ch.rightvol >> 3;
            var sfx    = sc.data;
            var offset = ch.pos;

            for (var i = 0; i < count; i++)
            {
                int data = sfx[offset + i];
                this._PaintBuffer[i].left  += this._ScaleTable[lscale, data];
                this._PaintBuffer[i].right += this._ScaleTable[rscale, data];
            }
            ch.pos += count;
        }
Example #13
0
        // void S_Update (vec3_t origin, vec3_t v_forward, vec3_t v_right, vec3_t v_up)
        //
        // Called once each time through the main loop
        public void Update(ref Vector3 origin, ref Vector3 forward, ref Vector3 right, ref Vector3 up)
        {
            if (!_IsInitialized || (_SoundBlocked > 0))
            {
                return;
            }

            _ListenerOrigin  = origin;
            _ListenerForward = forward;
            _ListenerRight   = right;
            _ListenerUp      = up;

            // update general area ambient sound sources
            UpdateAmbientSounds( );

            Channel_t combine = null;

            // update spatialization for and dynamic sounds
            //channel_t ch = channels + NUM_AMBIENTS;
            for (var i = AmbientDef.NUM_AMBIENTS; i < _TotalChannels; i++)
            {
                var ch = _Channels[i];// channels + NUM_AMBIENTS;
                if (ch.sfx == null)
                {
                    continue;
                }

                Spatialize(ch);    // respatialize channel
                if (ch.leftvol == 0 && ch.rightvol == 0)
                {
                    continue;
                }

                // try to combine static sounds with a previous channel of the same
                // sound effect so we don't mix five torches every frame
                if (i >= MAX_DYNAMIC_CHANNELS + AmbientDef.NUM_AMBIENTS)
                {
                    // see if it can just use the last one
                    if (combine != null && combine.sfx == ch.sfx)
                    {
                        combine.leftvol  += ch.leftvol;
                        combine.rightvol += ch.rightvol;
                        ch.leftvol        = ch.rightvol = 0;
                        continue;
                    }
                    // search for one
                    combine = _Channels[MAX_DYNAMIC_CHANNELS + AmbientDef.NUM_AMBIENTS];// channels + MAX_DYNAMIC_CHANNELS + NUM_AMBIENTS;
                    Int32 j;
                    for (j = MAX_DYNAMIC_CHANNELS + AmbientDef.NUM_AMBIENTS; j < i; j++)
                    {
                        combine = _Channels[j];
                        if (combine.sfx == ch.sfx)
                        {
                            break;
                        }
                    }

                    if (j == _TotalChannels)
                    {
                        combine = null;
                    }
                    else
                    {
                        if (combine != ch)
                        {
                            combine.leftvol  += ch.leftvol;
                            combine.rightvol += ch.rightvol;
                            ch.leftvol        = ch.rightvol = 0;
                        }
                        continue;
                    }
                }
            }

            //
            // debugging output
            //
            if (Host.Cvars.Show.Get <Boolean>( ))
            {
                var total = 0;
                for (var i = 0; i < _TotalChannels; i++)
                {
                    var ch = _Channels[i];
                    if (ch.sfx != null && (ch.leftvol > 0 || ch.rightvol > 0))
                    {
                        total++;
                    }
                }
                Host.Console.Print("----({0})----\n", total);
            }

            // mix some sound
            Update( );
        }