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

GUI version works well (MacOS Tahoe). For this to be absolutely perfect for me, the only thing missing now is some sort of scanning / batch conversion feature.

As in, I have all the samples from Mars and I have to manually recreate the structure of the input folder in the output folder (and have to change input folders by hand as the tool cannot scan deeper into the folder tree). But for what it’s worth – this is a great tool so again, massive thanks for taking the time!

2 Likes

Tried version 1.2.0 now but cant get it to work, I noted it as a bug in this message (the app cant find ffmpeg).

It started though so I tried some other things and noted some bugs and suggestion.

Bugs

Cant find ffmpeg

I have ffmpeg installed and I have its folder in my PATH working correctly. From powershell I can use “ffmpeg -version” and it shows up.

When trying version 1.1 earlier today I got a message about ffmpeg missing too but I somehow passed that hurdle and cant remeber how I did that :(. After that 1.1 worked fine as reported earlier, so it must be something with the detection of ffmpeg, not the actually use because that worked anyway. Now with 1.2.0 I get the message again about missing the ffmpeg so I have not been able to try the conversion.

Any suggestion about that?

Empty folder

When starting a conversion and the program cant find ffmpeg it first creates an output folder and then stop and warns. It should wait with creation or delete when not able to finish the process.

Missing Folder crash

I started to choose an output folder, found a leftover folder and deleted in in the dialog.

By mistake I think I choose the already deleted folder and then the application crashed with the message:

“The application encountered an error: Error 0x80070002: Det går inte att hitta filen.”

The swedish part just says “cant find the file”.

I had to close the application myself.

Started the application again and tried to click “Copy Debug” but there was none.

Success notification even though it did not succeed

Started app, set a valid output folder. Ignored the warning about not finding ffmpeg anv went ahead with a conversion.

The log said at every -sfz that it couldnt find ffmpeg but after I got a windows telling me:

"Conversion complete

Successfully converted 0/16 file(s).

Outout: myvalidfolder"

Log (shortend):

"ffmpeg is not installed.

Please install ffmpeg:

macOS:

brew install ffmpeg

Windows:

  1. Download from Download FFmpeg

(Choose ‘Windows builds’ → ‘full’ build)

  1. Extract and add bin/ folder to PATH

Linux:

sudo apt install ffmpeg (Ubuntu/Debian)

sudo dnf install ffmpeg (Fedora)

Ready. Select output folder to begin.

elmconv v1.2.0 (Flet 0.80.1)

No debug log available yet

Output folder: E:\TonverkWorkshop\ToTonverk

Found 16 file(s) in 14 DX7 Rhodes/

Starting conversion of 16 file(s)…

[1/16] Converting 12op Stack Swell.sfz…

→ Error: ffmpeg not found. Please install ffmpeg.

[16/16] Converting The Resurection.sfz…

→ Error: ffmpeg not found. Please install ffmpeg.

Successfully converted 0/16 file(s)."

Suggestions

  • Let user choose normalize level (0, -3, -6, or by value)

  • Thinning is a good idea, maybe the user also could thin by limiting max and min notes (keyrange)

  • Remeber last output folder (between sessions)

  • Remember the last output folder might do it, but a memory for the “select input” as well might be good. Now when testing the dialog remebers just the last folder regardless of input or output.

1 Like

Reading my own post again I can see that “Successfully converted 0/16 file(s).” kinda is correct. I expected it to say it didnt succeed, but succesfully converting 0 is strictly correct :slight_smile:

1 Like

Thanks for the detailed bug report!

About ffmpeg detection:

  • I don’t have a Windows environment, so testing is difficult on my end
  • The GUI currently only searches these paths:
    • C:\Program Files\ffmpeg\bin
    • C:\Program Files (x86)\ffmpeg\bin
    • C:\ffmpeg\bin
    • C:\tools\ffmpeg\bin
  • Could you tell me the result of where ffmpeg in PowerShell?
  • I’ll fix the GUI to disable conversion when ffmpeg is not found (instead of allowing it to start and fail)

About the crash:

  • Not enough info to debug, but once the ffmpeg issue is fixed, you likely won’t encounter this situation

About “Successfully converted 0/16”:

  • This is clearly a bug - will fix

About suggestions:

  • I’ll consider them positively
  • Remembering the last folder requires storing data somewhere on the PC, and I’d prefer not to leave files behind, so this is lower priority for now

v1.2.0 released - Installation just got easier!

I’ve added uv tool / pipx support for both CLI and GUI versions. This makes installation much simpler:

bash

# Install once (CLI + GUI)
uv tool install 'elmconv[gui] @ git+https://github.com/asatamax/tonverk-elmulti-converter'

# Use anywhere
elmconv MyInstrument.exs output/      # CLI
elmconv-gui                           # GUI

# Update anytime
uv tool upgrade elmconv

No more downloading binaries or cloning repositories - just install and go. All you need is uv or pipx.
If you don’t have uv installed: brew install uv (macOS).

Reminder: Sample thinning feature (--thin) is also available if you need to reduce sample count from chromatic libraries.

For details and other installation options, see the README.

1 Like

Great, thanks for quick response!

I have tried with ffmpeg in “C:\Program Files\ffmpeg\bin” and can confirm it works (and the conversion as well).

Regarding “last folder”, I like portable applications so the less traces on the system is good. Might be better to keep it that way :slight_smile:

1 Like

Hi, thank you a lot for this converter. It’s very promising for me.
But it tells me
→ Error: ffmpeg not found. Please install ffmpeg.
I can’t install ffmpeg on mac Sonoma 14.1
I try with this link but it doesn’t work : static FFmpeg binaries for macOS 64-bit Intel
Can you help me please ?

1 Like

I use MacPorts on my Mac Mini for ffmpeg, python, and a lot of other little utilities. If that interests you, have a look here. Follow the link for instructions on installing the MacPorts base, then use the command to install ffmpeg specifically.

2 Likes

Hi! Thanks for trying elmconv. Here’s the easiest way to install ffmpeg and elmconv on macOS:

Open Terminal and run these commands:

bash

# Install Homebrew (if not already installed)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# Install uv and ffmpeg
brew install uv ffmpeg

# Install elmconv (both CLI and GUI)
uv tool install 'elmconv[gui] @ git+https://github.com/asatamax/tonverk-elmulti-converter'

To run elmconv:

bash

elmconv                # CLI version
elmconv-gui            # GUI version

To update in the future:

bash

uv tool upgrade elmconv

Let me know if you run into any issues!

1 Like

Hi, thank you a lot. It works like a charm. I’m about to create a tonne of elmulti :happy:
Thank you too for your response sashibashi .

1 Like

I converted all the Mars samples that came with an SFZ. It took me the whole afternoon. However, loading the multisample list on the Tonverk takes a very long time. Is the SD card that comes with the Tonverk actually fast enough? I’m considering buying a faster one, because every time I load the multi-instrument list I have to wait almost a full minute for everything to load.

Do you have any information about this?

Also, as a second question: do you know any good websites offering free or inexpensive SFZ files?

1 Like

Not sure you can be faster with an other SD card.
Here you can find some answers, I’m not really a tech guy…

1 Like

No point. I’m using a 200mb/s capable SD card and the transfers are the same. Slow indexing of SD contents is a software thing on this box.

1 Like

Just fyi I’ve been having moderate success with creating multisamples in Mainstage (it has the same multisampler as Logic but for like 25 bucks) and then converting to elmulti using the incredible tool provided by @Asatamax (mate do you have a donate link or something, you’re doing the Lord / Elektron’s work).

Afaik that’s the only solution that seems to work consistently and doesnt make me feel like killing myself for trying to use some byzantine SFZ software from 2003. “Moderate” success just b/c Mainstage is sometimes weird as hell, the converter tool seems to be super solid. Hats off.

The most important thing for me is that loop points work (imho a multisampler is next to useless w/o the ability to set loop points, the only company that provides a decent companion app is Nord). Once you use the “optimise loop points” option in Elmulti converter it’s working great.

Once again, thank you so so much for this mate.

Edit: here’s a double mellotron I’ve put together in Mainstage. Two groups with different note regions. Looped using its autoloop function which is seriously great and much better than going note by note, especially in a text file yeesh. Could’ve prolly saved a bunch of space if I went to individual notes & cut end points – maybe later. Then went to save + save with audio data (not consolidated). Then Elmulti converter. Optimised loop points. Done.

5 Likes

This is the coolest! How is velocity layers implementation going? I am having very surprising results when trying to convert files with velocity layers. Like it’s playing the wrong samples and wrong pitch at what feels like probably every note.

6 Likes

At the moment it feels reliable but I have to test properly with a decent MIDI controller. The TV feels like it does interpret velo layers in a somehow strange way but I haven’t figured out a way to pinpoint the issue. I made a bunch of testing multisamples to share with you all and I’ll make a tutorial on the whole process tomorrow. The autosampler is killer too!

Sucks you have to pay for another sw but feels like money well spent right now.

1 Like

Wow, thank you so much for the kind words and for all your testing! I’m truly honored to hear this is working well for you.

I’m really looking forward to your tutorial – having real-world workflow documentation from an actual user will be incredibly valuable for the community!

2 Likes

Thank you for the report! This is definitely something I need to investigate.

Could you share the source files (EXS + samples or SFZ + samples) so I can reproduce and debug the issue on my end? You can upload them here or create a GitHub issue.

One thing to note: Tonverk doesn’t support sample layering (multiple samples on the same note), so if your instrument has velocity layers that overlap in key range, they might be incorrectly interpreted as round-robin samples instead. Additionally, Tonverk doesn’t support velocity crossfades – only hard velocity switches.

That might explain some of the strange behavior you’re experiencing. I’d love to take a look at your files to confirm what’s happening!

3 Likes

I found the culprit. I made my SFZ files in 48khz already to avoid conversion. This seems to confuse the conversion for some reason. When I made SFZ files in 44.1khz, and let the converter resample it to 48khz, it works like expected.

7 Likes

Made the tutorial (a few weeks late), turned it into a fun project (I haven’t made an instagram reel in ages). Pls send to a friend if you find it useful, stay in touch on ig if you feel like it. Cc @cuckoomusic.

@Asatamax once again thank you so much for this, I’d happily send over something if you share a donate link or something. You’re making me love my Tonverk a lot more.

Instagram
Youtube

Cheers! :heart:

9 Likes