The Api Wishlist Thread

(ffx) #241

It should, yes, if the device you’ve targeted is a plugin.

Ok then AFAIS, is missing then!

Also the same for banks would be so l337. Also I would like to use save for the midi export tool, extending it, so it also automatically saves all dsp fxp into subdirs… Lot of scenarios where this would be l337.

(ffx) #242

Is it possible that you add an event for manipulating the song xml data, after loading a song, just before it will be converted to the internal binary song?

This because there are still annoying cross-compatibility plugin naming problems, Renoise matches by filename instead plugin id, so exchanging songs cross-platform, e.g. mac<->windows will lead into various “plugin not found” issues, and fixing them all the time manually is a workflow mess.

I can understand that you don’t want to change this for sake of backwards compatibility, but can you add such an event, so we can build a fixer tool by ourselves?

Plugin examples: rob papen, mda, melda, basically everything with “_x64” on Windows. Also sometimes vendors switch filenames in later versions, like melda, tal etc. etc.

(joule) #243

Add a line notifier that will also return the original line and the changed line. This line notifier could be separate from the current simple notifier that only returns the changed pos.

Point being that we can then do a comparison and know exactly what has been changed - and from what value.

So, a sibling to[]:add_line_notifier(func[, obj])

(joule) #244

If possible, the following addition would be quite invaluable for implementations relying on extending renoise classes with custom properties:

  1. Each object having a property that return its “parent” object

example: lines[12].note_columns[1].parent_line --> lines[12]

  1. Objects that are part of lists having a property returning its index in the list.

example: lines[12].index --> 12

This would expand the use of custom properties vastly. Trying to identify a specific note_column by iterating and searching (rawequal) is simply too ineffective. For track objects it’s OK, but not when going deeper into the song.

(ffx) #245
  • Get current shortcut key of a shortcut as text. So you could print the shortcut on a button or on mouse hover etc.

  • Define own keyboard focuses for tool windows, so you could reuse/overload existing shortcuts, only if the tool window is focused

(joule) #246

It would be super convenient if _AUTO_RELOAD_DEBUG also made the tool reload when included (required) files are being updated from an external editor. It only seems to work on main.lua in this scenario.

(danoise) #247

It would be super convenient if

I’ve probably spent a whole day moving my hand to the mouse, then moving the mouse to the Tools menu and then clicking “Reload all Tools”.

So yeah! It’s not trivial to implement, though.

(joule) #248

Here is a proposal for a “very simple” way to implement saving of custom data together with songs. E g, no need for weird pollution of native Renoise classes.

Let’s say that the song name is my_song.xrns

  1. Make it possible to store something in os.tmp() path as my_song.ID*.xml. Anyting matching that filename pattern will automatically get zipped and included when saving .xrns files. ID can be anything, but it’s advisable to use the tool name.

  2. Add renoise.tool().app_ saving _document_observable to allow the user to serialize and dump his/her data into os.tmp file right before saving the song.

  3. Whenever a song is loaded, any files within the xrns zip matching my_song.ID*.xml will get dumped into os.tmp. It’s now up to the user to load/reload and interpret it (app new document observable is the friend).

Simple and relatively straight forward? Also feels clean and consistent imo.

(taktik) unpinned #249

(Ledger) #250

A request for adding renoise envelopes, ready-to-go via viewbuilder.

It would be a secondary window, so in the script gui it would appear simply as a button with your own custom text. Press the button and you get a similar renoise ‘Ext.Editor’ envelope window ready to go, linked to your script.


All values are accessible via a table values with multiple fields { position, value }

  button_text = "My Envelope",
  length = 65,
  values = { {3,0.4},{15,0.03},{23,0.7},{26,0.4},{58,0.5}}
  notifier = function(values)
               --do stuff with values table here