aboutsummaryrefslogtreecommitdiffstats
path: root/src/features.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/features.c')
-rw-r--r--src/features.c62
1 files changed, 62 insertions, 0 deletions
diff --git a/src/features.c b/src/features.c
new file mode 100644
index 0000000..82d8c27
--- /dev/null
+++ b/src/features.c
@@ -0,0 +1,62 @@
+// Copyright 2018-2024 David Robillard <d@drobilla.net>
+// SPDX-License-Identifier: ISC
+
+#include "features.h"
+
+#include "macros.h"
+#include "settings.h"
+#include "urids.h"
+
+#include <lv2/options/options.h>
+
+#include <stdint.h>
+#include <string.h>
+
+void
+jalv_init_lv2_options(JalvFeatures* const features,
+ const JalvURIDs* const urids,
+ const JalvSettings* const settings)
+{
+ const LV2_Options_Option options[ARRAY_SIZE(features->options)] = {
+ {LV2_OPTIONS_INSTANCE,
+ 0,
+ urids->param_sampleRate,
+ sizeof(float),
+ urids->atom_Float,
+ &settings->sample_rate},
+ {LV2_OPTIONS_INSTANCE,
+ 0,
+ urids->bufsz_minBlockLength,
+ sizeof(int32_t),
+ urids->atom_Int,
+ &settings->block_length},
+ {LV2_OPTIONS_INSTANCE,
+ 0,
+ urids->bufsz_maxBlockLength,
+ sizeof(int32_t),
+ urids->atom_Int,
+ &settings->block_length},
+ {LV2_OPTIONS_INSTANCE,
+ 0,
+ urids->bufsz_sequenceSize,
+ sizeof(int32_t),
+ urids->atom_Int,
+ &settings->midi_buf_size},
+ {LV2_OPTIONS_INSTANCE,
+ 0,
+ urids->ui_updateRate,
+ sizeof(float),
+ urids->atom_Float,
+ &settings->ui_update_hz},
+ {LV2_OPTIONS_INSTANCE,
+ 0,
+ urids->ui_scaleFactor,
+ sizeof(float),
+ urids->atom_Float,
+ &settings->ui_scale_factor},
+ {LV2_OPTIONS_INSTANCE, 0, 0, 0, 0, NULL}};
+
+ memcpy(features->options, options, sizeof(features->options));
+ features->options_feature.URI = LV2_OPTIONS__options;
+ features->options_feature.data = (void*)features->options;
+}