# The structure of the LMMS core

## 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 [Model-view-controller pattern](https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller)
  * `AutomatableModel`: `Model`s which can be controlled by `Controller`s and/or `AutomationPattern`s, 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


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.lmms.io/developer-guides/core/the-structure-of-the-lmms-core.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
