Hi, been a hot minute since you’ve seen me hasn’t it?
Well, today I have a big announcement to make, I’m releasing ekphore, an open source sampler compatible with Kontakt instruments.
Given the website does a good job of its own at explaining what it is and why, I will not be reiterating here, but there is a few things I would like to mention regarding ekphore’s goals, why it came to fruition and where to go from here.

ekphore's logo
Why make ekphore
As mentioned in ekphore’s website, I simply could not compose with my day-to-day setup for a long time which was a big annoyance, but something that, until the start of this year, I never wanted to waste a huge amount of time fixing.
But then, Native Instruments announced bankruptcy earlier this year. This was… not ideal to say the least: Kontakt is a cornerstone of the music industry and is the kind of software that cannot really be allowed to bitrot in my mind. This wasn’t the only concern I had either: NI started moving to a subscription based model which might mean less and less control over what is essentially, a very fancy and complex WAV player. Between this and the acquisition by inMusic, well known for its, let’s say, less than stellar track record for about everything, I figured an alternative needed to happen. And I guess I had to be the one to do it given nobody did in more than two decades, unfortunately.
Why not an open format/converter instead?
If you know a bit the FOSS music composition scene, you might have heard of sf2 or sfz. The thing is, they’re just not good enough for modern instruments. sfz does not have any kind of scripting language to my knowledge and is purely declarative, making it hard for instrument designers to develop their own instruments, add advanced polyphony and the like. It’s also just not very ergonomic to use.
So then you may think, why not make a new open format? Well, a few reasons. The obvious one:

Sorry, I could not resist (source: xkcd)
But really the main issue is moreso that virtual instrument makers are, in a large majority, paid products in the music industry. It turns out, most of those developers, instrument players, etc actually depend on Kontakt’s DRM as their source of revenue (and/or sold the rights to it) and are unlikely to switch to an open format.
Also, most open instruments just are not very good quality. It takes a long time to sample an instrument, is very tedious and painstaking work and it turns out, not a whole lot of people want to do it and that’s perfectly fine! But it also means less people likely to want to contribute to an open format only.
With that said, thanks to ekphore’s libnki, kontakt file formats are now fully
documented. So, in my mind, Kontakt really is the new open format :)
On legality
To the best of my knowledge, this project is fully legal.
Here’s a few clues that point towards it:
-
ekphore is specifically designed as a player only, aiming to not compete with Kontakt’s market model, selling the writer as a paid product.
-
EU Directive 2009/24/EC protects decompilation, reverse engineering, etc when it comes to interoperability. This is exactly the use case here.
-
I do not infringe any applicable patents.
-
ekphore does not break Kontakt’s DRM and as such does not ship keys by default (even if, technically the free version only runs encrypted instruments so it’s likely that it legally cannot be considered a DRM and I might be able to ship keys).
-
The EULA forbidding reverse engineering is, once again, not applicable to me given EU Directive 2009/24/EC (Article 8, second paragraph)
-
There is jurisprudence defending it: eg Google LLC v. Oracle America, Inc.
On AI assistance
I’ll cut to the chase: I used AI assistance, but it was not vibecoded and contributors to the project will be heavily discouraged from using AI from here on out.
AI assistance was used moreso out of necessity rather than comfort: Kontakt’s scope is unbelievably huge and I simply do not have a lot of free time, being in the middle of a PhD and all that. Doing this project without AI assistance would have taken me years and been unbelievably complex. I’m not pulling this out of nowhere either: I am a lead developer of PCSX2 and have been programming for close to two decades at this point. I know what I am doing and I’m not overexaggerating: implementing faithfully 120 effects/filters, testing their reference renders, plus 3 separate UI languages plus a custom programming language plus about 10 file formats parser is a scope creep like you rarely see. A single one of this project usually take a normal person years…
With that said, the goal of ekphore is to have a maintainable reference implementation of Kontakt in the long run and for this reason I will be discouraging AI use for future contributors, both in the hope that the code will actually continue to make sense and that I will not receive a flood of PRs of AI hallucinating that it fixed one instrument while breaking 90% of the library.
-
Slop: AI code quality is usually seen as below par and, surprise here, I agree! This is the main reason why I will be discouraging the use of AI in the future from the project. To get around that personally, I directed most of the reverse engineering work manually and drafted the architecture and base code for most effects, the overall engine, effects bus layout, ui design, plugins and library design. I did not just say “hey claude do this” but rather “hey I reimplemented this effect here can you automatically fix render differences you find”.
-
Legal: I’ve seen a few arguments about people saying that AIs being trained on software which is not open source makes it likely to make code unusable legally for open source. I vehemently disagree with this. First, no jurisprudence anywhere in the world has landed a case even close to this one and second, on an ethical level, I do not see how a prediction model trained on billions of billions of inputs is even remotely close to copying closed source code. AIs are not deterministic by the way their token prediction algorithm works and the chance of getting an exact snippet of proprietary code is almost nil. While it can be shown to happen if you copy the first 3 lines, eg, in an autocompletion model, 1. I did not autocomplete proprietary code 2. I did not use this kind of predictive model and 3. there is simply not a whole lot of proprietary music DSP code out there…
-
Resource usage: another common complain I see online is that the resource usage AI occurs is blown out of proportion compared to the community it creates. I disagree with this too but more subtly: for resource usage, if you actually see the actual power cost of an AI user you’ll see that it is quite low when split in large quantities of users. Although I haven’t done the napkin math, I am pretty sure playing a few days of video games would cost more, when put in perspective, than 10hours of AI usage. For this project specifically I did not use months of LLMs, only a few days of them in total and most of the work came from me. Now, I actually agree with this argument somewhat if people produce unmaintainable slop that nobody will ever look at or maintain. In this case, yes, it is a waste of electricity and energy, but I went to great lengths so that this project does not end up this way.
All in all, I see AI as a tool and I think both sides (anti and pro-AI) are too extreme. I’ve worked on object recognition models myself long before LLMs existed and find the technology interesting, I am moreso saddened by the influx of low quality contributions that is currently flooding open source and that I do find is an issue and that we see a lot over at PCSX2 for example.
But that’s the thing, you can’t just say “hey we ban X because of reasons”. It doesn’t work. Morons do not read and/or do not care. We can find all the arguments we want to make us feel better but it doesn’t solve the core issue at the end of the day, and there isn’t really a fix besides wasting time on it I am afraid.
As a last note, I honestly find it sad how the community is fighting against each others on AI. Instead of fighting between each others and starting the equivalent of a culture war, we should fight together for common goals we actually care about. Whether software or political, we (usually, fascists excluded) want to make the world better for everybody. Let’s work towards that and not give space to the morons instead of starting the Xth holy infighting war.
Please understand.
And now that the boring blurb is done, enjoy the release and have fun making music! I will probably be busy myself for about a month or two to meet a deadline for my PhD, but I will try to post the promised blog posts in the announcement when I have the time!