/// <summary> Dispose of it to log it to the PerfMonitor </summary> public void Dispose() { if (_valid == false) { return; } TimeSpan start = _timer.InitTime; double ms = _timer.Elapsed.TotalMilliseconds; long?deltaMem = null; #if GC_THREADMEM_SUPPORT if (_mem.HasValue) { deltaMem = System.GC.GetAllocatedBytesForCurrentThread() - _mem.Value; } #endif var sampleInstance = new SampleInstance(_id, _depth, start, ms, deltaMem); if (_customDepth == false) { _target.Depth--; } _target.Add(sampleInstance); }
// Use this for initialization void Start() { sampleInstances = new List <SampleInstance>(); foreach (Sample s in samples) { var instance = new SampleInstance(); instance.sample = s; instance.source = gameObject.AddComponent <AudioSource>(); instance.source.outputAudioMixerGroup = group; instance.source.volume = 0f; instance.source.clip = s.clip; instance.source.Play(); instance.source.loop = true; instance.sample.volume = DbToLinear(instance.sample.volume); sampleInstances.Add(instance); } }
public void SetRPM(float rpm) { if (sampleInstances == null) { return; } for (int i = 0; i < sampleInstances.Count; i++) { SampleInstance instance = sampleInstances[i]; if (rpm < instance.sample.minRpm || rpm > instance.sample.maxRpm) { instance.source.volume = 0f; } else { //crossfade if (i >= 1 && sampleInstances[i - 1].sample.maxRpm > rpm) { var prevInstance = sampleInstances[i - 1]; float max = prevInstance.sample.maxRpm; float min = instance.sample.minRpm; float t = (rpm - min) / (max - min); instance.source.volume = fadeCurve.Evaluate(t) * instance.sample.volume; prevInstance.source.volume = fadeCurve.Evaluate(1 - t) * prevInstance.sample.volume; } else { instance.source.volume = instance.sample.volume; } //autopitch float pitch = (1 / (instance.sample.autoPitchRoot)) * rpm; instance.source.pitch = pitch; } } }