/* ManualTestSoundTMS9919.java (c) 2011-2016 Edward Swartz All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse Public License v1.0 which accompanies this distribution, and is available at http://www.eclipse.org/legal/epl-v10.html */ package v9t9.audio.sound.test; import java.util.concurrent.TimeUnit; import org.junit.Test; import v9t9.audio.sound.NoiseGeneratorVoice; import v9t9.audio.sound.ToneGeneratorVoice; import v9t9.common.sound.TI99SoundSmoother; import v9t9.common.sound.TMS9919Consts; /** * @author ejs * */ public class ManualTestSoundTMS9919 extends BaseSoundTest { @Test public void testVolumes() { ToneGeneratorVoice toneVoice = new ToneGeneratorVoice("simple", 0); setupVoice(toneVoice); toneVoice.setFrequency(110); for (int vol = 0; vol < 256; vol+=4) { toneVoice.setVolume(vol); generate(toSamples(TimeUnit.MILLISECONDS, 50), toneVoice); } } @Test public void testTonesSimple() { ToneGeneratorVoice toneVoice = new ToneGeneratorVoice("simple", 0); setupVoice(toneVoice); toneVoice.setFrequency(110); generate(toSamples(TimeUnit.SECONDS, 1), toneVoice); toneVoice.setFrequency(440); generate(toSamples(TimeUnit.SECONDS, 1), toneVoice); toneVoice.setFrequency(880); generate(toSamples(TimeUnit.SECONDS, 1), toneVoice); } @Test public void testNoisesHarmony() { NoiseGeneratorVoice voice1 = new NoiseGeneratorVoice("simple"); NoiseGeneratorVoice voice2 = new NoiseGeneratorVoice("simple"); NoiseGeneratorVoice voice3 = new NoiseGeneratorVoice("simple"); setupVoice(voice1); setupVoice(voice2); setupVoice(voice3); voice1.setPeriod(20); voice2.setPeriod(40); voice3.setPeriod(60); generate(toSamples(TimeUnit.SECONDS, 3), voice1, voice2, voice3); voice1.setFrequency(880); voice2.setFrequency(880*2); voice3.setFrequency(880*3); generate(toSamples(TimeUnit.SECONDS, 3), voice1, voice2, voice3); } @Test public void testTonesStd() { ToneGeneratorVoice toneVoice = new ToneGeneratorVoice("simple", 0); setupVoice(toneVoice); toneVoice.setFrequency(1398); generate(toSamples(TimeUnit.SECONDS, 2), toneVoice); toneVoice.setFrequency(110); generate(toSamples(TimeUnit.SECONDS, 2), toneVoice); } @Test public void testTonesHigh() { ToneGeneratorVoice toneVoice = new ToneGeneratorVoice("simple", 0); setupVoice(toneVoice); toneVoice.setFrequency(5500); generate(toSamples(TimeUnit.SECONDS, 1), toneVoice); toneVoice.setFrequency(11000); generate(toSamples(TimeUnit.SECONDS, 1), toneVoice); toneVoice.setFrequency(22000); generate(toSamples(TimeUnit.SECONDS, 1), toneVoice); toneVoice.setFrequency(44000); generate(toSamples(TimeUnit.SECONDS, 1), toneVoice); toneVoice.setFrequency(55930); generate(toSamples(TimeUnit.SECONDS, 1), toneVoice); toneVoice.setFrequency(77777); generate(toSamples(TimeUnit.SECONDS, 1), toneVoice); } @Test public void testTonesLow() { ToneGeneratorVoice toneVoice = new ToneGeneratorVoice("simple", 0); setupVoice(toneVoice); toneVoice.setFrequency(110); generate(toSamples(TimeUnit.SECONDS, 1), toneVoice); toneVoice.setFrequency(55); generate(toSamples(TimeUnit.SECONDS, 1), toneVoice); toneVoice.setFrequency(33); generate(toSamples(TimeUnit.SECONDS, 1), toneVoice); toneVoice.setFrequency(22); generate(toSamples(TimeUnit.SECONDS, 1), toneVoice); toneVoice.setFrequency(11); generate(toSamples(TimeUnit.SECONDS, 1), toneVoice); toneVoice.setFrequency(2); generate(toSamples(TimeUnit.SECONDS, 1), toneVoice); } @Test public void testToneSweep() { ToneGeneratorVoice toneVoice = new ToneGeneratorVoice("simple", 0); setupVoice(toneVoice); for (int period = 0; period < 1024; period++) { toneVoice.setPeriod(period); generate(toSamples(TimeUnit.MILLISECONDS, 10), toneVoice); } } @Test public void testNoisesSimple() { NoiseGeneratorVoice voice = new NoiseGeneratorVoice("simple"); setupVoice(voice); voice.setNoiseControl(TMS9919Consts.NOISE_FEEDBACK_PERIODIC | TMS9919Consts.NOISE_PERIOD_FIXED_0); generate(toSamples(TimeUnit.SECONDS, 2), voice); voice.setNoiseControl(TMS9919Consts.NOISE_FEEDBACK_PERIODIC | TMS9919Consts.NOISE_PERIOD_FIXED_1); generate(toSamples(TimeUnit.SECONDS, 2), voice); voice.setNoiseControl(TMS9919Consts.NOISE_FEEDBACK_PERIODIC | TMS9919Consts.NOISE_PERIOD_FIXED_2); generate(toSamples(TimeUnit.SECONDS, 2), voice); voice.setNoiseControl(TMS9919Consts.NOISE_FEEDBACK_WHITE | TMS9919Consts.NOISE_PERIOD_FIXED_0); generate(toSamples(TimeUnit.SECONDS, 2), voice); voice.setNoiseControl(TMS9919Consts.NOISE_FEEDBACK_WHITE | TMS9919Consts.NOISE_PERIOD_FIXED_1); generate(toSamples(TimeUnit.SECONDS, 2), voice); voice.setNoiseControl(TMS9919Consts.NOISE_FEEDBACK_WHITE | TMS9919Consts.NOISE_PERIOD_FIXED_2); generate(toSamples(TimeUnit.SECONDS, 2), voice); } @Test public void testNoisesHigh() { NoiseGeneratorVoice voice = new NoiseGeneratorVoice("simple"); setupVoice(voice); voice.setNoiseControl(TMS9919Consts.NOISE_FEEDBACK_PERIODIC); voice.setFrequency(5500); generate(toSamples(TimeUnit.SECONDS, 1), voice); voice.setFrequency(11000); generate(toSamples(TimeUnit.SECONDS, 1), voice); voice.setFrequency(22000); generate(toSamples(TimeUnit.SECONDS, 1), voice); voice.setFrequency(44000); generate(toSamples(TimeUnit.SECONDS, 1), voice); voice.setFrequency(55930); generate(toSamples(TimeUnit.SECONDS, 1), voice); voice.setFrequency(77777); generate(toSamples(TimeUnit.SECONDS, 1), voice); voice.setNoiseControl(TMS9919Consts.NOISE_FEEDBACK_WHITE); voice.setFrequency(5500); generate(toSamples(TimeUnit.SECONDS, 1), voice); voice.setFrequency(11000); generate(toSamples(TimeUnit.SECONDS, 1), voice); voice.setFrequency(22000); generate(toSamples(TimeUnit.SECONDS, 1), voice); voice.setFrequency(44000); generate(toSamples(TimeUnit.SECONDS, 1), voice); voice.setFrequency(55930); generate(toSamples(TimeUnit.SECONDS, 1), voice); voice.setFrequency(77777); generate(toSamples(TimeUnit.SECONDS, 1), voice); } @Test public void testNoisesLow() { NoiseGeneratorVoice voice = new NoiseGeneratorVoice("simple"); setupVoice(voice); voice.setNoiseControl(TMS9919Consts.NOISE_FEEDBACK_PERIODIC); voice.setFrequency(110); generate(toSamples(TimeUnit.SECONDS, 2), voice); generate(toSamples(TimeUnit.SECONDS, 2), voice); generate(toSamples(TimeUnit.SECONDS, 2), voice); generate(toSamples(TimeUnit.SECONDS, 2), voice); voice.setNoiseControl(TMS9919Consts.NOISE_FEEDBACK_WHITE); voice.setFrequency(110); generate(toSamples(TimeUnit.SECONDS, 2), voice); generate(toSamples(TimeUnit.SECONDS, 2), voice); generate(toSamples(TimeUnit.SECONDS, 2), voice); generate(toSamples(TimeUnit.SECONDS, 2), voice); } @Test public void testNoiseSweep() { NoiseGeneratorVoice voice = new NoiseGeneratorVoice("simple"); setupVoice(voice); voice.setNoiseControl(TMS9919Consts.NOISE_FEEDBACK_PERIODIC); for (int period = 0; period < 1024; period++) { voice.setPeriod(period); generate(toSamples(TimeUnit.MILLISECONDS, 10), voice); } voice.setNoiseControl(TMS9919Consts.NOISE_FEEDBACK_WHITE); for (int period = 0; period < 1024; period++) { voice.setPeriod(period); generate(toSamples(TimeUnit.MILLISECONDS, 10), voice); } } @Test public void testNoisesAlignedHarmony() { ToneGeneratorVoice voice1 = new ToneGeneratorVoice("simple", 0); ToneGeneratorVoice voice2 = new ToneGeneratorVoice("simple", 1); ToneGeneratorVoice voice3 = new ToneGeneratorVoice("simple", 2); setupVoice(voice1); setupVoice(voice2); setupVoice(voice3); soundOutput.addMutator(new TI99SoundSmoother()); for (int i = 0; i < 300; i++) { voice1.setFrequency(110); generate(15, voice1, voice2, voice3); voice2.setFrequency(220); generate(15, voice1, voice2, voice3); voice3.setFrequency(440); generate(2000, voice1, voice2, voice3); } } }