Jump to content


Photo

The Api Wishlist Thread


  • Please log in to reply
199 replies to this topic

#1 noisebeuter

noisebeuter

    Member

  • Normal Members
  • PipPip
  • 48 posts
  • Gender:Male
  • Location:Berlin

Posted 23 July 2010 - 13:02

The title says it all. Please post only stuff that you know is not possible at the moment and where you don't know if it will be possible in a future release (don't post realtime dsp stuff, for example)

Okay, I'll start:

- Attach custom events to view objects (e.g. clicking a text label, dragging a button, right-clicking a slider)
- Custom context menus for views
- Canvas-like object to draw stuff on

#2 Suva

Suva

    Guruh Motha Fakka is Levitating and Knows Everything About Renoise Member

  • Moderator
  • PipPipPipPipPipPipPipPipPipPipPipPipPip
  • 2642 posts
  • Gender:Male
  • Location:Tallinn, Estonia

Posted 23 July 2010 - 13:17

Canvas ... :w00t:
  • crazya02 likes this

#3 epc

epc

    Member

  • Normal Members
  • PipPip
  • 49 posts

Posted 23 July 2010 - 13:46

Rendering,
Canvas (to draw curves with control points especially)
os: OS X 10.6.4

#4 Beatslaughter

Beatslaughter

    Guruh Motha Fakka is Levitating and Knows Everything About Renoise Member

  • Normal Members
  • PipPipPipPipPipPipPipPipPipPipPipPipPip
  • 2283 posts
  • Gender:Male
  • Location:Berlin, Germany
  • Interests:Music, Blu-ray, PC Games

Posted 23 July 2010 - 14:03

- Each Renoise object should have :set_userdata() and :get_userdata() methods, where i can assign a table with my own values.

- Enable and disable viewbuilder controls.
- Listbox and treeview viebuilder controls.

That's it mostly for now. :)

#5 Johann

Johann

    Guruh Motha Fakka is Levitating and Knows Everything About Renoise Member

  • Normal Members
  • PipPipPipPipPipPipPipPipPipPipPipPipPip
  • 2774 posts
  • Gender:Not Telling

Posted 23 July 2010 - 14:04

-- +1 for rendering!! I was thinking about something that renders the song then generates a spectrogram... and if you really wanted to, I think you might eben able to create a track freezing plugin with that (!)

-- Mouse input, in relation to the dialog, in screen coordinates and as raw movement (ie. if you move the cursor to the right screen edge but keep moving it still registers that movement, even though the cursos position doesn't change)

-- Hooks for keyboard input (like when you're in a text field and press "up" or "down", allow scripts to catch that and act on it)

-- OpenGL, and I'm not joking. There is no contest between 2D and 3D drawing speed wise, 3D is about a billion times faster, and uses a lot less CPU, generally/crossplatform speaking. I realize that it would be overkill for most and would STILL require pixel perfect 2D drawing. However, if that could just be plugged in so to speak, I think it would be a really good idea. Let the scripts create their own helper functions, "just" provide access to the OpenGL API.

-- A way for plugins to share scripts and data. Maybe that prefix could be used? blah.bluh.pluginname is the convention anyway, so blah.bluh could be the name of the folder where each plugin developer can put "their stuff" (common functions you use all the time, a logo for the about menu, whatever). Or would that invite sloppyness and accumulation of crud?

-- Envelopes as a standardized GUI element. It doesn't have to be extremely powerful, just what the current envelopes do, plus a vertical edition. If possible, make them all inherit from the same code, so that if they get be improved and all plugins and Renoise sections that use envelopes benefit from that automatically.
  • fraktal likes this

music / photos / renoise scripts


hay guises! action/reaction. I'm not into leaving or avoiding places, I ban 'em by making sure I get banned.. loadsa noise, little signal.. basically anything else makes more sense to spend energy on. thanks for the app, but from here on out we simply don't have any use for each other period. oh, and of course big shoutouts to bit-arts and kaneel and anyone else I forgot :D :D

#6 vV

vV

    God's or Borg's Chief and Ruler of All Species

  • Moderator
  • PipPipPipPipPipPipPipPipPipPipPipPipPipPipPipPip
  • 16855 posts
  • Gender:Male
  • Location:Netherlands

Posted 23 July 2010 - 14:18

-- Hooks for keyboard input (like when you're in a text field and press "up" or "down", allow scripts to catch that and act on it)

This already exists:Try the key_handler hook in the dialog creation mode...
app():show_custom_dialog(title, content_view, key_handler_func)

function key_handler_func(dialog, key)
key read... do stuff
end
Vv....


cpu Intel Core i7-4820K @3.70GHz
chipset Intel X79 chipset
mem 32 Gb 2400Mhz
os Win 7 64-bit SP1, DirectX 11
audio ESI ESP1010e - > Driver rev:2.0.6.0
video nVidia Geforce GTX780 - > Driver rev:335.23


Renoise Official Manual

#7 Johann

Johann

    Guruh Motha Fakka is Levitating and Knows Everything About Renoise Member

  • Normal Members
  • PipPipPipPipPipPipPipPipPipPipPipPipPip
  • 2774 posts
  • Gender:Not Telling

Posted 23 July 2010 - 14:26

This already exists:Try the key_handler hook in the dialog creation mode...
app():show_custom_dialog(title, content_view, key_handler_func)

function key_handler_func(dialog, key)
key read... do stuff
end

yay!!

okay, make that "me actually knowing about what the API can do" :D

Maybe the code that marks up {lua} forum tags could be used to make the documention a bit nicer? I'm not saying it's the fault of the docs that I haven't read them, but it would reeeeally help.

One thing that does kinda get me is the order though:

description description description description description description
the thing being described

Is there a reason for this? the other way around would be much more logical for me, easier to scan etc.

Edited by Johann, 23 July 2010 - 14:27.

music / photos / renoise scripts


hay guises! action/reaction. I'm not into leaving or avoiding places, I ban 'em by making sure I get banned.. loadsa noise, little signal.. basically anything else makes more sense to spend energy on. thanks for the app, but from here on out we simply don't have any use for each other period. oh, and of course big shoutouts to bit-arts and kaneel and anyone else I forgot :D :D

#8 noisebeuter

noisebeuter

    Member

  • Normal Members
  • PipPip
  • 48 posts
  • Gender:Male
  • Location:Berlin

Posted 23 July 2010 - 14:26

-- OpenGL [...]

I don't think that this would make drawing from a script faster. The bottleneck is not the Renoise software rendering engine, but Lua. C++ is orders of magnitude faster than Lua, and calling all those OpenGL functions directly from Lua would require a LOT of conversion from Lua types to C++ types (which is slooooow).

-- Envelopes as a standardized GUI element.

+1 to that!

Edited by noisebeuter, 23 July 2010 - 14:33.


#9 It-Alien

It-Alien

    Probably More God or Borg Than Human Member

  • Moderator
  • PipPipPipPipPipPipPipPipPipPipPipPipPipPipPip
  • 9593 posts
  • Gender:Male
  • Location:Avellino, Italy
  • Interests:trackers, basketball, chess, tabletennis, programming, writing, drumming, burping

Posted 23 July 2010 - 14:28

ability to access the automation curve context menu
my specs:
cpu:Intel Core2 Quad Q9550 (4x2.83Ghz, FSB 1333Mhz)
os:Win7 Home Premium 64bit - OSX 10.9.1 64bit
audio: M-Audio Audiophile 24/96 PCI


Unschemed, hypertechnical tracked music. Sounding different since 1993.

my latest song: Lavender Town Syndrome (11'33", Psychedelic Beast)


where to find more music by me: soundcloud , jamendo , last.fm , napodano.com , facebook

RTFM.gif

("Lavender Town Syndrome, 11'33" Psychedelic Beast)

#10 Johann

Johann

    Guruh Motha Fakka is Levitating and Knows Everything About Renoise Member

  • Normal Members
  • PipPipPipPipPipPipPipPipPipPipPipPipPip
  • 2774 posts
  • Gender:Not Telling

Posted 23 July 2010 - 14:34

This already exists:Try the key_handler hook in the dialog creation mode...
app():show_custom_dialog(title, content_view, key_handler_func)

no wait, that applies to the whole dialog.. how would the dialog know I'm in textfield X when pressing cursor up/down?

so an optional key handler for all input fields would still be nice :)

music / photos / renoise scripts


hay guises! action/reaction. I'm not into leaving or avoiding places, I ban 'em by making sure I get banned.. loadsa noise, little signal.. basically anything else makes more sense to spend energy on. thanks for the app, but from here on out we simply don't have any use for each other period. oh, and of course big shoutouts to bit-arts and kaneel and anyone else I forgot :D :D

#11 Johann

Johann

    Guruh Motha Fakka is Levitating and Knows Everything About Renoise Member

  • Normal Members
  • PipPipPipPipPipPipPipPipPipPipPipPipPip
  • 2774 posts
  • Gender:Not Telling

Posted 23 July 2010 - 15:07

I don't think that this would make drawing from a script faster. The bottleneck is not the Renoise software rendering engine, but Lua. C++ is orders of magnitude faster than Lua, and calling all those OpenGL functions directly from Lua would require a LOT of conversion from Lua types to C++ types (which is slooooow).


yeah okay you have a point there.. how does LÖVE do it? I guess they have they provide high level functions written not in LUA, but accessible to LUA..

would it be feasible to just, uhm, stick LÖVE into Renoise haha?

music / photos / renoise scripts


hay guises! action/reaction. I'm not into leaving or avoiding places, I ban 'em by making sure I get banned.. loadsa noise, little signal.. basically anything else makes more sense to spend energy on. thanks for the app, but from here on out we simply don't have any use for each other period. oh, and of course big shoutouts to bit-arts and kaneel and anyone else I forgot :D :D

#12 Beatslaughter

Beatslaughter

    Guruh Motha Fakka is Levitating and Knows Everything About Renoise Member

  • Normal Members
  • PipPipPipPipPipPipPipPipPipPipPipPipPip
  • 2283 posts
  • Gender:Male
  • Location:Berlin, Germany
  • Interests:Music, Blu-ray, PC Games

Posted 23 July 2010 - 15:12

so an optional key handler for all input fields would still be nice :)



Could be solved by supplying additionally the originating control id to the keyhandler function maybe.

#13 Johann

Johann

    Guruh Motha Fakka is Levitating and Knows Everything About Renoise Member

  • Normal Members
  • PipPipPipPipPipPipPipPipPipPipPipPipPip
  • 2774 posts
  • Gender:Not Telling

Posted 23 July 2010 - 15:20

It turns out text input fields actually bypass the key handler completely. In a way this makes sense to not "bother" the dialog with it, but I still think it's needed.. and I'd also like the ability to register a keyboard handler for individual inputs without having to write a big function which handles them all.. basically, everything that can have focus should have its own optional keyboard handler.

music / photos / renoise scripts


hay guises! action/reaction. I'm not into leaving or avoiding places, I ban 'em by making sure I get banned.. loadsa noise, little signal.. basically anything else makes more sense to spend energy on. thanks for the app, but from here on out we simply don't have any use for each other period. oh, and of course big shoutouts to bit-arts and kaneel and anyone else I forgot :D :D

#14 engine

engine

    Guruh Member

  • Normal Members
  • PipPipPipPipPipPipPipPipPipPipPipPip
  • 904 posts
  • Gender:Male
  • Interests:killing threads.

Posted 23 July 2010 - 15:37

i guess im right when i say that the api (or even the way renoise handles plugins [and their GUIs])
isnt able to get the last touched slider in a plugin gui.

its only possible to write automation to already declared (automated) parameters, right?

would like to make a autolink -script. i think its tedious to grab that automation device and search the parameters everytime you want to automate a single knob/slider.



#15 vV

vV

    God's or Borg's Chief and Ruler of All Species

  • Moderator
  • PipPipPipPipPipPipPipPipPipPipPipPipPipPipPipPip
  • 16855 posts
  • Gender:Male
  • Location:Netherlands

Posted 23 July 2010 - 17:09

It turns out text input fields actually bypass the key handler completely. In a way this makes sense to not "bother" the dialog with it, but I still think it's needed.. and I'd also like the ability to register a keyboard handler for individual inputs without having to write a big function which handles them all.. basically, everything that can have focus should have its own optional keyboard handler.


Well, as far as the discussion goes about input fields, there might be coming at least a trick to force focus on specific fields.
Based upon my nagging for having consequent input focus on the text-field in the chat script. (You can still type if the field has no focus and it ends up there, but try to make capitals or punctual signs that require a shift-key combo etc.)
No doubt it should probably come with a tab / shift-tab to browse through these controls.
Vv....


cpu Intel Core i7-4820K @3.70GHz
chipset Intel X79 chipset
mem 32 Gb 2400Mhz
os Win 7 64-bit SP1, DirectX 11
audio ESI ESP1010e - > Driver rev:2.0.6.0
video nVidia Geforce GTX780 - > Driver rev:335.23


Renoise Official Manual

#16 Guest_crytek_*

Guest_crytek_*
  • Guests

Posted 23 July 2010 - 17:26

The ablity to use objects like scopes or the spectrum analyzer our scripts as well.

#17 Johann

Johann

    Guruh Motha Fakka is Levitating and Knows Everything About Renoise Member

  • Normal Members
  • PipPipPipPipPipPipPipPipPipPipPipPipPip
  • 2774 posts
  • Gender:Not Telling

Posted 23 July 2010 - 21:00

reading and setting the current position/zoom in the sample editor.

Edited by Johann, 23 July 2010 - 21:00.

music / photos / renoise scripts


hay guises! action/reaction. I'm not into leaving or avoiding places, I ban 'em by making sure I get banned.. loadsa noise, little signal.. basically anything else makes more sense to spend energy on. thanks for the app, but from here on out we simply don't have any use for each other period. oh, and of course big shoutouts to bit-arts and kaneel and anyone else I forgot :D :D

#18 Johann

Johann

    Guruh Motha Fakka is Levitating and Knows Everything About Renoise Member

  • Normal Members
  • PipPipPipPipPipPipPipPipPipPipPipPipPip
  • 2774 posts
  • Gender:Not Telling

Posted 23 July 2010 - 23:08

It would be cool if the selection in the sample editor could be observable.

music / photos / renoise scripts


hay guises! action/reaction. I'm not into leaving or avoiding places, I ban 'em by making sure I get banned.. loadsa noise, little signal.. basically anything else makes more sense to spend energy on. thanks for the app, but from here on out we simply don't have any use for each other period. oh, and of course big shoutouts to bit-arts and kaneel and anyone else I forgot :D :D

#19 Johann

Johann

    Guruh Motha Fakka is Levitating and Knows Everything About Renoise Member

  • Normal Members
  • PipPipPipPipPipPipPipPipPipPipPipPipPip
  • 2774 posts
  • Gender:Not Telling

Posted 24 July 2010 - 03:57

Reading and writing text files!

(Rubberband has a --timemap feature which expects a text file with two frame numbers on each line to create a timestretch that varies over time... it sounds amazing haha.. but it's not possible to create such a file with a script :( )


Functions to copy parts of one samplebuffer to another.

Edited by Johann, 24 July 2010 - 04:06.

music / photos / renoise scripts


hay guises! action/reaction. I'm not into leaving or avoiding places, I ban 'em by making sure I get banned.. loadsa noise, little signal.. basically anything else makes more sense to spend energy on. thanks for the app, but from here on out we simply don't have any use for each other period. oh, and of course big shoutouts to bit-arts and kaneel and anyone else I forgot :D :D

#20 Guest_Bantai_*

Guest_Bantai_*
  • Guests

Posted 24 July 2010 - 08:34

Reading and writing text files!


http://lua-users.org...LibraryTutorial

#21 Johann

Johann

    Guruh Motha Fakka is Levitating and Knows Everything About Renoise Member

  • Normal Members
  • PipPipPipPipPipPipPipPipPipPipPipPipPip
  • 2774 posts
  • Gender:Not Telling

Posted 25 July 2010 - 18:24

http://lua-users.org/wiki/IoLibraryTutorial

yay! for some reason I thought we weren't allowed that, because of the whole document/preferences comfort. rubberband, here I come! :D



- file dialog GUI element: a line with the file/foldername, and the common [...] button next to it, in one package. with a bunch of options to only show/allow selection of folders or files with certain extensions.
[lua]renoise.app():prompt_for_filename_to_read({file_extensions}, dialog_title)
renoise.app():prompt_for_multiple_filenames_to_read({file_extensions}, dialog_title)
[/lua]

- allow png for bitmaps (!)

- permanent plugin data folders (that get deleted at uninstall) this is tricky though. I'm was thinking that it's silly to have to download 6mb of rubberband every time 20k of script get updated, and if there is a clean way to avoid that we should find it.... but then there would have to "full install" and "upgrade" versions of plugins so to speak. so yeah, it's tricky and might be more complicated than useful, just wanted to throw it out there.

- about the previously suggested functions that copy parts of one sample buffer to another: sample_buffer:copy_buffer(target_buffer, source_start, target_start, frames_to_copy(, source_channel, target_channel)) (ie. it would be nice to not have to think about mono vs. stereo samples and have it just work, as long as both sample buffers have the same number of channels and same bit depth (sample rate shouldn't matter with this, strictly speaking) - but to also have the possibility to be more specific)

- functions to replace on sample buffer with another (changing the length, sample rate, channels and bit depth, adjusting loop points so they're in range, but keeping all other data including the name intact)

Edited by Johann, 27 July 2010 - 03:23.

music / photos / renoise scripts


hay guises! action/reaction. I'm not into leaving or avoiding places, I ban 'em by making sure I get banned.. loadsa noise, little signal.. basically anything else makes more sense to spend energy on. thanks for the app, but from here on out we simply don't have any use for each other period. oh, and of course big shoutouts to bit-arts and kaneel and anyone else I forgot :D :D

#22 esaruoho

esaruoho

    Guruh Motha Fakka is Levitating and Knows Everything About Renoise Member

  • Normal Members
  • PipPipPipPipPipPipPipPipPipPipPipPipPip
  • 2521 posts
  • Gender:Male
  • Location:Kontula, Helsinki, Finland
  • Interests:// Free Energy // Cymatics // Sound visualization // Sustainable energy production // Apple devices // Tesla Motors //

Posted 25 July 2010 - 23:17

- script to bind midi-controller-data to keybindings, i.e., for instance, cc#XX to "Pattern Editor->Play->Play current Line".
- scripts allowed to set cursorFocus on, f.ex. "Generate" (away from the script-window itself)
- script as mapper for LFO device(s) to Sample loop start & sample loop end amount(s))

| lackluster Website | lackluster on bandcamp | lackluster on facebooklackluster on soundcloud | esaruoho on twitter |

esaruoho@gmail.comesaruoho on reddit | esaruoho on ello | 

| OS X 10.11 El Capitan | Mac Book Pro 2.66 GHz Intel Core 2 Duo / 8GB 1067 MHz DDR3 |

| Latent Impulse Tracker/Scream Tracker 3/Schism Tracker <-> Renoise fanatic |

More API functions, please! ;)

#23 vV

vV

    God's or Borg's Chief and Ruler of All Species

  • Moderator
  • PipPipPipPipPipPipPipPipPipPipPipPipPipPipPipPip
  • 16855 posts
  • Gender:Male
  • Location:Netherlands

Posted 26 July 2010 - 06:11

- script to bind midi-controller-data to keybindings, i.e., for instance, cc#XX to "Pattern Editor->Play->Play current Line".

I thought one may accomplish these kind of things by addressing the renoise.song().transport.sequence.playback_pos.line:

local p_pos = renoise.song().transport.sequence.playback_pos
p_pos.line = 9
renoise.song().transport.sequence.playback_pos = p_pos

Then initiate a start and follow it directly by a stop.

Am currently not @ home to test this.

besides, i'm not a favor of allowing scripts to initiate "short-cut" functions that don't have an API equivalent, i rather have a direct API command that simply performs this.
Vv....


cpu Intel Core i7-4820K @3.70GHz
chipset Intel X79 chipset
mem 32 Gb 2400Mhz
os Win 7 64-bit SP1, DirectX 11
audio ESI ESP1010e - > Driver rev:2.0.6.0
video nVidia Geforce GTX780 - > Driver rev:335.23


Renoise Official Manual

#24 esaruoho

esaruoho

    Guruh Motha Fakka is Levitating and Knows Everything About Renoise Member

  • Normal Members
  • PipPipPipPipPipPipPipPipPipPipPipPipPip
  • 2521 posts
  • Gender:Male
  • Location:Kontula, Helsinki, Finland
  • Interests:// Free Energy // Cymatics // Sound visualization // Sustainable energy production // Apple devices // Tesla Motors //

Posted 26 July 2010 - 09:17

i'm not in favor of allowing scripts to initiate "short-cut" functions that don't have an API equivalent, i rather have a direct API command that simply performs this.


yes.. well, what are the chances that the API would eventually have a direct command for "Play current Line" ? :)

| lackluster Website | lackluster on bandcamp | lackluster on facebooklackluster on soundcloud | esaruoho on twitter |

esaruoho@gmail.comesaruoho on reddit | esaruoho on ello | 

| OS X 10.11 El Capitan | Mac Book Pro 2.66 GHz Intel Core 2 Duo / 8GB 1067 MHz DDR3 |

| Latent Impulse Tracker/Scream Tracker 3/Schism Tracker <-> Renoise fanatic |

More API functions, please! ;)

#25 Beatslaughter

Beatslaughter

    Guruh Motha Fakka is Levitating and Knows Everything About Renoise Member

  • Normal Members
  • PipPipPipPipPipPipPipPipPipPipPipPipPip
  • 2283 posts
  • Gender:Male
  • Location:Berlin, Germany
  • Interests:Music, Blu-ray, PC Games

Posted 26 July 2010 - 13:52

Additionally to:

renoise.tool().app_new_document_observable

i would find it very useful to have a:

renoise.tool().app_save_document_observable

... too, so that i can store any script settings in the same go.