Loading a sample instrument into Kontakt 5?
Man the vst~ object feels like I'm in a time machine. So archaic in implementation and setup.
What I want to do is load Kontakt 5, and then load a full instrument with samples (.nki).
After some futzing I figured out how to load up Kontakt. I tried sending it 'presetnames' and 'pgnames' in order to find out the preset names from max-ville but that does nothing. I also tried just sending it the preset name I want "Default (Full Range)", and that gave me no joy either. I don't know if I need to put in a folder structure in with the patch name or what.
Here's my 'nothing happening yet' patch:
I think the vst object can only load fxps or fxbs.... AFAIK that is a limitation of vst, not max. So you can load objects into kontakt from max only after saving them as fxps first. This does work, though. So you can save your frequently used patches as fxps and load them from a umenu in max.
Otherwise, you'll just have to open the kontakt window and do it from there. The vst spec is not that deep--it was designed for virtual stompboxes after all....
Woodslanding is correct. But the workaround is as simple as loading the .nki file, and then sending the vst~ object a "write" command, saving that as an .fxb file. Then you can simply load the .fxb when you load max, and it will load whatever you had in Kontakt when you saved it. It could be a .nki file or anything else for that matter.
Is .fxb what vst~ saves presets as?
So I just load what I want, then send "write whatever" and it will create a preset where the max patch is, or somewhere else on the system?
Then I just send "read whatever" thereafter and it will load the samples and everything?
Does the vst~ object queue messages? Like if I send "plug "Kontakt 5", read whatever" will it load kontakt and then the preset? Or does the plug need to be loaded before it will read the message?
Just trying to think of the most efficient way to use it, as I won't be using Kontakt all the time, only when I'm using a MIDI keyboard, so I don't want to load it otherwise.
Rodrigo. Max saves .fxb or .fxp (I usually use .fxp, which is for "preset" instead of .fxb, which is a "bank"). It is Max's native format for saving vst presets. The best way to load the preset if you want to default to that preset is [~vst "Kontakt 5" yourPresetName.fxp]. Then, when Max loads the patch, it will load that preset automatically. If you want to load it after the patch has loaded, you can load the plugin, then load the preset after the plug has loaded.
Also, don't forget that you can disable the ~vst object, so you can load Kontakt and have it ready in the patch, but have it disabled until you need it.
So you pick what you want it to save as or is it contextual?
Ideally I'd want to send it one message and have it load the plugin and the preset. I'm distributing my patch and not everyone will have or use kontakt so I don't want it to open to that by default (even though it will be that way for me).
I can't recall offhand whether vst~ bangs on plug load complete. If it doesn't, then you don't really have a sure way of knowing when to issue the "read" message to load the plugin.
If that's the case that would mean there's no (reliable) way to dynamically loud a vst and a preset, which is a bit of a bummer.
no, just use a t module and send the load message first. so far that's worked for me. trigger allows the rightmost operation to finish before starting the next one...
Good to know.
I didn't know 'trigger' waiting for loading type things too, I thought it was logic/bang paths.
Trigger doesn't wait. Unfortunately Kontakt takes quite a long time to load, even if there's no preset/bank that you're loading into it (Thanks NI -- almost all your plugs take forever to load!)
@Lowenstern
The trigger object behaves exactly as you would want as long as you send the messages to load presets and the like to vst~ at low priority.
In other words - it does wait.If you have an example showing otherwise please share it with us.
-A
As in using 'deferlow'?
Yeah that sort of thing works - you can also put the deferlow just after the button.
Upon looking at Kontakt again, I think Micheal Lowenstern and I are both correct.
:)
You can use a deferlowed trigger to load a plug and an .fxp - but the same trigger will not work to play a note. It seems that Kontakt really does want to keep doing stuff after it has returned to the vst~ object.
-A
As long as it can load the plug/fxp then that's fine. After that I can manually send it regular MIDI data.
hey, I just post this patch because I fear it can be responsible for some crash, then i saw this thread.
so, i don't guarantee it's 100% crash-free, but have a look at it, maybe it could help
PS with this one i sometimes get: vst~: MAX_EVENTS_PER_BLOCK exceeded
don't know if that could be the problem of the crash, though...
btw, here it is, hope this helps a bit
Here's my 'no frills' version.
So in terms of editing/mapping parameters, it looks like it spits out oodles of #001, #002 etc...
How does controlling a parameter work with Kontakt?
Mapping parameters happens in Kontakt. Here's how you do it.
You will need, in Kontakt, to go to the "Auto" tab in the left hand side of the plug window. Then simply drag the "host parameter" number on top of whatever parameter you want to control in the instrument edit window on the right side.
So, for example, if you want to control master tuning, drag "#002" directly over the "Tune" knob.
Then, in Max, you would send a [3 $1] message to vst~ (note the offset -- you don't sent [2 $1] to Kontakt), and you're all set.
And that gets saved in the fxp?
Yup, sure does. Groovy tubey.
So how do you map things that you can't drag to? Like sustain pedal, and pitch/modulation. Those don't have a GUI element to drag to. Or does that just go into vst~ without needing to be mapped? I could do it with 'sustain' but this VI has sustain pedal noises, and without going through the plugin I won't get those sounds.
Those can be sent with the Midievent message, but not Midievent 144 (which is note/velocity). I believe it's midievent 176. So sustain pedal would be midievent 176 64 127/0 for pedal on/off (if I remember correctly 64 is the midi controller number for sustain pedal, but its been a while)
That's it. 'midievent 176 64 $1'
I never would have figured that out from the help file or reference, so thanks for that!
The bummer is now with the vst in my actual patch, it's quite crunchy, so I've had to crank up my I/O settings to 256/128 (up from 128/64). Gonna test a full restart in case Kontakt/max don't clear up sample RAM fully (I've been opening/closing loading/reloading it a ton to test things).
Yeah performance of Kontakt hosted in Max is not great. I get lots of crunching and only have one instrument loaded. My actual patch's CPU % is right around 20% without Kontakt loaded, so it's not way up there.
I'd like to add additional instruments so I can switch between them but it's looking like that might add even more crunchiness.
Any tips/thoughts on getting things running smoothly (as smooth as a Mainstage/Logic in terms of VIs loaded)
I use a lot of instruments in Kontakt and as far no crunching...
When in the past I had some it was just a note ON/OFF handling, especially on repeated ones... did you try with [makenote @repeatmode 2]?
I'm just echoing out the midiin from a midi keyboard. I've not looked through the data coming in for repeats but the voice count in kontakt isn't getting too high (20-30 on average, more with heavy pedalling). Even just doing a cluster out of nowhere seems like it crunches a tiny bit.
CPU % with kontakt loaded runs around 40%, so that's not super high either.
Hi,
Can someone tell me how to save the .fxp file instead of .fxb?
When I use the "write" function it saves the .fxb file, which, apparently will not read using the "read" command. It loads fine when I do it manually, but not when issuing the "read" command followed by a valid pathname.
Thank you!
p.
I'm sending it a "write whatever.fpx" message, then a "read whatever.fpx" message to recall it. No pathname involved.
Excellent! That worked. It didn't even occur to me to simply write it WITH the .fxp suffix instead of letting Max write it with suffix appropriate to what it was saving.
In any case: this works. Thank you for the hint!
p.
No problem. I actually did the same thing as you first and wondered why it wasn't working.
After figuring out how to implement stuff, I still stand by my original thought that using the vst object is super unintuitive!
I agree with that assessment ;-)
p.