Tonverk Tool elmconv - EXS24/SFZ to .elmulti (Multi-Sample) Converter

Hello everyone! This is my first post here.

I’ve created a tool that converts EXS24/SFZ instruments to Tonverk’s multi-sample format (.elmulti) and wanted to share it with you.
It runs on Mac, Windows, and Linux - anywhere python3 and ffmpeg are available.
Since elmulti supports sample loops with crossfade, instruments created with Logic Pro’s Auto Sampler can be loaded directly into Tonverk!

Tonverk operates at 48kHz, so using the -R flag to resample will give you better results.
The -O flag fine-tunes Loop-Start/End points to avoid discontinuities in the waveform.
Please check the README for other options and limitations.
The repository also includes reverse-engineered .elmulti format specifications.

GitHub:

GUI version is now available! See: tonverk-elmulti-converter/README-GUI.md at main · asatamax/tonverk-elmulti-converter · GitHub

Feedback and issues are very welcome!
I hope this makes your multi-sample workflow a little easier.

Happy Tonverk :sparkling_heart:

31 Likes

Hi, thanks so much for the utility!
I just tried the tool, but I get the “FAILED TO LOAD INSTRUMENT MULTIPLAYER SAMPLE ERROR” error, even though I can hear the preview in the multiplayer instruments list.
I can’t figure out why; everything seems fine.
For the conversion, I ran the suggested command: python3 elmconv.py MyInstrument.exs output/ -R -O, which ran successfully without errors.
Please note that the essential version of FFMPEG doesn’t work; you need to download the full version.
For this test, I used a JV1010 sf2 with 144 sounds, which I converted to sfz with ConvertWithMoss and finally to elmulti with your tool.

Same error here, only with a multisampled instrument from Pianoteq vst

hello thanks for the tool it’s seems to be another invaluable tool to take advantage of the many tonverk perks.
note that there’s actually a regression in the latest os 1.2.0 that prevent loading some files and the playback of some files previously loaded with a project started on 1.10 from my side ; i created a support ticket to elektron and uploaded all my files ( samples + project + diagnoctic file created on tonverk) and i’m waiting for their answer. so it may be not the app that’s malfunctionning

Thank you for trying the tool and for your detailed report!

Regarding the FFMPEG essential version issue - that’s very helpful information.
I’ve added a note about this to the README in v1.0.1.

I’ve experienced similar issues in my testing where some converted files didn’t
work correctly on Tonverk, even though the WAV files themselves appeared correct
in Wavelab. This could be due to unknown Tonverk behavior, edge cases in my tool
(especially with large instruments like 144 samples), or possibly the regression
issue in Tonverk OS 1.2.0 mentioned in this thread.

If you happen to have the converted files handy (.elmulti and a few WAV samples),
feel free to share them here or on GitHub - it might help identify the cause:

Thanks again for the feedback!

1 Like

Sorry, I wasn’t clear, the sf2 file contained 144 distinct sounds, not just one with 144 samples.

Agogo.7z (799.1 KB)

I have already deleted the original ones, but I reconverted this one that I am attaching, from the sfz file that I used in the first instance anyway.

As an improvement suggestion: since there is still no way to catalog them or assign a tag or distinguish them from the factory or directly sampled ones, it would be handy to be able to rename the processed files with a prefix like “JV1010 - Agogo”, if we take into consideration the attached example.

In any case, from what I heard in the preview, aside from the loading error, the loop points also seem correct. I don’t hear any problems, except for the possibility of loading them into the track :smiley:

1 Like

Thanks irro94 for the bug report and for sharing Agogo!

I’ve identified and fixed the issue in v1.0.2. The problem was caused by some SF2→SFZ converters outputting end values using exclusive convention (end=sample_count) instead of SFZ’s inclusive specification (end=sample_count-1). This caused Tonverk to fail loading due to out-of-bounds sample positions.

Fix details:

  • trim-end: Now automatically omitted when out of bounds (file uses full length anyway)
  • loop-end: Clamped to valid range with warning message

To update, run git pull in yourelmconv directory, or download the latest release:

Regarding your suggestion about prefixing filenames (e.g., “JV1010 - Agogo”): that’s a great idea for organizing converted instruments! I’ll consider adding a --prefix option in a future update.

Thanks again for taking the time to report this issue and providing the test files - your feedback helped make elmconv better for everyone!

2 Likes

I just converted about 400 multisamples from various SF2 to SFZ, and everything seems perfect so far. No errors, it loads correctly!
I’ll test the results thoroughly later, but for now, I’m really happy.
Thanks again @Asatamax for this fantastic tool.

To cover the naming issue for now, if you use ConvertWithMoss, there’s a function that allows you to include the prefix with the source file name. With Bulk File Rename, I inserted the suffix I wanted, thus achieving what I suggested above. The only drawback is that if the file name contains the patch name, it will be repeated twice. For me, this isn’t essential and doesn’t seem to bother Tonverk.

1 Like

Forgive the ignorance – does this tool have a GUI or is it CLI only?

Hi everyone! Two updates since my last post:

What’s New in v1.0.3 & v1.0.4

v1.0.3:

  • –prefix option - Add prefix to instrument names and filenames (e.g., --prefix "JV1010 - ")
  • –normalize / -N option - Peak normalize WAV files to 0dB (or custom level)
  • Name length validation to avoid truncation on Tonverk display

v1.0.4:

  • 48kHz resampling is now ON by default - No more -R flag needed!
  • Added --no-resample for those who want to keep original sample rate

Quick Start (simplified!)

  • Just this - automatically resamples to 48kHz for Tonverk
    python3 elmconv.py MyInstrument.exs output/

Full changelog and docs: GitHub - asatamax/tonverk-elmulti-converter: Convert EXS24/SFZ instruments to Elektron Tonverk .elmulti format

Thanks for the suggestion! --prefix is now available in v1.0.3+

CLI only at the moment – no GUI planned yet, but I’m open to contributions if someone wants to build one! Basic usage is:
python3 elmconv.py input.exs output/

2 Likes

I wish I had the knowledge to help here :(.

Anyways, thank you for the time you put into this!

2 Likes

Woaw, this is clearly everything I’ve wanted for months. I have a ton of Sample From Mars SFZ files just waiting to be converted. However, I absolutely don’t understand anything since I’m not a programmer at all lol. Is there any interface/UI/software planned to allow noobs like me to use your software? At the very least, a video tutorial?

Thanks for your reply and for your work.

1 Like

Happy New Year, everyone :tada:

I’ve developed a GUI for the tool and it’s now available. You can download it here: tonverk-elmulti-converter/README-GUI.md at main · asatamax/tonverk-elmulti-converter · GitHub

Please note that ffmpeg installation is still required - if you haven’t installed it yet, please follow the guide in the README.

Unfortunately, I don’t have a Windows environment to test on, but it should work as expected. If you encounter any issues, please let me know!

Thanks for your interest in a GUI! I hope this makes the tool more accessible.

10 Likes

you’re a living god, i test it tomorrow !!!

1 Like

first of all, thank you for doing this.
i wanted to give you the following feedback:
i have converted 2 autosampled(logicEXS) pianoVSTs with the non GUIversion. after i found out how to install homebrew, ffmpeg and python it actually worked without problems and it also loaded fine on the TV.
but when i play it on the TV what happens is, that on some notes it plays back not normally but very silently, maybe the sample doesnt trigger at the very beginning so the attack is missing - that would be my guess from the sound, could be volume or something else. the feeling is that its randomly skipping notes.
i’ve also tried the GUIversion now, same result.
it definitely happens while converting with this tool, the EXS in logic is fine, and when i convert with the EXS2SFZ-App this is not a problem (but with that i still have the 41khzAIF-SFZ file and not the native 48khz-elmulti of course)
hope this helps,
happy tonverk to you! :wink:

2 Likes

Thanks for the detailed feedback!

I’ll need the EXS file to investigate this issue - could you share it here or via DM? Without it, I can’t determine what’s causing the problem.

One thing to note: Tonverk doesn’t support multi-samples with multiple layers triggering simultaneously. If your instrument uses velocity layers or round-robin samples that play together, that could explain the behavior you’re experiencing.

v1.1.3 released - Sample Thinning feature

While converting Samples From MARS libraries, I noticed many instruments sample every note chromatically, which is inefficient for Tonverk. In practice, thinning out samples doesn’t significantly affect the sound quality.

So I’ve added a sample thinning feature that lets you reduce sample count by keeping every Nth pitch:

# Thin samples: keep 1 of every 3 (chromatic → C, D#, F#, A)
python3 elmconv.py MyInstrument.exs output/ --thin 3

# Preview thinning without converting
python3 elmconv.py MyInstrument.exs output/ --thin-preview 3

# Thin with safety limit (max 6 semitone interval)
python3 elmconv.py MyInstrument.exs output/ --thin 3 --thin-max-interval 6

This feature is also available in the GUI version :sunglasses:

If you’re using an older version, please download the latest one.

2 Likes

Great!
Cant keep up with you :slight_smile:

Just finished testing your 1.1 and it works great!

One thing I would wish for is that, at least in windows, I get a DOS-window up for every sample processed and it gets closed fast. But during the conversion you can get 50 windows opening and closing and rendering your computer unavailable during conversion.

Otherwise, thanks a lot!

1 Like

Thanks for testing on Windows and for the detailed report! Glad to hear it’s working on your system.

I’ve just released v1.1.4 which should fix the DOS window issue. Could you give it a try and let me know if it works better?

Thanks again for your feedback!

The first version this morning was kind of buggy (windows execute spam+very long)+ Sample cant be charged well 1/2. But your last version is just perfect. I’m making right now a pack with SFZ/Emulti i can find. I will share it.

you’ve done an amazing job,

vive internet

3 Likes