Skip to content

Fail with an error message when the destination cannot write the requested library or performance - #296

Merged
git-moss merged 2 commits into
git-moss:mainfrom
douglas-carmichael:write-presets-when-no-library
Aug 1, 2026
Merged

git-moss merged 2 commits into
git-moss:mainfrom
douglas-carmichael:write-presets-when-no-library

Conversation

@douglas-carmichael

@douglas-carmichael douglas-carmichael commented Jul 31, 2026 •

Copy link
Copy Markdown
Contributor

Creating a library or a performance is an empty default operation for a destination which does not support it, so everything that was detected got collected and then silently dropped: the run reported "Finished." and left an empty output folder. Converting 175 Elektron Tonverk presets to Waldorf QPAT with -l MyLib wrote nothing, as did Kontakt multis to QPAT with -t performance. The command line accepts -l and -t performance for every destination, so this is easy to hit.

The command line now fails with an error message before the detection starts (updated after review - the first version fell back to writing single presets):

  • SFZ cannot write a library which contains several presets. Remove the option '-l' or choose a destination format which supports libraries.
  • SFZ cannot write performances. Remove the option '-t performance' or choose a destination format which supports performances.

The user interface is not affected, since it only offers the output types which the destination supports. Destinations which do support libraries or performances are untouched: the same source to a Synclavier V library still writes one synx file, and a plain preset conversion is unchanged.

…performance

Creating a library or a performance is an empty default operation for a
destination which does not support it, so everything that was detected got
collected and then silently dropped: the run reported "Finished" and left an
empty output folder. Converting 175 Elektron Tonverk presets to Waldorf QPAT
with '-l MyLib' wrote nothing, as did Kontakt multis to QPAT with
'-t performance'.

Both now fall back to what the destination can write - one preset per source,
and the instruments of a performance as presets - and log which of the two
happened. Destinations which do support libraries or performances are
untouched: the same Deluge folder to a DecentSampler library still writes one
dslibrary with identical contents, and to TX16Wx performances the same 2170
files.

The user interface keeps offering only the output types of the destination, so
this only becomes visible on the command line, which accepts '-l' and
'-t performance' for every destination.
@git-moss

Copy link
Copy Markdown
Owner

Shouldn't that simply fail with an error message?

The destination capabilities are known before anything runs, so the command
line now rejects '-l' and '-t performance' for a destination which cannot
write them, before the detection starts. The single-preset fallback and its
log lines are gone; ConverterBackend is back to stock.
@douglas-carmichael douglas-carmichael changed the title Write single presets when the destination cannot hold a library or a performance Fail with an error message when the destination cannot write the requested library or performance Aug 1, 2026
@douglas-carmichael

Copy link
Copy Markdown
Contributor Author

Agreed - -l is an explicit instruction, so reinterpreting it was the wrong call. It now fails with an error message before the detection starts (the capabilities are known upfront, so no work is wasted). The fallback is gone and ConverterBackend is back to stock; the check lives next to the other command-line validations.

@git-moss
git-moss merged commit b8e8314 into git-moss:main Aug 1, 2026
@douglas-carmichael
douglas-carmichael deleted the write-presets-when-no-library branch August 4, 2026 09:48
git-moss pushed a commit that referenced this pull request Sep 25, 2026
…ested library or performance (#296)

* Write single presets when the destination cannot hold a library or a performance

Creating a library or a performance is an empty default operation for a
destination which does not support it, so everything that was detected got
collected and then silently dropped: the run reported "Finished" and left an
empty output folder. Converting 175 Elektron Tonverk presets to Waldorf QPAT
with '-l MyLib' wrote nothing, as did Kontakt multis to QPAT with
'-t performance'.

Both now fall back to what the destination can write - one preset per source,
and the instruments of a performance as presets - and log which of the two
happened. Destinations which do support libraries or performances are
untouched: the same Deluge folder to a DecentSampler library still writes one
dslibrary with identical contents, and to TX16Wx performances the same 2170
files.

The user interface keeps offering only the output types of the destination, so
this only becomes visible on the command line, which accepts '-l' and
'-t performance' for every destination.

* Fail with an error message instead of falling back to single presets

The destination capabilities are known before anything runs, so the command
line now rejects '-l' and '-t performance' for a destination which cannot
write them, before the detection starts. The single-preset fallback and its
log lines are gone; ConverterBackend is back to stock.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants