public void Add(EngineCycle cycle) { if (!cycles.Contains(cycle)) { cycles.Add(cycle); } }
public void Init(float[] source, EngineCycle cycle, int cyclePadding) { sourceData = source; startSample = cycle.startSample - cyclePadding; currentSample = startSample; attackTimeSamples = cyclePadding; sustainTimeSamples = cycle.endSample - cycle.startSample; releaseTimeSamples = cyclePadding; gainPerSampleAttack = 1f / (float)attackTimeSamples; gainPerSampleRelease = -1f / (float)releaseTimeSamples; attackEndSample = startSample + attackTimeSamples; releaseStartSample = attackEndSample + sustainTimeSamples; endSample = releaseStartSample + releaseTimeSamples; gain = 0f; }
public async Task Initialize() { var fileName = await EnsureFile(); var firstLine = true; _engineCycles = new List <EngineCycle>(); using var reader = File.OpenText(fileName); // Read through the entire file and add all cycles to the collection while (!reader.EndOfStream) { if (firstLine) { header = (await reader.ReadLineAsync())?.Split(','); firstLine = false; } else { var line = await reader.ReadLineAsync(); var item = new EngineCycle(); var sensorData = line.Split(','); item.EngineId = "engine" + int.Parse(sensorData[0]).ToString("000"); item.Cycle = Convert.ToInt32(sensorData[1]); item.Data = line; item.SensorData = sensorData; _engineCycles.Add(item); } } // Initialize state for every engine _cycleStates = new Dictionary <string, CycleState>(); foreach (var engineId in _engineCycles.Select(cycle => cycle.EngineId).Distinct()) { _cycleStates.Add(engineId, new CycleState { Direction = Direction.Up, NextCycle = 1, Cycles = _engineCycles.Where(cycle => cycle.EngineId.Equals(engineId, StringComparison.CurrentCultureIgnoreCase)) }); } }