Beispiel #1
0
        public void TestSuperimposeBroadcastArgument()
        {
            //Act
            var combination1 = _signal.Superimpose(_constant);
            var combination2 = _constant + _signal;

            //Assert
            Assert.Multiple(() =>
            {
                Assert.That(combination1.Samples, Is.EqualTo(new float[] { 5, 6, 7, 8, 9, 5, 6, 7, 8, 9 }));
                Assert.That(combination2.Samples, Is.EqualTo(new float[] { 5, 6, 7, 8, 9, 5, 6, 7, 8, 9 }));
            });
        }
        private void signalOperationButton_Click(object sender, EventArgs e)
        {
            if (_signal2 == null)
            {
                return;
            }

            var param = int.Parse(operationSamplesTextBox.Text);

            switch (operationComboBox.Text)
            {
            case "Delay by":
                _signal2 = _signal2.Delay(param);
                break;

            case "Repeat times":
                _signal2 = _signal2.Repeat(param);
                break;
            }

            _signal3 = _signal1 == null ? _signal2 : _signal1.Superimpose(_signal2);

            generatedSignalPanel.Signal    = _signal2;
            superimposedSignalPanel.Signal = _signal3;
        }
Beispiel #3
0
        public void TestSuperimposeBroadcastObject()
        {
            //Act
            var combination = _constant.Superimpose(_signal);

            //Assert
            Assert.That(combination.Samples, Is.EqualTo(new float[] { 5, 6, 7, 8, 9, 5, 6, 7, 8, 9 }));
        }
Beispiel #4
0
        // todo Abundant Music WebAudioPlayer has synthesis settings. How did it do the percussion?
        private DiscreteSignal GetPercussionSignal(PercussionType percussionType, int sampleCount)
        {
            switch (percussionType)
            {
            // Bass drums
            case PercussionType.Bass:
                var bass  = SignalHelper.GetChirp(90, 120, sampleCount);
                var bass2 = SignalHelper.GetChirp(180, 240, sampleCount);
                var bass3 = SignalHelper.GetChirp(270, 360, sampleCount);

                // The chirp builder goes in the "up" direction, so we need to reverse it to go "down"
                bass  = new DiscreteSignal(Constants.SAMPLE_RATE, bass.Samples.Reverse());
                bass2 = new DiscreteSignal(Constants.SAMPLE_RATE, bass2.Samples.Reverse());
                bass3 = new DiscreteSignal(Constants.SAMPLE_RATE, bass3.Samples.Reverse());

                // Combine the two bass signals so that the bass has more "presence"
                bass = bass.Superimpose(bass2).Superimpose(bass3);

                return(bass);

            // Snare drums
            case PercussionType.Snare:
                var snare = SignalHelper.GetKarplusStrongDrum(0.5, 30, 1, 1, sampleCount);

                return(snare);

            // Crash drums
            case PercussionType.Crash:
                var crash = SignalHelper.GetKarplusStrongDrum(0.5, 11, 1, 1, sampleCount);

                return(crash);

            // Ride drums
            case PercussionType.Ride:
            // Defaulting to a ride drum probably isn't good, but it will sound in lots of situations.
            default:
                var ride = SignalHelper.GetKarplusStrongDrum(0.5, 60, 0.1, 1, sampleCount);

                return(ride);
            }
        }