private static void RebuildContactClassifier() { ContactClassifier.Clear(); foreach ( int id in Database.Load(new Contact()).Select(contact => Database.ConvertTo <int>(((Contact)contact).Id))) { using (var spectrumBuilder = new SpectrumBuilder(SpectrumLength, Frequency)) { foreach ( string file in Database.Load(new AudioFile { ContactId = id }) .Select( audioFile => Path.Combine(AudioFolder, Database.ConvertTo <string>(((AudioFile)audioFile).FileName)))) { spectrumBuilder.Add(new WaveFileReader(file)); } ContactClassifier.Add(id, spectrumBuilder.GetData()); } } }
private void button2_Click(object sender, EventArgs e) { Database database = MdiParent1.Database; Dictionary <int, Contact> dictionary = database.Load(new Contact()) .ToDictionary(contact => Database.ConvertTo <int>(((Contact)contact).Id), contact => (Contact)contact); using (var spectrumBuilder = new SpectrumBuilder(MdiParent1.SpectrumLength, MdiParent1.Frequency)) { foreach (string file in recordingPanel1.Files) { using (var waveFileReader = new WaveFileReader(Path.Combine(RecordingPanel.AudioFolder, file))) spectrumBuilder.Add(waveFileReader); } double[] data = spectrumBuilder.GetData(); List <ClientCorrelation> list = MdiParent1.ContactClassifier.Select(character => new ClientCorrelation { Id = character.Key, Value = new CorrelationBuilder(data, character.Value).GetValue() }).ToList(); list.Sort(); var listBoxForm = new ListBoxForm(list.Select(item => dictionary[item.Id]).Cast <object>(), list.Select(item => item.Value)); listBoxForm.ShowDialog(); } }
private void button1_Click(object sender, EventArgs e) { using (var spectrumBuilder = new SpectrumBuilder(MdiParent1.SpectrumLength, MdiParent1.Frequency)) { foreach (string file in recordingPanel1.Files) { using (var waveFileReader = new WaveFileReader(Path.Combine(RecordingPanel.AudioFolder, file))) spectrumBuilder.Add(waveFileReader); } var spectrumForm = new ChartForm(spectrumBuilder.GetData()); spectrumForm.ShowDialog(); } }
private void button1_Click(object sender, EventArgs e) { using (var sb = new SpectrumBuilder(MdiParent1.Length, MdiParent1.Frequency)) { foreach (string file in recordingPanel1.Files) { using (var audioFileReader = new AudioFileReader(file)) sb.Add(audioFileReader); } var spectrumForm = new SpectrumForm(sb.Normalize()); spectrumForm.ShowDialog(); } }
/* END MY SHITTY ADDON */ void Start() { audioSource = GetComponent <AudioSource> (); /* START MY SHITTY ADDON */ spectrumBoy = GameObject.Find("Spectograph").GetComponent <SpectrumBuilder> (); spectrumRealTime = GameObject.Find("Spectograph").GetComponent <RealtimeSpectrumBuilder> (); backgroundThreadCompleted = false; threeDimensionalSpectrumBuild = false; /* END MY SHITTY ADDON */ // Process audio as it plays if (realTimeSamples) { realTimeSpectrum = new float[1024]; realTimeSpectralFluxAnalyzer = new SpectralFluxAnalyzer(); realTimePlotController = GameObject.Find("RealtimePlot").GetComponent <PlotController> (); this.sampleRate = AudioSettings.outputSampleRate; } // Preprocess entire audio file upfront if (preProcessSamples) { preProcessedSpectralFluxAnalyzer = new SpectralFluxAnalyzer(); preProcessedPlotController = GameObject.Find("PreprocessedPlot").GetComponent <PlotController> (); // Need all audio samples. If in stereo, samples will return with left and right channels interweaved // [L,R,L,R,L,R] multiChannelSamples = new float[audioSource.clip.samples * audioSource.clip.channels]; numChannels = audioSource.clip.channels; numTotalSamples = audioSource.clip.samples; clipLength = audioSource.clip.length; // We are not evaluating the audio as it is being played by Unity, so we need the clip's sampling rate this.sampleRate = audioSource.clip.frequency; audioSource.clip.GetData(multiChannelSamples, 0); // Fills mutliChannelSamples[] ! Debug.Log("GetData done"); Thread bgThread = new Thread(this.getFullSpectrumThreaded); Debug.Log("Starting Background Thread"); bgThread.Start(); } }
private void button4_Click(object sender, EventArgs e) { Database database = MdiParent1.Database; Dictionary <int, Contact> dictionary = database.Load(new Contact()) .ToDictionary(record => Database.ConvertTo <int>(((Contact)record).Id), record => (Contact)record); int id1; int id2; using (var spectrumBuilder = new SpectrumBuilder(MdiParent1.SpectrumLength, MdiParent1.Frequency)) { foreach (string file in recordingPanel1.Files) { using (var waveFileReader = new WaveFileReader(Path.Combine(RecordingPanel.AudioFolder, file))) spectrumBuilder.Add(waveFileReader); } List <ClientCorrelation> clientCorrelations = MdiParent1.ContactClassifier.Select(character => new ClientCorrelation { Id = character.Key, Value = new CorrelationBuilder(spectrumBuilder.GetData(), character.Value).GetValue() }).ToList(); clientCorrelations.Sort(); id1 = clientCorrelations[0].Id; } var list = new List <ClientCorrelation>(); foreach (string file in recordingPanel1.Files) { using (var waveFileReader = new WaveFileReader(Path.Combine(RecordingPanel.AudioFolder, file))) { using (var waveBuilder = new WaveBuilder(MdiParent1.Duration, MdiParent1.Frequency)) { waveBuilder.Add(waveFileReader); Complex[] data = waveBuilder.GetData_Complex(true); foreach (var audioFile in MdiParent1.AudioFileClassifier) { int count = data.Length; var input = new fftw_complexarray(data.Zip(audioFile.Value, (x, y) => (x * y)).ToArray()); var output = new fftw_complexarray(count); fftw_plan.dft_1d(count, input, output, fftw_direction.Forward, fftw_flags.Estimate) .Execute(); double value = output.GetData_Complex().Select(x => x.Magnitude).Max(); list.Add(new ClientCorrelation { Id = audioFile.Key, Value = value }); } } } } list.Sort(); id2 = list.First().Id; var contact = (Contact)database.Load(new Contact { Id = id1 }).First(); var accessGrantedForm = new AccessGrantedForm(id1 == id2) { Id = Database.ConvertTo <int>(contact.Id), FirstName = Database.ConvertTo <string>(contact.FirstName), LastName = Database.ConvertTo <string>(contact.LastName), Phone = Database.ConvertTo <string>(contact.Phone), Email = Database.ConvertTo <string>(contact.Email), }; accessGrantedForm.ShowDialog(); }