/// <summary> /// Get low beta data by channel. /// </summary> public double GetLowBetaData(Channel_t channel) { if (_bandpowerBuff == null) { return(0); } else { return(_bandpowerBuff.BetalLPower(channel)); } }
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); }
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"); }
//=== 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)); } }
/// <summary> /// Get alpha data by channel. /// </summary> public double GetAlphaData(Channel_t channel) { if (_bandpowerBuff == null) { return(0); } else { return(_bandpowerBuff.AlphaPower(channel)); } }
/// <summary> /// Get EEG data by channel. /// </summary> public double[] GetEEGData(Channel_t chan) { if (_eegBuff == null) { return(null); } else { return(_eegBuff.GetData(chan)); } }
// 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); }
/// <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); } }
// 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; } }
// 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); } }
// 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; }
// 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; }
// 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( ); }