From ff63873e236ef3c2b7d0a6b53aa60721ceca98c1 Mon Sep 17 00:00:00 2001 From: cbdev Date: Thu, 27 Dec 2018 23:14:54 +0100 Subject: New configuration --- README.md | 1 + 1 file changed, 1 insertion(+) (limited to 'README.md') diff --git a/README.md b/README.md index d2298b2..ef0069d 100644 --- a/README.md +++ b/README.md @@ -451,6 +451,7 @@ support for the protocols to translate. * libasound2-dev (for the MIDI backend) * libevdev-dev (for the evdev backend) +* pkg-config (as some projects and systems like to spread their files around) * A C compiler * GNUmake -- cgit v1.2.3 From b72d0964dd33b9084a0fc02d7fb365850c5606c6 Mon Sep 17 00:00:00 2001 From: Peter Newman Date: Wed, 6 Mar 2019 13:36:22 +0000 Subject: Add Travis CI (#15) * Add and enable Travis CI builds * Add build status to readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'README.md') diff --git a/README.md b/README.md index ef0069d..095121c 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ on any other (or the same) supported protocol, for example to: * Control lighting fixtures or DAWs using gamepad controllers ([Example configuration](configs/evdev.conf)) * Play games or type using MIDI controllers -[![Coverity Scan Build Status](https://scan.coverity.com/projects/15168/badge.svg)](https://scan.coverity.com/projects/15168) +[![Build Status](https://travis-ci.com/cbdevnet/midimonster.svg?branch=master)](https://travis-ci.com/cbdevnet/midimonster) [![Coverity Scan Build Status](https://scan.coverity.com/projects/15168/badge.svg)](https://scan.coverity.com/projects/15168) # Table of Contents -- cgit v1.2.3 From f227a44b5442fc85ee66fd2f5b964b8405e6c49e Mon Sep 17 00:00:00 2001 From: cbdev Date: Sat, 16 Mar 2019 15:40:52 +0100 Subject: Clarify wording of wide channels in README --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'README.md') diff --git a/README.md b/README.md index 095121c..c0b8184 100644 --- a/README.md +++ b/README.md @@ -138,7 +138,7 @@ Example mapping: net1.231 < net2.123 ``` -A 16-bit channel (spanning any two normal channels in the same universe) may be mapped with the syntax +A 16-bit channel (spanning any two normal 8-bit channels in the same universe, also called a wide channel) may be mapped with the syntax ``` net1.1+2 > net2.5+123 ``` @@ -187,7 +187,7 @@ Example mapping: sacn1.231 < sacn2.123 ``` -A 16-bit channel (spanning any two normal channels in the same universe) may be mapped with the syntax +A 16-bit channel (spanning any two normal 8-bit channels in the same universe, also called a wide channel) may be mapped with the syntax ``` sacn.1+2 > sacn2.5+123 ``` -- cgit v1.2.3 From 95f804bb5f8239d018e8fa440a2ca3e0111d4696 Mon Sep 17 00:00:00 2001 From: cbdev Date: Fri, 22 Mar 2019 21:16:41 +0100 Subject: Implement an OLA backend (Fixes #14) --- README.md | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 56 insertions(+), 4 deletions(-) (limited to 'README.md') diff --git a/README.md b/README.md index c0b8184..3f5606a 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,7 @@ Currently, the MIDIMonster supports the following protocols: * sACN / E1.31 * OSC * evdev input devices (Linux) +* Open Lighting Architecture (OLA) The MIDIMonster allows the user to translate any channel on one protocol into channel(s) on any other (or the same) supported protocol, for example to: @@ -48,18 +49,23 @@ on any other (or the same) supported protocol, for example to: - [Global configuration](#global-configuration-3) - [Instance configuration](#instance-configuration-3) - [Channel specification](#channel-specification-3) - - [Known bugs/problems](#known-bugs-problems) + - [Known bugs/problems](#known-bugs--problems-3) + [The `loopback` backend](#the-loopback-backend) - [Global configuration](#global-configuration-4) - [Instance configuration](#instance-configuration-4) - [Channel specification](#channel-specification-4) - - [Known bugs / problems](#known-bugs--problems-3) + - [Known bugs / problems](#known-bugs--problems-4) + [The `osc` backend](#the-osc-backend) - [Global configuration](#global-configuration-5) - [Instance configuration](#instance-configuration-5) - [Channel specification](#channel-specification-5) - [Supported types & value ranges](#supported-types--value-ranges) - - [Known bugs / problems](#known-bugs--problems-4) + - [Known bugs / problems](#known-bugs--problems-5) + + [The `ola` backend](#the-ola-backend) + - [Global configuration](#global-configuration-6) + - [Instance configuration](#instance-configuration-6) + - [Channel specification](#channel-specification-6) + - [Known bugs / problems](#known-bugs--problems-6) * [Building](#building) + [Prerequisites](#prerequisites) + [Build](#build) @@ -310,7 +316,7 @@ Note that to map an absolute axis on an output-enabled instance, additional info and maximum are required. These must be specified in the instance configuration. When only mapping the instance as a channel input, this is not required. -#### Known bugs/problems +#### Known bugs / problems Creating an `evdev` output device requires elevated privileges, namely, write access to the system's `/dev/uinput`. Usually, this is granted for users in the `input` group and the `root` user. @@ -439,6 +445,48 @@ The default ranges are: Ping requests are not yet answered. There may be some problems using broadcast output and input. +### The `ola` backend + +This backend connects the MIDIMonster to the Open Lighting Architecture daemon. This can be useful +to take advantage of additional protocols implemented in OLA. This backend is currently marked as +optional and is only built with `make full` in the `backends/` directory, as the OLA is a large +dependency to require for all users. + +#### Global configuration + +This backend does not take any global configuration. + +#### Instance configuration + +| Option | Example value | Default value | Description | +|---------------|-----------------------|---------------|-------------------------------------------------------| +| `universe` | `7` | `0` | OLA universe to send/receive data on | + +#### Channel specification + +A channel is specified by it's universe index. Channel indices start at 1 and end at 512. + +Example mapping: +``` +ola1.231 < in2.123 +``` + +A 16-bit channel (spanning any two normal 8-bit channels in the same universe, also called a wide channel) may be mapped with the syntax +``` +ola1.1+2 > net2.5+123 +``` + +A normal channel that is part of a wide channel can not be mapped individually. + +#### Known bugs / problems + +The backend currently assumes that the OLA daemon is running on the same host as the MIDIMonster. +This may be made configurable in the future. + +This backend requires `libola-dev` to be installed, which pulls in a rather large and aggressive (in terms of probing +and taking over connected hardware) daemon. It is thus marked as optional and only built when executing the `full` target +within the `backends` directory. + ## Building This section will explain how to build the provided sources to be able to run @@ -451,6 +499,7 @@ support for the protocols to translate. * libasound2-dev (for the MIDI backend) * libevdev-dev (for the evdev backend) +* libola-dev (for the optional OLA backend) * pkg-config (as some projects and systems like to spread their files around) * A C compiler * GNUmake @@ -459,6 +508,9 @@ support for the protocols to translate. Just running `make` in the source directory should do the trick. +Some backends have been marked as optional as they require rather large additional software to be installed, +for example the `ola` backend. To build these, run `make full` in the backends directory. + ## Development The architecture is split into the `midimonster` core, handling mapping -- cgit v1.2.3 From a2b0728027dd8961ef84220c8c8eaf8a81154c71 Mon Sep 17 00:00:00 2001 From: cbdev Date: Sat, 30 Mar 2019 14:34:20 +0100 Subject: Fix MIDI mapping syntax --- README.md | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) (limited to 'README.md') diff --git a/README.md b/README.md index 3f5606a..8dfcdd8 100644 --- a/README.md +++ b/README.md @@ -245,11 +245,19 @@ The MIDI backend supports multiple channel types * `note` - Note On/Off messages * `nrpn` - NRPNs (not yet implemented) -A channel is specified using `.`. +A channel is specified using the syntax `channel.`. The shorthand `ch` may be used instead +of `channel`. +The earlier syntax of `.` is officially deprecated but still supported for compatability +reasons. This support may be removed at some future time. -Example mapping: +Channels range from `0` to `15`. Each channel consists of 128 notes (numbered `0` through `127`) and 128 CC's +(numbered likewise), a channel pressure control (also called 'channel aftertouch') and a pitch control. +Each Note also has an additional pressure value associated with it. + +Example mappings: ``` -midi1.cc0.9 > midi2.note1.4 +midi1.ch0.note9 > midi2.channel1.cc4 +midi1.channel15.cc1 > midi1.channel0.note0 ``` #### Known bugs / problems @@ -259,7 +267,8 @@ a configuration option at a later time. NRPNs are not yet fully implemented, though rudimentary support is in the codebase. -The channel specification syntax is currently a bit clunky. +To see which events your MIDI devices output, ALSA provides the `aseqdump` utility. You can +list all incoming events using `aseqdump -p `. ### The `evdev` backend -- cgit v1.2.3 From 0c333567f599206cb0be6b74f02e59820536e0b2 Mon Sep 17 00:00:00 2001 From: cbdev Date: Sun, 31 Mar 2019 09:00:12 +0200 Subject: Move backend documentation out of main README --- README.md | 429 ++------------------------------------------------------------ 1 file changed, 11 insertions(+), 418 deletions(-) (limited to 'README.md') diff --git a/README.md b/README.md index 8dfcdd8..6265581 100644 --- a/README.md +++ b/README.md @@ -30,42 +30,6 @@ on any other (or the same) supported protocol, for example to: * [Usage](#usage) * [Configuration](#configuration) * [Backend documentation](#backend-documentation) - + [The `artnet` backend](#the-artnet-backend) - - [Global configuration](#global-configuration) - - [Instance configuration](#instance-configuration) - - [Channel specification](#channel-specification) - - [Known bugs / problems](#known-bugs--problems) - + [The `sacn` backend](#the-sacn-backend) - - [Global configuration](#global-configuration-1) - - [Instance configuration](#instance-configuration-1) - - [Channel specification](#channel-specification-1) - - [Known bugs / problems](#known-bugs--problems-1) - + [The `midi` backend](#the-midi-backend) - - [Global configuration](#global-configuration-2) - - [Instance configuration](#instance-configuration-2) - - [Channel specification](#channel-specification-2) - - [Known bugs / problems](#known-bugs--problems-2) - + [The `evdev` backend](#the-evdev-backend) - - [Global configuration](#global-configuration-3) - - [Instance configuration](#instance-configuration-3) - - [Channel specification](#channel-specification-3) - - [Known bugs/problems](#known-bugs--problems-3) - + [The `loopback` backend](#the-loopback-backend) - - [Global configuration](#global-configuration-4) - - [Instance configuration](#instance-configuration-4) - - [Channel specification](#channel-specification-4) - - [Known bugs / problems](#known-bugs--problems-4) - + [The `osc` backend](#the-osc-backend) - - [Global configuration](#global-configuration-5) - - [Instance configuration](#instance-configuration-5) - - [Channel specification](#channel-specification-5) - - [Supported types & value ranges](#supported-types--value-ranges) - - [Known bugs / problems](#known-bugs--problems-5) - + [The `ola` backend](#the-ola-backend) - - [Global configuration](#global-configuration-6) - - [Instance configuration](#instance-configuration-6) - - [Channel specification](#channel-specification-6) - - [Known bugs / problems](#known-bugs--problems-6) * [Building](#building) + [Prerequisites](#prerequisites) + [Build](#build) @@ -112,389 +76,18 @@ The last line is a shorter way to create a bi-directional mapping. Example configuration files may be found in [configs/](configs/). ## Backend documentation -This section documents the configuration options supported by the various backends. -### The `artnet` backend - -The ArtNet backend provides read-write access to the UDP-based ArtNet protocol for lighting -fixture control. - -#### Global configuration - -| Option | Example value | Default value | Description | -|---------------|-----------------------|-----------------------|-----------------------| -| `bind` | `127.0.0.1 6454` | none | Binds a network address to listen for data. This option may be set multiple times, with each interface being assigned an index starting from 0 to be used with the `interface` instance configuration option. At least one interface is required for transmission. | -| `net` | `0` | `0` | The default net to use | - -#### Instance configuration - -| Option | Example value | Default value | Description | -|---------------|-----------------------|-----------------------|-----------------------| -| `net` | `0` | `0` | ArtNet `net` to use | -| `universe` | `0` | `0` | Universe identifier | -| `destination` | `10.2.2.2` | none | Destination address for sent ArtNet frames. Setting this enables the universe for output | -| `interface` | `1` | `0` | The bound address to use for data input/output | - -#### Channel specification - -A channel is specified by it's universe index. Channel indices start at 1 and end at 512. - -Example mapping: -``` -net1.231 < net2.123 -``` - -A 16-bit channel (spanning any two normal 8-bit channels in the same universe, also called a wide channel) may be mapped with the syntax -``` -net1.1+2 > net2.5+123 -``` - -A normal channel that is part of a wide channel can not be mapped individually. - -#### Known bugs / problems - -The minimum inter-frame-time is disregarded, as the packet rate is determined by the rate of incoming -channel events. - -### The `sacn` backend - -The sACN backend provides read-write access to the Multicast-UDP based streaming ACN protocol (ANSI E1.31-2016), -used for lighting fixture control. The backend sends universe discovery frames approximately every 10 seconds, -containing all write-enabled universes. - -#### Global configuration - -| Option | Example value | Default value | Description | -|---------------|-----------------------|-----------------------|-----------------------| -| `name` | `sACN source` | `MIDIMonster` | sACN source name | -| `cid` | `0xAA 0xBB 0xCC` ... | `MIDIMonster` | Source CID (16 bytes) | -| `bind` | `0.0.0.0 5568` | none | Binds a network address to listen for data. This option may be set multiple times, with each descriptor being assigned an index starting from 0 to be used with the `interface` instance configuration option. At least one descriptor is required for transmission. | - -#### Instance configuration - -| Option | Example value | Default value | Description | -|---------------|-----------------------|-----------------------|-----------------------| -| `universe` | `0` | none | Universe identifier | -| `interface` | `1` | `0` | The bound address to use for data input/output | -| `priority` | `100` | none | The data priority to transmit for this instance. Setting this option enables the instance for output and includes it in the universe discovery report. | -| `destination` | `10.2.2.2` | Universe multicast | Destination address for unicast output. If unset, the multicast destination for the specified universe is used. | -| `from` | `0xAA 0xBB` ... | none | 16-byte input source CID filter. Setting this option filters the input stream for this universe. | -| `unicast` | `1` | `0` | Prevent this instance from joining its universe multicast group | - -Note that instances accepting multicast input also process unicast frames directed at them, while -instances in `unicast` mode will not receive multicast frames. - -#### Channel specification - -A channel is specified by it's universe index. Channel indices start at 1 and end at 512. - -Example mapping: -``` -sacn1.231 < sacn2.123 -``` - -A 16-bit channel (spanning any two normal 8-bit channels in the same universe, also called a wide channel) may be mapped with the syntax -``` -sacn.1+2 > sacn2.5+123 -``` - -A normal channel that is part of a wide channel can not be mapped individually. - -#### Known bugs / problems - -The DMX start code of transmitted and received universes is fixed as `0`. - -The (upper) limit on packet transmission rate mandated by section 6.6.1 of the sACN specification is disregarded. -The rate of packet transmission is influenced by the rate of incoming mapped events on the instance. - -Universe synchronization is currently not supported, though this feature may be implemented in the future. - -To use multicast input, all networking hardware in the path must support the IGMPv2 protocol. - -The Linux kernel limits the number of multicast groups an interface may join to 20. An instance configured -for input automatically joins the multicast group for its universe, unless configured in `unicast` mode. -This limit can be raised by changing the kernel option in `/proc/sys/net/ipv4/igmp_max_memberships`. - -### The `midi` backend - -The MIDI backend provides read-write access to the MIDI protocol via virtual ports. - -#### Global configuration - -| Option | Example value | Default value | Description | -|---------------|-----------------------|-----------------------|-----------------------| -| `name` | `MIDIMonster` | none | MIDI client name | - -#### Instance configuration - -| Option | Example value | Default value | Description | -|---------------|-----------------------|-----------------------|-----------------------| -| `read` | `20:0` | none | MIDI device to connect for input | -| `write` | `DeviceName` | none | MIDI device to connect for output | - -MIDI device names may either be `client:port` portnames or prefixes of MIDI device names. -Run `aconnect -i` to list input ports and `aconnect -o` to list output ports. - -Each instance also provides a virtual port, so MIDI devices can also be connected with `aconnect `. - -#### Channel specification - -The MIDI backend supports multiple channel types - -* `cc` - Control Changes -* `note` - Note On/Off messages -* `nrpn` - NRPNs (not yet implemented) - -A channel is specified using the syntax `channel.`. The shorthand `ch` may be used instead -of `channel`. -The earlier syntax of `.` is officially deprecated but still supported for compatability -reasons. This support may be removed at some future time. - -Channels range from `0` to `15`. Each channel consists of 128 notes (numbered `0` through `127`) and 128 CC's -(numbered likewise), a channel pressure control (also called 'channel aftertouch') and a pitch control. -Each Note also has an additional pressure value associated with it. - -Example mappings: -``` -midi1.ch0.note9 > midi2.channel1.cc4 -midi1.channel15.cc1 > midi1.channel0.note0 -``` -#### Known bugs / problems - -Currently, no Note Off messages are sent (instead, Note On messages with a velocity of 0 are -generated, which amount to the same thing according to the spec). This may be implemented as -a configuration option at a later time. - -NRPNs are not yet fully implemented, though rudimentary support is in the codebase. - -To see which events your MIDI devices output, ALSA provides the `aseqdump` utility. You can -list all incoming events using `aseqdump -p `. - -### The `evdev` backend - -This backend allows using Linux `evdev` devices such as mouses, keyboards, gamepads and joysticks -as input and output devices. All buttons and axes available to the Linux system are mappable. -Output is provided by the `uinput` kernel module, which allows creation of virtual input devices. -This functionality may require elevated privileges (such as special group membership or root access). - -#### Global configuration - -This backend does not take any global configuration. - -#### Instance configuration - -| Option | Example value | Default value | Description | -|---------------|-----------------------|---------------|-------------------------------------------------------| -| `device` | `/dev/input/event1` | none | `evdev` device to use as input device | -| `input` | `Xbox Wireless` | none | Presentation name of evdev device to use as input (prefix-matched) | -| `output` | `My Input Device` | none | Output device presentation name. Setting this option enables the instance for output | -| `exclusive` | `1` | `0` | Prevent other processes from using the device | -| `id` | `0x1 0x2 0x3` | none | Set output device bus identification (Vendor, Product and Version), optional | -| `axis.AXISNAME`| `34300 0 65536 255 4095` | none | Specify absolute axis details (see below) for output. This is required for any absolute axis to be output. - -The absolute axis details configuration (e.g. `axis.ABS_X`) is required for any absolute axis on output-enabled -instances. The configuration value contains, space-separated, the following values: - -* `value`: The value to assume for the axis until an event is received -* `minimum`: The axis minimum value -* `maximum`: The axis maximum value -* `fuzz`: A value used for filtering the input stream -* `flat`: An offset, below which all deviations will be ignored -* `resolution`: Axis resolution in units per millimeter (or units per radian for rotational axes) - -For real devices, all of these parameters for every axis can be found by running `evtest` on the device. - -#### Channel specification - -A channel is specified by its event type and event code, separated by `.`. For a complete list of event types and codes -see the [kernel documentation](https://www.kernel.org/doc/html/v4.12/input/event-codes.html). The most interesting event types are - -* `EV_KEY` for keys and buttons -* `EV_ABS` for absolute axes (such as Joysticks) -* `EV_REL` for relative axes (such as Mouses) - -The `evtest` tool is useful to gather information on devices active on the local system, including names, types, codes -and configuration supported by these devices. - -Example mapping: -``` -ev1.EV_KEY.KEY_A > ev1.EV_ABS.ABS_X -``` - -Note that to map an absolute axis on an output-enabled instance, additional information such as the axis minimum -and maximum are required. These must be specified in the instance configuration. When only mapping the instance -as a channel input, this is not required. - -#### Known bugs / problems - -Creating an `evdev` output device requires elevated privileges, namely, write access to the system's -`/dev/uinput`. Usually, this is granted for users in the `input` group and the `root` user. - -Input devices may synchronize logically connected event types (for example, X and Y axes) via `EV_SYN`-type -events. The MIDIMonster also generates these events after processing channel events, but may not keep the original -event grouping. - -Relative axes (`EV_REL`-type events), such as generated by mouses, are currently handled in a very basic fashion, -generating only the normalized channel values of `0`, `0.5` and `1` for any input less than, equal to and greater -than `0`, respectively. As for output, only the values `-1`, `0` and `1` are generated for the same interval. - -`EV_KEY` key-down events are sent for normalized channel values over `0.9`. - -Extended event type values such as `EV_LED`, `EV_SND`, etc are recognized in the MIDIMonster configuration file -but may or may not work with the internal channel mapping and normalization code. - -### The `loopback` backend - -This backend allows the user to create logical mapping channels, for example to exchange triggering -channels easier later. All events that are input are immediately output again on the same channel. - -#### Global configuration - -All global configuration is ignored. - -#### Instance configuration - -All instance configuration is ignored - -#### Channel specification - -A channel may have any string for a name. - -Example mapping: -``` -loop.foo < loop.bar123 -``` - -#### Known bugs / problems - -It is possible to configure loops using this backend. Triggering a loop -will create a deadlock, preventing any other backends from generating events. -Be careful with bidirectional channel mappings, as any input will be immediately -output to the same channel again. - -### The `osc` backend - -This backend offers read and write access to the Open Sound Control protocol, -spoken primarily by visual interface tools and hardware such as TouchOSC. - -#### Global configuration - -This backend does not take any global configuration. - -#### Instance configuration - -| Option | Example value | Default value | Description | -|---------------|-----------------------|-----------------------|-----------------------| -| `root` | `/my/osc/path` | none | An OSC path prefix to be prepended to all channels | -| `bind` | `:: 8000` | none | The host and port to listen on | -| `destination` | `10.11.12.13 8001` | none | Remote address to send OSC data to. Setting this enables the instance for output. The special value `learn` causes the MIDImonster to always reply to the address the last incoming packet came from. A different remote port for responses can be forced with the syntax `learn@` | - -Note that specifying an instance root speeds up matching, as packets not matching -it are ignored early in processing. - -Channels that are to be output or require a value range different from the default ranges (see below) -require special configuration, as their types and limits have to be set. - -This is done in the instance configuration using an assignment of the syntax - -``` -/local/osc/path = ... -``` - -The OSC path to be configured must only be the local part (omitting a configured instance root). - -**format** may be any sequence of valid OSC type characters. See below for a table of supported -OSC types. - -For each component of the path, the minimum and maximum values must be given separated by spaces. -Components may be accessed in the mapping section as detailed in the next section. - -An example configuration for transmission of an OSC message with 2 floating point components with -a range between 0.0 and 2.0 (for example, an X-Y control), would look as follows: - -``` -/1/xy1 = ff 0.0 2.0 0.0 2.0 -``` - -#### Channel specification - -A channel may be any valid OSC path, to which the instance root will be prepended if -set. Multi-value controls (such as X-Y pads) are supported by appending `:n` to the path, -where `n` is the parameter index, with the first (and default) one being `0`. - -Example mapping: -``` -osc1./1/xy1:0 > osc2./1/fader1 -``` - -Note that any channel that is to be output will need to be set up in the instance -configuration. - -#### Supported types & value ranges - -OSC allows controls to have individual value ranges and supports different parameter types. -The following types are currently supported by the MIDImonster: - -* **i**: 32-bit signed integer -* **f**: 32-bit IEEE floating point -* **h**: 64-bit signed integer -* **d**: 64-bit double precision floating point - -For each type, there is a default value range which will be assumed if the channel is not otherwise -configured using the instance configuration. Values out of a channels range will be clipped. - -The default ranges are: - -* **i**: `0` to `255` -* **f**: `0.0` to `1.0` -* **h**: `0` to `1024` -* **d**: `0.0` to `1.0` - -#### Known bugs / problems - -Ping requests are not yet answered. There may be some problems using broadcast output and input. - -### The `ola` backend - -This backend connects the MIDIMonster to the Open Lighting Architecture daemon. This can be useful -to take advantage of additional protocols implemented in OLA. This backend is currently marked as -optional and is only built with `make full` in the `backends/` directory, as the OLA is a large -dependency to require for all users. - -#### Global configuration - -This backend does not take any global configuration. - -#### Instance configuration - -| Option | Example value | Default value | Description | -|---------------|-----------------------|---------------|-------------------------------------------------------| -| `universe` | `7` | `0` | OLA universe to send/receive data on | - -#### Channel specification - -A channel is specified by it's universe index. Channel indices start at 1 and end at 512. - -Example mapping: -``` -ola1.231 < in2.123 -``` - -A 16-bit channel (spanning any two normal 8-bit channels in the same universe, also called a wide channel) may be mapped with the syntax -``` -ola1.1+2 > net2.5+123 -``` - -A normal channel that is part of a wide channel can not be mapped individually. - -#### Known bugs / problems - -The backend currently assumes that the OLA daemon is running on the same host as the MIDIMonster. -This may be made configurable in the future. - -This backend requires `libola-dev` to be installed, which pulls in a rather large and aggressive (in terms of probing -and taking over connected hardware) daemon. It is thus marked as optional and only built when executing the `full` target -within the `backends` directory. +Every backend includes specific documentation, including the global and instance +configuration options, channel specification syntax and any known problems or other +special information. These documentation files are located in the `backends/` directory. + +* [`midi` backend documentation](backends/midi.md) +* [`artnet` backend documentation](backends/artnet.md) +* [`sacn` backend documentation](backends/sacn.md) +* [`evdev` backend documentation](backends/evdev.md) +* [`loopback` backend documentation](backends/loopback.md) +* [`ola` backend documentation](backends/ola.md) +* [`osc` backend documentation](backends/osc.md) ## Building -- cgit v1.2.3 From b618c4a6b74a52f830ca53029e1cc680d56a2501 Mon Sep 17 00:00:00 2001 From: cbdev Date: Sat, 6 Jul 2019 17:25:12 +0200 Subject: Implement Lua backend --- README.md | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'README.md') diff --git a/README.md b/README.md index 6265581..ee907a6 100644 --- a/README.md +++ b/README.md @@ -12,12 +12,15 @@ Currently, the MIDIMonster supports the following protocols: * evdev input devices (Linux) * Open Lighting Architecture (OLA) +with additional flexibility provided by a Lua scripting environment. + The MIDIMonster allows the user to translate any channel on one protocol into channel(s) on any other (or the same) supported protocol, for example to: * Translate MIDI Control Changes into Notes ([Example configuration](configs/unifest-17.cfg)) * Translate MIDI Notes into ArtNet or sACN ([Example configuration](configs/launchctl-sacn.cfg)) * Translate OSC messages into MIDI ([Example configuration](configs/midi-osc.cfg)) +* Dynamically route and modify events using the Lua programming language ([Example configuration](configs/lua.cfg) and [Script](configs/demo.lua)) to create your own lighting controller * Use an OSC app as a simple lighting controller via ArtNet or sACN * Visualize ArtNet data using OSC tools * Control lighting fixtures or DAWs using gamepad controllers ([Example configuration](configs/evdev.conf)) @@ -88,6 +91,7 @@ special information. These documentation files are located in the `backends/` di * [`loopback` backend documentation](backends/loopback.md) * [`ola` backend documentation](backends/ola.md) * [`osc` backend documentation](backends/osc.md) +* [`lua` backend documentation](backends/lua.md) ## Building @@ -99,10 +103,11 @@ This section will explain how to build the provided sources to be able to run In order to build the MIDIMonster, you'll need some libraries that provide support for the protocols to translate. -* libasound2-dev (for the MIDI backend) -* libevdev-dev (for the evdev backend) -* libola-dev (for the optional OLA backend) -* pkg-config (as some projects and systems like to spread their files around) +* `libasound2-dev` (for the MIDI backend) +* `libevdev-dev` (for the evdev backend) +* `liblua5.3-dev` (for the lua backend) +* `libola-dev` (for the optional OLA backend) +* `pkg-config` (as some projects and systems like to spread their files around) * A C compiler * GNUmake -- cgit v1.2.3 From 5bd8e81e2821f1378c6773fbc1f06df063dbbd22 Mon Sep 17 00:00:00 2001 From: cbdev Date: Sat, 20 Jul 2019 18:10:56 +0200 Subject: Implement multi-channel mapping syntax --- README.md | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) (limited to 'README.md') diff --git a/README.md b/README.md index ee907a6..bce7b71 100644 --- a/README.md +++ b/README.md @@ -56,10 +56,24 @@ lines of the form `option = value`. Lines starting with a semicolon are treated as comments and ignored. Inline comments are not currently supported. +Example configuration files may be found in [configs/](configs/). + +### Backend and instance configuration + A configuration section may either be a *backend configuration* section, started by `[backend ]`, an *instance configuration* section, started by `[ ]` or a *mapping* section started by `[map]`. +Backends document their global options in their [backend documentation](#backend-documentation). +Some backends may not require global configuration, in which case the configuration +section for that particular backend can be omitted. + +To make an instance available for mapping channels, it requires at least the +`[ ]` configuration stanza. Most backends require +additional configuration for their instances. + +### Channel mapping + The `[map]` section consists of lines of channel-to-channel assignments, reading like ``` @@ -76,7 +90,21 @@ output eachothers events. The last line is a shorter way to create a bi-directional mapping. -Example configuration files may be found in [configs/](configs/). +### Multi-channel mapping + +To make mapping large contiguous sets of channels easier, channel names may contain +expressions of the form `{..}`, with *start* and *end* being positive integers +delimiting a range of channels. Multiple such expressions may be used in one channel +specification, with the rightmost expression being incremented (or decremented) first for +evaluation. + +Both sides of a multi-channel assignment need to have the same number of channels. + +Example multi-channel mapping: + +``` +instance-a.channel{1..10} > instance-b.{10..1} +``` ## Backend documentation -- cgit v1.2.3 From 8d7fb5b7cb2f1deb6600f8cebfff27dba70193b1 Mon Sep 17 00:00:00 2001 From: cbdev Date: Wed, 24 Jul 2019 21:38:45 +0200 Subject: Allow n:1 multi-channel mapping --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'README.md') diff --git a/README.md b/README.md index bce7b71..3704f5f 100644 --- a/README.md +++ b/README.md @@ -98,7 +98,8 @@ delimiting a range of channels. Multiple such expressions may be used in one ch specification, with the rightmost expression being incremented (or decremented) first for evaluation. -Both sides of a multi-channel assignment need to have the same number of channels. +Both sides of a multi-channel assignment need to have the same number of channels, or one +side must have exactly one channel. Example multi-channel mapping: -- cgit v1.2.3 From 26ee2eacc7d60aa379c9e4b9b9c6b8bcdcd4bc6b Mon Sep 17 00:00:00 2001 From: cbdev Date: Sat, 27 Jul 2019 19:31:21 +0200 Subject: Refactor OSC backend, implement pattern matching --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'README.md') diff --git a/README.md b/README.md index 3704f5f..9647d4f 100644 --- a/README.md +++ b/README.md @@ -7,8 +7,8 @@ Currently, the MIDIMonster supports the following protocols: * MIDI (Linux, via ALSA) * ArtNet -* sACN / E1.31 -* OSC +* Streaming ACN (sACN / E1.31) +* OpenSoundControl (OSC) * evdev input devices (Linux) * Open Lighting Architecture (OLA) -- cgit v1.2.3 From 0bb690437795f1be0f68c562fc2b9dbc66bc97a8 Mon Sep 17 00:00:00 2001 From: cbdev Date: Sat, 27 Jul 2019 19:56:22 +0200 Subject: Add flying faders to readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'README.md') diff --git a/README.md b/README.md index 9647d4f..d64190f 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ on any other (or the same) supported protocol, for example to: * Translate MIDI Control Changes into Notes ([Example configuration](configs/unifest-17.cfg)) * Translate MIDI Notes into ArtNet or sACN ([Example configuration](configs/launchctl-sacn.cfg)) * Translate OSC messages into MIDI ([Example configuration](configs/midi-osc.cfg)) -* Dynamically route and modify events using the Lua programming language ([Example configuration](configs/lua.cfg) and [Script](configs/demo.lua)) to create your own lighting controller +* Dynamically route and modify events using the Lua programming language ([Example configuration](configs/lua.cfg) and [Script](configs/demo.lua)) to create your own lighting controller or run effects on TouchOSC (Flying faders demo [configuration](configs/flying-faders.cfg) and [script](configs/flying-faders.lua)) * Use an OSC app as a simple lighting controller via ArtNet or sACN * Visualize ArtNet data using OSC tools * Control lighting fixtures or DAWs using gamepad controllers ([Example configuration](configs/evdev.conf)) -- cgit v1.2.3 From bbeade8898200a8024169ece30c620016fd5eaf1 Mon Sep 17 00:00:00 2001 From: cbdev Date: Thu, 1 Aug 2019 20:58:21 +0200 Subject: Implement midi backend detect option --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'README.md') diff --git a/README.md b/README.md index d64190f..8a0d7f9 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ on any other (or the same) supported protocol, for example to: * Dynamically route and modify events using the Lua programming language ([Example configuration](configs/lua.cfg) and [Script](configs/demo.lua)) to create your own lighting controller or run effects on TouchOSC (Flying faders demo [configuration](configs/flying-faders.cfg) and [script](configs/flying-faders.lua)) * Use an OSC app as a simple lighting controller via ArtNet or sACN * Visualize ArtNet data using OSC tools -* Control lighting fixtures or DAWs using gamepad controllers ([Example configuration](configs/evdev.conf)) +* Control lighting fixtures or DAWs using gamepad controllers, trackballs, etc ([Example configuration](configs/evdev.conf)) * Play games or type using MIDI controllers [![Build Status](https://travis-ci.com/cbdevnet/midimonster.svg?branch=master)](https://travis-ci.com/cbdevnet/midimonster) [![Coverity Scan Build Status](https://scan.coverity.com/projects/15168/badge.svg)](https://scan.coverity.com/projects/15168) -- cgit v1.2.3 From bb6111986bf7a997055287b916d0822957c5d13c Mon Sep 17 00:00:00 2001 From: cbdev Date: Sun, 11 Aug 2019 20:29:17 +0200 Subject: Initial maweb backend --- README.md | 1 + 1 file changed, 1 insertion(+) (limited to 'README.md') diff --git a/README.md b/README.md index 8a0d7f9..3e9bb88 100644 --- a/README.md +++ b/README.md @@ -137,6 +137,7 @@ support for the protocols to translate. * `liblua5.3-dev` (for the lua backend) * `libola-dev` (for the optional OLA backend) * `pkg-config` (as some projects and systems like to spread their files around) +* `libssl-dev` (for the MA Web Remote backend) * A C compiler * GNUmake -- cgit v1.2.3 From 4863711ee2dac065151f5c9ab5508eb479b25b72 Mon Sep 17 00:00:00 2001 From: cbdev Date: Sat, 17 Aug 2019 01:46:06 +0200 Subject: Implement evdev relative axis output (Fixes #20) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'README.md') diff --git a/README.md b/README.md index 3e9bb88..ff6e9cb 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ on any other (or the same) supported protocol, for example to: * Use an OSC app as a simple lighting controller via ArtNet or sACN * Visualize ArtNet data using OSC tools * Control lighting fixtures or DAWs using gamepad controllers, trackballs, etc ([Example configuration](configs/evdev.conf)) -* Play games or type using MIDI controllers +* Play games, type, or control your mouse using MIDI controllers ([Example configuration](configs/midi-mouse.cfg)) [![Build Status](https://travis-ci.com/cbdevnet/midimonster.svg?branch=master)](https://travis-ci.com/cbdevnet/midimonster) [![Coverity Scan Build Status](https://scan.coverity.com/projects/15168/badge.svg)](https://scan.coverity.com/projects/15168) -- cgit v1.2.3 From 7b3129b46a1011458744bd70279367f47979aef0 Mon Sep 17 00:00:00 2001 From: cbdev Date: Sat, 17 Aug 2019 01:47:48 +0200 Subject: Fix README link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'README.md') diff --git a/README.md b/README.md index ff6e9cb..4d8fe18 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ on any other (or the same) supported protocol, for example to: * Dynamically route and modify events using the Lua programming language ([Example configuration](configs/lua.cfg) and [Script](configs/demo.lua)) to create your own lighting controller or run effects on TouchOSC (Flying faders demo [configuration](configs/flying-faders.cfg) and [script](configs/flying-faders.lua)) * Use an OSC app as a simple lighting controller via ArtNet or sACN * Visualize ArtNet data using OSC tools -* Control lighting fixtures or DAWs using gamepad controllers, trackballs, etc ([Example configuration](configs/evdev.conf)) +* Control lighting fixtures or DAWs using gamepad controllers, trackballs, etc ([Example configuration](configs/evdev.cfg)) * Play games, type, or control your mouse using MIDI controllers ([Example configuration](configs/midi-mouse.cfg)) [![Build Status](https://travis-ci.com/cbdevnet/midimonster.svg?branch=master)](https://travis-ci.com/cbdevnet/midimonster) [![Coverity Scan Build Status](https://scan.coverity.com/projects/15168/badge.svg)](https://scan.coverity.com/projects/15168) -- cgit v1.2.3 From 8b016f61a4b3d3be0c7b1e311209ab991276af0c Mon Sep 17 00:00:00 2001 From: cbdev Date: Thu, 22 Aug 2019 21:13:48 +0200 Subject: Implement input for the maweb backend (with a few limitations) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'README.md') diff --git a/README.md b/README.md index 4d8fe18..40f8fbb 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ on any other (or the same) supported protocol, for example to: * Translate MIDI Control Changes into Notes ([Example configuration](configs/unifest-17.cfg)) * Translate MIDI Notes into ArtNet or sACN ([Example configuration](configs/launchctl-sacn.cfg)) * Translate OSC messages into MIDI ([Example configuration](configs/midi-osc.cfg)) -* Dynamically route and modify events using the Lua programming language ([Example configuration](configs/lua.cfg) and [Script](configs/demo.lua)) to create your own lighting controller or run effects on TouchOSC (Flying faders demo [configuration](configs/flying-faders.cfg) and [script](configs/flying-faders.lua)) +* Dynamically generate, route and modify events using the Lua programming language ([Example configuration](configs/lua.cfg) and [Script](configs/demo.lua)) to create your own lighting controller or run effects on TouchOSC (Flying faders demo [configuration](configs/flying-faders.cfg) and [script](configs/flying-faders.lua)) * Use an OSC app as a simple lighting controller via ArtNet or sACN * Visualize ArtNet data using OSC tools * Control lighting fixtures or DAWs using gamepad controllers, trackballs, etc ([Example configuration](configs/evdev.cfg)) -- cgit v1.2.3 From b4b27aa4a90899d5b025bbef11d444d4c47800d9 Mon Sep 17 00:00:00 2001 From: cbdev Date: Fri, 23 Aug 2019 19:47:53 +0200 Subject: Finalize & publish maweb backend --- README.md | 2 ++ 1 file changed, 2 insertions(+) (limited to 'README.md') diff --git a/README.md b/README.md index 40f8fbb..5c4233f 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,7 @@ Currently, the MIDIMonster supports the following protocols: * OpenSoundControl (OSC) * evdev input devices (Linux) * Open Lighting Architecture (OLA) +* MA Lighting Web Remote with additional flexibility provided by a Lua scripting environment. @@ -121,6 +122,7 @@ special information. These documentation files are located in the `backends/` di * [`ola` backend documentation](backends/ola.md) * [`osc` backend documentation](backends/osc.md) * [`lua` backend documentation](backends/lua.md) +* [`maweb` backend documentation](backends/maweb.md) ## Building -- cgit v1.2.3 From 191949152d803229275d7b98b184ff722a9549a2 Mon Sep 17 00:00:00 2001 From: cbdev Date: Sat, 31 Aug 2019 17:23:22 +0200 Subject: Update documentation --- README.md | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'README.md') diff --git a/README.md b/README.md index 5c4233f..cf4d8d1 100644 --- a/README.md +++ b/README.md @@ -143,12 +143,19 @@ support for the protocols to translate. * A C compiler * GNUmake +To build for Windows, the package `mingw-w64` provides a cross-compiler that can +be used to build a subset of the backends as well as the core. + ### Build -Just running `make` in the source directory should do the trick. +For Linux and OSX, just running `make` in the source directory should do the trick. Some backends have been marked as optional as they require rather large additional software to be installed, -for example the `ola` backend. To build these, run `make full` in the backends directory. +for example the `ola` backend. To create a build including these, run `make full`. + +To build on windows, install the crosscompiler package listed above and run +`make windows`. This will build `midimonster.exe` as well as a set of backends as DLL +files. ## Development -- cgit v1.2.3 From 1a23b9339c0164ec18fe6dc5eb900185e4f9d886 Mon Sep 17 00:00:00 2001 From: cbdev Date: Wed, 4 Sep 2019 21:31:14 +0200 Subject: Update the list of supported protocols to a table --- README.md | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) (limited to 'README.md') diff --git a/README.md b/README.md index cf4d8d1..25cdce0 100644 --- a/README.md +++ b/README.md @@ -5,15 +5,17 @@ tool between multi-channel absolute-value-based control and/or bus protocols. Currently, the MIDIMonster supports the following protocols: -* MIDI (Linux, via ALSA) -* ArtNet -* Streaming ACN (sACN / E1.31) -* OpenSoundControl (OSC) -* evdev input devices (Linux) -* Open Lighting Architecture (OLA) -* MA Lighting Web Remote - -with additional flexibility provided by a Lua scripting environment. +| Protocol | Operating Systems | Notes | Backends | +|-------------------------------|-----------------------|-------------------------------|-------------------------------| +| MIDI | Linux | Via ALSA | [`midi`](backends/midi.md) | +| ArtNet | Linux, Windows, OSX | Version 4 | [`artnet`](backends/artnet.md)| +| Streaming ACN (sACN / E1.31) | Linux, Windows, OSX | | [`sacn`](backends/sacn.md) | +| OpenSoundControl (OSC) | Linux, Windows, OSX | | [`osc`](backends/osc.md) | +| evdev input devices | Linux | Virtual output supported | [`evdev`](backends/evdev.md) | +| Open Lighting Architecture | Linux, OSX | | [`ola`](backends/ola.md) | +| MA Lighting Web Remote | Linux, Windows, OSX | GrandMA and dot2 (incl. OnPC) | [`maweb`](backends/maweb.md) | + +with additional flexibility provided by a [Lua scripting environment](backends/lua.md). The MIDIMonster allows the user to translate any channel on one protocol into channel(s) on any other (or the same) supported protocol, for example to: -- cgit v1.2.3 From f19e3fe0d131c68d1e77fcd8706b260c28f508b8 Mon Sep 17 00:00:00 2001 From: cbdev Date: Sat, 7 Sep 2019 14:20:00 +0200 Subject: maweb I/O buffering --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'README.md') diff --git a/README.md b/README.md index 25cdce0..33c4f5a 100644 --- a/README.md +++ b/README.md @@ -155,9 +155,9 @@ For Linux and OSX, just running `make` in the source directory should do the tri Some backends have been marked as optional as they require rather large additional software to be installed, for example the `ola` backend. To create a build including these, run `make full`. -To build on windows, install the crosscompiler package listed above and run -`make windows`. This will build `midimonster.exe` as well as a set of backends as DLL -files. +To build for Windows, you still need to compile on a Linux machine. +Install the crosscompiler package listed above and run `make windows`. +This will build `midimonster.exe` as well as a set of backends as DLL files. ## Development -- cgit v1.2.3 From 1061c4a683df6ccef98c4307860d1c1db323131a Mon Sep 17 00:00:00 2001 From: cbdev Date: Tue, 17 Sep 2019 22:08:14 +0200 Subject: Publish winmidi backend --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'README.md') diff --git a/README.md b/README.md index 33c4f5a..3cdac99 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ Currently, the MIDIMonster supports the following protocols: | Protocol | Operating Systems | Notes | Backends | |-------------------------------|-----------------------|-------------------------------|-------------------------------| -| MIDI | Linux | Via ALSA | [`midi`](backends/midi.md) | +| MIDI | Linux, Windows | Linux: via ALSA | [`midi`](backends/midi.md), [`winmidi`](backends/winmidi.md) | | ArtNet | Linux, Windows, OSX | Version 4 | [`artnet`](backends/artnet.md)| | Streaming ACN (sACN / E1.31) | Linux, Windows, OSX | | [`sacn`](backends/sacn.md) | | OpenSoundControl (OSC) | Linux, Windows, OSX | | [`osc`](backends/osc.md) | @@ -117,6 +117,7 @@ configuration options, channel specification syntax and any known problems or ot special information. These documentation files are located in the `backends/` directory. * [`midi` backend documentation](backends/midi.md) +* [`winmidi` backend documentation](backends/winmidi.md) * [`artnet` backend documentation](backends/artnet.md) * [`sacn` backend documentation](backends/sacn.md) * [`evdev` backend documentation](backends/evdev.md) -- cgit v1.2.3 From ff587cb77ee4a7e9169affbfefd84547da6fea38 Mon Sep 17 00:00:00 2001 From: cbdev Date: Wed, 6 Nov 2019 18:50:57 +0100 Subject: Implement JACK backend --- README.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'README.md') diff --git a/README.md b/README.md index 3cdac99..f23e696 100644 --- a/README.md +++ b/README.md @@ -7,13 +7,14 @@ Currently, the MIDIMonster supports the following protocols: | Protocol | Operating Systems | Notes | Backends | |-------------------------------|-----------------------|-------------------------------|-------------------------------| -| MIDI | Linux, Windows | Linux: via ALSA | [`midi`](backends/midi.md), [`winmidi`](backends/winmidi.md) | +| MIDI | Linux, Windows | Linux: via ALSA/JACK | [`midi`](backends/midi.md), [`winmidi`](backends/winmidi.md), [`jack`](backends/jack.md) | | ArtNet | Linux, Windows, OSX | Version 4 | [`artnet`](backends/artnet.md)| | Streaming ACN (sACN / E1.31) | Linux, Windows, OSX | | [`sacn`](backends/sacn.md) | | OpenSoundControl (OSC) | Linux, Windows, OSX | | [`osc`](backends/osc.md) | | evdev input devices | Linux | Virtual output supported | [`evdev`](backends/evdev.md) | | Open Lighting Architecture | Linux, OSX | | [`ola`](backends/ola.md) | | MA Lighting Web Remote | Linux, Windows, OSX | GrandMA and dot2 (incl. OnPC) | [`maweb`](backends/maweb.md) | +| JACK/LV2 Control Voltage (CV) | Linux | | [`jack`](backends/jack.md) | with additional flexibility provided by a [Lua scripting environment](backends/lua.md). @@ -117,6 +118,7 @@ configuration options, channel specification syntax and any known problems or ot special information. These documentation files are located in the `backends/` directory. * [`midi` backend documentation](backends/midi.md) +* [`jack` backend documentation](backends/jack.md) * [`winmidi` backend documentation](backends/winmidi.md) * [`artnet` backend documentation](backends/artnet.md) * [`sacn` backend documentation](backends/sacn.md) @@ -137,10 +139,11 @@ This section will explain how to build the provided sources to be able to run In order to build the MIDIMonster, you'll need some libraries that provide support for the protocols to translate. -* `libasound2-dev` (for the MIDI backend) +* `libasound2-dev` (for the ALSA MIDI backend) * `libevdev-dev` (for the evdev backend) * `liblua5.3-dev` (for the lua backend) * `libola-dev` (for the optional OLA backend) +* `libjack-jackd2-dev` (for the JACK backend) * `pkg-config` (as some projects and systems like to spread their files around) * `libssl-dev` (for the MA Web Remote backend) * A C compiler -- cgit v1.2.3 From 20eb48ce4ccffe88b22ecd6a93bc9e097e5aa498 Mon Sep 17 00:00:00 2001 From: cbdev Date: Wed, 6 Nov 2019 21:22:09 +0100 Subject: Use default mutex type for OSX --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'README.md') diff --git a/README.md b/README.md index f23e696..def72d6 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ Currently, the MIDIMonster supports the following protocols: | evdev input devices | Linux | Virtual output supported | [`evdev`](backends/evdev.md) | | Open Lighting Architecture | Linux, OSX | | [`ola`](backends/ola.md) | | MA Lighting Web Remote | Linux, Windows, OSX | GrandMA and dot2 (incl. OnPC) | [`maweb`](backends/maweb.md) | -| JACK/LV2 Control Voltage (CV) | Linux | | [`jack`](backends/jack.md) | +| JACK/LV2 Control Voltage (CV) | Linux, OSX | | [`jack`](backends/jack.md) | with additional flexibility provided by a [Lua scripting environment](backends/lua.md). -- cgit v1.2.3 From 6c75f07260639fd2bc6d328d5f00c72ab4382fa8 Mon Sep 17 00:00:00 2001 From: cbdev Date: Wed, 6 Nov 2019 21:53:19 +0100 Subject: Update README to reflect MIDI on OSX can be done via JACK --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'README.md') diff --git a/README.md b/README.md index def72d6..130945a 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ Currently, the MIDIMonster supports the following protocols: | Protocol | Operating Systems | Notes | Backends | |-------------------------------|-----------------------|-------------------------------|-------------------------------| -| MIDI | Linux, Windows | Linux: via ALSA/JACK | [`midi`](backends/midi.md), [`winmidi`](backends/winmidi.md), [`jack`](backends/jack.md) | +| MIDI | Linux, Windows, OSX | Linux: via ALSA/JACK, OSX: via JACK | [`midi`](backends/midi.md), [`winmidi`](backends/winmidi.md), [`jack`](backends/jack.md) | | ArtNet | Linux, Windows, OSX | Version 4 | [`artnet`](backends/artnet.md)| | Streaming ACN (sACN / E1.31) | Linux, Windows, OSX | | [`sacn`](backends/sacn.md) | | OpenSoundControl (OSC) | Linux, Windows, OSX | | [`osc`](backends/osc.md) | -- cgit v1.2.3 From 350f0d2d2eaff5f0d57b09857102e2df1e96d733 Mon Sep 17 00:00:00 2001 From: cbdev Date: Thu, 7 Nov 2019 18:44:19 +0100 Subject: Makefile install target and packaging instructions (Fixes #28) --- README.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'README.md') diff --git a/README.md b/README.md index 130945a..c31f16c 100644 --- a/README.md +++ b/README.md @@ -156,6 +156,16 @@ be used to build a subset of the backends as well as the core. For Linux and OSX, just running `make` in the source directory should do the trick. +The build process accepts the following parameters, either from the environment or +as arguments to the `make` invocation: + +| Target | Parameter | Default value | Description | +|---------------|-----------------------|-------------------------------|-------------------------------| +| build targets | `DEFAULT_CFG` | `monster.cfg` | Default configuration file | +| build targets | `PLUGINS` | Linux/OSX: `./backends/`, Windows: `backends\` | Backend plugin library path | +| `install` | `DESTDIR` | empty | Destination directory for packaging builds | +| `install` | `PREFIX` | `/usr` | Install prefix for binaries | + Some backends have been marked as optional as they require rather large additional software to be installed, for example the `ola` backend. To create a build including these, run `make full`. @@ -163,6 +173,19 @@ To build for Windows, you still need to compile on a Linux machine. Install the crosscompiler package listed above and run `make windows`. This will build `midimonster.exe` as well as a set of backends as DLL files. +For system-wide install or packaging builds, the following steps are recommended: + +``` +export PREFIX=/usr +export PLUGINS=$PREFIX/lib/midimonster +export DEFAULT_CFG=/etc/midimonster.cfg +make +make install +``` + +Depending on your configuration of `DESTDIR`, the `make install` step may require root privileges to +install the binaries to the appropriate destinations. + ## Development The architecture is split into the `midimonster` core, handling mapping -- cgit v1.2.3 From 216bde68d3cca8f5f4dca2d97ae6c273037309cd Mon Sep 17 00:00:00 2001 From: cbdev Date: Sun, 10 Nov 2019 14:12:37 +0100 Subject: Add clean step to packaging instructions --- README.md | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'README.md') diff --git a/README.md b/README.md index c31f16c..c8da0c1 100644 --- a/README.md +++ b/README.md @@ -169,9 +169,12 @@ as arguments to the `make` invocation: Some backends have been marked as optional as they require rather large additional software to be installed, for example the `ola` backend. To create a build including these, run `make full`. -To build for Windows, you still need to compile on a Linux machine. -Install the crosscompiler package listed above and run `make windows`. -This will build `midimonster.exe` as well as a set of backends as DLL files. +Backends may also be built selectively by runnning `make ` in the `backends/` directory, +for example + +``` +make jack.so +``` For system-wide install or packaging builds, the following steps are recommended: @@ -179,13 +182,18 @@ For system-wide install or packaging builds, the following steps are recommended export PREFIX=/usr export PLUGINS=$PREFIX/lib/midimonster export DEFAULT_CFG=/etc/midimonster.cfg -make +make clean +make full make install ``` Depending on your configuration of `DESTDIR`, the `make install` step may require root privileges to install the binaries to the appropriate destinations. +To build for Windows, you still need to compile on a Linux machine. Install the `mingw-w64` crosscompiler package +and run `make windows` in the project directory. This will build `midimonster.exe` as well as a set of backends +as DLL files. + ## Development The architecture is split into the `midimonster` core, handling mapping -- cgit v1.2.3 From ccde53920cce56c2873c6cf35460fd74518dc79b Mon Sep 17 00:00:00 2001 From: cbdev Date: Sun, 10 Nov 2019 14:27:07 +0100 Subject: Fix spelling --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'README.md') diff --git a/README.md b/README.md index c8da0c1..9af09b3 100644 --- a/README.md +++ b/README.md @@ -169,7 +169,7 @@ as arguments to the `make` invocation: Some backends have been marked as optional as they require rather large additional software to be installed, for example the `ola` backend. To create a build including these, run `make full`. -Backends may also be built selectively by runnning `make ` in the `backends/` directory, +Backends may also be built selectively by running `make ` in the `backends/` directory, for example ``` -- cgit v1.2.3 From a7ca0def9e36912f582bd9f21dbc68808b3fd037 Mon Sep 17 00:00:00 2001 From: cbdev Date: Wed, 13 Nov 2019 22:23:10 +0100 Subject: Extend build instructions (Fixes #32) --- README.md | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) (limited to 'README.md') diff --git a/README.md b/README.md index 9af09b3..dd728f0 100644 --- a/README.md +++ b/README.md @@ -176,6 +176,8 @@ for example make jack.so ``` +#### Building for packaging or installation + For system-wide install or packaging builds, the following steps are recommended: ``` @@ -190,9 +192,22 @@ make install Depending on your configuration of `DESTDIR`, the `make install` step may require root privileges to install the binaries to the appropriate destinations. -To build for Windows, you still need to compile on a Linux machine. Install the `mingw-w64` crosscompiler package -and run `make windows` in the project directory. This will build `midimonster.exe` as well as a set of backends -as DLL files. +#### Building for Windows + +To build for Windows, you still need to compile on a Linux machine (virtual machines work well for this). + +In a fresh Debian installation, you will need to install the following packages (using `apt-get install` as root): + * `build-essential` + * `pkg-config` + * `git` + * `mingw-w64` + +Clone the repository and run `make windows` in the project directory. +This will build `midimonster.exe` as well as a set of backends as DLL files, which you can then copy +to the Windows machine. + +Note that some backends have limitations when building on Windows (refer to the backend documentation +for detailed information). ## Development -- cgit v1.2.3 From 95bf6f5f98e493ff9d4f630d8a88343b5349def0 Mon Sep 17 00:00:00 2001 From: cbdev Date: Wed, 13 Nov 2019 23:15:54 +0100 Subject: Fix list formatting --- README.md | 1 + 1 file changed, 1 insertion(+) (limited to 'README.md') diff --git a/README.md b/README.md index dd728f0..6b08018 100644 --- a/README.md +++ b/README.md @@ -197,6 +197,7 @@ install the binaries to the appropriate destinations. To build for Windows, you still need to compile on a Linux machine (virtual machines work well for this). In a fresh Debian installation, you will need to install the following packages (using `apt-get install` as root): + * `build-essential` * `pkg-config` * `git` -- cgit v1.2.3 From cb17ab98ebffb5b736068452da5a46016caba424 Mon Sep 17 00:00:00 2001 From: cbdev Date: Wed, 13 Nov 2019 23:16:46 +0100 Subject: Fix package listing... --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'README.md') diff --git a/README.md b/README.md index 6b08018..83cd06b 100644 --- a/README.md +++ b/README.md @@ -198,10 +198,10 @@ To build for Windows, you still need to compile on a Linux machine (virtual mach In a fresh Debian installation, you will need to install the following packages (using `apt-get install` as root): - * `build-essential` - * `pkg-config` - * `git` - * `mingw-w64` +* `build-essential` +* `pkg-config` +* `git` +* `mingw-w64` Clone the repository and run `make windows` in the project directory. This will build `midimonster.exe` as well as a set of backends as DLL files, which you can then copy -- cgit v1.2.3 From bb6e54e99b86a71fcc300890b41b49209245ac61 Mon Sep 17 00:00:00 2001 From: cbdev Date: Wed, 4 Dec 2019 21:48:25 +0100 Subject: Have the configuration file be installed in a separate directory --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'README.md') diff --git a/README.md b/README.md index 83cd06b..bcae9dd 100644 --- a/README.md +++ b/README.md @@ -183,7 +183,7 @@ For system-wide install or packaging builds, the following steps are recommended ``` export PREFIX=/usr export PLUGINS=$PREFIX/lib/midimonster -export DEFAULT_CFG=/etc/midimonster.cfg +export DEFAULT_CFG=/etc/midimonster/midimonster.cfg make clean make full make install -- cgit v1.2.3 From 96fe966928cd83f22aed388a11013b67c1a374a1 Mon Sep 17 00:00:00 2001 From: cbdev Date: Fri, 6 Dec 2019 18:58:59 +0100 Subject: Make install path for examples configurable --- README.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'README.md') diff --git a/README.md b/README.md index bcae9dd..9bcd913 100644 --- a/README.md +++ b/README.md @@ -159,12 +159,13 @@ For Linux and OSX, just running `make` in the source directory should do the tri The build process accepts the following parameters, either from the environment or as arguments to the `make` invocation: -| Target | Parameter | Default value | Description | -|---------------|-----------------------|-------------------------------|-------------------------------| -| build targets | `DEFAULT_CFG` | `monster.cfg` | Default configuration file | -| build targets | `PLUGINS` | Linux/OSX: `./backends/`, Windows: `backends\` | Backend plugin library path | -| `install` | `DESTDIR` | empty | Destination directory for packaging builds | -| `install` | `PREFIX` | `/usr` | Install prefix for binaries | +| Target | Parameter | Default value | Description | +|-------------------------------|-----------------------|-------------------------------|-------------------------------| +| build targets, `install` | `DEFAULT_CFG` | `monster.cfg` | Default configuration file | +| build targets, `install` | `PLUGINS` | Linux/OSX: `./backends/`, Windows: `backends\` | Backend plugin library path | +| `install` | `DESTDIR` | empty | Destination directory for packaging builds | +| `install` | `PREFIX` | `/usr` | Install prefix for binaries | +| `install` | `EXAMPLES` | `$(PREFIX)/share/midimonster` | Install path for example configurations | Some backends have been marked as optional as they require rather large additional software to be installed, for example the `ola` backend. To create a build including these, run `make full`. -- cgit v1.2.3 From 0468b5c5fafe0b6d72d8cd05613da3e705fa25c3 Mon Sep 17 00:00:00 2001 From: cbdev Date: Fri, 6 Dec 2019 19:05:41 +0100 Subject: Update the build parameters section with some explanations --- README.md | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) (limited to 'README.md') diff --git a/README.md b/README.md index 9bcd913..c7fd3c1 100644 --- a/README.md +++ b/README.md @@ -159,13 +159,19 @@ For Linux and OSX, just running `make` in the source directory should do the tri The build process accepts the following parameters, either from the environment or as arguments to the `make` invocation: -| Target | Parameter | Default value | Description | -|-------------------------------|-----------------------|-------------------------------|-------------------------------| -| build targets, `install` | `DEFAULT_CFG` | `monster.cfg` | Default configuration file | -| build targets, `install` | `PLUGINS` | Linux/OSX: `./backends/`, Windows: `backends\` | Backend plugin library path | -| `install` | `DESTDIR` | empty | Destination directory for packaging builds | -| `install` | `PREFIX` | `/usr` | Install prefix for binaries | -| `install` | `EXAMPLES` | `$(PREFIX)/share/midimonster` | Install path for example configurations | +| Target | Parameter | Default value | Description | +|---------------|-----------------------|-------------------------------|-------------------------------| +| build targets | `DEFAULT_CFG` | `monster.cfg` | Default configuration file | +| build targets | `PLUGINS` | Linux/OSX: `./backends/`, Windows: `backends\` | Backend plugin library path | +| `install` | `PREFIX` | `/usr` | Install prefix for binaries | +| `install` | `DESTDIR` | empty | Destination directory for packaging builds | +| `install` | `DEFAULT_CFG` | empty | Install path for default configuration file | +| `install` | `PLUGINS` | `$(PREFIX)/lib/midimonster` | Destination directory for packaging builds | +| `install` | `EXAMPLES` | `$(PREFIX)/share/midimonster` | Install path for example configurations | + +Note that the same variables may have different default values depending on the target. This implies that +builds that are destined to be installed require those variables to be set to the same value for the +build and `install` targets. Some backends have been marked as optional as they require rather large additional software to be installed, for example the `ola` backend. To create a build including these, run `make full`. -- cgit v1.2.3 From 01c8635205e25ba2e6c128010ad512cf03868bc2 Mon Sep 17 00:00:00 2001 From: cbdev Date: Fri, 6 Dec 2019 19:07:25 +0100 Subject: Fix variable description --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'README.md') diff --git a/README.md b/README.md index c7fd3c1..785d741 100644 --- a/README.md +++ b/README.md @@ -166,7 +166,7 @@ as arguments to the `make` invocation: | `install` | `PREFIX` | `/usr` | Install prefix for binaries | | `install` | `DESTDIR` | empty | Destination directory for packaging builds | | `install` | `DEFAULT_CFG` | empty | Install path for default configuration file | -| `install` | `PLUGINS` | `$(PREFIX)/lib/midimonster` | Destination directory for packaging builds | +| `install` | `PLUGINS` | `$(PREFIX)/lib/midimonster` | Install path for backend shared objects | | `install` | `EXAMPLES` | `$(PREFIX)/share/midimonster` | Install path for example configurations | Note that the same variables may have different default values depending on the target. This implies that -- cgit v1.2.3 From 7e59d4832f819abe0bc981ebdac20f6e12a031e7 Mon Sep 17 00:00:00 2001 From: Spacelord Date: Fri, 6 Dec 2019 22:28:04 +0100 Subject: Added update to README --- README.md | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'README.md') diff --git a/README.md b/README.md index 785d741..1f22657 100644 --- a/README.md +++ b/README.md @@ -182,6 +182,14 @@ for example ``` make jack.so ``` +#### Buiding with Installer + +For easy installation, the following steps are required: + +``` +wget https://raw.githubusercontent.com/cbdevnet/midimonster/master/installer.sh ./ +./installer.sh +``` #### Building for packaging or installation -- cgit v1.2.3 From 553633e0ab0191756bb5b8810a461168dfc66a3d Mon Sep 17 00:00:00 2001 From: Spacelord Date: Fri, 6 Dec 2019 22:37:40 +0100 Subject: added chmod +x to Installer README --- README.md | 1 + 1 file changed, 1 insertion(+) (limited to 'README.md') diff --git a/README.md b/README.md index 1f22657..e925541 100644 --- a/README.md +++ b/README.md @@ -188,6 +188,7 @@ For easy installation, the following steps are required: ``` wget https://raw.githubusercontent.com/cbdevnet/midimonster/master/installer.sh ./ +chmod +x ./installer.sh ./installer.sh ``` -- cgit v1.2.3 From 34b8dd5c71615724408022db37dcf94576a12280 Mon Sep 17 00:00:00 2001 From: cbdev Date: Fri, 6 Dec 2019 22:51:56 +0100 Subject: Add link to installer section --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'README.md') diff --git a/README.md b/README.md index 1f22657..9052034 100644 --- a/README.md +++ b/README.md @@ -184,7 +184,7 @@ make jack.so ``` #### Buiding with Installer -For easy installation, the following steps are required: +For easy installation on Linux, the [installer script](installer.sh) can be used: ``` wget https://raw.githubusercontent.com/cbdevnet/midimonster/master/installer.sh ./ -- cgit v1.2.3 From 1bb3b9a3eaf94af045c39a1ff1ee8bf9b8e5b8ec Mon Sep 17 00:00:00 2001 From: cbdev Date: Sat, 7 Dec 2019 20:22:03 +0100 Subject: Mention debianization in README --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'README.md') diff --git a/README.md b/README.md index 454284f..8d38565 100644 --- a/README.md +++ b/README.md @@ -182,7 +182,7 @@ for example ``` make jack.so ``` -#### Buiding with Installer +#### Using the installer For easy installation on Linux, the [installer script](installer.sh) can be used: @@ -208,6 +208,9 @@ make install Depending on your configuration of `DESTDIR`, the `make install` step may require root privileges to install the binaries to the appropriate destinations. +To create Debian packages, use the debianization and `git-buildpackage` configuration on the `debian/master` +branch. Simply running `gbp buildpackage` should build a package for the last tagged release. + #### Building for Windows To build for Windows, you still need to compile on a Linux machine (virtual machines work well for this). -- cgit v1.2.3