/// <summary>
 ///     Takes 1 wave file, Takes 1 Mp3 File and Combines the two files and resaves on top of the wav.
 /// </summary>
 /// <returns></returns>
 public string CombineAudioSignal()
 {
     var audioPath = _file.Remove(0, _file.IndexOf("Uploads"));
     var server = HttpContext.Current.Server;
     var directoryInfoBeats =
         new DirectoryInfo(new ResourceProvider().GetPath(RapResource.Beats));
     var sortedFiles = from f in directoryInfoBeats.EnumerateFiles() orderby f.CreationTime select f;
     var beats = sortedFiles.Select(item => item.FullName).ToList();
     using (var recordedAudio = new WaveFileReader(server.MapPath("~/" + audioPath)))
     using (var instrumental = new Mp3FileReader(beats[_beatLocation]))
     {
         var inputs = new List<ISampleProvider>
         {
             recordedAudio.ToSampleProvider(),
             instrumental.ToSampleProvider(),
         };
         var mixer = new MixingSampleProvider(inputs);
         //requires work to avoid overriding the file being used
         WaveFileWriter.CreateWaveFile16(
             new ResourceProvider().GetPath(RapResource.RapBattleAudio) + new Guid() + ".wav", mixer);
     }
     return _file;
 }
 private static ISampleProvider ReadMp3File(Mp3FileReader reader, CompositeDisposable disposables)
 {
     disposables.Add(reader);
     return reader.ToSampleProvider();
 }