INTERACT FORUM

More => Old Versions => Media Center 17 => Topic started by: hulkss on January 23, 2012, 01:01:31 am

Title: Problem: Hearing end of previous audio streams after stop then play
Post by: hulkss on January 23, 2012, 01:01:31 am
I'm hearing the end of previous audio streams after stop then play on a new selection.

Maybe more of this is needed:
17.0.30 (11/7/2011)
5. NEW: ASIO outputs a little silence when stopping so that hardware that plays its last buffer on the next start won't click.  About 1/4 of a second.

I don't hear a click, I hear the previous song played.
Maybe an adjustment is needed for the ASIO stop silence or just increase it a bit. I have all of my buffers set as small as I can go.

USB ASIO hardware driver buffer at 4 ms, large hardware buffers not checked in MC
JRiver audio buffer at .2 sec. If I go smaller the new JRevolver starts to "reverb" at .15 sec.
Title: Re: Need help: Hearing end of previous audio streams after stop then play
Post by: Matt on January 23, 2012, 10:17:38 am
I'm wondering if this could be DSP-related.

What happens if you turn off all DSP?
Title: Re: Need help: Hearing end of previous audio streams after stop then play
Post by: hulkss on January 24, 2012, 01:06:20 am
I'm wondering if this could be DSP-related. What happens if you turn off all DSP?

I always thought it was ConvolverVST doing it, but I still get it with JRivolver.

Now that you suggest all DSP off.....I do have another "foreign object" in the DSP signal chain: DTS Neural Upmix VST
I'll test no DSP this Friday. Thanks.

(http://www.dts.com/~/media/4dadae21ad184da7ad2b41d78c1ff23a/main_neural_upmix_testdrive_630x353.jpg?w=630&h=353)
Title: Re: Need help: Hearing end of previous audio streams after stop then play
Post by: Vincent Kars on January 24, 2012, 08:20:21 am
I had this problem once using a VST pluging (Isone Pro).
Disabling didn't help.
Disabling + restart of MC solved it.
Title: Re: Need help: Hearing end of previous audio streams after stop then play
Post by: hulkss on January 29, 2012, 11:53:43 pm
I'm wondering if this could be DSP-related. What happens if you turn off all DSP?

Matt,

OK, I've confirmed the problem is the DTS Neural Upmix VST plugin playing a bit of the previous song.
If I'm playing silence and then stop and start a new track, no problem. Or if I turn off this plug-in, no problem.

So, just a little more "silent flush" needed when stopping in mid-song please.
Title: Re: Need help: Hearing end of previous audio streams after stop then play
Post by: Matt on January 30, 2012, 10:05:43 am
Matt,

OK, I've confirmed the problem is the DTS Neural Upmix VST plugin playing a bit of the previous song.
If I'm playing silence and then stop and start a new track, no problem. Or if I turn off this plug-in, no problem.

So, just a little more "silent flush" needed when stopping in mid-song please.

So when does it happen exactly?

Did this change make any difference:
17.0.74 (1/24/2012)
3. Changed: DSP plugins are flushed when they're turned on so plugins with a history won't cause old audio to play when turning on.
Title: Re: Need help: Hearing end of previous audio streams after stop then play
Post by: hulkss on January 30, 2012, 10:44:43 pm
So when does it happen exactly?

Just after I click play. There is a slight delay for play to start (Silence for sync when starting ASIO ?). Then I hear the previous song very briefly, at the point where I stopped it.

Did this change make any difference:
17.0.74 (1/24/2012)
3. Changed: DSP plugins are flushed when they're turned on so plugins with a history won't cause old audio to play when turning on.


Yes, the issue got better but I believe it fixed convolution mostly which had the same problem.


Title: Re: Need help: Hearing end of previous audio streams after stop then play
Post by: hulkss on February 01, 2012, 08:56:57 pm
17.0.74 (1/24/2012)
3. Changed: DSP plugins are flushed when they're turned on so plugins with a history won't cause old audio to play when turning on.

Is a plugin flushed by playing silence? If so I just need it a little longer duration, maybe 1/4 sec.
Title: Re: Problem: Hearing end of previous audio streams after stop then play
Post by: hulkss on February 05, 2012, 11:29:46 am
Still get a short burst of the previous song after stop/start as described below in v 17.0.82.
Title: Re: Problem: Hearing end of previous audio streams after stop then play
Post by: JimH on February 05, 2012, 11:41:01 am
That's coming from your sound device.   Use the "flush buffer" setting under MC's Audio settings.
Title: Re: Problem: Hearing end of previous audio streams after stop then play
Post by: hulkss on February 05, 2012, 11:49:08 am
That's coming from your sound device.   Use the "flush buffer" setting under MC's Audio settings.

I can't seem to find that setting option. Where is it? I'm using ASIO.
Title: Re: Problem: Hearing end of previous audio streams after stop then play
Post by: JimH on February 05, 2012, 11:55:28 am
I can't seem to find that setting option. Where is it? I'm using ASIO.
Try WASAPI (both types) and the "Output Mode Settings".
Title: Re: Problem: Hearing end of previous audio streams after stop then play
Post by: Matt on February 05, 2012, 12:22:30 pm
I thought we established above that the only remaining issue was due to the 'DTS Neural Upmix VST'?
Title: Re: Problem: Hearing end of previous audio streams after stop then play
Post by: hulkss on February 05, 2012, 02:09:44 pm
I thought we established above that the only remaining issue was due to the 'DTS Neural Upmix VST'?

Yes, that is it. It does not seem to "flush" completely, leaving something behind in the bowl....I mean buffer.

Maybe flush twice or longer silence as done for hardware:
5. NEW: ASIO outputs a little silence when stopping so that hardware that plays its last buffer on the next start won't click.
Title: Re: Problem: Hearing end of previous audio streams after stop then play
Post by: Matt on February 06, 2012, 01:32:53 pm
It's not clearly specified how to flush a VST effect.  This is what we use (and it works as expected with many effects):
Dispatch(effStopProcess);
Dispatch(effMainsChanged, 0, 0);
Dispatch(effMainsChanged, 0, 1);
Dispatch(effStartProcess);

You might ask the authors of 'DTS Neural Upmix VST' if they support a flush and/or how they would expect it.

Thanks.
Title: Re: Problem: Hearing end of previous audio streams after stop then play
Post by: hulkss on February 06, 2012, 10:38:55 pm
Matt:
I have no idea what I'm talking about but here goes:

I found this here: http://jvstwrapper.sourceforge.net/vst20spec.pdf (http://jvstwrapper.sourceforge.net/vst20spec.pdf)
"suspend() is called when the effect is turned off by the user; the buffer gets flushed because otherwise pending data would sound again when the effect is switched on next time. You could also flush your ‘buffers’ in the resume() method, for completeness."

I found this here: http://www.gersic.com/vstsdk/ (http://www.gersic.com/vstsdk/)
Sequences tracked using NUENDO 2.0, and a VST 2.3 compatible Plug-In:
If the Plug-In is deactivated (Off), and reactivated (On):
           ->Switched to OFF<-
 0 :         Host to Plug, stopProcess  returned : 0
 1 :         Host to Plug, suspend
          ->Switched to ON<-
 2 :         Host to Plug, resume
 3 :         Host to Plug, canDo ( sendVstMidiEvent )   returned : 0
 4 :         Host to Plug, startProcess  returned : 0
 5 :         Host to Plug, processReplacing ( 5512 )

More info here: http://asseca.com/vst-24-specs/efMainsChanged.html (http://asseca.com/vst-24-specs/efMainsChanged.html)
Brad
Title: Re: Problem: Hearing end of previous audio streams after stop then play
Post by: Matt on February 07, 2012, 10:50:32 am
I believe effStopProcess / effStartProcess are the correct flush calls.

Suspend and resume are not VST calls (neither word is in the VST header).

Like I said, you might talk to the author of 'DTS Neural Upmix VST'.  We're happy to work with them if needed.
Title: Re: Problem: Hearing end of previous audio streams after stop then play
Post by: hulkss on February 07, 2012, 11:01:38 pm
I believe effStopProcess / effStartProcess are the correct flush calls.

Upon further reading I have confirmed that the effMainsChanged opcode is the one that invokes the suspend() and resume() methods that should do the buffer flushing (assuming the plugin is made to spec).

Your sequence appears correct as long as effMainsChanged is included. I'll contact the authors of the offending plugin.

Dispatch(effStopProcess);
Dispatch(effMainsChanged, 0, 0); 0 = OFF, calls Suspend
Dispatch(effMainsChanged, 0, 1); 1 = ON, calls Resume
Dispatch(effStartProcess);