@Override
     boolean startSamples(int loopCount, float leftGain, float rightGain,
                              int leftDelay, int rightDelay) {
         // loop count is ignored for Stream and MIDI
         // TODO: loop count isn't implemented for MIDI yet

         // left and rightDelay parameters are in terms of Samples
         if (debugFlag) {
             debugPrint("JSClip: startSamples ");
             debugPrintln("start stream for Left called with ");
             debugPrintln("       gain = " + leftGain +
                          " delay = " + leftDelay);
             debugPrintln("start stream for Right called with ");
             debugPrintln("       gain = " + rightGain +
                          " delay = " + rightDelay);
         }

         // This is called assuming that the Stream is allocated for a
         // Positional sample, but if it is not then fall back to
         // starting the single sample associated with this Stream
         if (otherChannel == null || reverbChannel == null)
             startSample(loopCount, leftGain, leftDelay);

         /*
          * ais for Left and Right streams should be same so just get ais
          * left stream
          */
         if (ais == null) {
             if (debugFlag) {
                 debugPrint("JSClip: Internal Error startSamples: ");
                 debugPrintln("either left or right ais is null");
             }
             return false;
         }
         Clip leftLine;
         Clip rightLine;
         leftLine = line;
         rightLine = otherChannel;
// left line only for background sounds...
// TODO:
/***********
for now just care about the left
         if (leftLine == null || rightLine == null) {
             if (debugFlag) {
                 debugPrint("JSClip: startSamples Internal Error: ");
                 debugPrintln("either left or right line null");
             }
             return false;
         }
************/

         // we know that were processing TWO channels
         double ZERO_EPS = 0.0039;  // approx 1/256 - twice MIDI precision
         double leftVolume = (double)leftGain;
         double rightVolume = (double)rightGain;

// TODO: if not reading/writing done for Clips then I can't do
//     stereo trick (reading mono file and write to stereo buffer)
         // Save time sound started, only in left
         startTime = System.currentTimeMillis();
         if (debugFlag)
             debugPrintln("*****start Stream with new start time " +
                         startTime);
         try {
             // QUESTION: Offset clip is done how???
/*******
// TODO:
offset delayed sound
set volume
set pan??
set reverb
         boolean reverbLeft = false; // off; reverb has it own channel
         boolean reverbRight = reverbLeft;

                 if (leftDelay < rightDelay) {
XXXX                 audioLeftStream.start(leftVolume, panLeft, reverbLeft);
XXXX                 audioRightStream.start(rightVolume, panRight, reverbRight);
                 }
                 else {
XXXX                 audioRightStream.start(rightVolume, panRight, reverbRight);
XXXX                 audioLeftStream.start(leftVolume, panLeft, reverbLeft);
                 }
******/
	     line.setLoopPoints(0, -1);	// Loop the entire sound sample
             line.loop(loopCount);	// plays clip loopCount + 1 times
	     line.start();		// start the sound
         }
         catch (Exception e) {
	     if (debugFlag) {
		 debugPrint("JSClip: startSamples ");
		 debugPrintln("audioInputStream.read failed");
	     }
	     e.printStackTrace();
	     startTime = 0;
	     return false;
         }

         if (debugFlag)
             debugPrintln("JSClip: startSamples returns");
         return true;
     }  // end of startSamples