summaryrefslogtreecommitdiff
path: root/src/til_knobs.h
diff options
context:
space:
mode:
authorVito Caputo <vcaputo@pengaru.com>2023-02-06 11:21:46 -0800
committerVito Caputo <vcaputo@pengaru.com>2023-02-06 11:21:46 -0800
commitff26036953224b574593832c5160521e87afdfa5 (patch)
treefbb41de4748158f2bc4c7760335ad2e28b60fd8d /src/til_knobs.h
parent0dfb5c4a1dffdbd9f5960457d54667b689ab9567 (diff)
til: get rid of the partial knobs implementation
With taps more or less fully implemented, it seems appropriate to get rid of the stubbed out knobs for now. Taps don't express the same things about range and usage knobs aspired towards, but they don't preclude adding such things either. But it seems clear that the way knobs were stubbed won't be complementing taps as things stand currently to add those aspects.
Diffstat (limited to 'src/til_knobs.h')
-rw-r--r--src/til_knobs.h91
1 files changed, 0 insertions, 91 deletions
diff --git a/src/til_knobs.h b/src/til_knobs.h
deleted file mode 100644
index 370be27..0000000
--- a/src/til_knobs.h
+++ /dev/null
@@ -1,91 +0,0 @@
-#ifndef _TIL_KNOBS_H
-#define _TIL_KNOBS_H
-
-#include <assert.h>
-
-/* A knob exposes a binding for some float in a module's context
- * which can be varied at runtime between frames to influence
- * the output. There's some overlap with settings, but settings
- * are more intended for configuration applied at context
- * creation, which won't vary frame-to-frame, but may influence
- * the initial value and/or automatic behavior of knobs for
- * instance, or even which knobs are available.
- *
- * At this time knobs will only apply to floats, accompanied by
- * some rudimentary bounds.
- *
- * Integer types would probably be useful, and maybe a precision
- * specifier, those can be added in the future as needed, but I'd
- * like to keep it simple for now and see what kind of problems
- * emerge.
- *
- * The current expectation is that a module context struct will
- * incorporate an array of knobs, replacing loose floats already
- * being automatically varied within the module frame-to-frame.
- *
- * The module will then use the knob_auto_* helpers below to
- * access and manipulate the values, instead of directly
- * accessing the loose floats as before.
- *
- * External manipulators of the knobs will use the knob_*
- * helpers, instead of the knob_auto_* helpers, to
- * access+manipulate the knobs. These helpers are basically just
- * to get external and internal manipulators to agree on which
- * side owns control via the managed field.
- */
-typedef struct til_knob_t {
- const char *name; /* Short API-oriented name */
- const char *desc; /* Longer UI-oriented name */
- const float min, max; /* Value bounds */
- float value; /* Value knob affects */
- unsigned managed:1; /* Set when knob control of value is active,
- * suppress automagic control of value when set.
- */
-} til_knob_t;
-
-
-/* helper for modules automating knob controls, use this to
- * change values intead of direct manipulation to respect active.
- * returns new (or unchanged) value
- */
-static inline float til_knob_auto_set(til_knob_t *knob, float value)
-{
- assert(knob);
-
- if (knob->managed)
- return knob->value;
-
- return knob->value = value;
-}
-
-/* identical to knob_auto_set, except adds to existing value.
- */
-static inline float til_knob_auto_add(til_knob_t *knob, float value)
-{
- assert(knob);
-
- return til_knob_auto_set(knob, knob->value + value);
-}
-
-
-/* identical to knob_auto* variants, except intended for
- * external knob-twisters, i.e. the "managed" knob entrypoints.
- */
-static inline float til_knob_set(til_knob_t *knob, float value)
-{
- assert(knob);
-
- knob->managed = 1;
-
- return knob->value = value;
-}
-
-
-static inline float til_knob_add(til_knob_t *knob, float value)
-{
- assert(knob);
-
- return til_knob_set(knob, knob->value + value);
-}
-
-#endif
© All Rights Reserved