private void LoadTapeSide(TapeSide tapeSide) { string path = Path.Combine(tapeManager.TapesDirectory, tapeSide.FilePath); if (music != null && loadedTapeSide != null) { loadedTapeSide.Position = music.GetCurrentPositionSeconds(); } mixer.RemoveSample(music); music?.wavFile.Close(); WAVFile wav = new WAVFile(); //default value in case of error try { wav = WAVFile.Load(path); } catch (Exception ex) { MessageBox.Show(ex.Message, "Error while loading tape", MessageBoxButtons.OK, MessageBoxIcon.Error); } music = new SoundMixer.Sample(wav, false, false, false, 0.2f, 1.0f); mixer.AddSample(music); mixer.SetRecordingSample(music); loadedTapeSide = tapeSide; music.SetCurrentPositionSeconds(tapeSide.Position); State = PlayerState.STOPPED; cassetteControl.LoadedTapeSide = tapeSide; cassetteButtons.Enabled = true; counter.IgnoreNextSetPosition(); cassetteClose.UpdatePlayback(true); }
public SimulatorForm() { InitializeComponent(); DoLayout(); cassetteButtons.Enabled = false; #if DEBUG timerDebug.Enabled = true; #else labelDebug.Visible = false; #endif cassetteButtons.RecButton.MouseDown += RecButton_MouseDown; cassetteButtons.RecButton.MouseUp += RecButton_MouseUp; cassetteButtons.PlayButton.MouseDown += PlayButton_MouseDown; cassetteButtons.PlayButton.MouseUp += PlayButton_MouseUp; cassetteButtons.RewButton.MouseDown += RewButton_MouseDown; cassetteButtons.RewButton.MouseUp += RewButton_MouseUp; cassetteButtons.FfButton.MouseDown += FfButton_MouseDown; cassetteButtons.FfButton.MouseUp += FfButton_MouseUp; cassetteButtons.StopEjectButton.MouseDown += StopEjectButton_MouseDown; cassetteButtons.StopEjectButton.MouseUp += StopEjectButton_MouseUp; cassetteButtons.PauseButton.MouseDown += PauseButton_MouseDown; cassetteButtons.PauseButton.MouseUp += PauseButton_MouseUp; mixer = new SoundMixer( (ushort)Common.WaveFormat.BitsPerSample, (ushort)Common.WaveFormat.Channels, (ushort)Common.WaveFormat.SampleRate, 8 * 1024); float vol = 2.0f; float speed = 1.0f; stopDown = new SoundMixer.Sample(WAVFile.Load(Properties.Resources.stopDown), false, false, true, vol, speed); stopUp = new SoundMixer.Sample(WAVFile.Load(Properties.Resources.stopUp), false, false, true, vol, speed); playDown = new SoundMixer.Sample(WAVFile.Load(Properties.Resources.playDown), false, false, true, vol, speed); playUp = new SoundMixer.Sample(WAVFile.Load(Properties.Resources.playUp), false, false, true, vol, speed); rewDown = new SoundMixer.Sample(WAVFile.Load(Properties.Resources.rewDown), false, false, true, vol, speed); rewUp = new SoundMixer.Sample(WAVFile.Load(Properties.Resources.rewUp), false, false, true, vol, speed); rewNoise = new SoundMixer.Sample(WAVFile.Load(Properties.Resources.rewNoise), false, true, true, vol, speed); ffDown = new SoundMixer.Sample(WAVFile.Load(Properties.Resources.ffDown), false, false, true, vol, speed); ffUp = new SoundMixer.Sample(WAVFile.Load(Properties.Resources.ffUp), false, false, true, vol, speed); ffNoise = new SoundMixer.Sample(WAVFile.Load(Properties.Resources.ffNoise), false, true, true, vol, speed); recordDown = new SoundMixer.Sample(WAVFile.Load(Properties.Resources.recordDown), false, false, true, vol, speed); recordUp = new SoundMixer.Sample(WAVFile.Load(Properties.Resources.recordUp), false, false, true, vol, speed); pauseDown = new SoundMixer.Sample(WAVFile.Load(Properties.Resources.pauseDown), false, false, true, vol, speed); pauseUp = new SoundMixer.Sample(WAVFile.Load(Properties.Resources.pauseUp), false, false, true, vol, speed); unpauseDown = new SoundMixer.Sample(WAVFile.Load(Properties.Resources.unpauseDown), false, false, true, vol, speed); unpauseUp = new SoundMixer.Sample(WAVFile.Load(Properties.Resources.unpauseUp), false, false, true, vol, speed); ejectDown = new SoundMixer.Sample(WAVFile.Load(Properties.Resources.ejectDown), false, false, true, vol, speed); ejectUp = new SoundMixer.Sample(WAVFile.Load(Properties.Resources.ejectUp), false, false, true, vol, speed); cassetteClose = new SoundMixer.Sample(WAVFile.Load(Properties.Resources.casetteClose), false, false, true, vol, speed); cassetteInsert = new SoundMixer.Sample(WAVFile.Load(Properties.Resources.casetteInsert), false, false, true, vol, speed); mixer.AddSample(stopDown); mixer.AddSample(stopUp); mixer.AddSample(playDown); mixer.AddSample(playUp); mixer.AddSample(rewDown); mixer.AddSample(rewNoise); mixer.AddSample(rewUp); mixer.AddSample(ffDown); mixer.AddSample(ffNoise); mixer.AddSample(ffUp); mixer.AddSample(recordDown); mixer.AddSample(recordUp); mixer.AddSample(pauseDown); mixer.AddSample(pauseUp); mixer.AddSample(unpauseDown); mixer.AddSample(unpauseUp); mixer.AddSample(ejectDown); mixer.AddSample(ejectUp); mixer.AddSample(cassetteClose); mixer.AddSample(cassetteInsert); mixer.Start(); tapeManager = new TapeManager(listBox); tapeManager.LoadedTapeSideChanged += TapeManager_LoadedTapeSideChanged; }