Polyphonic FM: problems and questions
-
I have a synth using the FM feature built into the SynthezierGroup.
Question:
Currently, you can only do FM between generators that live in the same Synthesizer group.
I assume that you have intentionally forbidden FM between different Synthesizer Groups, due to the situation that arises when you have different numbers of active voices in each group (for example if the carrier has unison but the modulator does not)?
If I wanted to have FM between modules that don't have equal number of voices, is there any good method? From what I've seen, hise doesn't try and solve this scenario.One method perhaps is if I coded a c++ polyphonic send, that pumps the modulator into the carrier synth group. Using coding, I could create the appropriate modulator signals for each of the voices so that each voice gets paired with the correct signal to use as FM (using knowledge of note numbers / unison numbers to correctly pair unison voices with the right modulator).
-
@griffinboy yeah this is a pretty advanced topic and you might run into the limitations of the architecture if you're trying to do this kind of routing through the HISE API.
If I wanted to have FM between modules that don't have equal number of voices, is there any good method?
This is not a question of how can this be technically implemented, but how would you expect this to work on a high level? like which voice is supposed to FM what other voice if there is no clear association?
My gut feeling would be to do the entire signal path for the oscillator sound generation in C++ where you can decide exactly how the unisono should be connected to the FM and then pick up all modulation signals with a
core::extra_mod
object and route them to the respective parameters within your C++ module. -
@Christoph-Hart Thank you :) I guess our issue is that there is a Sampler in the project too that we trying to FM with the c++ synth. Oh for a simple life
-
@DanH do you need disk streaming? If you're just playing simple SFZ sample sets without lots of round robin & multilayers, you can just ditch the entire sampler module and load all into memory.
-
@Christoph-Hart No round robins and no multilayers, so this could work. Would loop and reverse functions still be available?
-
@DanH you can do what you want then - HISE is only responsible for shoveling the sample data to your node, how you play it back is up to you.
-
The core:extra mod node?
I haven't used this node before!Thanks for your response, I agree, it's certainly a fiddly routing scenario.
Part of me wants to completely write the sampler and everything else in the project from scratch so that everything is custom c++ and can be routed by hand.However, I'm working with Dan on a project where he needs to use the built in Hise sampler because he's made a ton of monolith and sample map files for the hise sampler...
So my task is to figure out how to play nice with the hise modules while supporting FM between the custom stuff and the hise stuff