Example #1
0
 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());
         }
     }
 }
Example #2
0
        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();
            }
        }
Example #3
0
 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();
     }
 }
Example #4
0
 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();
     }
 }
Example #5
0
    /* 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();
        }
    }
Example #6
0
        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();
        }