New tool (3.2.0): Piano Roll Editor v6.0 build 271 (September 2019)

Sorry guys, it was my fault. I dropped the wrong file to renoise. Now it seems to work.

Oh, okay! I’m glad it’s already working for you! :slight_smile:

I still have to play with it. It’s much more complicated (and powerful) than I thought.

The next version of the PRE will include some interesting news:

  • The minipanel for Follow SEQ mentioned above.
  • A new panel for the mixer (Panel 4):

This allows the group control of the sliding bars in the pre-mixer and the post-mixer.

  • New window: “Sequence Times”:

Renoise 3 does not have a timeline in the sequence, which could show the accumulated duration of each pattern. This vertical window shows the duration of each pattern as well as the accumulated duration. I wish this was under the hood of Renoise and was compatible with all time-related parameters (including the automation editor). I’m sure this would be a challenge for @taktik. It would be great if it were integrated next to the editable names of each pattern, inside the Matrix as an option.

  • New window: “Hex to Dec Converter”:

This new window allows you to easily convert hexadecimal values to decimals and vice versa, also obtaining values in%, with a special treatment for panning (obtaining the reverse value). I always wanted to have something like this. I wonder why I have not built it until now. It looks so clear!

Apart from updating the User Guide and improving some internal PRE things, mostly related to the Chord Builder and the MIDI input, I added a section in the User Guide that explains the concrete steps to start editing notes. For some reason, some users have asked me about this issue and there were still doubts. So I will also leave the steps here in the forums so that nobody has doubts:

Piano Roll Editor. How to start to edit notes? Previous steps.

To start editing notes with the PRE, first you need to configure Renoise and the PRE correctly, both. Follow these steps:
  1. Start Renoise 64bit.
  2. Go to Renoise:Preferences/OSC. Activate “Enable Server” checkbox (configure the OSC equal as PRE:Preferences/OSC; Protocol “Udp” & Port “8000”).
  3. In Renoise, load an instrument inside a slot of the Instrument Box.
  4. Start the PRE. Go to Renoise:Tools/Piano Roll Editor…
  5. Enable the PRE (activate in “ON”, top left switch of window). That is, select the PRE window in the foreground & press [º] command.
  6. Enable Edit Mode in Renoise. That is, press [ESC] command.
  7. Now you can use the mouse to edit notes on the roll.

The new version is almost ready. As soon as it is published, I recommend all registered users to update it!

New version 5.0 of Piano Roll Editor just published! Read the first comment for more information. To know all the news, display the list of the new version in “Update History”.

To update the tool to the latest version for all those users who have their Personalized Use License of Full Version, please follow this steps:

  1. Uninstall the old version of PRE.
  2. Install the latest version of PRE.
  3. Reinstall your Personalized Use License.

Other considerations:

  • Remember to backup your custom chord banks, before reinstalling the tool, so you do not lose them.
  • For the rest of users, they can try the free Demo Version.

Thanks for the support and enjoy it!

PRE5 on its 1st anniversary brings a lot of news and is much better than previous versions. Please, always use the latest version available!

If you are interested in the Full Version of PRE and in supporting the developer, get your Personalized Use License!

1 Like

Awesome! That must have been a ton of work.
Thanks to plugin-authors, and thanks to Renoise @taktik for the plug-in api! :sunglasses:

That’s right, it’s a lot of work in the shade, hidden without anyone noticing :smiley:.

Enjoy the new version! Remember that you can update directly from PRE3 to PRE5. But I guess you’ve used PRE4 too.

If you use the MIDI input for the PRE, you will also notice certain improvements, especially with the Chord Builder, to play live alternating at the same time the banks or the note-chord transmissions themselves.

Advanced operations have also been reviewed, specifically the Panel 2. Now not only allows to change all values, but also replace a specific value with another…

Works great and very well done, but it’s missing the feature why I would need a piano roll in the first place and that is to drag notes out so to quicker create different note lengths or to do monophonic glides quicker with vsts.

To stretch or shorten the note, it is only necessary to change the note-OFF position, which only requires a single click (it will automatically move the note-OFF). It is equal to or even faster than dragging to flatten or shorten and avoids problems when jumping between patterns.

Dragging the note in another place vertically is a bit more complicated, for that you have to use the joystick and take advantage of the selection of the right bar, or make more clicks. But to change the tone of the note, again only one click is necessary, and it will automatically move the note horizontally.

You can also insert notes with note-OFF with a duration (number of lines determined). Things that Renoise does not have.

In panel 2 of Advanced Operations you can also modify in group the position of the note-OFFs of a certain area.

In the next version, I will probably add another option in this panel to be able to increase or decrease the length of the group notes (move these note-OFFs, starting from its initial duration).

Thank Raul, unfortunately my demo has stopped working already.

You can uninstall and reinstall the demo. It will work again.

A true story, stripping the mind …

Maybe some of you wonder how it is possible to build a complex tool, such as the PRE. Have you never written a tool for Renoise? Then you may be interested in what I am going to tell you…

The tools for Renoise are written with LUA code, which is a dependent code (cannot run on its own) and that feeds on the Renoise API available. The API (currently in version 5) are like LUA code instructions prepared for you to use to execute things that have to do with Renoise. The typical example is a function that can play or stop the song.

Here is a screenshot of an example of one of the last functions that I have written for the PRE, today. Basically I am adding support for two keyboard commands in order to control a volume slider and at the same time, if there is a match of the value of the note velocity in the pattern editor, then change that value as well. They are two different things which will be done practically at the same time:
This is how I program. It is enough with just one image capture. Probably the code under Renoise’s hood is “something similar”.

Do not worry! It is very likely that you read the image capture code and do not understand anything. This is because there are elements (local or global) that are not defined here. But you just need to know how to read, write, add and subtract and understand (relate things).

Basically it all comes down to a very very very “long chain” of characters (numbers, letters and spaces), which read one after the other, are “like passwords” that allow you to execute specific things. If something is wrong in that chain (in any of those “passwords”), that to execute will not work, and an error is probably returned.

Well, a tool like the PRE has thousands of these functions, written one after the other forming that “long chain”, with exaggerated “trial and error tests”. Some functions need to be optimized to work better. That is, you can write several functions that do the same, but some may run faster if it is “better written” (more optimized).

A file “some_name.lua” can have infinite lines, usually more than a thousand (it depends). Or if it is very complex to reach ten thousand lines of code. There are several writing techniques to sort the lines. I use the “tree” to better understand the code vertically, complying with specific bleeding rules…

The LUA code is very similar to the C+ code (or even to Java). These codes are written in the English language. Anyone who knows English can write tools for Renoise. Learning it is not difficult, but it takes a lot of time create something complex.

The Piano Roll Editor is a project, alive, latent, which takes more than 1 year of development. I like to code. I use a few hours of my little free time to schedule these things. Sometimes it can take more than a week without me touching any code. Usually when I get tired of producing or composing a song, I have the programming to “clear my mind”, using my knowledge in something that is very much related to music. I compose music and program tools for music. Generally, while composing music, ideas flow to improve code. The feelings are exciting, satisfying when everything goes well, and sometimes frustrating if you bump into an impassable wall.

Creating these types of tools also helps you understand Renoise (and even another DAWs) better and learn better from it. If you want to write a tool without knowing how to start, you can really do it! About 3 years ago, I had no idea about this!

When I started to learn, I would have liked to see a thread like this and it is true that I have not written anything like this so far. Normally these things are done in private and the programmer does not tell anything about his experience. People who have not created the tool do not know and do not even have a rough idea of ​​the work behind it, especially in research hours. Mainly, writing the code is the simplest. The problem is to understand it well and do what works. That is, knowing what you want to do.

Renoise is a DAW somewhat different from the other DAWs on the market, precisely because it is expandable thanks to the tools made with LUA. Other very expensive payment DAWs do not offer this magnificent feature. If something you think is missing, add it yourself. This philosophy is magnificent! So, if you want to start making tools, you can do it!

Right now I am finishing version 6 of the PRE. This new version will be a great leap in usability. Do you really see these things and don’t feel like creating your own tools?

I hope you enjoyed reading this, as I enjoy creating code…


While I still haven’t fully explored the PRE one of the things I wish it would have was to just be able to quickly click in a chord without having to manually switch to another note column.

for me personally the advantage of a piano roll is to click in and drag notes/chords with a mouse and manipulate them. I still think it would be great if there was an option to at least drag out the note off with a single click ( click down: creates note - move to note off position while still holding mouse button - release mouse button to place note off). also since the grid is highlighting the blocks of Renoise instead of the black and white keyboard notes it’s hard to know what notes you are clicking in, an option to change the highlightin would be nice.

also have you thought about a simple fixed chord toolbar that can be displayed under the grid that would allow one to simply add a chord by clicking on a square (with chord numbers inside like m7) at the edit position?

keep up the great work!

Virtually everything you ask for is already possible in the next version of the PRE, which comes with some very interesting usability news, apart from those already available.

Except drag, you can select and move the selection where you want, or clone it. It will also be possible to easily create chords with the USB keyboard and more things that have to do with editing notes with the mouse, which is where I have lost the most time now.

The issue of dragging vertically with the mouse is not possible due to the limitations of the API. There is no adequate method to solve this operation, without doing “weird things”.

At the programming level, by means of layers it is possible to drag an overlapping element with the mouse, but it can work well in a non-resizable and small grid, which is controllable, or for a rectangular area, such as a custom sliding bar.

That’s what Chord Builder is for. Build and save your chords or use the presets. Use the upper mirror piano to enter the chords with a single click.

There will be a way to make this much easier, just by clicking with the mouse. But I still can’t reveal how it’s done.

You can insert the note + a note-OFF directly, with a single click, and then change the position of the note-OFF. It’s very quick to do. It’s only 2 clicks.

To move chords, you only need to select them and then move them with just one click. You can select an entire area inside the roll and move it wherever you want.

For this is the Chord Builder. I suggest you learn to use it. Under the roll I can’t add another panel. It would take up too much space.

Wait to try version 6 of the PRE. I will still take time to publish it.

1 Like

PREv5 and earlier versions have a strange little effect of “ghost note slots” in the progress of playing the song. This is being corrected for the next version 6.

The following performance video shows that these “ghost note slots” no longer appear. Perfect work!

Optimization tasks are as important as the elimination of bugs or even the solution of critical bugs that can block the program. If the graphic performance is not rewarding, the user perceives that something is wrong, feels uncomfortable and prefers not to use the program in question.

One of the most complicated tasks when building complex window tools for Renoise is that the graphic performance must be remarkable and fluid. You think that any window tool is something additional that is added to Renoise. If Renoise already works “with shocks” or already has “failures” of graphic fluency, they will also be present in the tool. But the tool itself can also influence Renoise’s graphic performance.

Any variation in the fluidity in the progress of the song bothers the user. Generally, if this situation occurs, it is due to the poor optimization of certain functions that have to iterate between different ranges of values or that these iteration functions are too beasts. It is not a problem of changing the appearance of an object, such as the color of a button, which is certainly instantaneous.

In my experience, it is essential to optimize these functions along with a good design and construction of the GUI, otherwise, they can influence the fluidity of graphic performance. A skillful trick is to do something later, or even sooner, but not at the same time as another important process.

I disagree.

Do you want me to put the term “instant” in quotes? You could explain.

You could do, it might soften the blow a bit. The computer has got to run through instructions that take time to execute (even if the perception to the human is ‘instant’.)

@4tey. You are very gridded, but you’re right. But me too. Obviously I am speaking from perception when viewing a tool. That’s why there is a video above.

Any function, however slight, needs some time to execute, even if they are 0.00001ms. This is obvious.

What I meant is that there are “iteration functions” that can cause “a graphic delay”, because they must be executed before. And anyone can think that it is some delay of the viewbuilder (the API GUI), of the change of state of an object (change its appearance), as if that was a great job (change many objects at once). And no, these tasks are ultrafast. I am handling thousands of objects at the same time with this tool.

That said, what I show in the video is one of the things that caused me the most headache to solve. It is not easy to make everything work, when there are many states and you have to attend to them all. You change the switch somewhere and something fails. :slight_smile:

One does not realize these things until you do not schedule something complex in depth.

Edit: @4Tey. By the way, in my native language (Spanish language), the word “instantaneous” means a short duration. It is not a concept of something that has no duration. Does “instantaneous” mean something else in English? I ask because it is not the first time that happens with some English person. Something “instant” has never meant that it has no duration.

I usually interpret ‘instantaneous’ as no time has elapsed. That’s probably just my (incorrect) interpretation then.

Well at least I’ve learned that Raul :slight_smile: