diff --git a/lv2/resources/EmptyInstrument.sfz b/lv2/resources/EmptyInstrument.sfz new file mode 100644 index 00000000..e69de29b diff --git a/lv2/sfizz.c b/lv2/sfizz.c index 4f9fab1e..ffe1d3e1 100644 --- a/lv2/sfizz.c +++ b/lv2/sfizz.c @@ -305,6 +305,13 @@ sfizz_lv2_get_default_sfz_path(LV2_Handle instance, char *path, size_t size) snprintf(path, size, "%s/%s", self->bundle_path, "Resources/DefaultInstrument.sfz"); } +static void +sfizz_lv2_get_empty_sfz_path(LV2_Handle instance, char *path, size_t size) +{ + sfizz_plugin_t *self = (sfizz_plugin_t *)instance; + snprintf(path, size, "%s/%s", self->bundle_path, "Resources/EmptyInstrument.sfz"); +} + static void sfizz_lv2_get_default_scala_path(LV2_Handle instance, char *path, size_t size) { @@ -967,6 +974,11 @@ restore(LV2_Handle instance, } lv2_log_note(&self->logger, "[sfizz] Restoring the file %s\n", path); + // Load an empty file to remove the default sine + sfizz_lv2_get_empty_sfz_path(instance, self->sfz_file_path, MAX_PATH_SIZE); + sfizz_lv2_load_file(instance, self->sfz_file_path); + + // Try loading the new file sfizz_lv2_load_file(instance, path); if (map_path) @@ -1144,6 +1156,7 @@ work(LV2_Handle instance, uint32_t size, const void *data) { + UNUSED(size); sfizz_plugin_t *self = (sfizz_plugin_t *)instance; if (!data) { lv2_log_error(&self->logger, "[sfizz] Ignoring empty data in the worker thread\n");