Work in progress: Piano roll

Now when previous pattern in sequence changes, tool iterates it’s selected track’s visible columns from last to first line until it finds note or ‘off’ command. The thing is, note can start many patterns before, although it’s not usual case. Should I iterate more than one pattern before? I fear that it might lag if there are many columns and patterns, although I didn’t test it. Just writing to keep thread alive.

tool ss

I added triangles on the left for note tails, but it doesn’t feel right. Maybe I’d just use another color for them, since they are not selectable and dragable like usual notes. They can only be ‘trimmed’. I added ‘trim’ to editing modes. While ‘erase’ mode deletes whole note, ‘trim’ just places ‘off’ command under cursor.

Also, I thought, I might add setting that the new note in column may be added only after X lines after ‘off’ command. So that previous note might sound after ‘off’ command. Then I realized that it will sound even if the column is occupied by new note. So, this setting is not needed, unless you suggest a case in which it may be useful.

Also, by request, I added on todo list possibility to show more that one pattern on pianoroll

2 Likes

The one click for adding notes should also set the length and velocity of the last drawed or selected notes. Would be a nice workflow feature:
note_adapting

1 Like

It’s good idea to draw new notes with set velocity and length, which can be picked from another note. I could add ‘pick’ mode to editing modes, or… for example, there is note from line 1 to line 3. In ‘draw’ mode if you click this note at line 2 or 3, you just place new note there (i.e. cut existing note into two), and if you click it at first line, you just pick it’s velocity and length

I wanted to add to sliders section possibility to draw pitchbend (Uxx and Dxx in fx column). But then I thought… obviously it would affect only renoise samples/instruments. I tend to not use them because they unavoidably stored in project file, making it too big (and slows down loading song). It’s unwelcome to me. I’d better load samples/sfzbanks in some VST player. Thus it’s no use for me in making sliders that draw sample commands. Anyone needs this feature?

Hi @frenetic_friend :slight_smile: I just wanted to add my encouragement and enthusiasm regarding your piano roll project.

I’ve recently been finding myself really wishing I had a piano roll in Renoise, for writing denser harmonies and chord sequences. I even bought redux so I can use the Renoise audio engine I love inside other DAWs, just to be able to use a piano roll, but in the end I find entering notes using a mouse to be very clunky for the majority of things, after years of using a tracker. It’s too big a loss to make the switch. For me, (and probably many Renoise users) there are just a few kinds of musical part that really benefit from being able to see the notes on a piano roll, so it would be so great to be able to have one to open up on those occasions. I’m very psyched about this tool you’re creating, and looking forward to being able to work with it!

If you ever need beta testers, please sign me up. I’m a software developer, so I’m used to working with things that are still under development, and providing useful feedback / bug reports, etc. Im only just starting to look into Renoise’s Lua scripting APIs myself, but I’ve got a basic knowledge of the scripting environment, so could help debug / provide logs, etc, if that was useful.

Thanks for your hard work. I’m looking forward to your next progress update :slight_smile:

2 Likes

There is no need in beta testers cause I can see bugs easily myself. The fun part in programming is implementing features, the dull part is fighting unwelcome behavior of script aka bugs. I guess, noone can help programmer except his own skill to write well structured code that is easy to alter

1 Like

this looks so fantastic <3 thank you

would be amazing if it was possible to drag/delay notes backwards/forwards! maybe your maybe you could make your delay parameter bipolar? and if it’s draged upwards the note jumps into the line before in the renoise view (with the appropriate delay amount).

I’m curious about how the note drag and drop was implemented. As far as i know, mouse cursor position is needed for this, but there is no way to get this, right? Or do i miss something?

1 Like

Is this project dead again? Unfortunately, I can see many projects with a good start but with no end… :frowning:

2 Likes

@Lemi Hi Michal, Could you finish yours?
Unfortunately, as with Renoise, the API is not 100% either. Some things are missing that are supposed to already be included, following the consistency of what is already included. Maintaining the API is a huge job too. I am sure that the responsible programmer knows perfectly what needs to be added and fixed, and little by little he has been fixing things. It need to continue to do so…

1 Like

@Raul It is easy to comment or criticize but finish it yourself is another story, isn’t it? My comment wasn’t a critic but something like a sigh. You are right, my project is with no end too. I decided not to continue because the result will not meet the requirements I would expect from a good piano roll, Renoise API doesn’t allow and will not allow that I am afraid…

Exact! That’s why I asked you. I remember you had your own project.

I think the same thing happens to all of us. We want to advance some tools but the API does not have a couple of things that end up ruining the whole project.

Right now I have 2 projects almost finished (a massive note injector and an extensive MIDI controller). The truth is that I will finish them and some detail will still be missing because the API does not allow to finish it, especially this last project. It is a very uncomfortable situation.

I know taktik has been very busy fixing things in the latest version, supporting MAC and everything related to VST3. Also, fixed some API details with version 6.1

I trust in him. There is no reason to not keep polishing the API further. There are not many things missing either, and some have to do with Renoise’s behavior when receiving an order from the API, such as visually centralizing some element so that the user does not lose the visual focus of what he has just selected from the API.

But yes, all this update stuff is very slow. It takes a lot of patience.

1 Like

I think the best way to complete a powerful piano roll for Renoise is to create a separate application that will control Renoise with OSC. I remember that someone did it as a private project. But to complete a good piano roll is lots of work. I think to complete a similar PRE to Fruity Studio, Cubase, Reason takes about months of everyday work, and not so many people are able to hang on and complete it. If you have time Raul, don’t bother with the limits of the Renoise API (that is really great and enough for tools but not for a different approach of editing) use C++ or C# and some GUI library and do your application with no limitations. Life is too short…

1 Like

Even when your result was not good, sharing is always an option. I learned alot about LUA and Renoise API in recent days, because of several questions from @Raul and others in the API forum. Also the Paddles tool got me on point, how to achieve grids. My approach of a piano roll: image

Its not ready to use. I’ll post it here and on github, when it’s kind of usable. So everyone can see the code and maybe we can improve it even more. Renoise API and the view builder is pretty limiting, but for some basic piano roll it’s enough.

Edit: Made a twitter post to show the current state in action: https://twitter.com/xoonx/status/1350788024465055744

Edit 2: Forum post about this tool: Another piano roll: com.dufte.SimplePianoroll.xrnx

5 Likes

True! :grinning:


Anyway…Did it cross the mind that if you implement a ‘scriptable extension system’ to this program (in this case called ‘Renoise lua’), some people are going to want to write a interactive synthesizer/a piano roll/interact with the the playback transport/samples while it is playing or even write games with it(?) I’m fairly certain that it would’ve crossed my mind.

My claims are not excluded. I am not the one who wants to develop that big project using OSC and for me, it is not the way. But it is the way for somebody who wants to complete that task almost with no limitation (it means GUI as you want, full support for mouse events, fluent scrolling, etc.).

You are right, I would like to have some additional functions in the API too, but it is a question not for me but for a Renoise developer. …and better to have limited API than nothing. Most DAWs don’t have API.

Sure. Finally to be truthful I generally follow the principle:

"Use 'Renoise' (or insert any software name here) for what it is, not for what it could be."

Most people find it easier to post/spam/argue about what the developer(s) should do with their software on forums than it is to write good music or code programs.

2 Likes

Yes, it is the very right principle! Always is good to ask at first but doesn’t make sense to request or argue about it. BTW you created your roll, why not to release it for others?