private void ResetOggPreview() { if (waveOut != null && waveOut.PlaybackState == PlaybackState.Playing) { waveOut.Stop(); waveReader.Close(); waveReader.Dispose(); } waveReader = null; btnOggPreview.Text = "Ogg Preview"; }
private IWaveProvider GetOggWaveProvider() { Logger.Info($"Reading Ogg @ {opts.File}"); var oggReader = new VorbisWaveReader(opts.File); int bytes = (int)oggReader.Length; byte[] buffer = new byte[bytes]; Logger.Info($"Read Ogg - Sample Rate {oggReader.WaveFormat.SampleRate}"); if (oggReader.WaveFormat.SampleRate < INPUT_SAMPLE_RATE) { Logger.Error($"Ogg Sample rate must be at least 16000 but is {oggReader.WaveFormat.SampleRate} - Quitting. Use Audacity or another tool to resample as 16000 or Higher"); Environment.Exit(1); } int read = oggReader.Read(buffer, 0, (int)bytes); BufferedWaveProvider bufferedWaveProvider = new BufferedWaveProvider(oggReader.WaveFormat) { BufferLength = read * 2, ReadFully = false, DiscardOnBufferOverflow = true }; bufferedWaveProvider.AddSamples(buffer, 0, read); VolumeSampleProvider volumeSample = new VolumeSampleProvider(bufferedWaveProvider.ToSampleProvider()) { Volume = opts.Volume }; oggReader.Close(); oggReader.Dispose(); Logger.Info($"Convert to Mono 16bit PCM"); //after this we've got 16 bit PCM Mono - just need to sort sample rate return(volumeSample.ToMono().ToWaveProvider16()); }
public CustomMap(string selectedFile, string selectedSongPackName, bool createFile) { selectedSongPackName = selectedSongPackName.Replace("\\", "\\"); difficultyPath = selectedFile.Replace("\\", "/"); string[] folders = difficultyPath.Split('/'); directoryPath = selectedSongPackName + "\\" + folders[folders.Length - 2]; string[] selectedPathFolders = selectedFile.Split('\\'); string selectedDirectoryPath = selectedFile.Replace(selectedPathFolders.Last(), "").Replace("\\", "/"); string infoFile = selectedDirectoryPath + "info.dat"; infoPath = directoryPath + "\\info.dat"; if (createFile) { Directory.CreateDirectory(directoryPath); displayName = folders[folders.Length - 2] + " - " + folders.Last().Replace(".dat", ""); string newPath = directoryPath + "/" + displayName + ".dat"; difficultyPath = newPath; try { File.Copy(infoFile, infoPath); File.Copy(selectedFile, newPath); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } } else { displayName = folders.Last().Replace(".dat", ""); } string difficultyJsonData = File.ReadAllText(difficultyPath); string infoJsonData = File.ReadAllText(infoPath); map = JsonConvert.DeserializeObject <Difficulty.Rootobject>(difficultyJsonData); info = JsonConvert.DeserializeObject <Info.Rootobject>(infoJsonData); audioPath = directoryPath + "/" + info._songFilename; if (createFile) { try { File.Copy(selectedDirectoryPath + info._songFilename, audioPath); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } } try { audio = new VorbisWaveReader(audioPath); SongLengthInMilliSeconds = audio.TotalTime.TotalMilliseconds; audio.Close(); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } }