At the moment, i make a lot of xrni instuments with all the samples i have, some with more than 50 samples & it’s very anoying to set the base note for every sample.
By default, the Base Note are the same as the first sample position but if you drag the sample for some other note, the Base Note stay as it was.
For large samples Instrument, you must manually adjust every Base Note. It would be cool if we could have a menu with some options like :
-“fix Base Note on first note for selected samples”
-“fix Base Note on first note for all samples”
-“fix Base Note on last note for selected samples”
-“fix Base Note on last note for all samples”
Drumkit button has some limitation, you can’t have one sample every 4 notes for exemple, but just one sample per key or one sample every white keys.
a-Some more complex instrument need one sample for c-2 to f-2 (6 notes), then one for f#-2 & g-2 (2 notes), then another one for g#-2 to b2 (4 notes), etc…
b-Then, you have a lot of instruments with 2 or 3 samples per octave (every 3 notes, or every 4 notes).
The ability to define a sort of edit step for drumkit (not just every white keys, but every x notes) could be useful & resolve partially the problem (case “b”) but a menu like on my post before will be more efficient i think…
I think this would require an automatic keyzone arranger. I think a compromise between manually shifting keys into the keyzone and then allowing a script to fill up the gaps not filled in should do the trick.
This is not quickly built as one also has to encount velocity gaps as well and offer various methods to enclose zones around the basenotes.
Should a zone have the basenote as center value (and if so, are overlaps allowed?), should the basenote be the start of a zone or the end? with this you can then tell how the previous keyzone should extend to the next zone (with or without overlap)
The same trick goes for the velocity levels. The offset velocity value should serve as the center,start or end point including overlap area possibilities.
This is all really scriptable, but it costs quite some time to get this done.
I have done my share fumbling with the keyzone API functions and it also costs some time to get the hang of how assignments exactly work.
You can try scanning mxb’s file import conversion routines as some of his conversion routines do a great deal with this to serve as a good starting point.
Make autoadjusting keyzone relative to a base note parameter (if i undestood correctly what you suggest).
But that seems very complicated for covering all the keyzone configuration you can have to work with.
Will try to see what i can do with Lua…
& Thanx for your advise on mxb file import, i need a base to start so it’s really welcome ^^
Otherwise, i think it cool be useful if the keyzone could adjust by reading the file name of the sample as a large part of instrument has samples with the root note in their names.
After that, an option for
-“extend keyzone to x key(s) before the next keyzone start”
-“extend keyzone to x key(s) after the next keyzone start”
-“extend keyzone to x key(s)”
But that’s not help in case of complex instrument with different keyzone lengh…
More i think of this and more i find parameters to have for covering all the possible case ^^
Not sure how much the import file tool will assist with this to be honest. The general approach in instrument importing was to parse the external file and extract the relevent information into a Lua table. Then iterate over that table initialising the keyzones.
Note that there is not a one-to-one relationship between keyzones and samples, so the order of the samples in the instrument may not be the order of the keyzones.
A script could certainly set the base note to the lower/middle/upper note in each keyzone. (However, what is the middle if it is 4 note span etc.)
A script could also parse any metadata stored in the sample name (which is the same as the filename assuming the sample has not been renamed). i.e. FooSynth_C4.wav could easily be parsed to get the basenote (C4).
If you need any assistance with any scripting regarding this, feel free to get in touch.