/// <summary> /// 过滤增加准确性,满足固定重复次数才判断成功 /// </summary> /// <param name="list"></param> /// <returns>midi音号</returns> int Fliter(List <float> list) { var midis = RAPTPitchDetectorExtensions.HerzToMidi(list); Dictionary <int, int> notes = new Dictionary <int, int>(); foreach (var item in midis) { if (item > 0) { if (!notes.ContainsKey(item)) { notes.Add(item, 1); } else { notes[item] += 1; } } } foreach (var note in notes) { if (note.Value > 6) { return(note.Key); } } return(0); }
void LogPitch(List <float> list, int a, float b) { int midiNote = Fliter(list); if (midiNote != 0) { print(RAPTPitchDetectorExtensions.MidiToNote(midiNote)); } }
/// <summary> /// 判断音符 /// </summary> void JudeNote(List <float> list, int a, float b) { int midiNote = Fliter(list); if (midiNote != 0) { Pitch pitch = RAPTPitchDetectorExtensions.MidiToNote(midiNote); judgeZone.Judge(pitch); } }