Jump to content


Photo

New tool (3.1.1): Piano Roll Editor v1.0 build 117 (October 2018)

Piano Roll Editor Piano Roll pianoroll roll virtual piano

  • Please log in to reply
34 replies to this topic

#26 Raul (ulneiz)

Raul (ulneiz)

    Guruh Motha Fakka is Levitating and Knows Everything About Renoise Member

  • Normal Members
  • PipPipPipPipPipPipPipPipPipPipPipPipPip
  • 1602 posts
  • Gender:Male
  • Location:Spain

Posted 11 November 2018 - 21:13

It's too bad that  Renoise doesn't use LuaJIT that is much faster and can be compiled to bytecode.

 

From what I have seen so far when creating my tools, LUA and the Renoise API Viewbuilder are fast enough to satisfy practically everything we need. It would be necessary to expand some things for greater control and little else.

 

However, Renoise has been using version 5.1 of LUA, dated since 2006, when version 5.3 was recently released and version 5.4 has already been developed, which also improves the compilation. I would say that the problem is not the code itself, but rather how it is designed in C under the hood of Renoise to give us access to the data from its API. That is, make access to the data faster. For example, why is the line_notifier so aggressive? Does that depend on LUA? I guess this is not the place to discuss these things ...


:excl: Development of my tools: Piano Roll EditorKangarooX120SamRenderPhraseTouch

 

:excl: My API wishlist R3.1 (updated 24 July 2017):

Spoiler

 

:excl: My Renoise 3.1 wishlist (updated 26 September 2017):

Spoiler

#27 fiasko

fiasko

    Member

  • Normal Members
  • PipPip
  • 44 posts
  • Gender:Male
  • Location:Poland

Posted 11 November 2018 - 21:55

Raul, interpreted Lua is sure is fast enough for most tasks. For anything more serious, it's not. On top of the speed issue, Renoise nags about script being busy every several seconds.


Maybe I just need to upgrade my several years old computer :)



#28 Raul (ulneiz)

Raul (ulneiz)

    Guruh Motha Fakka is Levitating and Knows Everything About Renoise Member

  • Normal Members
  • PipPipPipPipPipPipPipPipPipPipPipPipPip
  • 1602 posts
  • Gender:Male
  • Location:Spain

Posted 11 November 2018 - 22:11

Maybe I just need to upgrade my several years old computer :)

 

I would like to know what you mean by "anything more serious" :lol:. If you have an old PC, I suggest you try to get a more powerful CPU. As far as I know, Renoise is very dependent on the CPU, and the graphic aspect is very fast. As I said before, I changed my graphics card to a more powerful one for other things, and with Renoise I do not notice any improvements at all. If you want Renoise to go smoothly, use a powerful CPU. Before complaining about LUA, maybe the issue to improve is elsewhere. If you want to use powerful or "large" programs, use hardware that is up to the task. That way you will stop worrying about these performance details. If Taktik has used LUA, it will be for something...


:excl: Development of my tools: Piano Roll EditorKangarooX120SamRenderPhraseTouch

 

:excl: My API wishlist R3.1 (updated 24 July 2017):

Spoiler

 

:excl: My Renoise 3.1 wishlist (updated 26 September 2017):

Spoiler

#29 fiasko

fiasko

    Member

  • Normal Members
  • PipPip
  • 44 posts
  • Gender:Male
  • Location:Poland

Posted 11 November 2018 - 22:28

I have 6 core X5660 running at 2.79 ghz. More serious.. any numerical analysis of  even small datasets is a pain in ass due to  Renoise deliberate interruptions (I'm no talking about overall slow Renose performance).  This makes me want to switch to LuaJIT and communicate with Renoise through OSC.   



#30 Raul (ulneiz)

Raul (ulneiz)

    Guruh Motha Fakka is Levitating and Knows Everything About Renoise Member

  • Normal Members
  • PipPipPipPipPipPipPipPipPipPipPipPipPip
  • 1602 posts
  • Gender:Male
  • Location:Spain

Posted 11 November 2018 - 22:52

More serious.. any numerical analysis of  even small datasets is a pain in ass due to  Renoise deliberate interruptions...

What do you mean? Can you put some practical example in LUA? In general, if you program anything, it is good practice to avoid doing unnecessary operations. As far as I know, you have almost instant access to almost all the necessary data for your tools. You can have "delays" in some function if you need to access specific data, for example within the columns of notes of several tracks at once and things like that (iterating sharply). But you can create your own tables to access this data only when necessary. In the end, the problem is not the code, but rather how well constructed is it for the programmer. If there is something that you think does not measure up, better not use it and look for an alternative.

 

I do not think Taktik is willing to use LuaJIT, if he has not updated to LUA 5.3 yet. These forums are full of high quality tools that require such a change? If almost nobody creates tools and many old ones are abandoned. Where is Taktik? Do you see it here solving things?

 

In the end, we have to use what we have. There's no choice. Either that, or go somewhere else.


:excl: Development of my tools: Piano Roll EditorKangarooX120SamRenderPhraseTouch

 

:excl: My API wishlist R3.1 (updated 24 July 2017):

Spoiler

 

:excl: My Renoise 3.1 wishlist (updated 26 September 2017):

Spoiler

#31 fiasko

fiasko

    Member

  • Normal Members
  • PipPip
  • 44 posts
  • Gender:Male
  • Location:Poland

Posted 11 November 2018 - 23:03

It's too spread out over too many functions to post Lua example.  I'm loading a few hundred phrases from disk and doing some processing and categorizing (note distribution, transpose and grouping based on scales and keys). That takes a minute or two and it's interrupted by Renoise which assumes that the script hangs. I suppose Renoise is just not the right tool for this.



#32 Raul (ulneiz)

Raul (ulneiz)

    Guruh Motha Fakka is Levitating and Knows Everything About Renoise Member

  • Normal Members
  • PipPipPipPipPipPipPipPipPipPipPipPipPip
  • 1602 posts
  • Gender:Male
  • Location:Spain

Posted 11 November 2018 - 23:20

I'm loading a few hundred phrases from disk and doing some processing and categorizing (note distribution, transpose and grouping based on scales and keys). That takes a minute or two and it's interrupted by Renoise which assumes that the script hangs. I suppose Renoise is just not the right tool for this.

 

Ah ok, but this does not depend on LUA, nor any tool, this depends on the executable of Renoise, its motherboard, CPU and RAM basically. It is passing data from the hard disk or SSD to the RAM memory through the CPU ordered by Renoise. If you have problems here, you will have to look at these factors. Another thing is that you are using a specific LUA tool that has to do with that, or that does not stop reading "things" when adding data in the pattern editor, for example. Before I mentioned an example, as the line_notifier. If you have a function in a tool using it constantly, you can have problems if you change the data of the pattern editor (delete patterns, lines, tracks, or add notes, parameters, things like that). But this is a very specific case, which does not depend on the LUA code, but on how the API is designed to access the data. In general, LUA goes very fast. I have no complaints here. Yes I have experienced strange things with the use of textures in the GUI, and other details.
 
By the way, if you use OSC Server, you can send messages in real time to shoot and stop notes. Generally, I only miss more things within the Viewbuilder, and some API improvements in general to access certain data. That Renoise resents processing other things, that's another issue. For example, think about adding one more instrument to your song when you have dozens of them. Here you will notice "delays". That depends on how it's programmed under the hood, not the code itself. You can use the code right or wrong. That does not mean that LUA is the best. Everything is improvable. But for Renoise I consider LUA a good companion.

:excl: Development of my tools: Piano Roll EditorKangarooX120SamRenderPhraseTouch

 

:excl: My API wishlist R3.1 (updated 24 July 2017):

Spoiler

 

:excl: My Renoise 3.1 wishlist (updated 26 September 2017):

Spoiler

#33 4Tey

4Tey

    Big Masta Member

  • Normal Members
  • PipPipPipPipPipPipPipPipPip
  • 555 posts
  • Gender:Male

Posted 12 November 2018 - 06:36

It's too spread out over too many functions to post Lua example.  I'm loading a few hundred phrases from disk and doing some processing and categorizing (note distribution, transpose and grouping based on scales and keys). That takes a minute or two and it's interrupted by Renoise which assumes that the script hangs.

Quickly point out look into Lua coroutines ( http://forum.renoise...ith-coroutines/ ) to at least help rid yourself with the 'every 10 second interruption' dialog.
 
Also just to clarify that Renoise standard Lua is executing Lua bytecode.  LuaJIT takes it a step further and 'JIT compiles' the Lua function(s) bytecode down more into the processor native architecture for execution.
 

I suppose Renoise is just not the right tool for this.

That's probably true sir.



#34 Raul (ulneiz)

Raul (ulneiz)

    Guruh Motha Fakka is Levitating and Knows Everything About Renoise Member

  • Normal Members
  • PipPipPipPipPipPipPipPipPipPipPipPipPip
  • 1602 posts
  • Gender:Male
  • Location:Spain

Posted 12 November 2018 - 11:00

... That takes a minute or two and it's interrupted by Renoise which assumes that the script hangs.

 

Since 4Tey has clarified some things, let's punctuate until the end. The script does not hang at any time. Renoise interrupts it because the process lasts more than 10 seconds (Renoise is programmed like this, it could be 20 or 30). But if the script is well programmed, it does not hang, it is simply interrupted by Renoise. In fact, you can click with the mouse to the option to continue the process, and the script will end with the whole process, correctly. Every 10 seconds the warning window would appear again. I suppose this is a Renoise security method, to avoid "malicious tools" or "bad tools".

 
If you are using a specific tool that can load multiple instruments with 126 phrases each, on a song that already has multiple instruments WITH hundreds of notes in multiple patterns, you will have performance problems, since you will have to update the indexes of each instrument  inside the patterns. With the coroutines, you can make the script work for a long time without any interruption. I do not think that manipulating the phrases needs much process, since it only modifies xml files. They should be very complex phrases.
 
In any case, it seems that we are diverting the thread. I suggest to have a new one if you want to discuss the code or problems with Renoise...

Edited by Raul (ulneiz), 12 November 2018 - 11:02.

:excl: Development of my tools: Piano Roll EditorKangarooX120SamRenderPhraseTouch

 

:excl: My API wishlist R3.1 (updated 24 July 2017):

Spoiler

 

:excl: My Renoise 3.1 wishlist (updated 26 September 2017):

Spoiler

#35 fiasko

fiasko

    Member

  • Normal Members
  • PipPip
  • 44 posts
  • Gender:Male
  • Location:Poland

Posted 12 November 2018 - 16:36

Quickly point out look into Lua coroutines ( http://forum.renoise...ith-coroutines/ ) to at least help rid yourself with the 'every 10 second interruption' dialog.

 

Thanks :)







Also tagged with one or more of these keywords: Piano Roll Editor, Piano Roll, pianoroll, roll, virtual piano