Ejemplo n.º 1
0
 public void TryToAddHeldNote(PossibleHeldNote heldNote)
 {
     if (!IsInOtherHeldNote(heldNote))
     {
         HeldNotes.Add(heldNote);
     }
 }
Ejemplo n.º 2
0
        private List <PossibleHeldNote> GetHeldNotesFromFrequencyBand(FrequencyBand newFrequencyBand)
        {
            List <PossibleHeldNote> heldNotes = new List <PossibleHeldNote>();

            FrequencyBand.FBPoint lastValidPoint = null;

            float amplitudeSum = 0;
            int   amplitudesN  = 0;

            float timeDelta = newFrequencyBand.FBPoints[1].Time - newFrequencyBand.FBPoints[0].Time;

            foreach (FrequencyBand.FBPoint fbPoint in newFrequencyBand.FBPoints)
            {
                if (fbPoint.MinimumSquaredErrorToPrevious < MaximumSquaredError)
                {
                    if (lastValidPoint == null)
                    {
                        lastValidPoint = fbPoint;
                    }

                    amplitudeSum += fbPoint.Amplitude;
                    amplitudesN++;
                }
                else
                {
                    if (lastValidPoint != null)
                    {
                        float timeDifference = fbPoint.Time - lastValidPoint.Time;

                        if (timeDifference > MinimumTimeWidth)
                        {
                            PossibleHeldNote heldNote = new PossibleHeldNote();

                            heldNote.StartTime = lastValidPoint.Time;
                            heldNote.EndTime   = fbPoint.Time - timeDelta;

                            float amplitudeMeanValue = amplitudeSum / amplitudesN;

                            heldNote.AmplitudeMeanValue = amplitudeMeanValue;
                            heldNote.Applicability      = amplitudeMeanValue;

                            heldNotes.Add(heldNote);
                        }

                        lastValidPoint = null;
                    }

                    amplitudeSum = 0;
                    amplitudesN  = 0;
                }
            }

            return(heldNotes);
        }
Ejemplo n.º 3
0
            private bool IsInOtherHeldNote(PossibleHeldNote newHeldNote)
            {
                foreach (PossibleHeldNote heldNote in HeldNotes)
                {
                    if (IsInBetween(heldNote, newHeldNote.StartTime) ||
                        IsInBetween(heldNote, newHeldNote.EndTime))
                    {
                        return(true);
                    }
                    if (IsInBetween(newHeldNote, heldNote.StartTime) ||
                        IsInBetween(newHeldNote, heldNote.EndTime))
                    {
                        return(true);
                    }
                }

                return(false);
            }
Ejemplo n.º 4
0
 private bool IsInBetween(PossibleHeldNote heldNote, float value)
 {
     return(heldNote.StartTime <= value && heldNote.EndTime >= value);
 }