aboutsummaryrefslogtreecommitdiffstats
path: root/src/jalv.c
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2013-12-25 19:11:30 +0000
committerDavid Robillard <d@drobilla.net>2013-12-25 19:11:30 +0000
commite0b7e4f26111f0e5dddf6a6b5f2285b39e1e0368 (patch)
tree81eb9322074a3af06bddd354150d0933f83e3178 /src/jalv.c
parentd8f7e5c92f7e03bfd28cb137ce40536f9f36818f (diff)
downloadjalv-e0b7e4f26111f0e5dddf6a6b5f2285b39e1e0368.tar.gz
jalv-e0b7e4f26111f0e5dddf6a6b5f2285b39e1e0368.tar.bz2
jalv-e0b7e4f26111f0e5dddf6a6b5f2285b39e1e0368.zip
Add -c option for setting controls from the command line (#816).
git-svn-id: http://svn.drobilla.net/lad/trunk/jalv@5202 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/jalv.c')
-rw-r--r--src/jalv.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/jalv.c b/src/jalv.c
index 8b3592c..c1da3c5 100644
--- a/src/jalv.c
+++ b/src/jalv.c
@@ -795,6 +795,26 @@ jalv_emit_ui_events(Jalv* jalv)
return true;
}
+static bool
+jalv_apply_control_arg(Jalv* jalv, const char* s)
+{
+ char sym[256];
+ float val = 0.0f;
+ if (sscanf(s, "%[^=]=%f", sym, &val) != 2) {
+ fprintf(stderr, "warning: Ignoring invalid value `%s'\n", s);
+ return false;
+ }
+
+ struct Port* port = jalv_port_by_symbol(jalv, sym);
+ if (!port) {
+ fprintf(stderr, "warning: Ignoring value for unknown port `%s'\n", sym);
+ return false;
+ }
+
+ port->control = val;
+ return true;
+}
+
static void
signal_handler(int ignored)
{
@@ -1120,6 +1140,10 @@ main(int argc, char** argv)
jalv_apply_state(&jalv, state);
}
+ for (char** c = jalv.opts.controls; *c; ++c) {
+ jalv_apply_control_arg(&jalv, *c);
+ }
+
/* Set Jack callbacks */
jack_set_process_callback(jalv.jack_client,
&jack_process_cb, (void*)(&jalv));