コード例 #1
0
ファイル: GUI.cs プロジェクト: highattack30/GPK_RePack
        private void ResetOggPreview()
        {
            if (waveOut != null && waveOut.PlaybackState == PlaybackState.Playing)
            {
                waveOut.Stop();
                waveReader.Close();
                waveReader.Dispose();
            }

            waveReader         = null;
            btnOggPreview.Text = "Ogg Preview";
        }
コード例 #2
0
        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());
        }
コード例 #3
0
        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());
            }
        }