Contents ↓

Plugins

Plugins offer a deeper level of integration into the LX rendering engine, with more or less complete API access to the application lifecycle. Plugins implement the LXPlugin or LXStudio.Plugin interfaces.

Plugins require a Pro License →

Achtung — Attention — Cuidado!

With great power comes great responsibility! In the spirit of open source, Chromatik does not sandbox or limit your plugins - you are free to extend the application with open-ended functionality. This means there are no guardrails in place to prevent you from introducing bugs, degrading system performance, etc. You should only run plugins that you have written or verified yourself.

Plugin Management

Plugins are distributed in Content Packages. Available plugins are detected and instantiated when Chromatik starts up. They can be enabled or disabled via the left-pane PLUGINS section on the CONTENT tab.

When you toggle the enabled status of a plugin, Chromatik must be restarted for the changes to take effect.

Scaffolding

@LXPlugin.Name("My Plugin")
public class MyPlugin implements LXStudio.Plugin {

  @Override
  public void initialize(LX lx) {
    // Initialize the plugin during engine bootstrapping
  }

  @Override
  public void initializeUI(LXStudio lx, UI ui) {
    // Initialize UI components before UI is built
  }

  @Override
  public void onUIReady(LXStudio lx, UI ui) {
    // Add UI components once UI scaffolding is in place
  }

  @Override
  public void dispose() {
    // Clean up resources at program shutdown
  }
}

Annotations

Lifecycle Callbacks

initialize

The initialize method is called when the LX engine is constructed. At this point the core LX engine components will all be available, but the engine will not have yet started. No UI components will have been created, and it's entirely possible that the application is running in a headless environment with no UI at all.

dispose

The dispose method is called at program shutdown. Plugins should gracefully release resources, properly close ports, etc.

UI Callbacks

The following callbacks are only invoked when running in a full Chromatik UI environment. If the application is run in headless mode, these will not be invoked.

initializeUI

The initializeUI method is called once the UI has been created, but before any of the Chromatik UI scaffolding has been created. This phase is typically not needed, but is made available to initialize UI-relevant resources that may need to be constructed before the main Chromatik UI.

onUIReady

The onUIReady method is called after Chromatik has built the core UI scaffolding, e.g. the preview window, mixer, device bins, panes, etc. Plugins can at this point add new components to the UI.