Piano Roll editor should display 12 tones per octave

• Jun 23, 2018 - 04:06
Reported version
3.0
Type
Functional
Severity
S5 - Suggestion
Status
closed
Project

The Piano Roll Editor should be changed so that each semitone is displayed in its own row instead of the current system where only the 7 tones of the C scale are given rows and the other tones are wedged in between them.

The 12 tone grid is the layout style used by many commercial program's piano rolls. By having one row per tone, the user can better understand the relation between space and pitch. The current system awkwardly inserts semitones between scale degrees outside of bar lines. If you write a chromatic scale, instead of it going up evenly one row at a time, there are noticeable discontinuities between B & C and E & F. Adopting this system would also allow darkening the rows of the black keys, making it more obvious which notes blocks represent which pitches.

I'd also like to change the vertical scaling mechanism in the editor which right now simply performs a transform() on the rendered graphics - this is both inefficient and leads to scaling artifacts. It would be better to establish a semitone width and then use that to layout the grid vertically.


Comments

In reply to by mirabilos

I think this is to some degree a matter of personal taste. One problem with making the bar colors too distinct is that the note blocks no longer stand out clearly. I don't want to make the lighter grey so light that the green blocks start to blend in.

Maybe this could be something the user could adjust in preferences? It would be nice to get more opinions to see what colors would work best.

I've only now had the opportunity to have a look at your presentation video and it looks very promising!
For me personally it'll be the go-to-way to adjust some of the more complex grace note playback. Allowing me to have them play before-beat vs on-beat in a much more fluent way.

Status (old) patch (code needs review) fixed
Status fixed

Fixed in branch master, commit 63d2db7b14

fix #273601: Updated UI for pianoroll editor.

Updating main piano roll display to have 12 rows per octave.

Updating piano keyboard to track main piano roll window.

Moving PianoKeyboard to its own file.

Better tracking of playhead during playback.

Drawing beat lines within measure.

Scrollbars now adjusted for stasis when zooming in the pianoview.

Piano ruler now showing tick marks respecting zoom level.

Fixing scroll issue during playback.

Taking direct control of selection.

PianoItem is no longer a Qt object.

Preping for note group drag.

Can now drag pitch changes.

Adjusting viewport pos when staff set.

Removing CMakeLists.txt

Adding CMakeLists.txt back in.

Cleaning things up for resubmission.

Now displaying drumset names in PianoKeyboard when relevant.

Updating tracking signal in Pianoroll Editor. Cleanup.

Locator lines no longer Qt objects. Removing redundant note move on
mouse up.

Now adjusting final event for playback.

Now showing note voice name. Using Tpc to use note name tha reflects
accidentals.

Better checking for Position when opening Pianoroll window.
Adding note for ctrl-click on rest.

Swithing velocity type will now also adjust to equivilent velocity
value. Better checking for single note selection.

Pianoroll window. Adding note for ctrl-click on rest.
equivilent velocity value. Better checking for single note selection.

Ctrl-click now adds note to selection.

Note up/down now correct direction for drumroll

Fixing calcuation for switching note velocity.

Can now horiz resize piano keyboard.

Setting up new PianoLevels control for setting note event values.

Now drawing subbeat divisions.

Can now cut notes.

User can now select data type to display.

Can now use mouse to adjust levels.

Adding undo to note event changes. Now smoother transition between
absolute and offset level values.

Smoother update communication between controls.

Adding labels to piano levels. Removing unneccary blocking of scene()
in pianoview.

Now handles adjusting level with 1px wide mouse sweep.

mouse sweep.
'c8199ac5a'.

fix #273601: Updated UI for pianoroll editor.

Now handling setting null staff. Adding missing .h files to CMakeLists.txt

Removing undo step to avoid selection problem.

Adding tool tip display.

Keyboard display now adjusting to reflect transposition of instrument.

Now showing part name in Piano Roll editor.

Moving color display options into preferences.

Levels editor now using preferences too.

Fixing incorrent note being highlighted in piano roll editor. Base color now used for coloring levels panel.

Cleaning code

Investigating cut/pasete actions.

Adding popup menu.

Encapsulating selection into a command. Creating minimal popup menu.

Can now insert notes of arbitrary duraition to piano roll.

Adding dark and light color schemes to piano roll editor.

Can now set subbeats to non powers of 2.

Fixing bad rebase.

Holding shift will clamp values to mousedown position.

Adding dropdown to modify which white lines are shown behind notes.

Fixed in branch master, commit 63d2db7b14

fix #273601: Updated UI for pianoroll editor.

Updating main piano roll display to have 12 rows per octave.

Updating piano keyboard to track main piano roll window.

Moving PianoKeyboard to its own file.

Better tracking of playhead during playback.

Drawing beat lines within measure.

Scrollbars now adjusted for stasis when zooming in the pianoview.

Piano ruler now showing tick marks respecting zoom level.

Fixing scroll issue during playback.

Taking direct control of selection.

PianoItem is no longer a Qt object.

Preping for note group drag.

Can now drag pitch changes.

Adjusting viewport pos when staff set.

Removing CMakeLists.txt

Adding CMakeLists.txt back in.

Cleaning things up for resubmission.

Now displaying drumset names in PianoKeyboard when relevant.

Updating tracking signal in Pianoroll Editor. Cleanup.

Locator lines no longer Qt objects. Removing redundant note move on
mouse up.

Now adjusting final event for playback.

Now showing note voice name. Using Tpc to use note name tha reflects
accidentals.

Better checking for Position when opening Pianoroll window.
Adding note for ctrl-click on rest.

Swithing velocity type will now also adjust to equivilent velocity
value. Better checking for single note selection.

Pianoroll window. Adding note for ctrl-click on rest.
equivilent velocity value. Better checking for single note selection.

Ctrl-click now adds note to selection.

Note up/down now correct direction for drumroll

Fixing calcuation for switching note velocity.

Can now horiz resize piano keyboard.

Setting up new PianoLevels control for setting note event values.

Now drawing subbeat divisions.

Can now cut notes.

User can now select data type to display.

Can now use mouse to adjust levels.

Adding undo to note event changes. Now smoother transition between
absolute and offset level values.

Smoother update communication between controls.

Adding labels to piano levels. Removing unneccary blocking of scene()
in pianoview.

Now handles adjusting level with 1px wide mouse sweep.

mouse sweep.
'c8199ac5a'.

fix #273601: Updated UI for pianoroll editor.

Now handling setting null staff. Adding missing .h files to CMakeLists.txt

Removing undo step to avoid selection problem.

Adding tool tip display.

Keyboard display now adjusting to reflect transposition of instrument.

Now showing part name in Piano Roll editor.

Moving color display options into preferences.

Levels editor now using preferences too.

Fixing incorrent note being highlighted in piano roll editor. Base color now used for coloring levels panel.

Cleaning code

Investigating cut/pasete actions.

Adding popup menu.

Encapsulating selection into a command. Creating minimal popup menu.

Can now insert notes of arbitrary duraition to piano roll.

Adding dark and light color schemes to piano roll editor.

Can now set subbeats to non powers of 2.

Fixing bad rebase.

Holding shift will clamp values to mousedown position.

Adding dropdown to modify which white lines are shown behind notes.