/// <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(); }