示例#1
0
 void Run(object sender, DoWorkEventArgs e)
 {
     Bass.BASS_ChannelSetAttribute(stream, BASSAttribute.BASS_ATTRIB_TEMPO, tempo);
     while (!(sender as BackgroundWorker).CancellationPending && position < text.Length)
     {
         SpeechPart part = GetPart();
         if (part != null)
         {
             PlayPart(part);
             position += part.Part.Length;
         }
         else
         {
             position++;
         }
     }
 }
示例#2
0
        void PlayPart(SpeechPart part)
        {
            int duration = part.Duration * 100 / (100 + tempo);

            if (part.Start >= 0)
            {
                double start = part.Start / 1000.0;
                Bass.BASS_ChannelSetPosition(stream, start);
                Bass.BASS_ChannelPlay(stream, false);
                Thread.Sleep(duration);
                Bass.BASS_ChannelStop(stream);
            }
            else
            {
                Thread.Sleep(duration);
            }
        }