public override bool Render(RenderParams parentRp, RenderCanvas canvas)
        {
            if (!Active)
            {
                return(false);
            }
            _rp = new RenderParams(parentRp);
            AdaptRenderParams(_rp);
            //Util.Log("Render HID=" + rp.HierarchyID + " ID=" + this.ID + "\n");

            // make a new canvas - anything painted on here by children, will
            // be used in this SOundEvent.
            RenderCanvas myCanvas = new RenderCanvas();

            // Render to rp/myCanvas, to retrieve adapted render-params based on possible
            // effects attached to me as child nodes.
            RenderChildren(_rp, myCanvas);

            // render my audio ... if within the right time
            if (_rp.Time >= 0 && _rp.Time < Duration)
            {
                _audio.Render(_rp, myCanvas, _dspList, _audioRepeats);
                canvas.TimeMarker = myCanvas.TimeMarker;
                return(true);
            }
            return(false);
        }