Jump to content


Photo

The Api Wishlist Thread


  • Please log in to reply
242 replies to this topic

#226 Trackerman

Trackerman

    Composes without Wires burns Directly from Brain to DVD that is already in Store Member

  • Normal Members
  • PipPipPipPipPipPipPipPipPipPipPipPipPipPip
  • 3218 posts
  • Gender:Not Telling

Posted 29 January 2018 - 14:47

What would that thing be, anyway? 

 

The small "tree" in the left side of the envelope editor panel, listing parameters ... or something else?

 

 

Yes exactly that, so the parameters are visible then



#227 Trackerman

Trackerman

    Composes without Wires burns Directly from Brain to DVD that is already in Store Member

  • Normal Members
  • PipPipPipPipPipPipPipPipPipPipPipPipPipPip
  • 3218 posts
  • Gender:Not Telling

Posted 29 January 2018 - 20:47

Please add:   (to switch that song mode using lua)

renoise.song().transport.automation_following
-> [boolean]

Please change:

renoise.song().instruments[].plugin_properties.plugin_device.external_editor_visible

to:   (to capture closing-gui-clicks)

renoise.song().instruments[].plugin_properties.plugin_device.external_editor_visible, _observable
-> [boolean]

Please add:  (to make a track dsp device's parameter list expanded)

renoise.song().tracks[].devices[].is_expanded
-> [boolean]

Please add:  (To temporarily disable automation reading for a specific vst parameter a.k.a. bouncing automation value to vst, e.g. while writing automation to a vst parameter of a effect, so you could somehow get a delta between the vst value and the audio device.slider value, to detect manual movements of a gui control)

renoise.song().tracks[].devices[].parameters[].reading_automation, _observable
-> [boolean]

Please add:  (_saving instead _save,  to trigger just before song will be transformed into xml and saved to disk, the right moment to place custom data to the song, currently song comment only. Currently the trigger only seems to be available AFTER the song was saved AFAIK)

renoise.tool().app_saving_document_observable
-> [renoise.Document.Observable object]

Optimization of active_preset_data

 

Also the performance of writing active_preset_data is pretty low. If you do that multiple times a second, it will cause heavy slowdowns, or even freezes. For instance, if the new parameter position matches the old parameter position, there is no need to resend that parameter to the vst. Maybe it could be optimized on other places, too...?

 

Also it would be super helpful, if the active_preset_data would contain the LinkedInstrument-value. Currently that is only available if you copy the settings of the device, but not from LUA. 

 

 

To discuss:

 

Maybe add:   (To allow to add custom data. Just like comments, only that this field is visible only in developer mode)

renoise.song().custom_data[], _observable
-> [array of strings]

Maybe add:  (So the next/current undo step will be joined with the last step)

renoise.song():join_undo()

Edited by ffx, 03 February 2018 - 14:02.


#228 Circe

Circe

    Advanced Member

  • Normal Members
  • PipPipPip
  • 76 posts
  • Gender:Male
  • Location:Spain
  • Interests:Visual Basic 6.0 Music Programing
    Piano Chords

Posted 06 February 2018 - 15:59

Multitimbrical phrases !!!

Not only one instrument per phrase.

I want to trigger more than one instrument in the same phrase pattern

Edited by Circe, 06 February 2018 - 16:01.


#229 joule

joule

    Guruh Motha Fakka is Levitating and Knows Everything About Renoise Member

  • Normal Members
  • PipPipPipPipPipPipPipPipPipPipPipPipPip
  • 1637 posts
  • Gender:Not Telling
  • Location:Sweden
  • Interests:music, philosophy, engineering

Posted 06 February 2018 - 17:03

To discuss:
 
Maybe add:   (To allow to add custom data. Just like comments, only that this field is visible only in developer mode)

renoise.song().custom_data[], _observable
-> [array of strings]


This (or similar) is a feature that has been mentioned a couple of times. Also by Danoise, so I guess he already has an idea on how it could be implemented.

Otherwise, I imagine the following:

1) Any Renoise object should be able to store additional user data as ObjectType.user_data (table, or rather "DocumentList").

2) example of how to add new data: PatternLine:attach_data(key, Document). Keys can either be indexed or not. Potentially, it's probably even a good idea to store the data as ObjectType.user_data[tool_name][key]. This is to restrict write-access per each specific tool. Of course, any tool can read any tools data however, as full read access to the user_data table is always available.

3) By using the Document classes, I imagine that it's relatively "easy" for the devs to implement serialization/deserialization to/from the song data.

4) Limit the number of keys in any DocumentList to, say.. 256. Avoiding the risk of accidentally spamming user_data and saving a big ass song.

5) Something to consider.. Would it be easy to even get observables going 100% in this structure? Otherwise it wouldn't feel 100% consistent.

Yup.. I think I pretty much explained how to implement it properly here ;)

#230 Trackerman

Trackerman

    Composes without Wires burns Directly from Brain to DVD that is already in Store Member

  • Normal Members
  • PipPipPipPipPipPipPipPipPipPipPipPipPipPip
  • 3218 posts
  • Gender:Not Telling

Posted 07 February 2018 - 10:26

I generally agree here, but

 

1. it should be a simple LUA table. XML manipulation is annoying in Renoise LUA API. DocumentNode etc, cmon that's way too old school anal. The table could be also recursive, with unlimited depth. Btw. there also is json. 

 

2. accessible simply thru something like Renoise.song.user_data[]

 

2a. I know the above will never come, that's why I requested it in the song comments way, which is pretty lame to handle (need of create a buffered comment-sum all the time). So the devs simply can "duplicate"/double-use that code.

 

3. Serialization should be done by Renoise, and provide the data in tables within tables

 

4. No need to limit!  You already can slowdown or hang Renoise with any tool or add a gigabyte of data to the song comment. Of course you should use it carefully. Also this is not old school assembler where we need to match integer 0xFF or something.

 

5. If it is a table, you could add your own observers? 

 

6. Taktik should convert the table then to a string, then zlib compress, and base64 it and then out it into the song xml as cdata. So it cannot break anything.

 

No, thats no the way you should do it what you wrote above. It is unnecessarily complicated and limited.


Edited by ffx, 07 February 2018 - 10:28.


#231 joule

joule

    Guruh Motha Fakka is Levitating and Knows Everything About Renoise Member

  • Normal Members
  • PipPipPipPipPipPipPipPipPipPipPipPipPip
  • 1637 posts
  • Gender:Not Telling
  • Location:Sweden
  • Interests:music, philosophy, engineering

Posted 07 February 2018 - 10:33

Nah.. you better trust me on this. I've got a pretty good feel for what is consistent with both LUA and the specific Renoise API in terms of syntax and structure.

 

Documents are the way to go. The devs made them for a reason and it makes no sense to not use/inherit those classes. Otherwise they'd start to make ad-hoc structures that aren't internally consistent with what is already there. The whole API is document based - and quite possibly the .xrns file might actually already be a one-shot Document serialization of the renoise.song() object. Ok, maybe not quite..

 

But, there's no need to argue really.. It's highly unlikely that you'll see the devs divert from the Document structure, unless they plan a complete API overhaul breaking every tool released :P

 

The only thing I'm concerned about is if user Document objects inside renoise.song can somehow be broken by abusing inheritance or other syntaxes. My idea might be oversimplified in the sense that current renoise classes rely heavily on a very restricted use.


Edited by joule, 07 February 2018 - 10:38.


#232 Trackerman

Trackerman

    Composes without Wires burns Directly from Brain to DVD that is already in Store Member

  • Normal Members
  • PipPipPipPipPipPipPipPipPipPipPipPipPipPip
  • 3218 posts
  • Gender:Not Telling

Posted 07 February 2018 - 10:38

As I said there is no need to directly manipulate the song xml which btw. is only created at save on not residing in the memory all the time!    Renoise should provide a recursive table and convert it automatically on save. It is very easy to realize.    If I would trust you here, we would get a super annoying way to store custom data, even more annoying than in comments.

 

Using XML for this is utter nonsense, makes it complicated for both sides!

 

End of discussion.


Edited by ffx, 07 February 2018 - 10:40.


#233 joule

joule

    Guruh Motha Fakka is Levitating and Knows Everything About Renoise Member

  • Normal Members
  • PipPipPipPipPipPipPipPipPipPipPipPipPip
  • 1637 posts
  • Gender:Not Telling
  • Location:Sweden
  • Interests:music, philosophy, engineering

Posted 07 February 2018 - 10:41

DocumentList is basically = 1) table, 2) observable, 3) serialization/deserialization. So there you go.



#234 Trackerman

Trackerman

    Composes without Wires burns Directly from Brain to DVD that is already in Store Member

  • Normal Members
  • PipPipPipPipPipPipPipPipPipPipPipPipPipPip
  • 3218 posts
  • Gender:Not Telling

Posted 07 February 2018 - 10:43

Writing data is to a table way more easy man!   You don't even need to prepare anything then!

 

Super complicated your idea.


Edited by ffx, 07 February 2018 - 10:43.


#235 joule

joule

    Guruh Motha Fakka is Levitating and Knows Everything About Renoise Member

  • Normal Members
  • PipPipPipPipPipPipPipPipPipPipPipPipPip
  • 1637 posts
  • Gender:Not Telling
  • Location:Sweden
  • Interests:music, philosophy, engineering

Posted 07 February 2018 - 10:58

It's not my idea, really. It's already dictated by renoise.Document API and renoise.Song API. Of course you can always propose some ad-hoc solution for this specific chunk of data, but that's just ugly. In that case, they might as well start to "simplify" other things here and there - and break the elegance and consistency of the API completely. That would be highly unwanted.

 

Just imagining the designing of a special case "table" observable makes me sad. They already "invented" all of this in the Document API. But I understand that I can't convince you due to the "scare factor" of not knowing renoise.Document API.

 

For an API, consistency is a lot more important than case-by-case "simplicity".



#236 Trackerman

Trackerman

    Composes without Wires burns Directly from Brain to DVD that is already in Store Member

  • Normal Members
  • PipPipPipPipPipPipPipPipPipPipPipPipPipPip
  • 3218 posts
  • Gender:Not Telling

Posted 07 February 2018 - 13:55

Whatever way it would be, it would be helpful to prevent to use song comments, since song comments original purpose was for song comments.



#237 Trackerman

Trackerman

    Composes without Wires burns Directly from Brain to DVD that is already in Store Member

  • Normal Members
  • PipPipPipPipPipPipPipPipPipPipPipPipPipPip
  • 3218 posts
  • Gender:Not Telling

Posted 07 February 2018 - 23:46

To make a preset manager in lua possible, please add:

-- Renoise will auto-add the file ending dependent on device type (internal/vst/au)
renoise.song().tracks[].devices[]:export_preset(preset_path)
renoise.song().tracks[].devices[]:import_preset(preset_path)
-- Insert a new device by preset at the given position. "preset_path" must be contain a valid file path the the loadable .fxp or .rdxp
renoise.song().tracks[]:insert_device_by_preset_at(preset_path, device_index)
  -> [newly created renoise.AudioDevice object]


#238 danoise

danoise

    Probably More God or Borg Than Human Member

  • Renoise Team
  • PipPipPipPipPipPipPipPipPipPipPipPipPipPipPip
  • 6651 posts
  • Gender:Male
  • Location:Berlin
  • Interests:wildlife + urban trekking

Posted 08 February 2018 - 13:23

 

To make a preset manager in lua possible, please add:

 

 

A lot of this is possible. It's located in the Application API, not the Song API:

https://github.com/r...ication.API.lua

 

For some reason, the ability to save track device presets is missing. Not sure why, but the rest is covered


Tracking with Stuff. API wishlist | Soundcloud


#239 Trackerman

Trackerman

    Composes without Wires burns Directly from Brain to DVD that is already in Store Member

  • Normal Members
  • PipPipPipPipPipPipPipPipPipPipPipPipPipPip
  • 3218 posts
  • Gender:Not Telling

Posted 08 February 2018 - 13:50

Ok that's nice. But see, I would like to do a fxp-preset and plugin manager. Since my above suggestions are not available, my plan is not realizable currently. If you would add those already existing functionality to the API, it would highly improve the possibilities. Would be also nice to know if you already planned to improve the vst browser, so my work would be obsolete :). I doubt that, because I bet you focus on other spots. 


Edited by ffx, 08 February 2018 - 13:53.


#240 joule

joule

    Guruh Motha Fakka is Levitating and Knows Everything About Renoise Member

  • Normal Members
  • PipPipPipPipPipPipPipPipPipPipPipPipPip
  • 1637 posts
  • Gender:Not Telling
  • Location:Sweden
  • Interests:music, philosophy, engineering

Posted 08 February 2018 - 15:22

Make renoise.Sample.sample_buffer_observable (or some new observable) react to any changes to the sample data.

 

There doesn't seem to be any way to monitor changes to sample data at the moment.



#241 Trackerman

Trackerman

    Composes without Wires burns Directly from Brain to DVD that is already in Store Member

  • Normal Members
  • PipPipPipPipPipPipPipPipPipPipPipPipPipPip
  • 3218 posts
  • Gender:Not Telling

Posted 08 February 2018 - 15:25

A lot of this is possible. It's located in the Application API, not the Song API:

https://github.com/r...ication.API.lua

 

For some reason, the ability to save track device presets is missing. Not sure why, but the rest is covered

 

 

danoise, so do you mean that "renoise.app():load_track_device_preset(filename)" will load a fxp, too? 



#242 danoise

danoise

    Probably More God or Borg Than Human Member

  • Renoise Team
  • PipPipPipPipPipPipPipPipPipPipPipPipPipPipPip
  • 6651 posts
  • Gender:Male
  • Location:Berlin
  • Interests:wildlife + urban trekking

Posted 08 February 2018 - 16:24

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


Tracking with Stuff. API wishlist | Soundcloud


#243 Trackerman

Trackerman

    Composes without Wires burns Directly from Brain to DVD that is already in Store Member

  • Normal Members
  • PipPipPipPipPipPipPipPipPipPipPipPipPipPip
  • 3218 posts
  • Gender:Not Telling

Posted 08 February 2018 - 18:11

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

 

 

Ok then AFAIS, only renoise.app():save_track_device_preset(filename) 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.


Edited by ffx, 08 February 2018 - 18:14.