> For the complete documentation index, see [llms.txt](https://docs.lmms.io/developer-guides/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.lmms.io/developer-guides/core/instruments-and-effects/processing-in-instruments.md).

# 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
