Legato Conductor

vncnt

New member
Today I started to work on Legato Conductor, a Project Management System with the appearance of an interactive dashboard.
Targeted at small companies that deal with story productions.
Projects for 3D productions that tell stories using multiple story blocks, multiple scenes and multiple shots.

By doing this in Lightwave it should be possible to take advantage of tight integration, compared to commercial PMS software.

The idea is to write a Master Plugin script that can be added to every LWS scene file to exchange data between the current LWS scene file and centralized config file for that plugin. The dialog has a graphical representation of production steps for every shot, covering every scene in the plot of your current project.
Each block, or cell, is pointing to the LWS scene file for the latest version of that shot, and a preview file for reviews and editing.

That should allow you to filter and select scenes, load immediately in Layout.
For example to balance quality- and detail levels.
Or to create an EDL file that contains the latest preview files, for quick in-context reviews in your NLE.

Columns on the horizontal axis: shot. Each column consists of a stack of blocks.
Each row of blocks represent a user defined production stage.
In a first version, each block or cell contains a few horizontal stripes as a course percentage indicator, and a single label for various use.

Initially the graph will be populated by data from a config file, edited with a text editor.
Then I'll add functions to add the 'current LWS scene' to the dashboard, and insert/move it in order of appearance into the plot flow.

In later versions, the cell data block could be improved: with UI elements for commands, and to contain: text, number, date, time, duration, choice, shortcuts to files.
Text can be used to compare render parameters between shots.
Numbers can be used to store the number of frames, the number of assets, the number of poses/motions, etc.
Dates could be used for milestones and deadlines.
Durations could be used to store the predicted average render time for all frames.
Choices could be used to select something from a list, for example to assign person x to a shot, approve a shot by person y, etc.
File shortcuts can be used to store its LWS file, preview files, output files, assets, text files for speech, moodboards, character designs, storyboards, color scripts, etc.

Comring communication between Legato and Legato Conductor could exchange marker/region data.
Comring communication between Legato Chorus and Legato Conductor could exchange render profile data, and render time prediction.

In time, Conductor should be able to track project progress, track shot progress, balance the workload of team members, reference moodboards, storyboards, color scripts, etc.

A stripped version of Legato Chorus will be the starting point. See image below.
Only its code for 'File QC' is now active: it scans date/time of output files in a user-defined output directory.
The graph area is still responding to range selection, frame selection, pan, zoom, and row selection.
Other code parts are still there for reference or recycling.

Next step is to design a first config file, load it into the graph, and change the current frame/file visualization into a shot/step/progress visualization.
Maybe a few options to run commands with underlying data.

LegatoConductor_001.png

I don't know where this journey is going, but it starts here and now!
 
Last edited:
Testing the user interface May-18 with a real config file.
Your production steps must be defined in table 'step'. Shots must be defined in table 'shot', And tasks (for each production step per shot) defined in table 'step'.
Any file can be defined in table 'shortcuts'.

The config file (in the zip file below) contains 5 tables: modified, user, shot, step, task, shortcuts.

The GIF shows the modified Chorus user interface. On the X-axis the Shot# (sequence# actually), on the Y-axis the users-defined production steps. You may define up to 64 steps. Each defined task is represented by a rectangle. If you click on a position without task, the 'new task' routine can be started.
The upper status bar contains information from the 3 tables, as defined in the config file.

I've change Frame Rane selection into Task Range selection.
RMB-drag still zooms in/out.
MMB-drag still pans left/right.

The space between top of dialog and top of graph is adjustable.
For example to place UI elements like 'EDL export', 'Insert', 'Move', and other commands.

2023-05-18 21-30-18.gif
 

Attachments

  • Legato_Conductor.zip
    1.3 KB · Views: 115
changes of this day

Enhanced the visualization of the Shot Range selection.
Added UI elements for EDL Export to:
---> CMX3600 EDL compatible with Resolve/VegasPro EDL, single track, no path data, 1x Video track + 1xAudio track;
---> Vegas Pro EDL compatible, multiple AV tracks, including path data, more advanced CSV file format;
Added UI elements for EDL Import
---> to generate LWS scenes from the NLE timeline, for example with storyboards including voice recordings;
Added a first version of a Context Menu for each task, by using RMB-click on a Task.
Modifications to the Legato_Constructor.cfg file format.
Button 'Commit' now actually writes data to the config file.
Added an option in the config file to rename the current config file to a backup file, when using 'Commit'.

'Commit' compares the timestamp of the current config file, just before renaming it to a backup and writing a new config file.
If another process updated that file, a file is written with another name to prevent data loss.
There will be a lock mechanism for data protection in a multi-user environment.

Next step is to make the context menu respond to user input, and to open a LWS scene file from the context menu.

I've included the current version of the Legato_Conductor.cfg test file.

2023-05-20 21-06-43.gif

LegatoConductor_002.png
 

Attachments

  • Legato_Conductor.zip
    1.4 KB · Views: 106
Emulating context menus in LScript, with separation lines, no hover available.
It works but I need to find a few practical solutions to finish some 'minor' issues.

Below is test data. Therefore the Shortcuts context menu (MMB-click on an existing Task) doesn't look very tidy for testing.
The point is that its data, underneath, is actually capable of opening another scene, specified in the cfg file.
The plugin needs to be in Layout mode for this. That way it can survice the loading of other scenes (and run commands after loading - interesting for automatic LWS scene generation).
Need to automatically switch between absolute paths and relative paths.

For security reasons, I think I need a workaround to open files like *.lwo, *.txt, *.log, *.avi, *.wav, etc.

The Command context menu (RMB-click on a Task or an empty field) is a simple setup.
It doesn't do anything yet but, just like the Shortcuts context menu, it is behaving very well.
The same 'minor' issues in its behaviour here.

As soon as the context menu is as perfect as can be, it's time to implement features behind the commands, and add UI-elements to edit internal data.

LegatoConductor_003.png
 
- Context Menu is now more robust.
- Added Context Submenu system because a single menu would become too big (or would be too limited).
- Added Keyboard/Mouse Shortcuts in the menu system.
- Enhanced the visualisation of a range of tasks, for easier reference.
- The Step colomns (Left/Right) can now be turned on/off individually, from the cfg file.
- Added calls to program files and their test files, see also submenu below (only for this image shown both but it can actually only show one after another).
The good news is that it works very well.
- This submenu shows dedicated file references. This is a hard-coded list. The 'Other' is the same as the one you get when you click the MMB on a Task.
I think I link the dedicated files to the Shot (on the horizontal axis), and keep 'Other' Task specific (random user-defined) files without grouping or sorting.

LegatoConductor_004.png
 
changes:

- Fine-tuned table REFERENCE and APPLICATION in Legato_Conductor.cfg file;
- 40 pre-defined categories of file names per shot, or per step, can be called in their own application (as defined in cfg) from the menu: 'Open for Shot Production' and 'Open for Project & Story Production'; REF-EXT1 is currently reserved for Blender project files;
- double click on empty space adds a new task; and adds a new shot definition, if needed; you can also select a shot range and create new tasks in that shot range - existing tasks are ignored;
- double click on task opens the referenced LWS scene file;
- 'Set LWS Reference of Task to Current Scene' replaces an existing LWS filename reference, or adds it to the table for the selected Shot|Step; for now, it's not related to the selected Task; this makes it possible to remove a task (and maybe re-define it) without destroying its references;
- Moved the batch file subdir to the project directory, for more flexibility per project.
- Moved the backup files to a subdir.
- Fine-tuned the Context Menu emulation;
- Added presets for position of dialog;


LegatoConductor_005.png
 

Attachments

  • Legato_Conductor.zip
    2.6 KB · Views: 104
features of the day
- Added Comments to SHOT table definition, currently only visible in statusbar.
- Insert Shot(s) [Insert key], Cut Shot(s) [Del key], Clear Shot(s) [context menu only].
- Green 'first shot' indicator and blue 'last shot' indicator update when relevant.
- Ultra-wide mode fills 1920x520 px.
- White box indicator for every task with scene file reference that matches the current scene in Layout.
- Moved statusbar outside graph area, to free space for structure track.
- Disabled items from the Context Menu that are not yet available.
- Double-click on task (or via the context menu) now loads that referenced LWS scene into Layout; Conductor remains active.
- Added structure track to visualize: scene#, block#
- GenerateBatchFiles, currently limited to my own licenseId for safety.
- Moved definition of modification date in cfg file.
- Swapped STEP and SHOT tables in cfg file.
- 'Type' renamed to 'EDL' for better understanding.
- EDL filetype and EDL filename resize with dialog width.

2023-05-31 00-21-19.gif
 
Mute and Solo

You can now Mute and/or Solo a shot of the selected range of shots.​
Note that all tasks that belong to a shot are treated equal.​
Muted tasks appear more dimmed.​
Solo tasks appear more saturated.​
Selected tasks appear overexposed with reduced saturation.​
Solo has a higher priority than Mute.​
The task with the white box has a LWS referenced to it that has the same name as the current scene in Layout.​
Multiple tasks with identical scene names are allowed (and marked this way).​
The idea behind Mute and Solo is that these flags determine if their preview media clips will appear in the EDL export.​
Suppressed shots (either by Mute or by Solo) are ignored, and the EDL timeline should be filled with preview (audio + video) files without glitches.​

Open default reference file

Opening a LWS scene file while double clicking on a Color Script or Moodboard task seemed weird.​
This has changed to a default type of reference, as defined in the STEP table of the cfg file.​
All types are available, for example both #37 (or REF_COLORSCRIPT) for quick view of a user defined file type and application, currently PDF in Firefox Browser,​
and #38 (or REF_COLORSCRIPT_PROJECT) to open a user defined file type and application, currently Krita in Storyboard workspace.​
The TOP Context Menu mentions 'Open LWS Reference' in case of a reference type #4 (or REF_ANIMATION).​
Or 'Open Default Reference' in all other cases.​
Conductor will be published in LAYOUT mode.​
All LWS references will be opened in the same application, replacing the currently loaded Layout scene. Conductor will not even blink during loading.​
Btw you are free to open multiple versions of the Conductor plugin at once.​
Or use multiple Conductor instances on different computers in combination with a Content Directory on your network.​
However be careful. They all load with the same data from the config file that is uniquely linked to the Content Directory.​
If you make changes in both instances, then save that data with the 'Commit' button, Conductor will detect a different file timestamp of the config file since it was loaded in your Layout application and writes a parallel config file, in case you want to choose between config files afterwards.​
There is currently no compare method to only 'import' differences before writing the config data to a new file. Maybe later.​
By default (as set in the config file) during each Commit process, a backup config file is copied to the (CONTENTDIR)\Legato_conductor\backup directory with a timestamp in its name. If something went wrong, copy it to 'Legato_Conductor.cfg' one directory level higher, and you're good to go. You might want to keep the old config file for research.​

LegatoConductor_006.png

Zoom by RMB-click

To open a context menu you must click on the same task, or selected range of tasks.​
Any other RMB-click location without shot range selection zooms-out, or zooms-in on selected tasks.​
This allows for one-hand operations for browsing and drilling into the details.​
When Zoomed-in, you need to unselect the selected tasks first (LMB-click) to be able to RMB-click again for Zoom-out.​
You're still able to use keyboard 'a' to 'Zoom All', keyboard 'g' to 'Zoom Goto Selected',​
keyboard '+' to 'Zoom In' (to max all unselected shots, or to max selected range of shots)​
and keyboard '-' to 'Zoom Out' (currently to max shot -500 .. shot +500).​
 
A first version of Block Ripple
Need to find a solution for the Structure Track. After a few times shifting multiple Shot things look ... well, interesting.​
Next stop is reporting Progress.​

2023-06-01 00-05-08.gif
 
Report Task Progress is now operational.
Shift+LMB click to use it on a Task, or keyboard 'P' on the selected Task.
Works for single Tasks and selected ranges of Tasks.

The position of the dialog depends on the position of the Task.
For this, I had to trick the system to present the UI elements in the dialog on the correct position.
This trick has one disadvantage: you can't resize the Conductor dialog anymore until you reopen the dialog, for example bij double clicking in the Master Plugin dialog.

Just like the emulated Context Menu, the emulated Dialog has become a very expensive feature.
LScript doesn't support those so I had to recreate them.

LegatoConductor_007.png
 
Back
Top