Exemplo n.º 1
0
  private static int TempClass(
      int rhythmClass,
      int morphType,
      int beatWidth,
      int domWidth,
      int domType,
      int hfNoise,
      int noiseLevel,
      int blShift,
      double domIndex) {

    MATCH match = new MATCH();
    POSTCLAS postclas = new POSTCLAS();
    if (domType < 0) return (UNKNOWN);

    if (match.MinimumBeatVariation(domType)
        && (rhythmClass == PVC)
        && (domIndex > R2_DI_THRESHOLD)
        && (GetDomRhythm() == 1)) return (PVC);

    if (beatWidth < R3_WIDTH_THRESHOLD) return (NORMAL);

    if ((morphType == MAXTYPES) && (rhythmClass != PVC)) // == UNKNOWN
    return (NORMAL);

    if ((match.GetTypesCount() == MAXTYPES)
        && (match.GetBeatTypeCount(morphType) == 1)
        && (rhythmClass == UNKNOWN)) return (NORMAL);

    if ((domIndex < R7_DI_THRESHOLD) && (rhythmClass == NORMAL)) return (NORMAL);

    if ((domIndex < R8_DI_THRESHOLD) && (postclas.CheckPCRhythm(morphType) == NORMAL))
      return (NORMAL);

    if ((domIndex < R9_DI_THRESHOLD) && (rhythmClass != PVC) && match.WideBeatVariation(domType))
      return (NORMAL);

    if ((domIndex > R10_DI_THRESHOLD)
        && (match.GetBeatTypeCount(morphType) >= R10_BC_LIM)
        && (postclas.CheckPCRhythm(morphType) == PVC)
        && (GetDomRhythm() == 1)) return (PVC);

    if ((beatWidth >= R11_MIN_WIDTH)
        && (((beatWidth - domWidth >= R11_WIDTH_DIFF1) && (domWidth < R11_WIDTH_BREAK))
            || (beatWidth - domWidth >= R11_WIDTH_DIFF2))
        && (hfNoise < R11_HF_THRESHOLD)
        && (noiseLevel < R11_MA_THRESHOLD)
        && (blShift < BL_SHIFT_LIMIT)
        && (morphType < MAXTYPES)
        && (match.GetBeatTypeCount(morphType) > R11_BC_LIM)
        && (rhythmClass != NORMAL)) // Rev 20160410   rhythmClass
    return (PVC);

    if ((rhythmClass == PVC) && (GetDomRhythm() == 1)) return (PVC);

    if ((rhythmClass == NORMAL) && (GetDomRhythm() == 1)) return (NORMAL);

    if ((beatWidth > domWidth)
        && (domIndex > R15_DI_THRESHOLD)
        && (beatWidth >= R15_WIDTH_THRESHOLD)) return (PVC);

    if (beatWidth < R16_WIDTH_THRESHOLD) return (NORMAL);

    if (beatWidth < domWidth + R17_WIDTH_DELTA) return (NORMAL);

    if (domIndex < R18_DI_THRESHOLD) return (NORMAL);

    if (hfNoise > R19_HF_THRESHOLD) return (NORMAL);

    return (PVC);
  }