void UpdateDisplay() { // Show the detector results if (detector.Pitch > 1.0f) { if (detector.Pitch >= 1000.0f) { detectorPitch.text = (detector.Pitch / 1000.0f).ToString("F4"); detectorUnits.text = "kHz"; } else { detectorPitch.text = detector.Pitch.ToString("F3"); detectorUnits.text = "Hz"; } detectorMidiNote.text = PitchDsp.GetNoteName(detector.MidiNote, true, true); detectorMidiCents.text = detector.MidiCents.ToString(); //var diffPercent = 100.0 - (100.0f * this.GeneratorPitch / curPitchRecord.Pitch); //if (diffPercent >= 0.0f) // detectorError.text = "+" + diffPercent.ToString("F3"); //else //detectorError.text = diffPercent.ToString("F3"); } else { detectorPitch.text = "--"; detectorUnits.text = "Hz"; detectorError.text = "--"; detectorMidiNote.text = "--"; detectorMidiCents.text = "--"; } }
//Before i looked in to using MIDI , i had attempted to create methods that as it turns out, worked the same way. //private void Note_start() //{ // var curPitchRecord = m_pitchTracker.CurrentPitchRecord; // float freq = curPitchRecord.Pitch; // StartDuration = this.TimeInterval; // CurrentFrequency = ((int)freq); //} //private void Note_End() //{ // EndDuration = this.TimeInterval; // if (Recording) // { // RecordString = TheRecorder.AddNextNote(CurrentFrequency, (int)(EndDuration - StartDuration)); // } //} private void UpdateDisplay() { // Show the detector results var curPitchRecord = m_pitchTracker.CurrentPitchRecord; // places the current pitch in to the curpitchrecord variable var curNote = PitchDsp.GetNoteName(curPitchRecord.MidiNote, true, true); if (curPitchRecord.Pitch > 1.0f) // if a significant value is given { if (curPitchRecord.Pitch >= 1000.0f) // for the purpose of converting the units from khz to hz { pFrequencyValueLbl.Text = (curPitchRecord.Pitch / 1000.0f).ToString("F4"); // converts given value in to khz pFrequencyUnitsLbl.Text = "kHz"; // sho9ws that value is in khz } else //if pitch !>= 1000, then it is in hz { pFrequencyValueLbl.Text = curPitchRecord.Pitch.ToString("F3"); //no need to convert to khz pFrequencyUnitsLbl.Text = "Hz"; // shows that value is in hz } noteValueLbl.Text = curNote; noteList.Add(curNote); nListView.SubItems.Add(curNote); } }
/// <summary> /// Setup /// </summary> private void Setup() { if (m_sampleRate < 1.0f) return; m_dsp = new PitchDsp(m_sampleRate, kMinFreq, kMaxFreq, m_detectLevelThreshold); m_iirFilterLoLo = new IIRFilter(); m_iirFilterLoLo.Proto = IIRFilter.ProtoType.Butterworth; m_iirFilterLoLo.Type = IIRFilter.FilterType.HP; m_iirFilterLoLo.Order = 5; m_iirFilterLoLo.FreqLow = 45.0f; m_iirFilterLoLo.SampleRate = (float)m_sampleRate; m_iirFilterLoHi = new IIRFilter(); m_iirFilterLoHi.Proto = IIRFilter.ProtoType.Butterworth; m_iirFilterLoHi.Type = IIRFilter.FilterType.LP; m_iirFilterLoHi.Order = 5; m_iirFilterLoHi.FreqHigh = 280.0f; m_iirFilterLoHi.SampleRate = (float)m_sampleRate; m_iirFilterHiLo = new IIRFilter(); m_iirFilterHiLo.Proto = IIRFilter.ProtoType.Butterworth; m_iirFilterHiLo.Type = IIRFilter.FilterType.HP; m_iirFilterHiLo.Order = 5; m_iirFilterHiLo.FreqLow = 45.0f; m_iirFilterHiLo.SampleRate = (float)m_sampleRate; m_iirFilterHiHi = new IIRFilter(); m_iirFilterHiHi.Proto = IIRFilter.ProtoType.Butterworth; m_iirFilterHiHi.Type = IIRFilter.FilterType.LP; m_iirFilterHiHi.Order = 5; m_iirFilterHiHi.FreqHigh = 1500.0f; m_iirFilterHiHi.SampleRate = (float)m_sampleRate; m_detectOverlapSamples = (int)(kDetectOverlapSec * m_sampleRate); m_maxOverlapDiff = kMaxOctaveSecRate * kDetectOverlapSec; m_pitchBufSize = (int)(((1.0f / (float)kMinFreq) * 2.0f + ((kAvgCount - 1) * kAvgOffset)) * m_sampleRate) + 16; m_pitchBufLo = new float[m_pitchBufSize + m_detectOverlapSamples]; m_pitchBufHi = new float[m_pitchBufSize + m_detectOverlapSamples]; m_samplesPerPitchBlock = (int)Math.Round(m_sampleRate / m_pitchRecordsPerSecond); m_circularBufferLo = new CircularBuffer<float>((int)(kCircularBufSaveTime * m_sampleRate + 0.5f) + 10000); m_circularBufferHi = new CircularBuffer<float>((int)(kCircularBufSaveTime * m_sampleRate + 0.5f) + 10000); }
public static string NoteToName(int note) { return(PitchDsp.GetNoteName(note, true, true)); }