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; }
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 })); }
// 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); } }