Пример #1
0
 void OnDisable()
 {
     if (s_gtaAudioFiles != null)
     {
         s_gtaAudioFiles.Dispose();
         s_gtaAudioFiles = null;
     }
 }
Пример #2
0
        public static void InitFromLoader()
        {
            s_gtaAudioFiles = GTAAudio.OpenRead(Path.Combine(Utilities.Config.GamePath, "audio"));

            if (Instance.playStartupSound)
            {
                s_startupAudioSource = PlayStream("Beats", 1);
                if (s_startupAudioSource != null)
                {
                    s_startupAudioSource.time = Instance.startupSoundTimeOffset;
                }
            }
        }
Пример #3
0
        public static void InitFromLoader()
        {
            s_gtaAudioFiles = GTAAudio.OpenRead(Path.Combine(Utilities.Config.GamePath, "audio"));

            s_sfxGENRL137Timings = LoadSfxBankTimings(Resources.Load <TextAsset>("Data/SFX_GENRL_137").text);

            if (Instance.playStartupSound)
            {
                s_startupAudioSource = PlayStream("Beats", 1);
                if (s_startupAudioSource != null)
                {
                    s_startupAudioSource.time = Instance.startupSoundTimeOffset;
                }
            }

            //	s_sfxGENRLClip = CreateAudioClipFromSfx ("GENRL", 136, 0);
        }
 /// <summary>
 /// Dispose GTA audio files
 /// </summary>
 private void DisposeGTAAudioFiles()
 {
     if (gtaAudioFiles != null)
     {
         gtaAudioFiles.Dispose();
         gtaAudioFiles = null;
     }
     sfxAudioClips.Clear();
     streamsAudioClips.Clear();
     foreach (AudioStream audio_stream in streamsAudioStreams.Values)
     {
         if (audio_stream != null)
         {
             audio_stream.Dispose();
         }
     }
     streamsAudioStreams.Clear();
     StatusText = "Select a GTA audio files directory";
 }
Пример #5
0
 /// <summary>
 /// Main entry point
 /// </summary>
 /// <param name="args">Command line arguments</param>
 static void Main(string[] args)
 {
     try
     {
         string path = null;
         if (args.Length > 0)
         {
             path = args[0];
         }
         else
         {
             Console.Write("Please specify a path to dump the audio files from (press return to exit): ");
             path = Console.ReadLine();
         }
         if (path != null)
         {
             if (path.Trim().Length > 0)
             {
                 string sfx_directory = Path.Combine(Environment.CurrentDirectory, "sfx");
                 byte[] buffer        = new byte[4096];
                 if (!(Directory.Exists(sfx_directory)))
                 {
                     Directory.CreateDirectory(sfx_directory);
                 }
                 using (GTAAudioFiles gta_audio_files = GTAAudio.OpenRead(path))
                 {
                     if (gta_audio_files != null)
                     {
                         GTAAudioSFXFile[] sfx_audio_files = gta_audio_files.SFXAudioFiles;
                         foreach (GTAAudioSFXFile sfx_audio_file in sfx_audio_files)
                         {
                             if (sfx_audio_file != null)
                             {
                                 string sfx_sfx_directory = Path.Combine(sfx_directory, sfx_audio_file.Name);
                                 try
                                 {
                                     if (!(Directory.Exists(sfx_sfx_directory)))
                                     {
                                         Directory.CreateDirectory(sfx_sfx_directory);
                                     }
                                     for (int i = 0, j; i < sfx_audio_file.NumBanks; i++)
                                     {
                                         try
                                         {
                                             GTAAudioBankData bank_data          = sfx_audio_file.GetBankData((uint)i);
                                             string           sfx_bank_directory = Path.Combine(sfx_sfx_directory, i.ToString());
                                             if (!(Directory.Exists(sfx_bank_directory)))
                                             {
                                                 Directory.CreateDirectory(sfx_bank_directory);
                                             }
                                             for (j = 0; j < bank_data.NumAudioClips; j++)
                                             {
                                                 using (Stream audio_stream = sfx_audio_file.Open((uint)i, (uint)j))
                                                 {
                                                     if (audio_stream is GTAAudioStream)
                                                     {
                                                         GTAAudioStream gta_audio_stream = (GTAAudioStream)audio_stream;
                                                         string         audio_file_path  = Path.Combine(sfx_bank_directory, sfx_audio_file.Name + "." + i + "." + j + ".wav");
                                                         if (File.Exists(audio_file_path))
                                                         {
                                                             File.Delete(audio_file_path);
                                                         }
                                                         using (FileStream file_stream = File.Open(audio_file_path, FileMode.Create))
                                                         {
                                                             using (BinaryWriter writer = new BinaryWriter(file_stream))
                                                             {
                                                                 int  len;
                                                                 long audio_stream_length = audio_stream.Length;
                                                                 writer.Write(Encoding.ASCII.GetBytes("RIFF"));
                                                                 writer.Write(0);
                                                                 writer.Write(Encoding.ASCII.GetBytes("WAVEfmt "));
                                                                 writer.Write(16);
                                                                 writer.Write((short)1);
                                                                 writer.Write((short)1);
                                                                 writer.Write((int)(gta_audio_stream.SampleRate));
                                                                 writer.Write(gta_audio_stream.SampleRate * 2);
                                                                 writer.Write((short)2);
                                                                 writer.Write((short)16);
                                                                 writer.Write(Encoding.ASCII.GetBytes("data"));
                                                                 writer.Write((int)audio_stream_length);
                                                                 while ((len = Math.Min((int)(audio_stream_length - audio_stream.Position), buffer.Length)) > 0)
                                                                 {
                                                                     if (audio_stream.Read(buffer, 0, len) == len)
                                                                     {
                                                                         file_stream.Write(buffer, 0, len);
                                                                     }
                                                                     else
                                                                     {
                                                                         break;
                                                                     }
                                                                 }
                                                                 file_stream.Seek(4L, SeekOrigin.Begin);
                                                                 writer.Write((int)(file_stream.Length - 8));
                                                             }
                                                         }
                                                     }
                                                 }
                                             }
                                         }
                                         catch (Exception e)
                                         {
                                             Console.Error.WriteLine(e);
                                         }
                                     }
                                 }
                                 catch (Exception e)
                                 {
                                     Console.Error.WriteLine(e);
                                 }
                             }
                         }
                     }
                     else
                     {
                         Console.Error.WriteLine("Can't open audio directory \"" + path + "\".");
                         Environment.ExitCode = 3;
                     }
                 }
             }
             else
             {
                 Environment.ExitCode = 2;
             }
         }
         else
         {
             Environment.ExitCode = 1;
         }
     }
     catch (Exception e)
     {
         Console.Error.WriteLine(e);
         Environment.ExitCode = -1;
     }
 }
Пример #6
0
 /// <summary>
 /// Main entry point
 /// </summary>
 /// <param name="args">Command line arguments</param>
 static void Main(string[] args)
 {
     try
     {
         string path = null;
         if (args.Length > 0)
         {
             path = args[0];
         }
         else
         {
             Console.Write("Please specify a path to dump the audio files from (press return to exit): ");
             path = Console.ReadLine();
         }
         if (path != null)
         {
             if (path.Trim().Length > 0)
             {
                 string streams_directory = Path.Combine(Environment.CurrentDirectory, "streams");
                 byte[] buffer            = new byte[4096];
                 if (!(Directory.Exists(streams_directory)))
                 {
                     Directory.CreateDirectory(streams_directory);
                 }
                 using (GTAAudioFiles gta_audio_files = GTAAudio.OpenRead(path))
                 {
                     if (gta_audio_files != null)
                     {
                         GTAAudioStreamsFile[] streams_audio_files = gta_audio_files.StreamsAudioFiles;
                         foreach (GTAAudioStreamsFile streams_audio_file in streams_audio_files)
                         {
                             if (streams_audio_file != null)
                             {
                                 string streams_streams_directory = Path.Combine(streams_directory, streams_audio_file.Name);
                                 try
                                 {
                                     if (!(Directory.Exists(streams_streams_directory)))
                                     {
                                         Directory.CreateDirectory(streams_streams_directory);
                                     }
                                     for (int i = 0; i < streams_audio_file.NumBanks; i++)
                                     {
                                         try
                                         {
                                             using (Stream audio_stream = streams_audio_file.Open((uint)i))
                                             {
                                                 if (audio_stream != null)
                                                 {
                                                     string audio_file_path = Path.Combine(streams_streams_directory, streams_audio_file.Name + "." + i + ".ogg");
                                                     if (File.Exists(audio_file_path))
                                                     {
                                                         File.Delete(audio_file_path);
                                                     }
                                                     using (FileStream file_stream = File.Open(audio_file_path, FileMode.Create))
                                                     {
                                                         int  len;
                                                         long audio_stream_length = audio_stream.Length;
                                                         while ((len = Math.Min((int)(audio_stream_length - audio_stream.Position), buffer.Length)) > 0)
                                                         {
                                                             if (audio_stream.Read(buffer, 0, len) == len)
                                                             {
                                                                 file_stream.Write(buffer, 0, len);
                                                             }
                                                             else
                                                             {
                                                                 break;
                                                             }
                                                         }
                                                     }
                                                 }
                                             }
                                         }
                                         catch (Exception e)
                                         {
                                             Console.Error.WriteLine(e);
                                         }
                                     }
                                 }
                                 catch (Exception e)
                                 {
                                     Console.Error.WriteLine(e);
                                 }
                             }
                         }
                     }
                     else
                     {
                         Console.Error.WriteLine("Can't open audio directory \"" + path + "\".");
                         Environment.ExitCode = 3;
                     }
                 }
             }
             else
             {
                 Environment.ExitCode = 2;
             }
         }
         else
         {
             Environment.ExitCode = 1;
         }
     }
     catch (Exception e)
     {
         Console.Error.WriteLine(e);
         Environment.ExitCode = -1;
     }
 }
Пример #7
0
 public void ReadFileTest()
 {
     using (GTAAudioFiles files = GTAAudio.OpenRead(Config.AudioFilesDir))
     {
         Assert.IsNotNull(files, "Files can't be opened. Please configure \"" + configPath + "\".");
         GTAAudioSFXFile[] sfx_audio_files = files.SFXAudioFiles;
         Assert.IsTrue(sfx_audio_files.Length == validSFXFiles.Length, "Missing SFX file entries. " + files.SFXAudioFiles.Length + " files found, not " + validSFXFiles.Length);
         for (int i = 0, j, k; i < sfx_audio_files.Length; i++)
         {
             GTAAudioSFXFile sfx_audio_file = sfx_audio_files[i];
             if (sfx_audio_file != null)
             {
                 Assert.IsTrue(sfx_audio_file.Name == validSFXFiles[i], "SFX file \"" + sfx_audio_file.Name + "\" is not \"" + validSFXFiles[i] + "\" at index " + i);
                 Debug.WriteLine(sfx_audio_file.Name + ":");
                 Debug.WriteLine("\tNumber of banks: " + sfx_audio_file.NumBanks);
                 for (j = 0; j < sfx_audio_file.NumBanks; j++)
                 {
                     GTAAudioBankData bank_data = sfx_audio_file.GetBankData((uint)j);
                     Debug.WriteLine("\t\t" + sfx_audio_file.Name + " bank " + j + ":");
                     Debug.WriteLine("\t\t\tLength: " + bank_data.Length);
                     Debug.WriteLine("\t\t\tOffset: " + bank_data.Offset);
                     Debug.WriteLine("\t\t\tNumber of audio clips: " + bank_data.NumAudioClips);
                     for (k = 0; k < bank_data.NumAudioClips; k++)
                     {
                         GTAAudioAudioClipData audio_clip_data = bank_data.GetAudioClipData((uint)k);
                         Debug.WriteLine("\t\t\t" + sfx_audio_file.Name + " bank " + j + " audio " + k + ":");
                         Debug.WriteLine("\t\t\t\tSample rate: " + audio_clip_data.SampleRate);
                         Debug.WriteLine("\t\t\t\tSound buffer offset: " + audio_clip_data.SoundBufferOffset);
                         Debug.WriteLine("\t\t\t\tLoop offset: " + audio_clip_data.LoopOffset);
                         Debug.WriteLine("\t\t\t\tSound headroom: " + audio_clip_data.SoundHeadroom);
                         Debug.WriteLine("\t\t\t\tLength: " + audio_clip_data.Length);
                     }
                 }
             }
         }
         GTAAudioStreamsFile[] streams_audio_files = files.StreamsAudioFiles;
         Assert.IsTrue(streams_audio_files.Length == validStreamsFiles.Length, "Missing streams file entries. " + files.SFXAudioFiles.Length + " files found, not " + validSFXFiles.Length);
         for (int i = 0, j; i < streams_audio_files.Length; i++)
         {
             GTAAudioStreamsFile streams_audio_file = streams_audio_files[i];
             if (streams_audio_file != null)
             {
                 Assert.IsTrue(streams_audio_file.Name == validStreamsFiles[i], "Streams file \"" + streams_audio_file.Name + "\" is not \"" + validStreamsFiles[i] + "\" at index " + i);
                 Debug.WriteLine(streams_audio_file.Name + ":");
                 Debug.WriteLine("\tNumber of banks: " + streams_audio_file.NumBanks);
                 for (j = 0; j < streams_audio_file.NumBanks; j++)
                 {
                     GTAAudioBankData bank_data = streams_audio_file.GetBankData((uint)j);
                     Debug.WriteLine("\t\t" + streams_audio_file.Name + " bank " + j + ":");
                     Debug.WriteLine("\t\t\tLength: " + bank_data.Length);
                     Debug.WriteLine("\t\t\tOffset: " + bank_data.Offset);
                 }
                 for (j = 0; j < streams_audio_file.NumBeats; j++)
                 {
                     GTAAudioBeatData beat_data = streams_audio_file.GetBeatData((uint)j);
                     Debug.WriteLine("\t\t\t" + streams_audio_file.Name + " beat " + j + ":");
                     Debug.WriteLine("\t\t\t\tControl: " + beat_data.Control);
                     Debug.WriteLine("\t\t\t\tTiming: " + beat_data.Timing);
                 }
             }
         }
     }
 }