Simple Pianoroll: com.duftetools.SimplePianoroll.xrnx

The earlier screenshot showed a melody that had already been recorded. When creating new notes, I noticed a general issue with shortening them - it’s not possible to go below one grid unit.

2025-08-03_00_12_31

@Ledger I’d have to take another look at it to see if that could cause any conflicts with how things work. Personally, I found it pretty handy to reset via the timeline since you’re already zooming in that area.

@bigfake You can always move a note, even if the mouse cursor shows scaling. As soon as you move the note up or down, it switches to move mode. I actually had to add that back then because I was working with really short notes. Just think of it like you’re ‘lifting’ the note out of scaling mode :slight_smile: Also, you can now just zoom in, too.
Regarding your second point, if I understood you correctly, you can’t make a note shorter than the grid unit, because a grid unit is the same like a line. That’s just how it works in the tracker interface too. In those cases, you’ll need to use FX commands. I always liked using ‘Cx’ as a command in the volume channel. You can enter those directly in the volume or panning input fields.

2 Likes

No big deal, was inspired by the way the renoise automation editor/sampler scroll-bars work. Plus you may not want to clear loop before zooming out. You can ofc currently zoom out with mouse-wheel downwards though and still preserve the loop.

To throw out another thought: Maybe Ctrl + Double-Click to clear loop, to separate the two functions and Ctrl is already used to ‘drag to set’ the loop.

Do you plan to add anything similar to the selection-based MIDI operations in the FL piano roll? I’d love to have something similar to the fast MIDI operations in FL like the arpeggiator/flam/chop/etc. tools.

Yeah. “Chop” to split a note in half is already possible via a keyboard shortcut. I had actually thought about adding something like Renoise’s advanced pattern operations panel to the piano roll, so functions like chop, flip and others would be easily accessible via buttons.

Edit: Just ran into an interesting bug. On Windows 11, at least for me, the Control key wasn’t being recognized properly in Pen mode. Everything worked fine on macOS though. Turns out I’m tracking modifier keys in two places, once via the standard key handler and once during app idle. But only the app idle handler had the necessary refresh in place to detect a switch from Pen to Select mode using Control. I’ve added a fix in the latest test build. Very strange, because this was working before…

5 Likes

That seems to have fixed this in pen mode aswell now, thanks!

  1. Changing cursor mode via shortcut works great now, but if you use Alt to temporarily change from ‘select to pen’ or ctrl to go from ‘pen to select’ you still need to move the mouse before icon changes. Also some behaviour in the ctrl > ‘pen to select’ where the cursor gets stuck on select briefly.

Edit: related but not sure if this ones intentional:when you are in select mode, RMB gives you audio preview but you still have to move the mouse until the icon changes for that case.

1 Like

Oh, okay. I didn’t even notice you’d already described exactly that issue. Funny enough, it only started happening for me today. Glad the fix works for you too. That shortcut is such an important part of making Pen Mode the new default in 5.0. Thanks for testing!

Yeah def helps with final polish! I also edited post above with another situation it happens in case you missed it though like I mentioned there, it may be intentional.

cheers

1 Like

Yeah, there are still a few bugs in Select Mode. I’ll polish that up a bit more.

1 Like

@toimp

Hello mate!

Many of those little bugs can be state related, because you have often to do thing like setting a variable for somthing, then do a function, and the set the variable back on old value. So may often be for setting program states and conditions that close out each other. A recommended Design Pattern for this is the State Maschine Pattern. Its from OOP, but i’m pretty shure there will be implementions too on Lua. It can maybe help you make your programm mainloop for rendering Notes in the roll much more structured, simplifyed and better to read, and easier to debugging. Maybe you give him a try. Keep going on mate!

happy tracking :slight_smile:

Since we didn’t have a scrollbar element before and with the new API I initially just switched from the slider to the scrollbar during the porting, the scrollbar width or height always looked kind of weird. I’ve fixed the code now so that the width or height of the scrollbar makes more sense. Hope nothing else broke because of that.

3 Likes

I think the best thing would be to upgrade Renoise, at least to version 3.4. That way you can download the latest stable version of this tool for it here: Simple Pianoroll | Tool | Renoise Of course, updating to 3.5 would be even better since there are quite a few improvements with the latest version.

Edit: It looks like the 4.4 Version of the Simple Pianoroll will work with Renoise 3.3.0. So you can test this, too.

com.duftetools.SimplePianoroll V5.2 (for Renoise 3.5)

I’ve just pushed v5.2 to the tool page, the latest test build is now the stable release.

New Features

  • Horizontal zoom for the piano roll grid
  • New “Force Select Mode” preference option
  • Added note preview toggle next to mute/solo buttons

Improvements

  • Better scrollbar behavior for step and note sliders
  • Ghost track rendering optimized for better performance

Bug Fixes

  • Addressed several refresh and UI glitches and some asserts

Download: https://www.renoise.com/tools/simple-pianoroll

10 Likes

What does this Button make exactly?

To quickly turn the current instrument’s note preview on or off when creating, moving or just by clicking notes.

Hmm
When drawing notes , the renoise follow pattern cursor is automatically disabled , can’t rememeber this happening in previous versoins

If you just click in notes without changing their size, Follow Player doesn’t get turned off. It only does if you actively click in and then drag to set the note length. In that case, it’d be annoying if the pattern switched while you’re still doing that. But if Follow does get automatically turned off and you close the piano roll afterwards, it’ll go back to the state how it was before.

1 Like

Question, not an essential feature request, but could be helpful imo, perhaps already possible?

Is it possible to see the notes being pressed, either through the computer keyboard and/or midi keyboard in the gui?

This through color highlighting in the white and black keys on the left of the tool gui? (similar as clicking with the mouse)

I sometimes have a few patterns looping and play around on the midi keyboard to preview melodic ideas, the highlighting could help to visualize the notes that work. To draw them inside the tool window.

If listening to key presses take to much cpu overhead perhaps this could be made optional?

edit;

SNAP! Just checked the preferences and seen the midi input settings, awesome! :drummer: :sunglasses:

edit2;

Had a bug though first previewing a sound on one channel with my midi controller, then moving to another channel;

"‘C:\Users\pluge\AppData\Roaming\Renoise\V3.5.2\Scripts\Tools\com.duftetools.SimplePianoroll.xrnx\main.lua’ failed in one of its notifiers.
The notifier will be disabled to prevent further errors.

Please contact the author (dufte (toimp)) for assistance…

main.lua:1833: attempt to perform arithmetic on local ‘instrument’ (a nil value)
stack traceback:
main.lua:1833: in function ‘triggerNoteOfCurrentInstrument’
main.lua:6730: in function ‘handleKeyEvent’
main.lua:6788: in function main.lua:6783"

1 Like

Yeah, as you’ve probably noticed, that already works. You can also use your computer keyboard. As long as the piano roll window is in focus, the notes on the left will light up when you press the keys. Some other features need that too ( Hold the playing keys and use arrow keys left / right :slight_smile: ). I also tweaked the trigger function a bit, so hopefully that fixes the bug. I couldn’t reproduce it on my end. If you want, you can try it again with the test build.

1 Like