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
  2. Instruments

Processing in instruments

Different types of instruments have different ways of processing notes and audio.

Note-on event

  • MIDI-based: Forward a MIDI note on event to the instrument plugin

  • Non-MIDI-based: Construct a NotePlayHandle instance for the new note and add it to AudioEngine

Note-off event

  • MIDI-based: Forward a MIDI note off event to the instrument plugin

  • Non-MIDI-based: Call NotePlayHandle::noteOff()

Processing notes in the rendering cycle

  • MIDI-based: Do nothing as the instrument will take care of them

  • Non-MIDI based and single-streamed: playNote() will process the note, but it won't render audio for the note. Instead, play() will render the final audio stream for all notes.

  • Non-MIDI based and multiple-streamed: playNote() will process and render the note

PreviousThe type of instrumentsNextPer-note processing

Last updated 2 years ago

Was this helpful?