示例#1
0
        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);
        }
示例#2
0
        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.");
            }
        }
示例#3
0
        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.");
            }
        }
示例#4
0
        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.");
            }
        }