> For the complete documentation index, see [llms.txt](https://handbook.musescore.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://handbook.musescore.org/3/sound-and-playback/piano-roll-editor.md).

# Piano Roll Editor

## Overview

***This feature is unstable, may lead to crash and data loss. Backup beforehand.** Many PRE adjustments are ignored by Musescore 4 by design.*

Using Piano Roll Editor (PRE) *on a target staff* (a piano grand staff contains two staffs), the user can

* add, remove notes, edit their properties,
* edit note value,
* edit note playback length without altering apparent note value,
* advance or delay notes, and
* offset note playback without altering notated rhythm.

To open PRE,

1. Right click on any blank space in a measure, *but not on any note, stem, rest etc, or spaces in between staffs*.
2. Select **Piano Roll Editor...**, as shown below.

<figure><img src="/files/sxtLBWRPvf9DsT5xH2T8" alt="Opening the Piano Roll Editor"><figcaption></figcaption></figure>

## Interface

<figure><img src="/files/tCNOmyhyaKWPsH6gm4u5" alt="Ms362 pianoview"><figcaption></figcaption></figure>

From the top down are,

* **Toolbars**: Buttons mirror [main Score View toolbar](/3/basics/viewing-and-navigation.md#toolbars) counterparts. The Wave button is invalid in Musescore 3.6.2 and [3.7](#musescore-37-evolution-update). Items useful in [editing](#editing) are,
  * **Edit Tool**: Click to select **Canvas** editing mode,\\

    <figure><img src="/files/Dnwr1lCREpiE7wgpLvib" alt="Pre toolbar tools"><figcaption></figcaption></figure>

    1. Select notes
    2. Insert note
    3. Append note to chord (removed in 3.7)
    4. Cut chord
    5. Erase note
    6. Change chord length (removed in 3.7)
    7. Change playback length (added in 3.7)
    8. Toggle tie
  * **Voices**: as shown below.\\

    <figure><img src="/files/hI4iEtMBkhVIFL6B8CNB" alt="Pre toolbar voice"><figcaption></figcaption></figure>

    \\

    <figure><img src="/files/dm7hvvFKfbqzoyUtisaW" alt="Pre toolbar 2"><figcaption></figcaption></figure>
  * **Subdiv** and **Tuplet** input. Defaults 0 (no subdivision) and 1 (no tuplet subdivision) respectively. Edit them to add or remove **Canvas** grid lines. Crowded grid lines may be temporarily hidden when zoomed out.
  * **Velocity option and value** and **Pitch**: Selected note's **Velocity type** and **Velocity** [note properties](/3/basics/inspector.md#note) and pitch. Approximation automatically applied when switching option. The entered value is applies to all selected notes.
  * **OnTime**: Selected notes' *playback offset* per 1/1000 note length only. Does not affect notated rhythm. Use negative values to nudge forward. Default value 0. Related to **Data type** selection box : Position option below.
  * **Len**: Selected notes' *playback length multiplication* per 1/1000 note length only. Does not affect apparent note value. Often used to mimic staccato, non-legato (950), legato (>=1000) etc playback. Max cap of 2000 present in Musescore 3.6.2 is removed in [3.7](#musescore-37-evolution-update). Default value varies with [Instrument](/3/basics/instruments.md). Related to **Data type** selection box : Duration (multiplier) option below.
* **Ruler**: Measure numbers (bold) and beat numbers. The red arrow indicates the current playback caret (Left click to reposition). The blue arrows indicate loop starting and end positions (middle click and right click to mark respectively). See ["Navigating"](#navigating) section.
* **Piano roll** (left) and **Canvas** (right): Click any key under **Piano roll** to demo. **Canvas** is covered in ["Navigating"](#navigating) section.
* **Data type** selection box, **Value input** and **Set** button (left), and **Levels / Lanes** (right): Use **Data type** selection box to select the note data to display in **Levels**. **Levels** is covered in ["Navigating"](#navigating) section. Data types available are,
  * **Duration**: Note *playback* length addition or subtraction. Value 250 is equvalent to adding length of a crochet (quarter note).
  * **Duration (multiplier)**: Note *playback* length multiplication using a 1/1000 note length unit. Related to **Len** input above.
  * **Velocity (relative)**: [note property](/3/basics/inspector.md#note) **Velocity** when **Velocity type** is Offset.
  * **Velocity (absolute)**: [note property](/3/basics/inspector.md#note) **Velocity** when **Velocity type** is User.
  * **Position**: Note *playback* offset. Related to **OnTime** above.

## Navigating

The same time segment is shown under **Canvas** and **Levels** with timing shown on **Ruler**. To rewind or forward displayed segment,

* <kbd>Shift</kbd> + mouse wheel on **Canvas**,
* [Re-opening from the main Score view at measure desired](#overview),
* Use the scrollbar on **Canvas**, or
* Drag with middle mouse button on **Canvas** ([Musescore 3.7 Evolution](#musescore-37-evolution-update)).

Adjust time scale with <kbd>Ctrl</kbd>+<kbd>Shift</kbd> + mouse wheel on **Canvas**.

## Canvas

(Musescore 3.6.2 only) Each block represents a sounding event,

* which is a non-tremolo note, or
* "a segement of sound" among many produced by a tremolo.

([Musescore 3.7 Evolution](#musescore-37-evolution-update)),

* works as 3.6.2 when [**Change playback length** tool](#interface) is selected,
* otherwise always shows the note as if tremolo markings are removed.

Note value is indicated by width. Vertical position always corresponds to [sounding pitch](/3/basics/concert-pitch.md). Text shown aligned to the left border is the [concert pitch / sounding pitch](/3/basics/concert-pitch.md), number on the right is Voice. Red line between two blocks represents a [Tie](/3/notation/ties.md). [Selected notes](#selecting-and-deselecting-notes) are highlighted in yellow. To pan pitch-wise,

* Mouse wheel,
* Use the scrollbar, or
* Drag with middle mouse button ([Musescore 3.7 Evolution](#musescore-37-evolution-update)).

Adjust pitch range scale with <kbd>Ctrl</kbd> + mouse wheel.

## Levels

<figure><img src="/files/Q5blp76oI7pccFgh1WSf" alt="Pre levels"><figcaption></figcaption></figure>

\ Each dot represents a note, with visual aid lines (one extending down to axis, one extending right briefly). \[Selected notes]\(piano-roll-editor.md#selecting-and-deselecting-notes) are highlighted in yellow. \_Only selected notes can be edited,\_ which is useful when editing overlapping lines (\[chord notes]\(../basics/working-with-multiple-voices.md)).

## Repositioning the playback cursor

* Left click on **Ruler**.

## Editing

## Selecting and deselecting notes

1. Select the [**Select notes** tool](#interface).
2. Under **Canvas**,
   * Click a block to select.
   * Click a blank space to deselect.
   * Drag a box to select multiple.
   * <kbd>Ctrl</kbd> + click to add to the current selection.
   * <kbd>Shift</kbd> + click to add to or remove from the current selection.
   * <kbd>Ctrl</kbd>+<kbd>Shift</kbd> + click to remove from the current selection.

## Adding a note

1. Adjust grid under **Canvas** by editing [**Subdiv and Tuplet**](#interface) values. All new notes start at a grid line.
2. Depending on the result required, either,

(Musescore 3.6.2 only)

3. Select the [**Insert note** tool](#interface).
4. Select note value in Toolbar.
5. Select a [**Toolbar Voices**](#interface) option.
6. Click any blank space under [**Canvas**](#interface). The new note starts at the nearest grid line to the left. It always overwrite and truncate existing content.

or

([Musescore 3.7 Evolution](#musescore-37-evolution-update)),

3. Select the [**Insert note** tool](#interface).
4. Select a [**Toolbar Voices**](#interface) option.
5. Under [**Canvas**](#interface), click and drag to add new note. Click without drag to add new note using the last created note's length. The new note starts at the nearest grid line to the left. It [merges into a chord](/3/basics/working-with-multiple-voices.md) with any existing notes, adding ties where appropiate.

or

(Musescore 3.6.2 and above)

3. Select the [**Select notes** tool](#interface).
4. Select note value on the [main Score View toolbar](/3/basics/viewing-and-navigation.md#toolbars) as shown below, *but not on PRE Toolbars*.
5. Select a [**Toolbar Voices**](#interface) option.
6. <kbd>Ctrl</kbd> + click any blank space under [**Canvas**](#interface). The new note starts at the nearest grid line to the left. It [merges into a chord](/3/basics/working-with-multiple-voices.md) with existing notes if note values match, overwrites and truncates otherwise. Tuplets are ignored.

   <figure><img src="/files/neXLVKrta4nLipzoCBiM" alt="DurationButtons"><figcaption></figcaption></figure>

or

(Musescore 3.6.2 and above)

3. Select the [**Select notes** tool](#interface).
4. Select a [**Toolbar Voices**](#interface) option.
5. <kbd>Shift</kbd> + click any blank space under [**Canvas**](#interface). The new note starts at the nearest grid line to the left, [merges into a chord](/3/basics/working-with-multiple-voices.md) with existing notes, or replace an existing rest.

or

(Musescore 3.6.2 and above)

3. Select the [**Select notes** tool](#interface).
4. Select a [**Toolbar Voices**](#interface) option.
5. <kbd>Ctrl</kbd>+<kbd>Shift</kbd> + click any blank space on the [**Canvas**](#interface). Existing notes still sounding but not starting at the nearest grid line to the left is splitted. Tuplets are ignored.

## Editing pitch

1. [Select note(s)](#selecting-and-deselecting-notes).
2. Either drag and drop the blocks, or <kbd>Up</kbd> or <kbd>Down</kbd>.

## Editing Velocity type and Velocity property

*See also* [*note property*](/3/basics/inspector.md#note) *and* [*Dynamics*](/3/sound-and-playback/dynamics.md) *chapter.*

1. [Select note(s)](#selecting-and-deselecting-notes).
2. Either,
3. Edit [**Velocity option and value**](#interface).

or

3. Select [**Data type** selection box](#interface) : Velocity (relative) or Velocity (absolute). Values explained in [Interface](#interface).
4. Click on any *yellow* item in [**Levels**](#interface). Click and drag to edit multiple. <kbd>Shift</kbd> + click and drag to assign the same value.

or

3. Select [**Data type** selection box](#interface) : Velocity (relative) or Velocity (absolute). Values explained in [Interface](#interface).
4. Enter a value in [**Value input**](#interface).
5. Click the [**Set** button](#interface) to assign the value to all selected notes.

## Editing note value

(Musescore 3.6.2 only),

1. Select the [**Change chord length** tool](#interface).
2. Select note value in Toolbar.
3. Click blocks under **Canvas**.

([Musescore 3.7 Evolution](#musescore-37-evolution-update)),

1. Select the [**Select notes** tool](#interface).
2. Resize blocks under **Canvas** by dragging right border.

## Editing note playback length without altering apparent note value

(Musescore 3.6.2),

1. [Select note(s)](#selecting-and-deselecting-notes).
2. Either,
3. Enter a [**Len**](#interface) value.

or

3. Select [**Data type** selection box](#interface) : Duration or Duration (multiplier). Value explained in ["Interface"](#interface).
4. Click on any *yellow* item in [**Levels**](#interface). Click and drag to edit multiple. <kbd>Shift</kbd> + click and drag to assign the same value.

or

3. Select [**Data type** selection box](#interface) : Duration or Duration (multiplier). Value explained in ["Interface"](#interface).
4. Enter a value in [**Value input**](#interface).
5. Click the [**Set** button](#interface) to assign the value to all selected notes.

([Musescore 3.7 Evolution](#musescore-37-evolution-update)),

* Use any of the above methods, or

1. [Select note(s)](#selecting-and-deselecting-notes).
2. Select the [**Change playback length** tool](#interface).
3. Resize blocks under **Canvas** by dragging left or right border. Dragging left border also advances or delays the note.

## Advancing or delaying notes

(Musescore 3.6.2),

1. [Select note(s)](#selecting-and-deselecting-notes).
2. Drag and drop to a new horizontal position.

([Musescore 3.7 Evolution](#musescore-37-evolution-update)),

* Use the method above, or

1. Select the [**Select notes** tool](#interface).
2. Resize blocks under **Canvas** by dragging left border. This changes note length by keeping the same release time.

## Offseting note playback without altering notated rhythm

(Musescore 3.6.2),

1. [Select note(s)](#selecting-and-deselecting-notes).
2. Either,
3. Enter a [**OnTime**](#interface) value.

or

3. Select [**Data type** selection box](#interface) : Position. Values explained in [Interface](#interface).
4. Click on any *yellow* item in [**Levels**](#interface). Click and drag to edit multiple. <kbd>Shift</kbd> + click and drag to assign the same value.

or

3. Select [**Data type** selection box](#interface) : Position. Values explained in [Interface](#interface).
4. Enter a value in [**Value input**](#interface).
5. Click the [**Set** button](#interface) to assign the value to all selected notes.

([Musescore 3.7 Evolution](#musescore-37-evolution-update)),

* Use any of the above methods, or

1. [Select note(s)](#selecting-and-deselecting-notes).
2. Select the [**Change playback length** tool](#interface).
3. Resize blocks under **Canvas** by dragging left or right border. Dragging left border also advances or delays the note.

## Moving and duplicating notes

1. [Select note(s)](#selecting-and-deselecting-notes).
2. Right click, select **Cut notes** or **Copy notes**.
3. Right click on a blank space, select **Paste notes here** to duplicate to that time moment.

*Not working:* <kbd>Ctrl</kbd>+C/X/V.

## Removing notes

1. [Select note(s)](#selecting-and-deselecting-notes).
2. Press <kbd>Del</kbd>.

## Customization

**Edit Preferences Advanced** tab "ui/pianoroll/\[dark or light]/\[item]".

## MuseScore 3.7 Evolution update

The [fork](https://w.wiki/8HbA) Musescore [3.7 Evolution](https://github.com/Jojo-Schmitz/MuseScore/wiki/) contains PRE improvements and changes.

* [MuseScore 3.7 - Piano Roll Editor Updates](https://www.youtube.com/watch?v=CemYFBE_vS4) video by dev [Mark McKay](https://youtube.com/channel/UCN3ZVTggAbIpWJSII1KQMSQ/) / [blackears](https://github.com/blackears)
* <https://github.com/Jojo-Schmitz/MuseScore/pull/287>
* Known bugs and feature suggestions <https://github.com/orgs/musescore/discussions/16925>

## See also

* [TAB Ring](https://musescore.org/en/project/tab-ring) plugin by yonah\_ag


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://handbook.musescore.org/3/sound-and-playback/piano-roll-editor.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
