public ActionResult Get(string name, [FromServices] AppState appState) { if (appState is null || appState.Audio is null) { return(new EmptyResult()); } var audioIO = new AudioInputOutput(); var data = new AudioData( appState.Audio.Settings.SampleRate, appState.Audio.GetOutputArray(ChannelType.Left), appState.Audio.GetOutputArray(ChannelType.Right)); var(success, stream) = audioIO.SaveToMemoryStream(data); if (!success) { return(new EmptyResult()); } // Create a new stream as WaveFileWriter closed memoryStream var outStream = new MemoryStream(stream.ToArray()); var result = new FileStreamResult(outStream, "audio/wave") { FileDownloadName = name + ".wav" }; return(result); }
public async Task AudioInputOutputSaveLoadTest() { var taskProgress = new Progress <double>(); var taskStatus = new Progress <string>(); var audioInputOutput = new AudioInputOutput(); await audioInputOutput.Init(taskProgress); var audioLength = 44100; var inputAudio = new float[audioLength]; for (var i = 0; i < inputAudio.Length; i++) { inputAudio[i] = (float)Math.Sin(2 * Math.PI * i / ((float)audioLength / 5)); } var audioData = new AudioDataMono(inputAudio); for (var index = 0; index < audioData.LengthSamples(); index++) { audioData.SetOutputSample( index, audioData.GetInputSample(index)); } audioInputOutput.SetAudioData(audioData); var testFolder = KnownFolders.MusicLibrary; var audioOutputFile = await testFolder.GetFileAsync("test.wav"); if (audioOutputFile != null) { await audioInputOutput.SaveAudioToFile(audioOutputFile, taskStatus); } }