3 knobs with 3 layers, all sampled (3x3x3=27 samples). Best practice for implementation?
-
@d-healey
Thank you for your reply David! It might be too late in the day for me to get this properly, but you are saying that I should make 27 separate samplers and crossfade between them(?). It still seems to me like there needs to be some advanced routing going on, apart from just gain modulation, since the knobs need to be aware of the state of the other knobs before playing the correct sample.For example: When turning knobB to position2, there are 9 possible samples that can be played, depending on the state of the other knobs. If knobA and knobC is both in position1, then sample "A1_B2_C1" should play (when knobB is turned to position2), but if KnobA is in position1 and knobC in position3, then sample "A1_B2_C3" should play, etc. I don't think I understand how to do this by just using gain modulations, but I might be missing something obvious here.
-
@andersnaessss I think it would require 9 samplers, but perhaps I'm not 100% following the goal. Are the samples triggered by playing MIDI notes or only by moving knobs?
-
Thanks for the patience to sort this out with me. I'm probably not explaining myself so clearly. Maybe I can give a better explanation by using three-way toggle switches as examples (I'm sorry in advance for the overly detailed explanation, I just want to make sure that I'm not forgetting anything)
There are three toggle switches each with three states. Call the states 0, 1, 2. There are 27 possible combinations that the set of toggle switches can have (0-0-0, 0-0-1, ... 2-2-2). And I want to sample each of these 27 combinations, for each midi note. Every midi note will have 27 samples. Each of the 27 combinations (on each midi note) correspond to a specific toggle switch combination. Depending on the specific combination of the toggle switch a specific sample will play.
Say that the samples are recordings of triangle waves into three guitar pedals. The pedals are Sunset, BlueSky, Flint. Each of the pedals are recorded with varying wet signals, at 0% (0), 50% (1), or 100% (2). Together there are 27 combinations of wet signals.
The samples are named in the following terminology: "Sun[X]_Blu[X]_Fli[X].wav"
The toggle switch combination 0 - 0 - 0 plays the specific sample called "Sun0_Blu0_Fli0.wav", that is the sound of the triangle wave into Sunset at 0% wet, BlueSky at 0% wet and Flint at 0% wet.
0 - 1 - 1 plays "Sun0_Blu1_Fli1.wav", a sample of Sunset at 0%, BlueSky at 50% and Flint at 50%
2 - 2 - 1 = "Sun2_Blu2_Fli1.wav" etc.
How do I get HISE to calculate which sample is played, based on the specific toggle button combination? And what is the best way to implement (and script) this? Using broadcasters? (and the further question: if instead of toggle switches I'm using knobs, and I want to smoothly crossfade between each sample, how is this best implemented?)
-
@andersnaessss Thanks for the extra info, how are the samples triggered though, is it by incoming MIDI?
For crossfading it's necessary that all samples are actively playing and then we can control the volume between them for crossfading - that's the easy part, we just need to figure out the best way of mapping and triggering the samples.
-
Oh, I see about the crossfading, like a big mixing console. (Would that be very taxing on the CPU/RAM then?) Yes, I was thinking incoming midi.
-
@andersnaessss said in 3 knobs with 3 layers, all sampled (3x3x3=27 samples). Best practice for implementation?:
(Would that be very taxing on the CPU/RAM then?)
I think it should be fine.
@andersnaessss said in 3 knobs with 3 layers, all sampled (3x3x3=27 samples). Best practice for implementation?:
Yes, I was thinking incoming midi.
Ok so walk me through in baby steps.
I press Middle C on my keyboard, what should happen?
-
Sure!
If you press middle C, then 1 of 27 samples will play, depending on the position of three knobs (or a crossfade of several samples, but let's just assume first that there is no crossfade). Using the same guitar pedal example as in my last comment:
If you press middle C while all three knobs are set to 0%, then HISE will play the the specific sample called "#60_Sun0_Blu0_Fli0.wav", that is the recording of a middle C triangle wave into Sunset at 0% wet, BlueSky at 0% wet and Flint at 0% wet.
If you press middle C while the third knob is set to 100%, while the other two are still set to 0%, then HISE will play the specific sample called "#60_Sun0_Blu0_Fli2.wav"
If you press middle C while all knobs are set to 50%, then HISE will play the specific sample called "#60_Sun1_Blu1_Fli1.wav". (This sample is not the same as if I'd made three samples "#60_Sun1.wav" + "#60_Blu1.wav" + "#60_Fli1.wav" and blended them together, as the single sample has recorded their interaction.)
For a crossfade state: If you play middle C while knob1 is set to 20%, knob2 is set to 60% and knob3 is set to 90%, then HISE will play a crossfade between ... I'm not sure here.. but a calculation of several samples.
-
@andersnaessss Then I think 27 samplers is required, or we might be able to make use of group crossfading, in addition to using gain modulators, which will reduce the number of samplers required.
I think you should start with a simple test project, maybe with just 3 samples, and play around with crossfading and group crossfades to see what mapping setup you prefer, and which uses the least number of samplers. Then once you've got this proof of concept down it should be fairly easy to expand it to the whole thing.
I'd go with crossfading then you don't have to worry about triggering specific samples by scripting as all samples for each note will trigger by MIDI.
-
@d-healey Yes, you are probably right. Start small, experiment and scale up.
I just figured that other people had done something similar and that there was some sort of best practice of doing this thing. But yes, I'll start experimenting with something simpler and take it from there. Thanks again for the suggestions and pointers!
-
@andersnaessss I have an old video about crossfading dynamics which might be helpful - https://youtu.be/0cn1l8231n4