by Ronan Macdonald

Mario Krušelj, a.k.a. EvilDragon talks creativity, KONTAKT scripting, and more

One of the world's leading KSP developers shares his background, talks studio processes, and shares advice to all budding scripters.

You can do an awful lot with KONTAKT’s powerful sampling, processing and mixing. But what if you need features that don’t exist already? That’s where KSP (KONTAKT Script Processor) comes in. It’s a programming (or scripting) language running right inside KONTAKT, and developers use it to create everything from realistic instrument legato and bespoke sequencing systems to super-slick graphical interfaces and… well, just about anything else they can dream up.

Mario Krušelj is one of the world’s leading KSP developers, having scripted an impressive roster of over 150 KONTAKT libraries over the last eight years for developers including Hollow Sun, SonokineticVir2Zero-G, and Impact Soundworks. From his earliest work on Cinesamples’ Deep Percussion Beds to such successes as Output’s innovative REV and In Session Audio’s Audio’s Shimmer Shake Strike, Mario’s extraordinary creativity and deft programming chops bring out the best in every instrument in which he has a hand. Under the online pseudonym EvilDragon, he’s also a prominent contributor to several music technology forums, including the Native Instruments KONTAKT board, where he’s tallied well over 10,000 posts, offering advice to fellow KSP wranglers around the world.


How did you first get into music?

I was born into a musical family. My mother sang and my father played a bit of accordion and bisernica (one of Croatia’s national instruments). When I was a baby, my dad played me The Beatles and Queen, which apparently shaped my musical taste later on, because I really loved to listen to Queen in elementary school.

I ended up enrolling in music school in third grade, for a six-year-long piano course, [and] in high school, I started teaching myself guitar.


And the programming, how did you get into that?

From a very early age, I was fascinated with things that make a sound when you push their buttons – TV remotes, dad’s stereo system, you name it – which led to me taking an interest in computers in elementary school and becoming curious about programming. The language that was taught in elementary school computer study classes at the time was LOGO. Poor turtle! All the things I made her do.

That interest in programming led me to college, where I studied Computer Science. In 2009, I stumbled upon KONTAKT and started exploring all the things it could do. Then I saw that scripting was built-in, and the programmer in me got very excited indeed.

Eventually, I figured a lot of stuff out and started doing some scripts for cash. Everything changed, however, when I met Greg from Orange Tree Samples. He hooked me up with my first proper paid job, which ended up being Cinesamples Deep Percussion Beds. After that, other people took note of my work, which is how I ended up scripting some of the first Sonokinetic libraries, and meeting Steve from Hollow Sun – RIP, my friend. Every Hollow Sun library made from that point onward was scripted by yours truly. It all snowballed from there.

So what have been your favourite KONTAKT libraries to work on?

There are so many, but in no particular order: In Session Audio Riff Generation, Hollow Sun Alien Devices (all three of them), Impact Soundworks Celestia, and Vocalisa, Embertone Arcane, and let’s wrap up the list with Wide Blue Sound Orbit/Eclipse. Really, I could include at least 90% of the libraries I’ve worked on. Sure, sometimes you get some tedious projects to work on, but it’s all good in the end.


And what are your favourite KONTAKT libraries that you didn’t work on?

An interesting and very difficult question for a guy with 4TB of sample libraries across his SSDs and hard drives. I really like what Spitfire Audio are doing. The most recent Slate + Ash library that supports Roli’s multidimensional controllers is sweet, too. Eduardo Tarilonte’s libraries for KONTAKT are masterful in every way. And I very much like Orange Tree Samples libraries, although Greg is my friend, so I’m biased there.


What would you say makes KONTAKT the ultimate sampling platform?

KONTAKT’s greatest strengths are its ubiquitousness and, more importantly, its performance and CPU/RAM efficiency compared to most – if not all – other solutions.

So talk us through the process of scripting a KONTAKT library. Do you ever get involved in the recording or sound design of the samples, or is that side of things always done and dusted by the time scripting begins?

No, I’m never involved in the recording process. Sometimes I just have an empty GUI shell without any samples, but that’s not how I like to work, so I try to avoid it as much as possible.

So where does your job begin?

I usually start with graphical assets. I very much dislike working without graphics or with placeholders. I check each and every PNG to make sure the frames are nicely aligned, that the accompanying TXT files are correctly defined (so that we don’t get the infamous ‘dancing knobs’ effect), and that there are no shadows abruptly cut off anywhere – that sort of stuff.

Then it’s UI control positioning time. This is arguably the most painful part of scripting, but you’ve just got to go through it. It’s quite a long-winded process when you have more than a couple hundred controls – in In Session Audio Fluid Harmonics, for example, we had 737 UI controls altogether.

Once everything is positioned, it’s ‘functionality’ time. I usually start with one main GUI refresh function that takes care of any tabbed pages, show/hide stuff, etc., then tie that to respective UI callbacks. Then it’s all about adding functionality to all the other UI controls, which can take time, obviously, depending on how many there are. Then event handling if necessary (note/release callbacks, group allowing, arpeggiators/sequencers, etc.); and lastly, assigning automation IDs and NKS controller pages.


Does the client tell you what features they want and you make it happen, or is it more of a collaborative process?

It’s a mix of both, but it usually ends up being a highly collaborative process. Most often, there’s a brief that covers necessary functionality, then we kick off into brainstorming mode. It can sometimes stray quite far from the original brief, but I can’t recall a single situation where that ended up being a bad thing, from either the developer’s or user’s perspective.

There have been a few cases where my input has completely defined the library, like Hollow Sun Hexxon and vKS-20, where I actually did all the pixel work in the LCD of the GUI and suggested being able to change the LCD backlight colour. I suck at graphic design, but even I can deal with pixels one at a time.


Output REV is one of the biggest, most unusual libraries you’ve scripted. Was that particularly challenging?

Oh, yeah. REV was Output’s first library, and it was quite a wild ride. In hindsight, it wasn’t really that much of a complex behemoth to script, but it was a very long road to completion. It was in production for over a year, and there were three total GUI redesigns during that time. Pretty nerve-wracking. In the end, though, it turned out to be a very cool product, and it really kick-started Output, who are now a pretty well-respected developer. Shout out to Thanos (ex-KONTAKT team) and the rest of the crew.


And what did you learn from developing REV?

That good things can sometimes take a long time to materialise.

What’s the most ambitious KONTAKT library you’ve scripted, and did you manage to make it do everything you wanted it to?

Embertone Arcane was extremely ambitious in the amount of animation that was supposed to happen – the physics of the bouncing balls in that one was a major head-scratcher without floating point variables at the time.

There’s also Red Room Audio’s Palette line of libraries. For those, I adapted to a new workflow, creating multiple smaller scripts like modules – i.e., a controllers section, a microphone mixer section, a settings section, etc. – which are then included in the main script. It was a challenge, but I had a bit of help from my colleague Nabeel at Impact Soundworks. I feel it ended up really good. It’s a great orchestral sketching library.


Do you prefer scripting phrase-based libraries or ‘regular instruments’?

Either is fine with me, really. I will say, though, that since I’m human, I’m not perfect, so scripting true legato instruments is not one of my strong suits. I sort of understand it but it can be so idiosyncratic depending on how the instrument was sampled… it’s a tricky process.

To enable the creation of even more advanced and flexible libraries, what would you like to see added to KONTAKT?

I wish we could have more modulators per group, global modulators, better support for polyphonic aftertouch/MPE, and, of course, scripting improvements like better mangling of images and vector drawing (especially if KONTAKT gets proper HiDPI support at some point). It would be phenomenal if it had a WYSIWYG mode for positioning and editing scripted controls, too. And more effects.

I also wish we could use $EVENT_PAR_0…$EVENT_PAR_3 as modulators within the instrument edit mode. This would be a lifesaver in some scenarios.


Have you taken advantage of KONTAKT’s recently-added Wide mode yet?

Yeah. Riff Generation goes for the full 1000-pixel-wide GUI and uses up most of it – no space wasted on giant logos or gobs of empty space. We also went wide with the Red Room Audio Palette series, and we have a little twist there: a button in the lower-left corner for resizing the GUI to a smaller size for those who don’t want it as wide. Basically, it hides the logo.

Which other KSP developers do you admire, and why? Any who you think are really stretching KONTAKT’s capabilities to the fullest?

Oh, number one has to be Blake Robinson, of Spitfire Audio fame. The man is just insane – in a good way. Even though it doesn’t look like it, Spitfire’s Sandbox and Kickstart engines are really, really intricate inside, and, in a way, really push what KSP can do. It’s basically very adaptable code that can be reused on a bunch of libraries really swiftly, which enabled Spitfire to produce a huge number of libraries per year – something no other developer seems to do. He’s great at programming (ex-Electronic Arts), great at orchestrating and writing his own stuff, and just a great guy to hang out with.

Place number two (I hope he doesn’t mind) goes to Greg Schlaepfer of Orange Tree Samples. He’s the main reason I started this whole thing with KONTAKT scripting, and for that I’m forever thankful to him. He does some interesting tricks in his scripting, like modelling picking hand position in his guitar libraries.

I’m also friends with Ken Black of Sonokinetic and Paolo Ingraito of FluffyAudio. They do great stuff in their respective companies.

Last, but absolutely not the least, my good friend Nabeel Ansari of Impact Soundworks. He’s a young guy with a really sharp brain, very methodical in his approach. We often do stuff together as part of ISW. He’s the one to watch.


What advice would you give the newcomer to KONTAKT scripting?

First and foremost: read the documentation. Try stuff and don’t be afraid to break things. Don’t be afraid to fail, keep trying, and if all else fails, take it up to the forums, or hire somebody else to do your bidding.

Scripting is absolutely not for everyone. Although it can be learned, it will come much more naturally to highly lateral thinking-oriented brains. That’s not intended as discouragement – it’s just a fact of life.


Let’s get off the topic of KONTAKT scripting. What’s your music-making setup look like?

Lots of software, but the staples are Reaper, KONTAKT, u-he, Korg, Waldorf, TAL and Toontrack.

As for hardware: RME UFX+ (with Ferrofish A32 hooked up via MADI to provide extra inputs for other racked synths); Equator D5mkII speakers; Korg TR-Rack, N1R and X5DR; Kawai K5000R; Roland JD-990 and MKS-70; Waldorf Microwave I, II and Blofeld; Audiothingies Micromonsta; Mutable Instruments Ambika. My master controller is the Kurzweil PC3K8, but I also have the Native Instruments KOMPLETE KONTROL S49, which I use to test NKS integration of KONTAKT libraries while developing. And, of course, the KORE 2 controller and software. Never forgotten over here – I’m just happy it’s still ticking like a clock under Windows 10.


You mentioned growing up with Queen. Are you still a fan, and if so, what do you think of The Grange, Spitfire Audio’s artist drum library for KONTAKT, capturing the sounds and groove of Queen drummer Roger Taylor (alongside Red Hot Chili Peppers’ Chad Smith and Brit session legend Andy Gangadeen)?

Still a fan of Queen, yes. I don’t own The Grange, but it’s totally a cool idea, and I’m really fond of Spitfire’s approach of capturing the idiosyncrasies of each drummer. For example, Roger Taylor doesn’t just hit a crash cymbal – he always crashes it along with a kick drum. Like, literally always. I read a lot of people bemoaned that approach in the name of greater flexibility, and while I’m always pro-flexibility, since I consider myself a power user, in this case, I really disagree with them. It’s Roger fucking Taylor! You don’t tell him what and how to play –, you get what he plays in the way he plays, and you use it in the context appropriate for the style he plays with. End of discussion.


How much time do you spend on your own music? And what kind of music do you make?

Honestly, not much or at all, unfortunately. When I do, though, it’s either metal or just messing around with synths. I’m really fond of ambient electronica and absolutely not a fan of EDM, techno, or dubstep.


Where does your online handle, EvilDragon, come from?

I’ve always had a fondness for dragons – they’re just so cool, but also, in most cases, evil. Since I think of myself as a rather benevolent and easy-going person, why not mess with people’s perception a bit and defy their expectations? There have been many cases where people ended up scratching their head at this supposedly ‘evil dragon’ helping them out time and time again. It’s all about perception. Online aliases are supposed to be fun but also memorable, I think, and it looks like mine succeeded.


Finally, you’ve recently become a dad. Congratulations! How are you finding fatherhood?

Yes, thank you! I became a father to our son in November last year. All I can say is that there are no boring days when you have a baby. It does mess with your usual daily routine, but you’ve just got to adapt – there’s no other way. I hope he’ll take interest in music in one way or another, but only time will tell.

Related articles