private int accentProminenceRule(Element segment){
  int returnValue=100;
  Element syllable=getSyllable(segment);
  if (hasAccent(syllable)) {
    Element prosody=(Element)DomUtils.getAncestor(segment,MaryXML.PROSODY);
    if (prosody != null) {
      ProsodicSettings settings=(ProsodicSettings)prosodyMap.get(prosody);
      if (settings != null) {
        int accentProminence=settings.accentProminence();
        if (accentProminence != 100) {
          if (isInNucleus(segment)) {
            returnValue=accentProminence;
          }
          String vq=segment.getAttribute("vq");
          if (accentProminence >= 150) {
            if (vq.equals("soft") || vq.equals("modal") || vq.equals(""))             vq="loud";
          }
 else           if (accentProminence >= 125) {
            if (vq.equals("soft")) {
              vq="modal";
            }
 else             if (vq.equals("modal") || vq.equals("")) {
              vq="loud";
            }
          }
          if (!vq.equals(segment.getAttribute("vq"))) {
            segment.setAttribute("vq",vq);
          }
        }
      }
    }
  }
  return returnValue;
}

private int accentProminenceRule ( Element segment ) { int returnValue = 100 ; Element syllable = getSyllable ( segment ) ; if ( hasAccent ( syllable ) ) { Element prosody = ( Element ) DomUtils . getAncestor ( segment , MaryXML . PROSODY ) ; if ( prosody != null ) { ProsodicSettings settings = ( ProsodicSettings ) prosodyMap . get ( prosody ) ; if ( settings != null ) { int accentProminence = settings . accentProminence ( ) ; if ( accentProminence != 100 ) { if ( isInNucleus ( segment ) ) { returnValue = accentProminence ; } String vq = segment . getAttribute ( "vq" ) ; if ( accentProminence >= 150 ) { if ( vq . equals ( "soft" ) || vq . equals ( "modal" ) || vq . equals ( "" ) ) vq = "loud" ; } else if ( accentProminence >= 125 ) { if ( vq . equals ( "soft" ) ) { vq = "modal" ; } else if ( vq . equals ( "modal" ) || vq . equals ( "" ) ) { vq = "loud" ; } } if ( ! vq . equals ( segment . getAttribute ( "vq" ) ) ) { segment . setAttribute ( "vq" , vq ) ; } } } } } return returnValue ; }
accent prominence rule : the " accent - prominence " attribute influences nucleus duration for accented syllables ( in addition to klatt rule 8 ) , and affects voice quality for accented syllables . in addition , but not here , the " accent - prominence " attribute causes a topline / baseline overshoot / undershoot .
