Example #1
0
        private void microphone_BufferReady(object sender, EventArgs e)
        {
            _page.MessageTextBlock.Text = "";
            _microphone.GetData(_buffer);
            double[] x     = new double[2048];
            int      index = 0;

            for (int i = 0; i < 2048; i += 2)
            {
                x[index] = Convert.ToDouble(BitConverter.ToInt16(_buffer, i));
                index++;
            }

            double frequency = FrequencyUtils.FindFundamentalFrequency(x, _microphone.SampleRate, 60, 2000);

            SoundNote soundNote = new SoundNote();

            soundNote.FindNoteByFrequency(frequency);
            _notesList.Add(soundNote);
            _page.ShowNote(soundNote);
            if (!soundNote.IsOutOfTune)
            {
                if (IsCorrectListOfNotes(_notesList))
                {
                    a = x;
                    double[]  b        = FrequencyUtils.Spectr;
                    SoundNote lastNote = _notesList.Last();
                    AchievedNotes.Add(lastNote);
                    _notesList.Clear();
                    CorrectNoteEvent(_microphone);
                }
            }
        }
Example #2
0
 public void ShowNote(SoundNote soundNote)
 {
     iter++;
     NoteTextBlock.Foreground = soundNote.IsOutOfTune
         ? new SolidColorBrush(Colors.Red)
         : new SolidColorBrush(Colors.Green);
     NoteTextBlock.Text = soundNote.Note + soundNote.Octave;
 }
Example #3
0
        private VocalRange[] GetNeighboursOfNote(SoundNote soundNote, bool isFindingLowest)
        {
            VocalRange[] arrayOfRanges = new VocalRange[2];
            int          distance;

            if (isFindingLowest)
            {
                distance = 100;
                for (int i = 0; i < _listOfAllRanges.Count; i++)
                {
                    SoundNote tempNote     = new SoundNote(_listOfAllRanges[i].LowestNote);
                    int       tempdistance = SoundNote.GetDistanceBetweenNotes(soundNote, tempNote);
                    if (tempdistance < distance && soundNote.CompareTo(tempNote) == 1)
                    {
                        distance         = tempdistance;
                        arrayOfRanges[0] = _listOfAllRanges[i];
                    }
                }
                distance = 100;
                for (int i = 0; i < _listOfAllRanges.Count; i++)
                {
                    SoundNote tempNote     = new SoundNote(_listOfAllRanges[i].LowestNote);
                    int       tempdistance = SoundNote.GetDistanceBetweenNotes(soundNote, tempNote);
                    if (tempdistance < distance && soundNote.CompareTo(tempNote) == -1)
                    {
                        distance         = tempdistance;
                        arrayOfRanges[1] = _listOfAllRanges[i];
                    }
                }
            }
            else
            {
                distance = 100;
                for (int i = 0; i < _listOfAllRanges.Count; i++)
                {
                    SoundNote tempNote     = new SoundNote(_listOfAllRanges[i].HighestNote);
                    int       tempdistance = SoundNote.GetDistanceBetweenNotes(soundNote, tempNote);
                    if (tempdistance < distance && soundNote.CompareTo(tempNote) == 1)
                    {
                        distance         = tempdistance;
                        arrayOfRanges[0] = _listOfAllRanges[i];
                    }
                }
                distance = 100;
                for (int i = 0; i < _listOfAllRanges.Count; i++)
                {
                    SoundNote tempNote     = new SoundNote(_listOfAllRanges[i].HighestNote);
                    int       tempdistance = SoundNote.GetDistanceBetweenNotes(soundNote, tempNote);
                    if (tempdistance < distance && soundNote.CompareTo(tempNote) == -1)
                    {
                        distance         = tempdistance;
                        arrayOfRanges[1] = _listOfAllRanges[i];
                    }
                }
            }

            return(arrayOfRanges);
        }
Example #4
0
 public void FindHighestAndLowestNote()
 {
     HighestNote = AchievedNotes.Max();
     LowestNote  = AchievedNotes.Min();
 }