public boolean birthChecker() {
        switch (state) {
            case NONE:
                // If leftHand is below leftElbow which is below leftShoulder (or right)
                if (GestureInfo.gesturePieces[GestureInfo.LEFT_HAND_DOWN]
                        && GestureInfo.gesturePieces[GestureInfo.RIGHT_HAND_DOWN]
                        && GestureInfo.gesturePieces[GestureInfo.LEFT_ARM_VERTICAL]
                        && GestureInfo.gesturePieces[GestureInfo.RIGHT_ARM_VERTICAL]) {

                    state = GestureState.BIRTH;
                    confidence = 0.0f;
                    return true;
                }
                break;
            case BIRTH:
                if ((GestureInfo.gesturePieces[GestureInfo.LEFT_HAND_RISING])
                        && (GestureInfo.gesturePieces[GestureInfo.RIGHT_HAND_RISING])
                        && !GestureInfo.gesturePieces[GestureInfo.HANDS_ABOVE_HEAD]) {
                    duration++;
                    final PVector diffHand =
                            PVector.sub(joints[GestureInfo.LEFT_HAND], prevJoints[GestureInfo.LEFT_HAND]);
                    tempo += diffHand.mag();
                    final PVector diffHandR =
                            PVector.sub(joints[GestureInfo.RIGHT_HAND], prevJoints[GestureInfo.RIGHT_HAND]);

                    tempo += (diffHand.mag() + diffHandR.mag()) / 2;

                    return true;
                }
                break;
        }
        return false;
    }