private void ExportFilter(object sender, EventArgs e) { SaveFileDialog SaveWave = new SaveFileDialog(); if (Response.Length < 4) { SaveWave.Filter = " Wave Audio (*.wav) |*.wav"; } else { SaveWave.Filter = "Extended Wave Audio (*.wavex) |*.wavex"; } if (SaveWave.ShowDialog() == DialogResult.OK) { NAudio.Wave.WaveFileWriter Writer = new NAudio.Wave.WaveFileWriter(SaveWave.FileName, new NAudio.Wave.WaveFormat(44100, 24, Response.Length)); for (int j = 0; j < Response[0].Length; j++) { for (int c = 0; c < Response.Length; c++) { if (j > Response[c].Length - 1) { Writer.WriteSample(0); } else { Writer.WriteSample((float)Response[c][j]); } } } Writer.Close(); Writer.Dispose(); } }
private void Export_Signal_Click(object sender, EventArgs e) { SaveFileDialog SaveWave = new SaveFileDialog(); SaveWave.Filter = " Wave Audio (*.wav) |*.wav"; if (SaveWave.ShowDialog() == DialogResult.OK) { NAudio.Wave.WaveFileWriter Writer = new NAudio.Wave.WaveFileWriter(SaveWave.FileName, new NAudio.Wave.WaveFormat(44100, 24, result_signals.Length)); for (int j = 0; j < result_signals[0].Length; j++) { for (int c = 0; c < result_signals.Length; c++) { if (j > result_signals[0].Length - 1) { Writer.WriteSample(0); } else { Writer.WriteSample((float)result_signals[c][j]); } } } Writer.Close(); Writer.Dispose(); } }
private void saveVRSpectraToolStripMenuItem_Click(object sender, EventArgs e) { SaveFileDialog SaveWave = new SaveFileDialog(); SaveWave.Filter = " Pachyderm VR (*.pacvr) |*.pacvr"; if (SaveWave.ShowDialog() != DialogResult.OK) return; System.IO.StreamWriter sw = new System.IO.StreamWriter(System.IO.File.Open(SaveWave.FileName, System.IO.FileMode.Create)); //A new standard... //1. Write pachyderm version sw.Write(PachydermAc_PlugIn.Instance.Version); double[] dresponse = Pach_SP.Expand_Response(Direct_Data, IS_Data, Receiver, (double)CO_TIME.Value / 1000, SampleRate, 0, new List<int>{0}, 24);//RecID, SrcIDs, float[] Response = new float[dresponse.Length]; for (int i = 0; i < dresponse.Length; i++) { Response[i] = (float)dresponse[i]; } NAudio.Wave.WaveFileWriter Writer = new NAudio.Wave.WaveFileWriter(SaveWave.FileName, new NAudio.Wave.WaveFormat(44100, 24, 1));//, 44100, 1, 16 for (int j = 0; j < Response.Length; j++) { Writer.WriteSample(Response[j]); } Writer.Close(); Writer.Dispose(); }
private void RenderBtn_Click(object sender, System.EventArgs e) { if (Response == null || Response.Length == 0) { Rhino.RhinoApp.WriteLine("No impulse response found to render..."); return; } int SamplesPerSec; double[] SignalBuffer; OpenWaveFile(out SamplesPerSec, out SignalBuffer); float maxvalue = 0; //Normalize input signal... for (int j = 0; j < SignalBuffer.Length; j++) { maxvalue = (float)Math.Max(maxvalue, Math.Abs(SignalBuffer[j])); } for (int j = 0; j < SignalBuffer.Length; j++) { SignalBuffer[j] /= maxvalue; } //Convert pressure response to a 24-bit dynamic range: //double mod24 = Math.Pow(10, -50 / 10); //for (int i = 0; i < Response.Length; i++) for(int j = 0; j < Response[i].Length; j++) Response[i][j] *= mod24; float[][] NewSignal = new float[(int)Response.Length][]; for (int i = 0; i < Response.Length; i++) { NewSignal[i] = Pach_SP.FFT_Convolution(SignalBuffer, Response[i], 0); for (int j = 0; j < NewSignal[i].Length; j++) { NewSignal[i][j] *= 1E-5f; } } SrcRendered = new int[SourceList.CheckedIndices.Count]; for (int j = 0; j < SourceList.CheckedIndices.Count; j++) { SrcRendered[j] = SourceList.CheckedIndices[j]; } RecRendered = int.Parse(Receiver_Choice.Text); SFreq_Rendered = SamplesPerSec; SaveFileDialog SaveWave = new SaveFileDialog(); if (NewSignal.Length < 4) { SaveWave.Filter = " Wave Audio (*.wav) |*.wav"; } else { SaveWave.Filter = "Extended Wave Audio (*.wavex) |*.wavex"; } if (SaveWave.ShowDialog() == DialogResult.OK) { if (Response == null || Response.Length == 0) { Rhino.RhinoApp.WriteLine("No impulse response found to render..."); return; } NAudio.Wave.WaveFileWriter Writer = new NAudio.Wave.WaveFileWriter(SaveWave.FileName, new NAudio.Wave.WaveFormat(SamplesPerSec, 24, NewSignal.Length)); for (int j = 0; j < NewSignal[0].Length; j++) { for (int i = 0; i < Channel_View.Items.Count; i++) { Writer.WriteSample(NewSignal[i][j]); } } Writer.Close(); Writer.Dispose(); System.Media.SoundPlayer Player = new System.Media.SoundPlayer(SaveWave.FileName); Player.Play(); } }
public void Save_IR(List<int> SrcIDs, int RecID, string Path) { double[] dresponse = Pach_SP.Expand_Response(Direct_Data, IS_Data, Receiver, (double)CO_TIME.Value / 1000, SampleRate, RecID, SrcIDs, 24); float[] Response = new float[dresponse.Length]; for (int i = 0; i < dresponse.Length; i++) { Response[i] = (float)dresponse[i]; } NAudio.Wave.WaveFileWriter Writer = new NAudio.Wave.WaveFileWriter(Path, new NAudio.Wave.WaveFormat(44100, 24, 1)); for (int j = 0; j < Response.Length; j++) { Writer.WriteSample(Response[j]); } Writer.Close(); Writer.Dispose(); }
private void RenderBtn_Click(object sender, System.EventArgs e) { if ((SelectedSources().Count < 1) || ((string)Receiver_Choice.Text == "No Results Calculated...")) { Rhino.RhinoApp.WriteLine("Select Source and Receiver objects to render"); return; } double[] SignalBuffer; int SamplesPerSec; this.OpenWaveFile(out SamplesPerSec, out SignalBuffer); if (!IsRendered()) { Response = Pach_SP.Expand_Response(Direct_Data, IS_Data, Receiver, (double)(CO_TIME.Value / 1000), SamplesPerSec, int.Parse(Receiver_Choice.Text), SelectedSources(), 24); SrcRendered = new int[SourceList.CheckedIndices.Count]; for(int i = 0 ; i < SourceList.CheckedIndices.Count; i++) { SrcRendered[i] = SourceList.CheckedIndices[i]; } RecRendered = int.Parse(Receiver_Choice.Text); } float[] NewSignal = Pach_SP.FFT_Convolution(SignalBuffer, Response); SaveFileDialog SaveWave = new SaveFileDialog(); SaveWave.Filter = " Wave Audio (*.wav) |*.wav"; if (SaveWave.ShowDialog() == DialogResult.OK) { NAudio.Wave.WaveFileWriter Writer = new NAudio.Wave.WaveFileWriter(SaveWave.FileName, new NAudio.Wave.WaveFormat(SamplesPerSec, 24, 1)); for (int j = 0; j < NewSignal.Length; j++) { Writer.WriteSample(NewSignal[j]); } Writer.Close(); Writer.Dispose(); System.Media.SoundPlayer Player = new System.Media.SoundPlayer(SaveWave.FileName); Player.Play(); } }
private void Export_Signal_Click(object sender, EventArgs e) { SaveFileDialog SaveWave = new SaveFileDialog(); SaveWave.Filter = " Wave Audio (*.wav) |*.wav"; if (SaveWave.ShowDialog() == DialogResult.OK) { NAudio.Wave.WaveFileWriter Writer = new NAudio.Wave.WaveFileWriter(SaveWave.FileName, new NAudio.Wave.WaveFormat(44100, 24, result_signals.Length)); for (int j = 0; j < result_signals[0].Length; j++) { for (int c = 0; c < result_signals.Length; c++) if (j > result_signals[0].Length - 1) Writer.WriteSample(0); else Writer.WriteSample((float)result_signals[c][j]); } Writer.Close(); Writer.Dispose(); } }
private void ExportFilter(object sender, EventArgs e) { SaveFileDialog SaveWave = new SaveFileDialog(); if (Response.Length < 4) { SaveWave.Filter = " Wave Audio (*.wav) |*.wav"; } else { SaveWave.Filter = "Extended Wave Audio (*.wavex) |*.wavex"; } if (SaveWave.ShowDialog() == DialogResult.OK) { NAudio.Wave.WaveFileWriter Writer = new NAudio.Wave.WaveFileWriter(SaveWave.FileName, new NAudio.Wave.WaveFormat(44100, 24, Response.Length)); for (int j = 0; j < Response[0].Length; j++) { for (int c = 0; c < Response.Length; c++) if (j > Response[c].Length - 1) Writer.WriteSample(0); else Writer.WriteSample((float)Response[c][j]); } Writer.Close(); Writer.Dispose(); } }
private void RenderBtn_Click(object sender, System.EventArgs e) { if (Response == null || Response.Length == 0) { Rhino.RhinoApp.WriteLine("No impulse response found to render..."); return; } int SamplesPerSec; double[] SignalBuffer; OpenWaveFile(out SamplesPerSec, out SignalBuffer); float maxvalue = 0; //Normalize input signal... for (int j = 0; j < SignalBuffer.Length; j++) maxvalue = (float)Math.Max(maxvalue, Math.Abs(SignalBuffer[j])); for (int j = 0; j < SignalBuffer.Length; j++) SignalBuffer[j] /= maxvalue; //Convert pressure response to a 24-bit dynamic range: //double mod24 = Math.Pow(10, -50 / 10); //for (int i = 0; i < Response.Length; i++) for(int j = 0; j < Response[i].Length; j++) Response[i][j] *= mod24; float[][] NewSignal = new float[(int)Response.Length][]; for (int i = 0; i < Response.Length; i++) { NewSignal[i] = Pach_SP.FFT_Convolution(SignalBuffer, Response[i], 0); for (int j = 0; j < NewSignal[i].Length; j++) NewSignal[i][j] *= 1E-5f; } SrcRendered = new int[SourceList.CheckedIndices.Count]; for (int j = 0; j < SourceList.CheckedIndices.Count; j++) { SrcRendered[j] = SourceList.CheckedIndices[j]; } RecRendered = int.Parse(Receiver_Choice.Text); SFreq_Rendered = SamplesPerSec; SaveFileDialog SaveWave = new SaveFileDialog(); if (NewSignal.Length < 4) { SaveWave.Filter = " Wave Audio (*.wav) |*.wav"; } else { SaveWave.Filter = "Extended Wave Audio (*.wavex) |*.wavex"; } if (SaveWave.ShowDialog() == DialogResult.OK) { if (Response == null || Response.Length == 0) { Rhino.RhinoApp.WriteLine("No impulse response found to render..."); return; } NAudio.Wave.WaveFileWriter Writer = new NAudio.Wave.WaveFileWriter(SaveWave.FileName, new NAudio.Wave.WaveFormat(SamplesPerSec, 24, NewSignal.Length)); for (int j = 0; j < NewSignal[0].Length; j++) { for (int i = 0; i < Channel_View.Items.Count; i++) Writer.WriteSample(NewSignal[i][j]); } Writer.Close(); Writer.Dispose(); System.Media.SoundPlayer Player = new System.Media.SoundPlayer(SaveWave.FileName); Player.Play(); } }