public AudioSampleBuffer Update(Spread <AudioSampleBuffer> inputs, Spread <int> outputMap) { var arrayInputs = inputs?.ToList(); var arrayMap = outputMap?.ToArray(); HasChanges = !AudioEngine.SequenceEquals(Inputs, arrayInputs) || !AudioEngine.ArrayEquals(OutputMap, arrayMap); Inputs = arrayInputs; OutputMap = arrayMap; if (HasChanges || HotSwapped) { AudioEngine.Log($"AudioMixer: configuration changed"); if (IsValid()) { processor = new AudioMixerProcessor(Inputs, OutputMap); output = processor.Build(); } else { output?.Dispose(); output = null; } HotSwapped = false; } return(output); }
public void TestInsertRange() { var spread = new Spread <int>(0); spread.AssignFrom(sampleData); var list = spread.ToList(); var listToInsert = list.GetRange(2, 4); int oldSliceCount = spread.SliceCount; spread.InsertRange(0, listToInsert); list.InsertRange(0, listToInsert); Assert.AreEqual(oldSliceCount + listToInsert.Count, spread.SliceCount, "SliceCount after InsertRange at index 0 doesn't match."); for (int i = 0; i < spread.SliceCount; i++) { Assert.AreEqual(list[i], spread[i], "InsertRange at index 0 failed."); } oldSliceCount = spread.SliceCount; spread.InsertRange(oldSliceCount, listToInsert); list.InsertRange(oldSliceCount, listToInsert); Assert.AreEqual(oldSliceCount + listToInsert.Count, spread.SliceCount, "SliceCount after InsertRange at end of spread doesn't match."); for (int i = 0; i < spread.SliceCount; i++) { Assert.AreEqual(list[i], spread[i], "InsertRange at end of spread failed."); } }
public void TestInsert() { var spread = new Spread <int>(0); spread.AssignFrom(sampleData); var list = spread.ToList(); int oldSliceCount = spread.SliceCount; spread.Insert(0, 12); list.Insert(0, 12); Assert.AreEqual(oldSliceCount + 1, spread.SliceCount, "SliceCount after insert at index 0 doesn't match."); for (int i = 0; i < spread.SliceCount; i++) { Assert.AreEqual(list[i], spread[i], "Insert at index 0 failed."); } oldSliceCount = spread.SliceCount; spread.Insert(oldSliceCount, 13); list.Insert(oldSliceCount, 13); Assert.AreEqual(oldSliceCount + 1, spread.SliceCount, "SliceCount after insert at end of spread doesn't match."); for (int i = 0; i < spread.SliceCount; i++) { Assert.AreEqual(list[i], spread[i], "Insert at end of spread failed."); } }
public void TestRemoveRange() { var spread = new Spread <int>(0); spread.AssignFrom(sampleData); var list = spread.ToList(); int oldSliceCount = spread.SliceCount; spread.RemoveRange(0, 3); list.RemoveRange(0, 3); Assert.AreEqual(oldSliceCount - 3, spread.SliceCount, "SliceCount after RemoveRange at index 0 doesn't match."); for (int i = 0; i < spread.SliceCount; i++) { Assert.AreEqual(list[i], spread[i], "RemoveRange at index 0 failed."); } }