tv2 / sisyfos-audio-controller

Intelligent Audio for Automation systems
Other
43 stars 16 forks source link

ember+ lawo mc² console #121

Closed dewiweb closed 4 years ago

dewiweb commented 4 years ago

Hi olzzon, What's is the best way to test your audio controller with a mc² lawo console (ember+ implementation)? Which controls are available?

olzzon commented 4 years ago

As noted in wiki status, Lawo is only tested for POC on the Radio software, and is not in any working condition. Plans are to implement it sooner than later. But it depends on someone to sponsor it, or when it fits into my timeline. Right now, main focus is running GUI inside Sofie, and multitouch on touch screens.

But it's high on my own list as it's something that would helt a lot of people.

olzzon commented 4 years ago

Hi Dewiweb,

While digging a bit further into a future Lawo implementation, I discovered that selecting Lawo or Studer protocol would cause Sisyfos to crash. (And need crashing until the settings.json file in storage folder is deleted.

This is fixed in latest develop branch and in tag: v2.9.4 (if you run it as docker)

yboujraf commented 4 years ago

@olzzon

I have an onair emulator in Ember but not Ember+ and I am not able to get Directory or other and always crc error.

If you have an Private email, I could share the emulator and you could try if you want and let us know the satus

Best Regards Youssef

olzzon commented 4 years ago

Hi yboujraf,

As mentioned before Ember is NOT working, so unless you´re developing the code you have to wait. It will come.

I do have the emulator etc. But currently there are more important things (for us) to be made.

olzzon commented 4 years ago

Hi @yboujraf If you could post me the tree structure for your LAWO MC, then I´ll do a preliminary test protocol. I'm currently testing the latest NodeJS Ember+ (dufourgilles fork) using the Lawo Relay VRX4. I'm working in the "feat/lawo-mc" branch, if you wish to sneak peak :)

yboujraf commented 4 years ago

Dear @olzzon

V1 VS V2

For your information, the repository you mentioned was fully tested by me with the MC²56 MKIII & NOVA73HD on latest release of V1. Never tested on V2.

FYI : I am still using latest release of Version 1 of the library you referred because, in Version 2 (this is more a refactoring) all the commands are incompatible with the version of the owner, NRKO and EVS repositories. V2 makes a break of your previous code and performance too is affected.

Lawo Console MC²56 MKIII

=> I tested all the use cases : QualifiedNodes, QualifiedParameters, QualifiedMatrix and QualifiedFunctions and subscribe to streamidentifiers ;-)

STRIP = INP Signal

Normally with the library, you could expand all in one file and in your case, you need only the node path"2" where all the signals are in the INP path (faders).

Just for your information INP is a target & source on the Matrix. That means if you need the COMM 1 (Commentary 1) source on it you need to assign it first.

image

Expand Root nodes

test-discover_path_2.zip

Some screenshots about INP signal

image

image

image

Remarks : the path could be different between the screen capture and the expand of the Signals node (depend of the config loaded).

I hope it will help you to finalize your Ember+ connector.

Studer Ember protocol

This library is not compliant with the first version of ember Studer is using to connect with the Console or Route6k or other.

If you want I have the emulator of the On air3000 and Vista server but CRC error ;-) when trying a connect and keepAlive.

image

image

I hope this answer will help you to finalize your connector and make @dewiweb happy.

Best regards, Youssef

olzzon commented 4 years ago

Thanks a lot Youssef, Thats great info for further implementation. Last summer I gave up on Studer, and also gave up on rewriting the Node-Ember. So I think the v2 refactoring is great news, and though there are some issues, it's a way better code than v1, and Sisyfos (in feat/lawo-mc branch) has been refactored to the new V2.

Regarding Lawo is it on V2 that you have tested these parts? I Tried to get V2 to run on Studer with no luck, so when Lawo is running I´ll dig into that.

Thanks 😊

yboujraf commented 4 years ago

Dear @olzzon

Your are welcome.

V1 fixing the code from EVS

It took 3 weeks and 16 hours/day to test the V1 and to fix issues with the owner of the forked repo of EVS and finally not in the contributor ;-)

All are tested with EmberPlusViewer, vsmStudio and the code itself.

Refactoring & independent of any fork of any repository.

V1

It works without issues and it is enough for me but dependent of the EVS fork and ASN from EVS fork too.

V2

it works too but as told, no way to back to V1, performance not good if you compared from V1 and the refactoring is not enough. Promise issues and too much duplication of codes herited from previous fork) If you spent time you will discover that some manufacturers are not respecting the ember+ specifications ;-) then when you think you fixed an issue you discover a new one.

=>the idea is to become independent of EVS forks and/or rewrite from scratch a new EmberLib in TypeScript more typed and not find "any" anywhere

Studer - Ember protocol

If you have chance to have a connector for that I am your guy for testing it.

Best Regards, Youssef

dewiweb commented 4 years ago

Here My MC2 tree, It's most efficient for us to control GPC channels (linkable with input or outup channels). So, I send you .ember and .xml tree files with GPC1 paths.

Regards, Dewiweb

lawo-mc-tree.zip

dewiweb commented 4 years ago

Here the test log of lawo-mc branch with the first error:

yarn run v1.21.1 $ node dist/server/index.js --loggerConsoleLevel=verbose Elastic Ip : 0.0.0.0 Elastic Port : 9200 {"message":"Setting up Ember connection","level":"info"} info: Setting up Ember connection {"message":"Connecting to Ember","level":"info"} info: Connecting to Ember {"level":"info","message":"OSC Automation listening on port 5255"} info: OSC Automation listening on port 5255 {"level":"info","message":"Setting up MainThreadHandlers"} info: Setting up MainThreadHandlers {"level":"info","message":"SETTINGS UP STATE"} info: SETTINGS UP STATE {"message":"Initialising WebServer","level":"info"} info: Initialising WebServer {"level":"info","message":"Listening for Automation via OSC over UDP."} info: Listening for Automation via OSC over UDP. Getting Directory {"level":"info","message":"Client connected :ANrRU2AywXwh4u7UAAAA"} info: Client connected :ANrRU2AywXwh4u7UAAAA {"level":"info","message":"SETTING UP SOCKET IO MAIN HANDLERS"} info: SETTING UP SOCKET IO MAIN HANDLERS {"message":"Set faderlevel Channel : 1 Level : 0.73","level":"verbose"} Directory : TreeNode { _parent: null, _subscribers: Set {}, elements: Map { 2 => QualifiedNode { _parent: [TreeNode], _subscribers: Set {}, path: '2', _seqID: 106, contents: [NodeContents] }, 25030 => QualifiedNode { _parent: [TreeNode], _subscribers: Set {}, path: '25030', _seqID: 106, contents: [NodeContents] }, 300809 => QualifiedNode { _parent: [TreeNode], _subscribers: Set {}, path: '300809', _seqID: 106, contents: [NodeContents] }, 915053 => QualifiedNode { _parent: [TreeNode], _subscribers: Set {}, path: '915053', _seqID: 106, contents: [NodeContents] }, 1012547 => QualifiedNode { _parent: [TreeNode], _subscribers: Set {}, path: '1012547', _seqID: 106, contents: [NodeContents] }, 1012633 => QualifiedNode { _parent: [TreeNode], _subscribers: Set {}, path: '1012633', _seqID: 106, contents: [NodeContents] }, 1012697 => QualifiedNode { _parent: [TreeNode], _subscribers: Set {}, path: '1012697', _seqID: 106, contents: [NodeContents] }, 1012701 => QualifiedNode { _parent: [TreeNode], _subscribers: Set {}, path: '1012701', _seqID: 106, contents: [NodeContents] }, 1012704 => QualifiedNode { _parent: [TreeNode], _subscribers: Set {}, path: '1012704', _seqID: 106, contents: [NodeContents] } } } {"message":"Set faderlevel Channel : 1 Level : 0.72","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.71","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.7","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.71","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.73","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.74","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.75","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.76","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.77","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.76","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.74","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.71","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.69","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.67","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.66","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.64","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.61","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.59","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.58","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.56","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.55","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.54","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.53","level":"verbose"} {"level":"verbose","message":"Snapshot /home/regie/sisyfos-audio-controller/storage/default.shot Saved to storage folder"} {"level":"verbose","message":"Snapshot /home/regie/sisyfos-audio-controller/storage/default.shot Saved to storage folder"} {"level":"verbose","message":"Snapshot /home/regie/sisyfos-audio-controller/storage/default.shot Saved to storage folder"} {"level":"verbose","message":"Snapshot /home/regie/sisyfos-audio-controller/storage/default.shot Saved to storage folder"} {"level":"verbose","message":"Snapshot /home/regie/sisyfos-audio-controller/storage/default.shot Saved to storage folder"} {"level":"verbose","message":"Snapshot /home/regie/sisyfos-audio-controller/storage/default.shot Saved to storage folder"} {"level":"verbose","message":"Snapshot /home/regie/sisyfos-audio-controller/storage/default.shot Saved to storage folder"} {"level":"info","message":"Client connected :st7N84ihiHUeaAGQAAAB"} info: Client connected :st7N84ihiHUeaAGQAAAB {"level":"info","message":"SETTING UP SOCKET IO MAIN HANDLERS"} info: SETTING UP SOCKET IO MAIN HANDLERS {"level":"info","message":"Get snapshot list"} info: Get snapshot list {"level":"info","message":"Get snapshot list"} info: Get snapshot list {"level":"info","message":"Settings initial store on :st7N84ihiHUeaAGQAAAB"} info: Settings initial store on :st7N84ihiHUeaAGQAAAB {"level":"info","message":"Settings initial store on :st7N84ihiHUeaAGQAAAB"} info: Settings initial store on :st7N84ihiHUeaAGQAAAB {"level":"verbose","message":"Snapshot /home/regie/sisyfos-audio-controller/storage/default.shot Saved to storage folder"} {"level":"verbose","message":"Snapshot /home/regie/sisyfos-audio-controller/storage/default.shot Saved to storage folder"} {"level":"verbose","message":"Snapshot /home/regie/sisyfos-audio-controller/storage/default.shot Saved to storage folder"} {"level":"verbose","message":"Snapshot /home/regie/sisyfos-audio-controller/storage/default.shot Saved to storage folder"} {"level":"verbose","message":"Snapshot /home/regie/sisyfos-audio-controller/storage/default.shot Saved to storage folder"} {"level":"verbose","message":"Snapshot /home/regie/sisyfos-audio-controller/storage/default.shot Saved to storage folder"} {"level":"verbose","message":"Snapshot /home/regie/sisyfos-audio-controller/storage/default.shot Saved to storage folder"} {"message":"Set faderlevel Channel : 1 Level : 0.52","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.51","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.5","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.49","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.48","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.47","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.46","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.45","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.44","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.42","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.41","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.39","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.37","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.34","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.32","level":"verbose"} {"level":"verbose","message":"Snapshot /home/regie/sisyfos-audio-controller/storage/default.shot Saved to storage folder"} {"message":"Set faderlevel Channel : 1 Level : 0.3","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.28","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.26","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.24","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.22","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.2","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.18","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.16","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.15","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.14","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.13","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.11","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.1","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.09","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.08","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.07","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.02","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.04","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.06","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.08","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.09","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.11","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.14","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.19","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.24","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.3","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.37","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.4","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.44","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.48","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.53","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.58","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.62","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.65","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.69","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.73","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.76","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.78","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.8","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.82","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.83","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.85","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.87","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.89","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.9","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.91","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.92","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.93","level":"verbose"} {"message":"Set faderlevel Channel : 1 Level : 0.94","level":"verbose"} {"level":"verbose","message":"Snapshot /home/regie/sisyfos-audio-controller/storage/default.shot Saved to storage folder"} {"message":"Set faderlevel Channel : 2 Level : 0.74","level":"verbose"} {"message":"Set faderlevel Channel : 2 Level : 0.7","level":"verbose"} {"message":"Set faderlevel Channel : 2 Level : 0.66","level":"verbose"} {"message":"Set faderlevel Channel : 2 Level : 0.59","level":"verbose"} {"message":"Set faderlevel Channel : 2 Level : 0.52","level":"verbose"} {"message":"Set faderlevel Channel : 2 Level : 0.44","level":"verbose"} {"message":"Set faderlevel Channel : 2 Level : 0.36","level":"verbose"} {"message":"Set faderlevel Channel : 2 Level : 0.27","level":"verbose"} {"message":"Set faderlevel Channel : 2 Level : 0.18","level":"verbose"} {"message":"Set faderlevel Channel : 2 Level : 0.08","level":"verbose"} {"message":"Set faderlevel Channel : 2 Level : 0","level":"verbose"} {"message":"Set faderlevel Channel : 2 Level : 0.08","level":"verbose"} {"message":"Set faderlevel Channel : 2 Level : 0.19","level":"verbose"} {"message":"Set faderlevel Channel : 2 Level : 0.31","level":"verbose"} {"message":"Set faderlevel Channel : 2 Level : 0.42","level":"verbose"} {"message":"Set faderlevel Channel : 2 Level : 0.53","level":"verbose"} {"message":"Set faderlevel Channel : 2 Level : 0.62","level":"verbose"} {"message":"Set faderlevel Channel : 2 Level : 0.69","level":"verbose"} {"message":"Set faderlevel Channel : 2 Level : 0.73","level":"verbose"} {"message":"Set faderlevel Channel : 2 Level : 0.76","level":"verbose"} {"message":"Set faderlevel Channel : 2 Level : 0.78","level":"verbose"} {"message":"Set faderlevel Channel : 2 Level : 0.79","level":"verbose"} {"message":"Set faderlevel Channel : 2 Level : 0.8","level":"verbose"} {"message":"Set faderlevel Channel : 2 Level : 0.81","level":"verbose"} {"message":"Set faderlevel Channel : 2 Level : 0.82","level":"verbose"} {"message":"Set faderlevel Channel : 2 Level : 0.83","level":"verbose"} {"message":"Set faderlevel Channel : 2 Level : 0.85","level":"verbose"} {"message":"Set faderlevel Channel : 2 Level : 0.87","level":"verbose"} {"message":"Set faderlevel Channel : 3 Level : 0.57","level":"verbose"} {"message":"Set faderlevel Channel : 3 Level : 0.31","level":"verbose"} {"message":"Set faderlevel Channel : 3 Level : 0.24","level":"verbose"} {"message":"Set faderlevel Channel : 3 Level : 0.16","level":"verbose"} {"message":"Set faderlevel Channel : 3 Level : 0.09","level":"verbose"} {"message":"Set faderlevel Channel : 3 Level : 0.03","level":"verbose"} {"message":"Set faderlevel Channel : 3 Level : 0","level":"verbose"} {"level":"verbose","message":"Snapshot /home/regie/sisyfos-audio-controller/storage/default.shot Saved to storage folder"} Sending out Level : undefined Ember Error TypeError: Cannot read property 'isParameter' of undefined at /home/regie/sisyfos-audio-controller/node_modules/node-emberplus/EmberClient/EmberClient.js:593:23 at new Promise (<anonymous>) at EmberClient.setValue (/home/regie/sisyfos-audio-controller/node_modules/node-emberplus/EmberClient/EmberClient.js:592:16) at EmberMixerConnection.sendOutLevelMessage (/home/regie/sisyfos-audio-controller/dist/server/utils/mixerConnections/EmberMixerConnection.js:142:30) at EmberMixerConnection.updateFadeIOLevel (/home/regie/sisyfos-audio-controller/dist/server/utils/mixerConnections/EmberMixerConnection.js:170:14) at Timeout._onTimeout (/home/regie/sisyfos-audio-controller/dist/server/utils/MixerConnection.js:277:39)

olzzon commented 4 years ago

Hi Deviweb,

First focus will be Ruby implementation, and then later MC2 implementation. If you mail me your email address I can invite you to the Sisyfos slack channel on: http://sofietv.slack.com#sisyfos unless it's already public :)

yboujraf commented 4 years ago

Dear

I am interresting too.

Youssef Boujraf - Chat @ Spike [e6qd5]

On February 24, 2020 at 11:22 GMT, Kasper Olsson Hans notifications@github.com wrote:

Hi Deviweb,

First focus will be Ruby implementation, and then later MC2 implementation. If you mail me your email address I can invite you to the Sisyfos slack channel on:http://sofietv.slack.com#sisyfos

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or unsubscribe.

olzzon commented 4 years ago

Does anyone of you have a way to convert an XML dump XML to .EmBER fileformat for tinyEmberplus to read, or another way to create a new one? In the files received from @dewiweb the .EmBER files are empty when I load them in TinyEmberPlus

dewiweb commented 4 years ago

Hello @olzzon , What's the best way to send you my email address anonymously (not in issue flow)!

olzzon commented 4 years ago

@dewiweb go to my GitHub profile, it should be there

olzzon commented 4 years ago

As NRK has build Lawo support into Sisyfos this case will be closed