Guides for developers
GitHub repositoryHomepage
  • Getting started
  • Core
    • Glossary
    • The structure of the LMMS core
      • Initializations and cleanups
        • For core
      • Accessing to core classes
    • The structure of an LMMS project
    • Tracks and track containers
      • Tracks and clips
      • Track containers
    • The pattern system
    • Play handles
      • NotePlayHandle
      • InstrumentPlayHandle
      • SamplePlayHandle
    • Instruments
      • The type of instruments
      • Processing in instruments
        • Per-note processing
    • Audio effects
    • Automation and controllers
      • Automation
        • Processing automation
      • Controllers
    • Controlling playback
    • The audio rendering engine of LMMS
      • Stage 1: collect play handles and process automation
      • Stage 2: render notes and instruments
      • Step 3: mix and master
    • Threading and synchronization
    • Data serialization
      • Overview
      • Relevant classes
      • Upgrading data files
    • Internal routing of events and signals
      • Audio signals
      • MIDI events
    • Audio and MIDI I/O
      • Supported backends and features
  • GUI
    • The initialization process of LMMS GUI
    • UI components of LMMS
  • Build system
    • CMake and LMMS
    • Source directory structure
    • Useful variables/macros
  • Plugin system
    • Plugin types
    • Plugin API
      • Sub-plugin API
    • Loading plugins from LMMS
  • Unit tests
    • Writing unit tests
Powered by GitBook
On this page
  • Initialization
  • Main routine
  • Cleanup

Was this helpful?

  1. Core
  2. The structure of the LMMS core

Initializations and cleanups

Initialization

The following steps are the outline of the startup steps of LMMS:

  1. Parse command-line arguments to check if LMMS needs GUI.

  2. Initialize QCoreApplication for command-line-only tasks, MainApplication otherwise.

  3. Complete parsing command-line arguments.

  4. Setup miscellaneous environments, e.g., RNG, HiDPI scaling.

  5. Load the configuration file and translations.

  6. Initialize the core by calling Engine::init() for CLI cases. When running with GUI, GuiApplication will initialize it later.

  7. Complete remaining steps.

    • For command-line tasks, handle it in the main().

    • Otherwise:

    • Start the GUI by instantiating GuiApplication.

    • Show the GUI and create/load a project.

Main routine

After initializing everything, LMMS runs the main event loop by calling app->exec(). Once the event loop returns, the cleanup steps start.

Cleanup

The following steps are the outline of the shutdown steps of LMMS:

  1. Delete the application instance(either QCoreApplication or MainApplication)

  2. In the CLI case, destroy the core. It's not the case if the GUI was launched because the destructor of MainWindow calls Engine::destroy().

PreviousThe structure of the LMMS coreNextFor core

Last updated 5 years ago

Was this helpful?