private async void ApplicationBarRenderButton_OnClick(object sender, RoutedEventArgs e) { var savePicker = new FileSavePicker(); savePicker.FileTypeChoices.Add("Track", new List <string> { ".wav" }); var storageFile = await savePicker.PickSaveFileAsync(); if (storageFile == null) { return; } var saveToFile = new StorageFileEx(storageFile); ViewModel.RenderProject(saveToFile); }
private async void ApplicationBarLoadButton_OnClick(object sender, RoutedEventArgs routedEventArgs) { var openPicker = new FileOpenPicker(); openPicker.ViewMode = PickerViewMode.Thumbnail; openPicker.FileTypeFilter.Add(".seqProj"); openPicker.CommitButtonText = "Load"; var storageFile = await openPicker.PickSingleFileAsync(); if (storageFile == null) { return; } var saveToFile = new StorageFileEx(storageFile); ViewModel.LoadProject(saveToFile); }
public async void RenderProject(StorageFileEx saveToFile) { //second rendering not allowed if (IsRendering) { return; } RenderProgress = "Initiate rendering ..."; IsRendering = true; StopIsChecked = true; var tempWaveFileStream = await saveToFile.OpenStreamForWriteAsync(); await Task.Run(() => { ExecuteStop(); var waveFileWriter = new WaveFileWriterEffect(); var descriptor = new EffectDescriptor(waveFileWriter); AudioDefines.MasteringVoice.SetEffectChain(descriptor); AudioDefines.MasteringVoice.EnableEffect(0); var silenceSamplePlayer = new SilenceSamplePlayer(); silenceSamplePlayer.WithXAudio(AudioDefines.XAudio) .WithWaveFormat(AudioDefines.WaveFormat) .WithVoicePool(AudioDefines.VoicePool); silenceSamplePlayer.BuildAsync().Wait(); silenceSamplePlayer.Play(); RenderProgress = string.Format("rendering"); Task.Delay(500).Wait(); var previousVolume = MasterVolume; MasterVolume = 0.0; waveFileWriter.Start(); PlayIsChecked = true; MasterVolume = previousVolume; Task.Delay(30000).Wait(); MasterVolume = 0.0; waveFileWriter.Stop(tempWaveFileStream); StopIsChecked = true; silenceSamplePlayer.Dispose(); AudioDefines.MasteringVoice.DisableEffect(0); AudioDefines.MasteringVoice.SetEffectChain(null); waveFileWriter.Dispose(); MasterVolume = previousVolume; }); tempWaveFileStream.Dispose(); IsRendering = false; }