public static void ExportOgg(GpkExport export, string oggfile) { if (export.Payload == null) { logger.Info("No data. The file cannot be exported to ogg."); return; } if (!(export.Payload is Soundwave)) { logger.Info("Wrong payload data. The file cannot be exported to ogg."); return; } Soundwave wave = (Soundwave)export.Payload; if (wave.oggdata == null) { logger.Info("Empty Oggdata. The file cannot be exported to ogg."); return; } StreamWriter writer = new StreamWriter(File.OpenWrite(oggfile)); writer.BaseStream.Write(wave.oggdata, 0, wave.oggdata.Length); writer.Close(); writer.Dispose(); logger.Info(String.Format("Data was saved to {0}!", Path.GetFileName(oggfile))); }
private void EquipBell(int bellIndex) { if (loadedBells == null) { loadedBells = new Dictionary <int, Soundwave>(); } if (loadedBells.ContainsKey(bellIndex)) { equippedBell = loadedBells[bellIndex]; } else { GameObject soundWave = Instantiate(bells[bellIndex].bellSoundwave); equippedBell = soundWave.GetComponent <Soundwave>(); loadedBells.Add(bellIndex, equippedBell); } equippedBell.ResetSoundwave(transform.position); hasEquippedBell = true; }
private void btnOggPreview_Click(object sender, EventArgs e) { try { if (selectedExport != null && selectedExport.Payload is Soundwave && waveOut.PlaybackState == PlaybackState.Stopped) { Soundwave wave = (Soundwave)selectedExport.Payload; waveReader = new VorbisWaveReader(new MemoryStream(wave.oggdata)); waveOut.Init(waveReader); waveOut.Play(); btnOggPreview.Text = "Stop Preview"; } else if (waveOut != null && waveOut.PlaybackState == PlaybackState.Playing) { ResetOggPreview(); } } catch (Exception ex) { logger.Info("Playback Error. " + ex); } }
public static void ImportOgg(GpkExport export, string oggfile) { Soundwave wave = new Soundwave(); wave.oggfile = oggfile; if (oggfile != "fake") { wave.oggdata = File.ReadAllBytes(oggfile); } else { wave.oggdata = new byte[1]; } export.Payload = wave; //Refill data buffer with normal soundwave export.Data = new byte[wave.GetSize()]; BinaryWriter writer = new BinaryWriter(new MemoryStream(export.Data)); wave.WriteData(writer, null, export); writer.Close(); writer.Dispose(); export.GetDataSize(); if (oggfile == "fake") { logger.Info(String.Format("Fake soundfile was imported to {0}!", export.UID)); return; } //manipulate the sound duration VorbisReader vorbis = null; vorbis = new VorbisReader(new MemoryStream(wave.oggdata), true); /* * ObjectName: Duration Type: FloatProperty Value: 0,4694785 * ObjectName: NumChannels Type: IntProperty Value: 1 * ObjectName: SampleRate Type: IntProperty Value: 22050 * ObjectName: SampleDataSize Type: IntProperty Value: 20704 */ foreach (IProperty prop in export.Properties) { if (prop is GpkFloatProperty) { GpkFloatProperty floatProperty = (GpkFloatProperty)prop; if (floatProperty.name == "Duration") { floatProperty.value = (float)vorbis.TotalTime.TotalSeconds; } } else if (prop is GpkIntProperty) { GpkIntProperty intProperty = (GpkIntProperty)prop; if (intProperty.name == "NumChannels") { intProperty.value = vorbis.Channels; } if (intProperty.name == "SampleRate") { intProperty.value = vorbis.SampleRate; } if (intProperty.name == "SampleDataSize") { intProperty.value = wave.oggdata.Length; } } } logger.Info(String.Format("Soundfile was imported to {0}!", export.UID)); }