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

Was this helpful?

  1. Core

The structure of the LMMS core

PreviousGlossaryNextInitializations and cleanups

Last updated 2 years ago

Was this helpful?

Important classes

There are some important C++ classes in the LMMS codebase. Here are some examples:

  • LmmsCore(also known as Engine): Holds the instances of other important classes, e.g. Song, AudioEngine, PatternStore, Mixer.

  • Song: Controls the playback. Also works as a top-level container of LMMS projects.

  • AudioEngine: Renders audio independently of audio backends. Also manages audio backends and MIDI interfaces.

  • PlayHandle: Manages objects that plays sound, ex. notes, instruments, sample clips.

  • AudioDevice: Base class for audio backends.

  • Model: Models in sense of

    • AutomatableModel: Models which can be controlled by Controllers and/or AutomationPatterns, e.g. BoolModel, IntModel, FloatModel.

  • Track: Base class for various types of tracks, including AutomationTrack, BBTrack, InstrumentTrack, and SampleTrack.

  • Plugin: Base class for LMMS plugins(instruments and effects). For details on LMMS plugins, see the plugin system section.

    • Instrument: Generates audio signal from notes(from note clips or external MIDI inputs)

    • Effect: Transforms audio signal

Model-view-controller pattern