From 15b314d40692d4e86b5a030aab22e68c0f6aff51 Mon Sep 17 00:00:00 2001 From: cbdev Date: Mon, 23 Dec 2019 16:49:29 +0100 Subject: Multi-layering example configuration --- configs/layering.cfg | 18 ++++++++++++++ configs/layering.lua | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 88 insertions(+) create mode 100644 configs/layering.cfg create mode 100644 configs/layering.lua (limited to 'configs') diff --git a/configs/layering.cfg b/configs/layering.cfg new file mode 100644 index 0000000..3acfe5e --- /dev/null +++ b/configs/layering.cfg @@ -0,0 +1,18 @@ +[backend artnet] +bind = 0.0.0.0 + +[midi in] +read = Launch Control + +[artnet out] +destination = 255.255.255.255 +universe = 1 + +[lua layers] +script = layering.lua + +[map] +in.ch0.cc{0..15} > layers.in{0..15} +layers.out{0..511} > out.{1..512} + +in.ch0.note0 > layers.control diff --git a/configs/layering.lua b/configs/layering.lua new file mode 100644 index 0000000..0ced715 --- /dev/null +++ b/configs/layering.lua @@ -0,0 +1,70 @@ +current_layer = 0 + +function control(value) + current_layer = math.floor(value * 31.99); +end + +function in0(value) + output("out"..((current_layer * 16)), value) + print("Output on out"..((current_layer * 16))) +end + +function in1(value) + output("out"..((current_layer * 16)) + 1, value) +end + +function in2(value) + output("out"..((current_layer * 16)) + 2, value) +end + +function in3(value) + output("out"..((current_layer * 16)) + 3, value) +end + +function in4(value) + output("out"..((current_layer * 16)) + 4, value) +end + +function in5(value) + output("out"..((current_layer * 16)) + 5, value) +end + +function in6(value) + output("out"..((current_layer * 16)) + 6, value) +end + +function in7(value) + output("out"..((current_layer * 16)) + 7, value) +end + +function in8(value) + output("out"..((current_layer * 16)) + 8, value) +end + +function in9(value) + output("out"..((current_layer * 16)) + 9, value) +end + +function in10(value) + output("out"..((current_layer * 16)) + 10, value) +end + +function in11(value) + output("out"..((current_layer * 16)) + 11, value) +end + +function in12(value) + output("out"..((current_layer * 16)) + 12, value) +end + +function in13(value) + output("out"..((current_layer * 16)) + 13, value) +end + +function in14(value) + output("out"..((current_layer * 16)) + 14, value) +end + +function in15(value) + output("out"..((current_layer * 16)) + 15, value) +end -- cgit v1.2.3 From f4b448d304c22f7bf9c8b2675707d6924fbaba54 Mon Sep 17 00:00:00 2001 From: cbdev Date: Mon, 23 Dec 2019 17:56:38 +0100 Subject: Add some comments to the layering example --- configs/layering.cfg | 5 +++++ configs/layering.lua | 6 ++++++ 2 files changed, 11 insertions(+) (limited to 'configs') diff --git a/configs/layering.cfg b/configs/layering.cfg index 3acfe5e..7adcd6f 100644 --- a/configs/layering.cfg +++ b/configs/layering.cfg @@ -1,3 +1,8 @@ +; This configuration demonstrates how to create a "layered" mapping +; using the Lua backend. The 'control' channel on the layers instance +; selects the offset to which the 16 input channels (mapped from +; the rotaries of a Launch Control) are mapped on the output instance + [backend artnet] bind = 0.0.0.0 diff --git a/configs/layering.lua b/configs/layering.lua index 0ced715..834ed09 100644 --- a/configs/layering.lua +++ b/configs/layering.lua @@ -1,9 +1,15 @@ +-- This global variable has the current base offset for the input channels. +-- We want to map 16 input channels (from MIDI) to 512 output channels (ArtNet), +-- so we have 32 possible offsets (32 * 16 = 512) current_layer = 0 +-- Set the current_layer based on the control input channel function control(value) current_layer = math.floor(value * 31.99); end +-- Handler functions for the input channels +-- Calculate the channel offset and just output the value the input channel provides function in0(value) output("out"..((current_layer * 16)), value) print("Output on out"..((current_layer * 16))) -- cgit v1.2.3 From 535181b25ccbc492f741b9eeb111a02dfd038b41 Mon Sep 17 00:00:00 2001 From: cbdev Date: Mon, 23 Dec 2019 20:22:14 +0100 Subject: Fix lua order of operations --- configs/layering.lua | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) (limited to 'configs') diff --git a/configs/layering.lua b/configs/layering.lua index 834ed09..5d9458d 100644 --- a/configs/layering.lua +++ b/configs/layering.lua @@ -12,65 +12,65 @@ end -- Calculate the channel offset and just output the value the input channel provides function in0(value) output("out"..((current_layer * 16)), value) - print("Output on out"..((current_layer * 16))) + print("Output on out"..(current_layer * 16)) end function in1(value) - output("out"..((current_layer * 16)) + 1, value) + output("out"..((current_layer * 16) + 1), value) end function in2(value) - output("out"..((current_layer * 16)) + 2, value) + output("out"..((current_layer * 16) + 2), value) end function in3(value) - output("out"..((current_layer * 16)) + 3, value) + output("out"..((current_layer * 16) + 3), value) end function in4(value) - output("out"..((current_layer * 16)) + 4, value) + output("out"..((current_layer * 16) + 4), value) end function in5(value) - output("out"..((current_layer * 16)) + 5, value) + output("out"..((current_layer * 16) + 5), value) end function in6(value) - output("out"..((current_layer * 16)) + 6, value) + output("out"..((current_layer * 16) + 6), value) end function in7(value) - output("out"..((current_layer * 16)) + 7, value) + output("out"..((current_layer * 16) + 7), value) end function in8(value) - output("out"..((current_layer * 16)) + 8, value) + output("out"..((current_layer * 16) + 8), value) end function in9(value) - output("out"..((current_layer * 16)) + 9, value) + output("out"..((current_layer * 16) + 9), value) end function in10(value) - output("out"..((current_layer * 16)) + 10, value) + output("out"..((current_layer * 16) + 10), value) end function in11(value) - output("out"..((current_layer * 16)) + 11, value) + output("out"..((current_layer * 16) + 11), value) end function in12(value) - output("out"..((current_layer * 16)) + 12, value) + output("out"..((current_layer * 16) + 12), value) end function in13(value) - output("out"..((current_layer * 16)) + 13, value) + output("out"..((current_layer * 16) + 13), value) end function in14(value) - output("out"..((current_layer * 16)) + 14, value) + output("out"..((current_layer * 16) + 14), value) end function in15(value) - output("out"..((current_layer * 16)) + 15, value) + output("out"..((current_layer * 16) + 15), value) end -- cgit v1.2.3 From 4ebcda3a1b0d90c44e91a5dfe455ad59fe694cbe Mon Sep 17 00:00:00 2001 From: cbdev Date: Mon, 9 Mar 2020 21:31:54 +0100 Subject: Update README and example config --- README.md | 9 +++++++-- configs/osc-artnet.cfg | 2 +- midimonster.h | 2 +- 3 files changed, 9 insertions(+), 4 deletions(-) (limited to 'configs') diff --git a/README.md b/README.md index 2a71b3a..aeaeb2a 100644 --- a/README.md +++ b/README.md @@ -172,6 +172,10 @@ chmod +x ./installer.sh ./installer.sh ``` +The installer can also be used for automating installations by specifying additional +command line arguments. To see a list of valid arguments, run the installer with the +`--help` argument. + The installer script can also update MIDIMonster to the latest version automatically, using a configuration file generated during the installation. To do so, run `midimonster-updater` as root on your system after using the installer. @@ -187,8 +191,9 @@ dpkg -i .deb ### Building from source To build the MIDIMonster directly from the sources, you'll need some libraries that provide -support for the protocols to translate. When building from source, you can also to exclude -backends (for example, if you don't need them or don't want to install their prerequisites). +support for the protocols to translate. When building from source, you can also choose to +exclude backends (for example, if you don't need them or don't want to install their +prerequisites). * `libasound2-dev` (for the ALSA MIDI backend) * `libevdev-dev` (for the evdev backend) diff --git a/configs/osc-artnet.cfg b/configs/osc-artnet.cfg index ab1d767..35b2111 100644 --- a/configs/osc-artnet.cfg +++ b/configs/osc-artnet.cfg @@ -5,7 +5,7 @@ bind = 0.0.0.0 [osc touch] -bind = * 8000 +bind = 0.0.0.0 8000 dest = learn@8001 [artnet out] diff --git a/midimonster.h b/midimonster.h index 2c29956..bad83c7 100644 --- a/midimonster.h +++ b/midimonster.h @@ -7,7 +7,7 @@ /* Core version unless set by the build process */ #ifndef MIDIMONSTER_VERSION - #define MIDIMONSTER_VERSION "v0.4-dist" + #define MIDIMONSTER_VERSION "v0.5-dist" #endif /* Set backend name if unset */ -- cgit v1.2.3 From daf9ac5b883cf981a163654d58932bfbdce619d9 Mon Sep 17 00:00:00 2001 From: cbdev Date: Tue, 17 Mar 2020 23:58:06 +0100 Subject: Output routing info to log --- configs/launchctl-sacn.cfg | 2 +- midimonster.c | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) (limited to 'configs') diff --git a/configs/launchctl-sacn.cfg b/configs/launchctl-sacn.cfg index dedfc0f..10a736a 100644 --- a/configs/launchctl-sacn.cfg +++ b/configs/launchctl-sacn.cfg @@ -7,7 +7,7 @@ name = MIDIMonster [backend sacn] -bind = 0.0.0.0 +bind = 0.0.0.0 5568 local [midi lc] read = Launch Control diff --git a/midimonster.c b/midimonster.c index 1691671..5109eab 100644 --- a/midimonster.c +++ b/midimonster.c @@ -456,6 +456,7 @@ static int core_loop(){ int main(int argc, char** argv){ int rv = EXIT_FAILURE; char* cfg_file = DEFAULT_CFG; + size_t u, n = 0, max = 0; //parse commandline arguments if(args_parse(argc, argv, &cfg_file)){ @@ -494,6 +495,14 @@ int main(int argc, char** argv){ signal(SIGINT, signal_handler); + //count and report mappings + for(u = 0; u < sizeof(routing.map) / sizeof(routing.map[0]); u++){ + n += routing.entries[u]; + max = max(max, routing.entries[u]); + } + LOGPF("Routing %" PRIsize_t " sources, largest bucket has %" PRIsize_t " entries", + n, max); + if(!fds){ fprintf(stderr, "No descriptors registered for multiplexing\n"); } -- cgit v1.2.3