From 5b298f10bab31ea2d64e72894f75904ee1233008 Mon Sep 17 00:00:00 2001 From: Paul Ferrand Date: Sat, 4 Jul 2020 13:55:07 +0200 Subject: [PATCH] "Clear" the synth by loading an empty instrument For instruments saved without the default sine, this should keep them from sounding --- lv2/resources/EmptyInstrument.sfz | 0 lv2/sfizz.c | 13 +++++++++++++ 2 files changed, 13 insertions(+) create mode 100644 lv2/resources/EmptyInstrument.sfz 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");