~hp/eteroj.lv2

Open Sound Control inside LV2 plugin graphs
Append Issues/Patches section to readme
1e3e79c6 — builds.sr.ht 5 months ago
Update ci to release-0.2.0
34f9fb8e — builds.sr.ht 8 months ago
Update ci to release-0.1.1

clone

read-only
https://git.open-music-kontrollers.ch/~hp/eteroj.lv2
read/write
git@git.open-music-kontrollers.ch:~hp/eteroj.lv2

You can also use your local clone with git send-email.

#Eteroj

#Open Sound Control inside LV2 plugin graphs

builds.sr.ht status

This LV2 plugin bundle allows you to handle OSC (Open Sound Control) bundles and messages in modular hosts.

  • Insert/dispatch OSC from/to UDP, TCP (IPv4/6) and serial sockets
  • Pack/unpack MIDI into OSC
  • Pack/unpack OSC into MIDI
  • Pack/unpack LV2 atoms into OSC

Makes only sense to be used in hosts that allow routing of LV2 atom messages between plugins, e.g.

#Packages

#Plugins

#(De)Cloak

Embed OSC in MIDI Sysex messages. Use this to smuggle arbitrary OSC packets via MIDI to a given destination. It does also the opposite of course, e.g extract arbitrary OSC packets previously embedded in MIDI Sysex messages.

#IO

A plugin able to inject/eject OSC packets into/from the plugin graph to/from network and serial lines. The non-realtime network part of the plugin supports OSC via bidirectional UDP and TCP on top of IPv4/IPv6 and OSC via serial lines which is handy for interfacing to microcontrollers via U(S)ART and USB. TCP based connections support both (deprecated) size-prefix and SLIP framing (default).

Internally to the plugin graph, OSC packets are routed as first-class LV2 Atom objects, making the plugin compliant with any existing hosts.

Timestamped OSC bundles are injected into the plugin graph with sample accuracy.

The supported Urls are as follows:

// UDP IPv4 unicast server/client on port 2222
osc.udp://:2222
osc.udp://localhost:2222
	
// UDP IPv6 unicast server/client on port 3333
osc.udp://[]:3333
osc.udp://[::1]:3333

// UDP IPv4 broadcast server/client on port 3344
osc.udp://:3344
osc.udp://255.255.255.255:3344

// TCP IPv4 server/client on port 4444 (SLIP encoded)
osc.tcp://:4444
osc.tcp://localhost:4444

// TCP IPv6 server/client on port 5555 (SLIP encoded)
osc.tcp://[]:5555
osc.tcp://[::1]:5555

// TCP IPv4 server/client on port 6666 (SLIP encoded)
osc.slip.tcp://:6666
osc.slip.tcp://localhost:6666
	
// TCP IPv6 server/client on port 7777 (SLIP encoded)
osc.slip.tcp://[]:7777
osc.slip.tcp://[::1]:7777
	
// TCP IPv4 server/client on port 8888 (int32 size-prefixed)
osc.prefix.tcp://:8888
osc.prefix.tcp://localhost:8888
	
// TCP IPv6 server/client on port 9999 bound to loopback interface (int32 size-prefixed)
osc.prefix.tcp://[%lo]:9999
osc.prefix.tcp://[::1%lo]:9999

// Serial server/client on /dev/ttyUSB0 (SLIP encoded)
osc.serial:///dev/ttyUSB0

#Ninja

Embed Turtle RDF in OSC as string. Use this to smuggle arbitrary LV2 atom messages via OSC to a given destination. It does also the opposite of course, e.g. extract and deserialize Turtle RDF embedded in OSC messages to plain LV2 atoms.

#(Un)Pack

Embed arbitrary 1-3 byte MIDI commands (but Sysex) in OSC messages. Use this to send MIDI commands via OSC to a given destination. It does also the opposite of course, e.g. extract MIDI commands embedded in OSC messages to plain MIDI.

#Query

This plugin implements our OSC Introspect specification. It thus exports any methods and parameters of a given OSC device to transparently to LV2 properties.

#Issues/Patches

Please report issues to https://todo.open-music-kontrollers.ch/~hp/issues

Please submit patches to https://lists.open-music-kontrollers.ch/~hp/patches