Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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;
        }