Phase coherence broken when SendContainer comes before Sampler in the module tree
-
I'm using send containers to duplicate sampler outputs, in order to turn the left half of a stereo audio file, into a dual-mono signal throughout my signal path.
But there is something quite unexpected here.
This module ordering:
Results in this kind of audio output:
But this module order:
Results in this kind of audio output:
So if the Send Container comes after the Sampler, then audio phase coherence is perfect. But if the Sampler comes after the Send Container, then there is a fairly significant sample latency introduced on the "duplicate" channel. I measured it as 256. My soundcard buffer size is 512. Which I don't think is a coincidence.
To my mind, the ordering of modules shouldn't affect things like this. @Christoph-Hart could you confirm if this is a bug, or if you'd expect this behaviour???
-
No one has any thoughts on this? Or am I just being a n00b and discovering an aspect of HISE that everyone else already knows about? Seems like a bug to me.
-
@Orvillain said in Phase coherence broken when SendContainer comes before Sampler in the module tree:
So if the Send Container comes after the Sample
I'm pretty sure in the docs it mentions that the send container must be after.
-
Actually it's not in the docs, it's in this post from Christoph - should be added to the docs though.
-
@Orvillain what, on earth, are you doing with 10 kick-sends?
-
should be added to the docs though.
Yes and / or add even a warning on the module interface if you connect a send FX to a container that comes before it as it's a very subtle issue that would slip through easily.
-
@Christoph-Hart said in Phase coherence broken when SendContainer comes before Sampler in the module tree:
should be added to the docs though.
Yes and / or add even a warning on the module interface if you connect a send FX to a container that comes before it as it's a very subtle issue that would slip through easily.
Or just modify the code so that when you add a send container, it always gets added to the end of the module it is being added to?
-
@Orvillain said in Phase coherence broken when SendContainer comes before Sampler in the module tree:
added to the end of the module it is being added to?
You don't necessarily always want this so I wouldn't make it that strict.
-
You don't necessarily always want this so I wouldn't make it that strict.
Actually I can‘t think of a use case where having the container before the source would be useful - usually one could argue that this can be used to implement feedback loops like you do with the scriptnode send and receive nodes but this should be done in scriptnode and the send container on the HISE module level‘s prime use case is signal routing.
-
@d-healey said in Phase coherence broken when SendContainer comes before Sampler in the module tree:
@Orvillain said in Phase coherence broken when SendContainer comes before Sampler in the module tree:
added to the end of the module it is being added to?
You don't necessarily always want this so I wouldn't make it that strict.
I don't think it should be enforced necessarily. Just as a serving suggestion. You could still place the module wherever you want using the Builder.
In any case, this should definitely be documented. I'd be happy to add something to the documentation myself, if it is possible.
-
@Christoph-Hart said in Phase coherence broken when SendContainer comes before Sampler in the module tree:
Actually I can‘t think of a use case where having the container before the source would be useful
You may want the container to be after the source but not want it to be at the end of the chain. I can't think of a particular use case, but it may come up in the future.