For Those of Us Considering Jumping from Kontakt to HISE

EvilDragon

KSP Wizard
Right, virtual analog oscillators you say. If there's no attempt to deal with anti-aliasing, though, then it sounds pretty shit, since there would be aliasing artifacts everywhere very easily. Naively coded oscillators alias like hell and sound bad. So there better be some attempts to do anti-aliasing, be it band-limiting or something else. :)
 

Lindon

VST/AU Developer
Right, virtual analog oscillators you say. If there's no attempt to deal with anti-aliasing, though, then it sounds pretty shit, since there would be aliasing artifacts everywhere very easily. Naively coded oscillators alias like hell and sound bad. So there better be some attempts to do anti-aliasing, be it band-limiting or something else. :)
yes the point Im trying to make here is that its NOT using wave file data.
 

chrisboy

Active Member
The answer whether the waveform generator uses a naive implementation or not can be found in the source code :):

C++:
#define NAIVE 0
#define USE_MARTIN_FINKE_POLY_BLEP_ALGORITHM 1
If you change this compiler flag and build HISE, you'll get the beautiful sound of non-aliased waveforms in all their glory...
 
OP
Mike Greene

Mike Greene

Senior Member
Moderator
Okay, so I started installing HISE and ... well, I think I now know why there are so few developers adopting it. :grin:

This installation process, even with David's video, is way over my head. Download this, download that, create an Apple ID so I can get XCode, get this Intel stuff which seems to be optional for some reason I don't totally understand, install and delete some IPP thing that I have no idea what that even is, put this into that folder, replace this file with that file unless x, y or z ... sure, I could probably get it to work if I spent some time on this, but given that HISE is an idea I'm toying with, as opposed to "definitely need to do this," I'm gonna wait until somebody more experienced with this stuff comes into my studio and can do this for me.

HISE isn't my baby, so it's a bit presumptuous of me to start spouting advice, especially since I don't know what Chrostoph's goals actually are. But here goes anyway. Here's what I would do:

Create a single download option. Make it so that all we have to do is click one zip file for OSX or one zip file for Windows, open it, boom. There's HISE, ready to start playing with.

Now, I know what you're thinking - Obviously, HISE and its various elements are constantly evolving, so maintaining a single download would be an enormous PIA. But what I'm suggesting doesn't need to be updated. Just pick a day, put it together, and that's the "HISE for Dummies" version. Maybe it only gets updated once a year. I'm fine with that. I don't need the newest features, I don't even need all the features, I just want to start checking it out.

Then after I play with it and start dropping in some samples and maybe do some basic scripting and getting a feel for it, then I go back and download all that other stuff, half of which I'm guessing is unnecessary until I get serious anyway.

That's what I would do. Because as much of a doofus as I probably sound like, most Kontakt developers are just like me. Many of us are decent KSP coders, but almost none of us are Computer Science grads who are comfortable assembling stuff we've never dealt with before. So to make HISE appealing, there needs to be an easier point of entry.

Maybe that's not possible, but it would be nice.
 

d.healey

Music Monkey
This process is definitely daunting to someone new to dealing with compiling source code. I struggled at the beginning too, and there was a lot less help available. The community at that time was much smaller.

Once you've built a project in HISE you'll want to export it to one of the various plugin formats. To do that you will need a build system (xcode, vs, g++, etc.) set up correctly. This is true even if you are using a pre-built click and go version of HISE (such versions are already available from the HISE website but they are way out of date so don't use them).

To successfully build HISE yourself from source you also need this build system setup. So it's best to get over this hurdle at the beginning, afterwards it's a breeze to update to the latest version, and it's (usually) 1 click to export your plugins.

I could send you the latest version as a single binary, but that won't help you when you want to export your plugins.

I can walk through the build process on Skype with you if you like.
 
OP
Mike Greene

Mike Greene

Senior Member
Moderator
Thanks David. Even though it may be old, I downloaded that download-and-go version and at least now I can see some basics. Fun to finally get started.

It looks like there's no manual, though? I know there are video tutorials and a forum, but that's really time consuming, especially since as I get started, there are a ton of questions, like how do I get my MIDI keyboard to work? (I see a preferences tab, but that seems to be an authorizing thing, rather than settings.) Or how to open a "map" so I can put in samples. (Figured it out - Click the + at the top next to "Master Chain," then select "Sampler." Apparently Samplers are like groups in Kontakt and you can have a whole bunch of them.) Or how do I move samples once they already in place? (Figured it out - On a Mac, use the Option key to enable the Hand icon.)

EDIT - I figured out how to enable my MIDI keyboard - Click the Gears at the upper right. This opens up settings but starts with "Project Settings," which fills the whole window and gave me the impression that was all it did.
 
Last edited:

d.healey

Music Monkey
Manual is here - https://docs.hise.audio/ - some images are missing at the moment but most of it's there.

In the latest versions of HISE the manual is built in, accessed via F1. The system used to create the in-built documentation can also be used to create built in documentation for your own projects. The docs can link to a server so your users will always have the latest version.

There is more documentation here in the form of blog posts.

HISE samplers are a little different to Kontakt's groups. A sampler is almost like a whole instance of Kontakt. It has groups, an amplifier section (gain in HISE), a pitch section, fx, scripts, etc. One really nice thing is you don't need to use the groups for multiple mic positions like in Kontakt. There is also dynamic crossfading built in.

You can have multiple samplers in your project, although for performance reasons you should aim to have as few as possible (as a rule of thumb no more than 16 but there are exceptions).

HISE offers multiple ways to layout your instruments and you'll probably take a different approach for each project depending on its needs. For example with Sofia Woodwinds I use one sampler per articulation, and one sampler for release triggers. With Michaela's Harp I think I use just one sampler and the articulations are separated into groups.
 
Last edited:
OP
Mike Greene

Mike Greene

Senior Member
Moderator
Thanks David, that's a good manual.

HISE samplers are a little different to Kontakt's groups. A sampler is almost like a whole instance of Kontakt. It has groups, an amplifier section (gain in HISE), a pitch section, fx, scripts, etc. One really nice thing is you don't need to use the groups for multiple mic positions like in Kontakt. There is also dynamic crossfading built in.
This sounds really interesting, and I'm intrigued by the possibilities.

Your HISE Scripting 101 video is really excellent. (I'll add that, as well as a couple other things, into my OP so that this info can be more easily accessible.) If you're in the mood, here's an idea for another video that I think would be helpful for those of us starting out:

I could use a video where you create a quickie instrument from scratch which shows how the "Samplers" work. Nothing fancy, even one sample per "Sampler" is fine, since all of us already know how to drop more than one sample onto the map, and we can figure out what the pitch/velocity parameters mean. (I would make a video that assumes the viewer is already very familiar with samplers.)

That part is pretty straightforward, but in a Kontakt instrument, I'll often need more than a hundred groups, so since HISE is limited to 16 "Samplers", it would be great if you could show how that is achieved. Again, nothing fancy, just a quick-and-dirty example of how to get multiple articulations (2 is fine ... I can figure out from there how to do 3 ;) ) and mic positions (again, just 2 is fine) into a single Sampler.

I assume scripting has to be involved to make that work, so it would be great if you can show a rudimentary example of that, including showing where we put that script (or those scripts.) Mind you, I don't think you need to explain the code itself, since that would be a video in itself. Instead, just show the code (and where it goes) with maybe an an overview explanation, and then we can go through it on our own.

Also, since almost anyone who watches this would be coming from Kontakt, I would actually say, "Groups in Kontakt are the same as 'Samplers' in HISE, but with these differences..." That would be helpful for any other naming differences as well, since like I said, most of us are coming from Kontakt, so it makes it easier to get our footing.
 

d.healey

Music Monkey
I have a video about changing articulations, but it's quite in-depth. I'll look into doing a simpler quick-start type video soon. And I'll make a separate video for multi-mic stuff.
 
OP
Mike Greene

Mike Greene

Senior Member
Moderator
I have a video about changing articulations, but it's quite in-depth. I'll look into doing a simpler quick-start type video soon. And I'll make a separate video for multi-mic stuff.
Thanks David. That video shows what I needed to know (for any other Kontakt people, you see what you need to know in the first three minutes), and I'm now up and running, so no rush on my account regarding the quick start video. (Although if you have time, I think it's still worth pursuing.)
 

Lindon

VST/AU Developer
Since I was playing with HISE anyway, I went ahead and made a Quickstart video where I show how to get started and how to put samples into groups.
Nice Mike,

A couple of points...

The way you *first* put your samples in the <Project Name>/Samples folder before you mapped them in your Sampler is correct. More than that its pretty much the only way you will get to produce sample maps that you can easily compress and ship with your product. So it might be worth mentioning that in all cases when you are doing the sort of sample mapping you have in your video - FIRST you need to copy the wav files into the project folder(as you have done) - if you dont (and you drag them from some folder OUTSIDE your project folder structure) you are very very likely to get problems down the road.

Second "Samplers are like groups in Kontakt" - yeah I can see how you'd think that - I did at the start - but as Dave has said Samplers are WAAAAAY more powerful than Kontakt Groups - and they are (in essence) mini-kontakts all on their own - in the same way that you can have heaps of groups inside Kontakt, and a scripting space, you can have heaps of groups and a scripting space inside EACH sampler. The restriction of 16 Samplers - is in effect a limit that says "only 16 copies of Kontakt inside your instrument"
 

d.healey

Music Monkey
The restriction of 16 Samplers
You can add more than 16 samplers. I just advise against it because it's going to eat up system resources and it is generally better to have as few samplers as possible.

If you're building a more complex library that might need extra samplers for only some specific patches then there are tricks to reduce the amount of overhead of the unused samplers. This applies even if your project only has two samplers but one is unused.
 

EvilDragon

KSP Wizard
It's basically like NKIs then, in a way. Since you can have up to 64 of them in a Kontakt rack. That's about as close of an analogy as it can get, no?


Are there any (practical, not theoretical) limits to group/zone count per sampler in HISE?
 

d.healey

Music Monkey
It's basically like NKIs then, in a way. Since you can have up to 64 of them in a Kontakt rack. That's about as close of an analogy as it can get, no?
This is a good comparison. Samplers don't have a direct equivalent in Kontakt, they have features of both groups and NKIs but are not exactly either one.

Are there any (practical, not theoretical) limits to group/zone count per sampler in HISE?
Not that I've encountered. I know of a developer who is building a HISE project that uses hundreds of groups and tens of thousands of samples. They hit some issues last year but Christoph fixed the underlying cause and it seems their project is moving along just fine now.

One thing that seems to be missing is the ability to activate multiple groups at once in the same way we can in Kontakt. So far this hasn't been an issue for me because of the way instruments are generally organised in HISE, but I can see future applications where this would be helpful. I'll have to nag Christoph (or perhaps there's a way to do it already that I don't know).

Update: I just found a way to enable multiple groups. I don't like it though and it requires manually handling of note ons/offs

Code:
    for (i = 1; i < NUM_GROUPS+1; i++)
    {
        Sampler1.setActiveGroup(i);
        Synth.playNote(Message.getNoteNumber(), Message.getVelocity());
    }
 
Last edited:
OP
Mike Greene

Mike Greene

Senior Member
Moderator
The way you *first* put your samples in the <Project Name>/Samples folder before you mapped them in your Sampler is correct. More than that its pretty much the only way you will get to produce sample maps that you can easily compress and ship with your product. So it might be worth mentioning that in all cases when you are doing the sort of sample mapping you have in your video - FIRST you need to copy the wav files into the project folder(as you have done) - if you dont (and you drag them from some folder OUTSIDE your project folder structure) you are very very likely to get problems down the road.
That makes sense. Just to clarify, is it still okay to drag samples in from the folder on my desktop, rather than using the files section on the left sidebar of the HISE interface, as long as I'm dragging from the Samples folder that's inside the Project folder on my desktop?

Second "Samplers are like groups in Kontakt" - yeah I can see how you'd think that - I did at the start - but as Dave has said Samplers are WAAAAAY more powerful than Kontakt Groups - and they are (in essence) mini-kontakts all on their own - in the same way that you can have heaps of groups inside Kontakt, and a scripting space, you can have heaps of groups and a scripting space inside EACH sampler. The restriction of 16 Samplers - is in effect a limit that says "only 16 copies of Kontakt inside your instrument"
That's becoming clearer as I keep playing around with this, and I'm seeing that HISE is indeed really powerful.

The one group issue I'm concerned about is that if I use the Round Robins to create all the necessary "groups" I'll need, can those RR "groups" each have their own volumes, envelopes and other settings? I'm assuming that would be accomplished through scripting (e.g. if RR Group 4, use Envelope 2 and mute all other envelopes)?

One other question - One thing that looks really appealing is that it appears that we can apply individual scripts to any of the elements of the instrument. Obviously that's nice that we can have that control, but what makes that even more appealing (to me, at least) is that these scripts can be individually placed where I use them, rather than in a giant master script. (The smaller I can make the master script, the better.)

So my question is - Is there a PGS equivalent so that these individual scripts can know what the master script is doing? For instance, in my wordbuilder example, can the master script tell an envelope script, "Hey, we're starting with an "s" instead of a "t", so make the Attack longer."?