The new emerging NLE for GNU/Linux

The Lumiera project creates innovative software, geared towards professional, high-quality work; it aims at high flexibility, offering user-control over a broad spectrum of configurable parameters, and with smooth workflows that scale well to larger and more intricate projects. Building such software involves some degree of exploration and search for adequate methods to reconcile conflicting goals. There is no ready-made blueprint that just needs implementation — rather, we have to resort to a sequence of integration efforts, aimed at establishing core tenets of the envisioned architecture.

Vertical Slices

Tip A »vertical slice« is an integration effort that engages all major software components of a software system. It is defined and used as a tool to further and focus the development activity towards large scale integration goals.

Populate the Timeline in the UI

#1014 »TimelinePopulation«:
Send a description of the model structure in the form of a population diff from the Session in Steam-Layer up through the UI-Bus. When received in the UI-Layer, a new Timeline tab will be allocated and populated with appropriate widgets to create a GUI-Timeline-View. The generated UI structures will feature several nested tracks and some placeholder clips, which can be dragged with the mouse. Moreover, the nested track structure is visualised by custom drawing onto a canvas widget, and the actual colours and shades for this drawing operations will be picked up from the current desktop theme, in combination with an CSS application stylesheet.

Commands and State Messages via UI-Bus

#1014 »Demo GUI Roundtrip«:
Set up a test dialog in the UI, which issues test/dummy commands. These are propagated to a dispatcher in Steam-Layer and by special rigging reflected back as State Mark Messages over the UI-Bus, causing a visible state change in the Error Log View in the UI.

Play a clip

🗘 #1221 »PlaybackVerticalSlice«:
This vertical slice drives integration of Playback and Rendering. While the actual media content is still mocked and hard wired, we get a simple playback control in the GUI connected to some suitable display of video. When activated, an existing ViewConnection is used to initiate a Play Process; the Fixture data structure established between high-level-Model (Session) and low-level-Model (Render nodes) will back a Frame Dispatcher to generate Render Jobs, which are then digested and activated by the Scheduler in the Vault-Layer, thereby operating the render nodes to generate video data for display.