public void play() {
   if (use_short_sound) {
     short_sound.play();
     is_playing = false; // short sound, won't be playing long...
   } else {
     if (use_start_sound) {
       t =
           newTimer(
               start_sound.getLengthAsInt(),
               false,
               new ActionListener() {
                 public void actionPerformed(ActionEvent e) {
                   handleTimerPop(e);
                 }
               });
       start_sound.play();
       if (use_mid_sound) {
         t.start();
         is_playing = true;
       }
     } else if (use_mid_sound) {
       mid_sound.setLooped(true);
       mid_sound.play();
     }
   }
 }
  public void stop() {
    log.warn("Stopping");
    // make sure the start sound is killed
    if (use_start_sound) {
      start_sound.stop();
    }

    // If the mid sound is used, turn off the looping.
    // this will allow it to naturally die.
    if (use_mid_sound) {
      mid_sound.setLooped(false);
      mid_sound.fadeOut();
    }

    // If the timer is running, stop it.
    if (t != null) {
      t.stop();
    }

    // If we're using the end sound, stop the mid sound
    // and play the end sound.
    if (use_end_sound) {
      if (use_mid_sound) {
        mid_sound.stop();
      }
      end_sound.setLooped(false);
      end_sound.play();
    }
    is_playing = false;
  }
 // Catch the timer pop after the start sound is played and trigger the (looped) sustain sound.
 protected void handleTimerPop(ActionEvent e) {
   log.info("Received timer pop after start sound played.");
   // TODO: Need to validate that this is the timer pop
   if (use_mid_sound) {
     mid_sound.setLooped(true);
     mid_sound.play();
   }
   t.stop();
 }
 public void loop() {
   if (use_start_sound) {
     start_sound.setLooped(false);
     start_sound.play();
     t =
         newTimer(
             start_sound.getLengthAsInt() - 100,
             false,
             new ActionListener() {
               public void actionPerformed(ActionEvent e) {
                 handleTimerPop(e);
               }
             });
     t.setRepeats(false); // timer pop only once to trigger the sustain sound.
     t.start();
   } else if (use_mid_sound) {
     mid_sound.setLooped(true);
     mid_sound.play();
   }
   is_playing = true;
 }