The Api Wishlist Thread

I’m after an iterator for the note columns in a pattern or phrase selection.

Would have saved me a lot of work today. Do people have there own work arounds?

It’d be nice to have an observable for renoise.song().tracks[].devices[].parameters[].name since the Formula, Instr. Automation, Instr. Macros and Instr. MIDI Control devices can have some or all of their parameter names changed.

Edit: This can also happen to the likes of the Digital Filter, Multitap Delay, Flanger, Chorus when choosing different types of filter. Also the EQs when the frequency is changed.

1 Like

I’d like for a ColumnPos class to exist.

It could have a single property,

  • ColumnPos.index → [number]

Then, inside NoteColumn, there could be a few additional properties:

  • renoise.song().patterns[].tracks[].lines[].note_columns[].note_is_selected → readonly, boolean
  • renoise.song().patterns[].tracks[].lines[].note_columns[].volume_is_selected-> readonly, boolean
  • renoise.song().patterns[].tracks[].lines[].note_columns[].panning_is_selected-> readonly, boolean
  • renoise.song().patterns[].tracks[].lines[].note_columns[].delay_is_selected-> readonly, boolean

I would also like for the ability to jump to a column like this:

  • transport.selected_track.column_pos = [ColumnPos object]

I’m aware that NoteColumn and EffectColumn have the is_selected property. It works great for the effects column, but the selected note column encompasses note data, vol, pan, and delay, which is a bit too broad. I’m also aware that I can select and edit those properties through .note_value, .note_string, etc, but I would like for a way to check if the user’s selection is currently over the given property.

The column transport feature is for jumping to column lines within the track itself. It would allow for the creation of shortcuts like, jump 2 column lines right/left, jump to vol, jump to pan, jump to effects column 3, etc. I think it would be a versatile feature that would streamline workflow.

1 Like

I’d like to be able to iterate over the selected samples/slices in an instrument.

Am I right in thinking I can only see the currently seleced sample through the API?

Also I’d like to be able to set the slcing sensitivity in the sampler programaticaly. Is there definitely no means of accessing that?

1 Like

I wish we could listen to Track changes and compare two Tracks reliably.

  • song.tracks_observable to get notified when tracks are added, removed or their order is changed
  • song.tracks[].index, _observable to know what position a track is at

Allow for ignoring and batching undo

bypass undo recording

  • tool changes some things regularly to simulate some live behaviour
  • the undo stack is flooded with meaningless operations
  • would be nice if a tool could say “don’t remember this” and do things that can’t be undo-ed afterwards

batch together undos

  • tool does a lot of stuff like batch converting samples, generating data etc. it does so in steps to avoid timing out and freezing the interface
  • the undo stack is flooded with steps that are hard to undo if needed
  • would be good to be able to say “start batch operation”, do all the things and “finish” to have the undo batch everything together in one step

I can see where you would use this, but in general it’s a dangerous thing to do. If you suppress things like “insert track”, subsequent undo/redo operations on that track may crash because the undo timeline is no longer complete. As we try (not always possible, but we try) to avoid that Lua scripts can crash Renoise, this shouldn’t be possible.

However, “batch undos” would be possible and indeed helpful for many “process sliced” tools.

Makes sense. But wouldn’t batch undo have a similar problem in case the tool forgot to call “finish”?

It would finish automatically. At least, that’s how it works internally in Renoise; A batch maneuver is there terminated either after a timeout or when a new or non-batch other some other batch operation interrupts the current batch process.

This is currently only used in Renoise for live note recording.

Hi,

I’m still a novice regarding the tools building, so sorry if this was already addressed, but I don’t think that currently it’s possible to access the Sample Recorder parameters, except for the start and stop recording. It would be really nice if all other recorder parameters would be exposed, and some (sample rate, bit rate etc).

Also one technical question regarding sample recording in Renoise: I can see for a brief second that the status bar shows a lots of messages once the recording was done (recording stopped). My assumption is that the sample is recorded to disk, and then loaded to either a sample or a new sample slot. Which is just fine way to wrap up the recording, since HD space is still much bigger than the memory space.

But, I believe it would be really great if Renoise could have an option to record samples directly to memory. I assume that’s not that simple to implement currently, but it would be great to have as an alternative.

Also, one FR regarding recording is that when recording is engaged and option to record to new instrument should create a new instrument before the recording is done.

What I currently want to accomplish while recording a new take is to automatically set the Autoseek and insert a C4 for a currently selected (newly recorded) instrument in the selected track, basically simulating the tape recorder once recording was done. I might hack it around since I understand that the next instrument will be occupied with the recording of a track, but would like to have a cleaner path to what I want to accomplish.

Thanks

I would really appreciate being able to write to macromappings.

-- Macro mappings, target parameters.
renoise.song().instruments[].macros[].mappings[], _observable
  -> [read-only, array of renoise.InstrumentMacroMapping objects]

this seems to be read-only, unfortunately.

The ability to assign pitchbend to the virtual keyboard’s pitchbend is a hassle because it requires manual setting with the mouse every time, despite the fact that it seems to be a very standard use case.
I originally requested this from @esaruoho to solve this issue.

1 Like

a method for outputting “currently selected folder” from disk browser to API.

this would help in f.ex. running “os.execute Terminal.app (Disk Browser Path)”, as that would be pretty hot.
i.e. a need for a way to communicate the selected sample path.+ filename (or “folder you are in” path) to external apps.

next

i really need “copy samples from note-on layer to note-off layer” API functions back.

next

SampleModulationDevice Target snooping - i.e. "which Modulation is selected (Volume, Panning, Pitch, Cutoff, Resonance, Drive). "
I need to be able to tell my shortcuts that load modulation devices, where to load them to. I can’t currently do it, and don’t feel like writing 8*6 shortcuts - i’d be happier with just having 8 shortcuts that are context/selection aware.

next

ditto, i would also like to modify the Slicing Sensitivity aka Transition Detection.


next

i need a method for opening these OS dialogs in a specific user-defined folder from API.

i.e. file-extensions, open_in_path, dialog_title
thanks!

-- Opens a modal dialog to query an existing directory from the user.
renoise.app():prompt_for_path(dialog_title)
  -> [valid path or empty string]

-- Opens a modal dialog to query a filename and path to read from a file.
-- The given extension(s) should be something  like {"wav", "aiff"
-- or "*" (any file) }
renoise.app():prompt_for_filename_to_read({file_extensions}, dialog_title)
  -> [filename or empty string]

-- Same as 'prompt_for_filename_to_read' but allows the user to select
-- more than one file.
renoise.app():prompt_for_multiple_filenames_to_read({file_extensions}, dialog_title)
  -> [list of filenames or empty list]
1 Like

a method for toggling Instrument Properties (below the Instrument Box)
a method for closing Disk Browser and instead having the Instrument Box take up the whole vertical space.

a method for resizing Disk Browser / Instrument Box sizes

and for turning these instrument properties things on/off
Screenshot 2024-04-30 at 16.26.25

EDIT:

Automation stuff:

  • a method for selecting a device within the Track Automation List
  • a method for selecting a parameter within the device within the Track Automation List.

We can already do this with Track DSP (well at least the device selection), just missing it from the Automation List.

This would be pretty magical. I have a script that would really benefit from this.

EDIT:

-- When true, the middle frame views (like the pattern editor) will
-- stay focused unless alt or middle mouse is clicked.
renoise.app().window.lock_keyboard_focus
  -> [boolean]

while this exists, give the same lock keyboard focus for Track Automation. or a way to make the Track Automation focused, maybe not even lock.

Import of Keybindings.xml

Importing Keybindings.xml is a standard feature.
It would actually be very helpful if this could be done with the API.
The only argument required might be the file path.

Renoise has a problem that the key operation system tends to be complex.
For example, if it were possible to import Keybindings.xml by key bindings, it would be possible to change the key bindings set at the same time as switching to the pattern editor, mixer, sample editor, etc., like vim in the editor.

Other application possibilities should be quite wide.
If someone created a key binding set so that Renoise can use a simple operation system like Dirtywave M8, it would also be easy to switch to it.
Even simple additions to functionality have a wide range of applicability, and I believe the impact that can be brought to Renoise through extensions will be very significant.

@taktik Sorry to ping you and make a brazen request. I hope you will consider it. My guess is that it should be relatively hassle-free. Sorry if I am wrong.

I am discussing with @esaruoho in this way in anticipation of those.

1 Like
renoise.song().phrase_selected_line_index
renoise.song().phrase_selected_note_column_index
renoise.song().phrase_selected_effect_column_index
1 Like

need a way of finding out which modulation am in - i.e. Volume, Panning, Pitch, Cutoff, Resonance, Drive

A fully working, full feature XML lib would be very cool, with support for attributes, searching, just like mentioned here. Or an extension of the Document API with attributes and searching…

renoise.song().phrases[].color_blend
renoise.song().selected_phrase.color_blend
renoise.song().scopes[renoise.song().selected_track_index].color_blend

and

renoise.app():load_keybindings("path/to/keybindings.xml")
renoise.app():save_keybindings("path/to/keybindings.xml")
renoise.app():reset_keybindings
renoise.app().clipboards[].paste
renoise.app().clipboards[].copy

so basically a method of using the API to provide content to the pattern iterator

EDIT:
Sample Navigator keybindings. currently not available for binding.

EDIT2:

renoise.song().selected_sample.sample_buffer.selection_range.play

this would play the selection_range