The Api Wishlist Thread

So you`re saying selected parameter index can be set??

renoise.song().undo_fired_observable  
  
renoise.song().undo_returned_observable  
  
renoise.song().redo_fired_observable  
  
renoise.song().redo_returned_observable  
  

A request for two notifiers linked to undo being called in renoise.

The first one notifys when the user has pressed Ctrl + X in renoise. Whatever function is attached to this notifier is called before the undo is executed in renoise.
The second one is called when the undo has returned in renoise.

This means you can release other notifiers in your tool (like pattern_track_line) to stop them being triggered a load of times by renoise undo. You can then add them back after the undo is finished.

edit: Also for redo

(it maybe renoise.app() but you get the idea)

Bumping for: Setting GUI area focus with lua scripting would be nice. :walkman:

Please add an ‘active’ tag/field to the renoise.tool():add_keybinding function.

I used the add_menu_entry active tag in my script to grey out the move menu, in cases, where it does not make sense (the boundaries). The keybindings though where still accessible. I had to incorporate the logic twice, so that pressing the keybindings at the boundaries was without effect.
This would become superfluous, if the keybindings had an active field.

The ability to see if a given instrument is currently playing?
Basically, it would allow script authors to provide the same kind of visual feedback that we now have in the instrument/sample lists (the little square icons that go ‘blink’)

  
renoise.song().instruments[].is_playing  
 -> [boolean]  

Also, it would be nice to have the ability to do the same on a per-sample basis:

  
renoise.song().instruments[].sample_mappings[].is_playing  
 -> [boolean]  

Like a few other people here I’d like the ability to convert sample rate and bit depth with the API.

I’m able to convert bit depth now (which requires writing a fresh buffer) but sample rate conversion is not possible without writing the resample algorithm in Lua.

renoise.song().instruments[].macros[]:insert_macro_mapping_at(device_parameter, index)
  -> [new renoise.InstrumentMacroMapping object]

… would be much appreciated. If there is any way to add a macro mapping from the api, please let me know :slight_smile:

1 Like

I’d love to be able to add OSC mappings to Renoise without starting own my server or editing GlobalOscActions.lua

Something like this would be splendid:

renoise.tool():add_osc_mapping {
  name = "Tools:My Tool",
    pattern = "/do/what/my/tool/does",
  invoke = my_function
}

Possibly with type tag specification for passing OSC arguments to function?

renoise.tool():add_osc_mapping {
  name = "Tools:My mapping with arguments",
    pattern = "/do/what/my/tool/does",
  invoke = my_function_with_arguments,
  type_tags = {"b", "f", "s"}
}

click-drag in the view builder for buttons, notifiers on button mouse over (including during muse button down)

moved tohttps://forum.renoise.com/t/the-api-wishlist-thread/29285

moved tohttps://forum.renoise.com/t/the-api-wishlist-thread/29285

moved tohttps://forum.renoise.com/t/the-api-wishlist-thread/29285

— Missing - cannot map.
renoise.song().instruments[].phrases[].lines[].note_columns[].delay_value
renoise.song().instruments[].phrases[].lines[].note_columns[].delay_string

The NoteColumn class is structurally the same whether it’s in the pattern editor or the phrase editor, so you should be able to see all of the same properties and methods.

5456 renoise-phrase-delay-lua.png

The NoteColumn class is structurally the same whether it’s in the pattern editor or the phrase editor, so you should be able to see all of the same properties and methods.

attachicon.gifrenoise-phrase-delay-lua.png

Ok, I get it. It’s missing from the docs!

All I get when I grep delay_value is this

renoise.song().patterns.tracks.lines.note_columns.delay_string

Ok, I get it. It’s missing from the docs!

Yeah, fair enough, the docs do not explicitly show all of the properties/methods for individual lines, note columns, etc. found within the phrase, but this is mainly to avoid repeating a bunch of crap that’s already been defined in the pattern editor section. It’s implied (perhaps not strongly enough) that the structure of a phrase is basically just like a normal pattern track within the pattern editor.

--------------------------------------------------------------------------------
-- renoise.InstrumentPhrase
--------------------------------------------------------------------------------

-- General remarks: Phrases do use renoise.PatternLine objects just like the 
-- pattern tracks in Renoise do (...)

Either way, we can probably find a way to make this more obvious.

Yeah, fair enough, the docs do not explicitly show all of the properties/methods for individual lines, note columns, etc. found within the phrase, but this is mainly to avoid repeating a bunch of crap that’s already been defined in the pattern editor section. It’s implied (perhaps not strongly enough) that the structure of a phrase is basically just like a normal pattern track within the pattern editor.

--------------------------------------------------------------------------------
-- renoise.InstrumentPhrase
--------------------------------------------------------------------------------

-- General remarks: Phrases do use renoise.PatternLine objects just like the 
-- pattern tracks in Renoise do (...)

Either way, we can probably find a way to make this more obvious.

My next question is this: I now have a Phrase shortcut that reads the pattern-editor-currently-selected-note-column and adds +1/-1 delay value depending on which place the pattern editor note column index is, but am unable to figure out how to find what the phrase editor note column index is. what am i missing?

The “Pitch range” setting seems to be missing for Pitch Envelopes, so sth like:

-- pitch range in semitones
renoise.song().instruments[](.sample_modulation_sets[]).pitch_range
  -> [nil or number]

… would be nice.

+ renoise.app():get_status()

So it would be possible to concat the status message, or check if it’s free and so on. Very useful while using multiple tools that each write status bar…

1 Like

+renoise.song().*.toXML()

So any node starting from “pattern” would be copyable as an XML string, for easy storing into a variable. The generated XML should exactly match with the node in Renoise song xml, so later it could be just inserted there. This would also allow various cross-instance (opening two Renoise apps) operations.

Or even better, with checks:

+renoise.song().*.copyFromXML()

+ xml = renoise.song().*.toClipboardXML()

so you could generate a clipboard XML programmatically and manipulate it. Also from modified structures via lua. I guess to make such a implemention as easy as possible, the structure of the the copy paste buffer should be hierarchical…?

+ renoise.app().UndoBuffer().fillLastBuffer(xml string)

So you could have much more control over what’s is written to copy paste.

+ xml = renoise.app().UndoBuffer().toXML()

The opposite from above, copy current undo state to variable as xml string ( the same as on normal copy operations).

What for?

  • You could save old copy states, a states clipboard

  • you could 1. Create a undo point , 2. Manipulate the song as you wish. 3. Save this new state into lua string 4. Revert undo, so now you would have future state in the string… With that you could do easy complex a/b mechanisms in any way .

1 Like