Ember+ Remote control for LUCI STUDIO

Ember+ is a lightweight control protocol developed by Lawo and L-S-B Broadcast Technologies. It was published as an open standard, and various companies have implemented Ember+ in their products since. So have we.

The Ember+ remote control is done by the separate program called LuciRemoteCollector.exe which is distributed with Luci Studio. You can find it in Start menu “Luci Studio remote” or, when you purchased LUCI Studio installed on USB, in your USB drive’s “Windows” folder.

Activate Ember+ Plugin

The Ember+ feature is a separate plugin that can be bought in our shop. Easiest way is to select the Buy link in the LUCI STUDIO About window, so you get directly to the LUCI shop item with your activation code filled in.
After finishing the purchase, press the Re-Activate for License update button and wait for a positive result. Now LUCI STUDIO is all set for Ember+.

Start-up

To use Ember+ in your LUCI Studio instances Luci Remote Collector needs to be started only once. It will then communicate with all LUCI Studio instances  internally and receives the Ember+ commands externally.
So it basically acts like a relay for your Ember+ commands to all LUCI Studio instances. This is done in order to relieve the LUCI Studio instances from any external communication which could interfere with your live streams.

When you use multiple instances and start the Luci Remote Collector your screen would look something like this:

The LUCI Studio instances are set like this in the Options/Ember+ page:

All instances MUST have different instance names and port numbers. The port numbers are the ports that your Ember+ remote control connects to. They are however only opened for listening by the Luci Remote Collector.

The Ember tree looks like this:

Identity
  • product: Luci Studio
  • company: Technica Del Arte
  • serial: not used
  • version: current version nr of Luci Studio
  • features: not used
  • name*: the name of the instance
  • group*: instance group number ( color 0..12 )
Commands:
  • Disconnect: hang-up current connection ( Reject incoming )
  • Accept: Accept incoming call
  • Register: SIP registration or RTP go live
  • Connect: Connect to a destination. Connection parameters are transferred in the Argument as a UTF8 string encoded as json. Example:
    "D":"0031433219499@iptel.org","S":"48000","A":"MP2","B":"64000","M":"M"
    D: Destination
    P: Protocol, possible values: “sip”,”rtp”,”sc-rtp”,”mc-src”,”mc-rcv”
    S: Samplerate
    A: Algorithm/Codec , possible values:”MP2″,”AAC-LC”,”AAC-LD”,”AAC-ELD”,”AAC-HE”,”AAC-HEv2″,”G711-A”,”G711-u”,”G722″,”L16″,”L24″,”ULCC”,”ULCC-24″,”Opus Low delay”,”Opus Voice”,”Opus Audio”
    B: Bitrate
    M:Mode, “M”=mono, “S”=stereo
  • WarningAcknowledge: Acknowledge the warning with true or false ( see Connection Info: )
  • Record: set recording on( value true ) or off ( value false ) ( see Recording Info )
Connection Info
  • Status:
    • “Not Ready”: LUCI Studio instance not started
    • “Stand By”: LUCI Studio instance started
    • “Incoming Call Waiting”: Waiting for incoming connection (Only the Antenna is active).
    • “Calling”: Calling a destination, or incoming call.
    • “Synchronized”: Incoming stream is decoded Ok.
    • “UDP Warning”: No valid input stream data
    • “UDP Error”: Above warning has timed out, signalling a connection loss
  • Destination: Server,Callee or Caller.
  • Incoming format: A UTF8 string formatted as json, compatible with “Connect” command.
  • Outgoing format: A UTF8 string formatted as json, compatible with “Connect” command.
  • Station: The currently chosen station profile name.
  • Jitter buffer*: current jitter buffer, in ms, to use.
  • Dynamic jitter buffer*: current dynamic jitter buffer to use, in ms.
  • Live jitter buffer: jitter buffer that the streaming engine currently uses. Dependent on Jitter buffer and Dynamic jitter buffer. If the dynamic jitter buffer is 0, then this is always constant and the same as the Jitter buffer.
  • Live VU values: An Octet array of the following values: Maximum Delta of Peak Input VU value, The Peak Input VU value, Maximum Delta of Peak Output VU value, The Peak Output VU value, the Peak Input Jitter value, Peak Output Jitter value. Values are scales from 0..79 , overload = 80, and are all peak values of the last 180 msec. Delta values are useful as a audio signalling indicator.
  • WarningMessage: Information that has to be acknowledged, like error message dialogs. The string is a list of “::” separated items: “title text::message text::Acknowledge button text::Cancel button text”. After receiving, the message can be acknowledged by the Warning Acknowledge command.
  • Connection Time: The time durance that the connection is valid. The value string is hours:minutes:seconds.
SIP and STUN info
  • SIP Status:
    • Offline: at non SIP protocols
    • Registering: trying to REGISTER
    • Calling: trying to Call
    • Incoming call: signalling an incoming call
    • Call in progress: connection current
    • Registered: Registered to SIP server
  • SIP URI: own URI of LUCI Studio instance
  • STUN Status: Not used
  • External IP: Not used
Audio IO
  • Input: the input channels used.
  • Output: the output channels used.
  • Driver: using Asio-driver name , Wasapi or standard Windows driver.
Recording
  • State: Info about recording state ( “Stop”,”Pause”,”Recording” ).
  • File name: the filename string of the recording
  • Time: the Recording time string in minutes:seconds.

Note *: These can be changed by an Ember+ remote control, also during streaming.


Use Luci Remote Collector as Watchdog

LuciRemoteCollector.exe can be used as a tool to automatically startup your LUCI STUDIO instances and act as watchdog to restart them on failure. For this the “LuciRemoteCollector.exe” needs a “LuciRemoteCollector.ini” file in the same directory with a section called “Instances”

[Instances]
Instance0="D:\LUCI STUDIO\LUCI ST VC01.lsup"
Instance0_autostart=1
Instance0_emberport=9023
Instance0_inactivitytime=10
Instance1="D:\LUCI STUDIO\LUCI ST VC02.lsup"
Instance1_autostart=1
Instance1_emberport=9024
Instance1_inactivitytime=10

Every instance has the name InstanceX where X is a unique number ( 0,1.. ) and several options:

  • InstanceX=: the absolute file path of the instance lsup file in “..” quotes
  • InstanceX_autostart=: Let the collector start the luci instance, 1 = on , 0 = off
  • InstanceX_emberport=: override the ember port set in the lsup file and use this port for ember communication with this instance
  • InstanceX_inactivitytime=:  watch over the instance and restart it on response failure within the set time ( in seconds ).

Note: Although the “LuciRemoteCollector.exe” is installed in the c:\Program Files\LUCI Studio. It can be moved/copied to any other User writeable location eg. the lsup files location.