Ejemplo n.º 1
0
 // will be called when speaking has finished
 private async void _fileInputNode_FileCompleted(AudioFileInputNode sender, object args)
 {
     if (_fileInputNode.LoopCount > 0)
     {
         return;                           // track the loop count down and wait until the end -murks MS will get here twice with 0  when the loopCount is used
     }
     _fileInputNode.Stop( );
     await EndOfSound( );
 }
Ejemplo n.º 2
0
        private async void MainGraph_QuantumProcessed(AudioGraph sender, object args)
        {
            try
            {
                this.Position = mainInputNode.Position;

                if (NextJump != null)
                {
                    if (NextJump != null &&
                        Position >= NextJump.Origin - NextJump.CrossFade &&
                        Position <= NextJump.Origin &&
                        !IsFading &&
                        NextJump.Song == mainSong)
                    {
                        IsFading     = true;
                        subInputNode = mainInputNode;
                        subSong      = mainSong;

                        mainSong      = NextJump.TargetSong ?? NextJump.Song;
                        mainInputNode = await mainSong.Song.CreateNode(graph);

                        mainInputNode.AddOutgoingConnection(outputNode);
                        mainInputNode.StartTime    = NextJump.TargetTime - (NextJump.Origin - subInputNode.Position);
                        mainInputNode.OutgoingGain = 0;
                        mainInputNode.Start();
                    }
                    if (IsFading && subInputNode != null)
                    {
                        var fadePosition = (NextJump.Origin - subInputNode.Position);
                        var fadeTime     = NextJump.CrossFade;

                        var percentage = Math.Min(1.0, Math.Max(0.0, fadePosition.TotalSeconds / fadeTime.TotalSeconds));

                        subInputNode.OutgoingGain  = percentage;
                        mainInputNode.OutgoingGain = 1.0 - percentage;
                    }
                    if (Position > NextJump.Origin &&
                        IsFading && subInputNode != null)
                    {
                        mainInputNode.OutgoingGain = 1.0;
                        subInputNode.Stop();
                        subInputNode.RemoveOutgoingConnection(outputNode);
                        subInputNode.Dispose();
                        subInputNode = null;
                        subSong      = null;
                        NextJump     = NextJump.NextDefaultJump;
                        IsFading     = false;
                    }
                }
            }
            catch (Exception e)
            {
                App.Log(e);
                Recover();
            }
        }
Ejemplo n.º 3
0
 private void MainPage_FileCompleted(AudioFileInputNode sender, object args)
 {
     sender.Stop();
 }
Ejemplo n.º 4
0
 private void MainPage_FileCompleted(AudioFileInputNode sender, object args)
 {
     sender.Stop();
 }