Massive instrument model - is messing with my mind.....
-
@Lindon just reread the novel of a first post from you and you don‘t really have velocities right? Because then you can cram it all in 8 + x samplers for legato and call it a day.
You just need to convert the RR value to a velocity without multiplexing other information into the 7bit.
But no matter what you do I would recommend trying to leverage the xfade feature here.
-
@Lindon said in Massive instrument model - is messing with my mind.....:
yeah...its ugly tho isnt it
I think it's elegant. It's actually an old technique from Kontakt. Greg from Orange Tree Samples wrote about it years ago and I've used it a number of times. https://www.orangetreesamples.com/blog/ksp-making-the-most-of-groups
-
@d-healey said in Massive instrument model - is messing with my mind.....:
I think it's elegant. It's actually an old technique from Kontakt.
Old...., Kontakt...., those were desperate days - I was hoping we could move on....
-
@Lindon Sometimes the old ways are good. What would you prefer?
-
@d-healey either:
a way to address the volume of a playing wav file
or
xfade groups, that are a subgroup of RR or better still teh other way round....
I realise its a massive ask.
-
@Lindon said in Massive instrument model - is messing with my mind.....:
a way to address the volume of a playing wav file
You can do that using
Message.setGain()
orSynth.addVolumeFade()
@Lindon said in Massive instrument model - is messing with my mind.....:
xfade groups, that are a subgroup of RR or better still teh other way round....
You might be able to effectively do this yourself by scripting the group management. I know this drop down for xfades only shows 8 groups
But if you click this button you'll see all groups have a xfade table:
It would be cumbersome to set all the curves via the UI, but pretty simple to do it via scripting.
I'd still explore the velocity route though, I think you're making it sound more complicated than it is. If you name the samples with the mapping in mind then the automapper will do all the work.
-
@d-healey said in Massive instrument model - is messing with my mind.....:
@Lindon said in Massive instrument model - is messing with my mind.....:
a way to address the volume of a playing wav file
You can do that using
Message.setGain()
orSynth.addVolumeFade()
The problem here is these are fixed values, not relative and my previous experiments have resulted in volume jumps and dives depending on the incoming velocity....
@Lindon said in Massive instrument model - is messing with my mind.....:
xfade groups, that are a subgroup of RR or better still the
You might be able to effectively do this yourself by scripting the group management. I know this drop down for xfades only shows 8 groupsBut if you click this button you'll see all groups have a xfade table:
It would be cumbersome to set all the curves via the UI, but pretty simple to do it via scripting.
Im really not at all clear on what you mean - I have two dynamic layers only, and up to 8 round robins per sound, how would I approach that?
I'd still explore the velocity route though, I think you're making it sound more complicated than it is. If you name the samples with the mapping in mind then the automapper will do all the work.
The samples are already named, at least for the first few instruments - they want them converting from Kontakt instruments..... so the sampling got done a long time ago, as did all the trimming, balancing and editing, and naming...
-
Here's an entire guitar with all RRs and articulations in one "group"
Other strings are in other groups.
This is incredibly simple because if a different guitar needs to be put in here, I just tweak the config script by defining the number of RRs, layers and the whole algorithm adjusts.
In your case, I would probably do the same: lay out everything in a few groups (because you have 48 articulations). I'd probably spread it all across 48 groups (makes it that much easier to manage) if the high-group-count-UX in HISE has been fixed.
When you have multiple dynamic layers, you would play both (by targeting them using your noteNum x vel scheme in the overall layout), and then use the newly added continuous per-event modulation to modulate the volume of each event, which allows you to define your crossfading curve using tables in ScriptNode. There's a snippet in the waiting room for it where you can see a UI slider modulating individual event's pitch. You can repurpose that to target the volume, define your tables in the modulator network and just select the different table based on the eventData value that you send with the event (which would, in this case, specify the layer number).
-
@Lindon said in Massive instrument model - is messing with my mind.....:
The problem here is these are fixed values, not relative
If you use the current value too then it's relative:
Message.setGain(Message.getGain() - 3);
@Lindon said in Massive instrument model - is messing with my mind.....:
Im really not at all clear on what you mean - I have two dynamic layers only, and up to 8 round robins per sound, how would I approach that?
There are many ways you could do it - I wouldn't recommend any and would recommend the velocity method, but...
You could put round robins for articulation 1, dynamic 1 into groups 1-8, then for dynamic 2 use groups 9-16. You setup the crossfade tables to that 1-8 fade out as 9-16 fade in - do this by scripting, not manually. Repeat for all the other articulations too, 16 groups for each. Then in your on note on callback you can choose which 16 groups are enabled based on the selected articulation.
@Lindon said in Massive instrument model - is messing with my mind.....:
The samples are already named,
Rename them if necessary, in the long run it might be better and batch renaming is pretty quick even for large sample sets. If I have a complicated renaming to do I get ChatGPT to spit out a bash script.
To match Aaron, here's one of my guitar maps, albeit quite a small one.
-
@d-healey said in Massive instrument model - is messing with my mind.....:
You could put round robins for articulation 1, dynamic 1 into groups 1-8, then for dynamic 2 use groups 9-16. You setup the crossfade tables to that 1-8 fade out as 9-16 fade in - do this by scripting, not manually. Repeat for all the other articulations too, 16 groups for each. Then in your on note on callback you can choose which 16 groups are enabled based on the selected articulation.
OK I think I get it...
Lets use a real world example - I have a guitar articulation it has 5 round robins and cross fades between two set of 5 round robins. So I put set one in RR Group 1-5 and set two in RR groups 6-10.
I set up a CC Modulator (assigned to CC1 - the mod wheel) and using a table, the table starts high and ends low -- how do I attach this so it ONLY applies to RR groups 1-5???
-
@Lindon said in Massive instrument model - is messing with my mind.....:
I set up a CC Modulator (assigned to CC1 - the mod wheel) and using a table, the table starts high and ends low -- how do I attach this so it ONLY applies to RR groups 1-5???
Once you enable group xf mode for the sampler you can click this button to see the tables for all groups. Each group gets its own table.
Then you add your CC modulator to the sampler's Group Fade chain.
-
@d-healey nope still making no sense to me.....
Heres a sampler with 3 rrs in it....and Group XF turned on....
when I click on your button I get this:
What are these tables doing? Are they setting the volume amount for each group?
so if I wanted to fade 1 and 2 into 3 I would do this?
Whats the Group Cross fade modulator doing? Moving thru these tables Ive set up?
-
@Lindon Did you not watch my video or did I just explain it badly?
@Lindon said in Massive instrument model - is messing with my mind.....:
Whats the Group Cross fade modulator doing? Moving thru these tables Ive set up?
Yes
@Lindon said in Massive instrument model - is messing with my mind.....:
so if I wanted to fade 1 and 2 into 3 I would do this?
Yes
-
@d-healey Ok well where the f***k did my round robins all go then?
Gone for good in this model no?
-
@Lindon said in Massive instrument model - is messing with my mind.....:
Ok well where the f***k did my round robins all go then?
Gone for good in this model no?
Groups are just groups, ignore the fact that they are labelled as rr groups. They are just one of the methods for organising samples - like note range or velocity.
If you're using the groups for xfading then you lose HISE's automatic round robin facility - but you probably weren't using that anyway, you were probably managing the RR yourself via scripting, so you can carry on with that when using xfades, nothing changes except you have more groups to manage per RR.
-
@d-healey said in Massive instrument model - is messing with my mind.....:
but you probably weren't using that anyway,
But I was using it!
So now I must use scripting to turn on specific groups right?
So a note arrives and I point it at RR1 and RR6 using:
Sampler.setMultiGroupIndex(var groupIndex, bool enabled)
EXCEPT!!!! this is what the documentation says:
This function can be used to enabled multiple groups at once. By default, only one RR group is active at the same time - as long as the Group XF property is disabled, then it will play all groups.
-- which confuses the bejesus out of me.... will it work or wont it with Group XF on?
-
@Lindon said in Massive instrument model - is messing with my mind.....:
-- which confuses the bejesus out of me.... will it work or wont it with Group XF on?
Oh I wasn't aware of this. I just tested it and no, as soon as group xf is enabled all groups play! So that kills this idea - go with velocity.
But it would be a nice option to be able to control the active groups even when group xf is enabled... @Christoph-Hart
-
@Christoph-Hart said in Massive instrument model - is messing with my mind.....:
@Lindon Use RRGroup for the Xfades and encode RRs & dynamics into the velocity data slot. You probably don't have 127 velocity layers, so you can pack that information into one number.
So if you have eg. 4 dynamic layers and 8 RRs distribute them so that the first RR group goes from velocity layer 0 - 15 (0-3, 4-7, 8-11, 12-15) etc.
Then do the "decoding" in the script.
Well I just re-read the spec. and yes (of course) they want velocity to be used to control the volume (in all cases) - as well as optionally set the dynamic layer cross over, so this stacking RRs in the velocity layers wont work will it. I programmatically change the velocity to use the correct RR sounds, and the overall volume of the sampler is changed e.g.
HiseSnippet 1170.3oc6X0saaaCElJNLKwKqnsnEX2L.cwtHAnnvNMMc.8h5XGmhfVmHXkErcU.iDsMQjHEnnRW1vdm1E6AnOR8MX6PIYKJGkTWC2zre7EF9bHOje77G+ncjBOZbrPhrV63KinHq0wtWxUi5Lhv3nC1CYcObORrhJsyT09xHRbL0GYYU60ZEVqsLJ8yGdUaR.g6QKTgPmHXdz2xBYpBsNsdCKHXehO8XVnwr2t0AdBdGQfHAvSMbCTDw6bxP5gD8zVBirVoqOSIjtJhhFirVtsv+R2Qh2wyl+IrX1YATsPSjKrPYp2WD3qQr92nNiXA9NiO2wHjE1ovKTKyK7HbOlOah9Buw8SGvtvBS+g0RkgWsRvq40AuJfjkAjVNCRO.65IYQphQz34qwGvgfy.B31MgR1bQVuG2Q.SfqdZH4b59RPXhAarSiFOwF9ZyWNHg6oXBtsfenPQOhuwl0+s5qU+2qaO8PCFT4X5sQJBBnxJGVGok2jgavSBOiJeh8EjfD5jIBG+x9zUlMepW1o1XhB9Abl5nHZtbQRQyJh.nb2F7qe7f8HJhNnjqClWDUpXZ3XsG8BHCOKDsFdOZ74JQDjiek3Gj4H7SBHpxoS5Zn7A.+QoXnNPwiYpKMqwlNGa4q2eznxRfJOsyHbe.1go7FUMdWpB7BdsO23Muh8avcGLf5oJ.6x38+oar7bgCkUulVnqmVDBRTYyEQCznYtApUs+Q0v7VMY9yZs2r6M++ZuEBT9tLn7PrqRRIgL9PWRXDbcTJdpiyktkq+bjz.Aw2k8qFS68sZm.9KYYs+QqzsZ2PQBuzdki79zHJQAgeCaVsU+9uVJRhl1pO7pzjkik.AJvUXNvQbJ32UlmwNRQb7.33jtVwlC4jHGp8UEZ5SufJiKq6vjPH1y4z.vXrkk9VyXpNVy75QTR1uXN6zcowwjz3MvpKUt4TxaMk7ylRd6oje9Tx6Lk7KJjybn8HQYzaeyOeZaZPfCivEWgtwWMak3vh4PfiuwLayFNYixzTtciwTm3+SwnQ64J58txWfdueBWMLyDWWG2uuMjy3qKQqh45ehsuFVo8fUAdUvSiopSfxKOnq2FM2ZyWdGjsJdQwV8emLT+DRrVx4JOU89XWlt.qK+BHM.znw6CgS3.RRfZr1xc76I3hnQBNyqbOMnG0vgTo44nxC2tJEzRsPyiZ0mFPIwFMk+9VuEX5QjkaUeU+xB80gUF69VbFbs04y12odkQNU453wUvo.9wSDsmbbZ9wQKbWSd2cynGbMkp70T6Q8XmQCJGXfq3y2yz0HsRJ8+ZXQEtVHD7p8edBd2jq6d4z6rgcWpti+H50woDRr07G+RA09hDEvKbL2LLPfyEHs5QMowsj9RlL4FZYMfbob+Tg+B9jOXywb9zC1b7fHuwKEb1x+cVwUMJWWok9tk.fMYfYJcLPMVCInB7VAk2F6QHwSJN0Ki5f1erZpFvSvS+mMWC2SKa2DkRmvzcDBD3N0yq7RcEC2ZdM7YyqgaOuF9740vclWCew7Z3O7wMTyud2DkHLqgMB0yoaVRtU2II40P+MfKihjO
So at this point I cant see a way forward without dumping RRs altogether -or being able to control active groups when XFade is enabled.
-
@Lindon you can still use velocity to control volume and also assign it to group xf. I'll check out your snippet shortly when I'm at my PC.
-
@d-healey said in Massive instrument model - is messing with my mind.....:
@Lindon you can still use velocity to control volume and also assign it to group xf. I'll check out your snippet shortly when I'm at my PC.
yeah --- but...... thats not all Im trying to do here - I'm modifying the velocity so I can trigger the correct "stacked" RR wav file, so for a single note I would have 5 wav files so using Christophs model these would be on velocity 1-24, 25-50,50-75,75-100, 100-127
To get the correct one to play my on note will need to modify the inbound velocity to fit in one of these ranges - and as soon as I modify the velocity in a script then the volume control using velocity fails.