esaruoho / org.lackluster.Paketti.xrnx

Quality-of-Life (QoL) Workflow suite of tools for Renoise written with LUA - Continually ingesting and porting features from other tracker software (Impulse Tracker, Scream Tracker, ModPlugTracker, PlayerPro etc)
Other
16 stars 0 forks source link

Task: Create Preferences.xml within Paketti, for storing preferences (such as Native Device KeyBindings) in #24

Closed esaruoho closed 5 months ago

esaruoho commented 5 months ago

i need a way to store the Native Device KeyBindings so that they are automatically created whenever Renoise is started, so that the KeyBindings are not lost.

There are also other things.

esaruoho commented 5 months ago

0G01 Loader preferences have been added. Next step is RandomBPM preferences, i.e., if you run RandomBPM, does it 1) write to the pattern the LPB + BPM or 2) does it just change BPM + LPB.

@tkna91 any thoughts on this?

tkna91 commented 5 months ago

Sorry, I am not clear on the situation.

0G01 Loader preferences have been added.

  • What is 0G01 Loader preferences?

Next step is RandomBPM preferences, i.e., if you run RandomBPM, does it 1) write to the pattern the LPB + BPM or 2) does it just change BPM + LPB.

esaruoho commented 5 months ago

Next step is RandomBPM preferences, i.e., if you run RandomBPM, does it 1) write to the pattern the LPB + BPM or 2) does it just change BPM + LPB.

  • I do not understand what this is about. What does it mean? Do you mean keybind the ability to set a random BPM?

I have for 14 years had a shortcut that sets a random BPM between 60bpm and 180bpm. i also have a shortcut for writing the current BPM + LPB to the-pattern-you-are-in's Master Track Effect Column.

I thought I'd experiment with Preferences in this way: if this:

Screenshot 2024-04-14 at 22 56 58

is set to ON, then when you run the "random bpm" shortcut or menu entry, it automatically writes it to the pattern. if it's OFF, then it won't write it to the pattern, but will change the tempo.

esaruoho commented 5 months ago

0G01 Loader preferences have been added.

  • What is 0G01 Loader preferences?

0G01 looks like this https://www.loom.com/share/343091b88de942ba8f2f012869bf7587?sid=0bdd033a-2bff-4547-b4cc-bcafa8ed9dbb

it basically, when enabled, makes it so that if you load a sample into an empty instrument box slot, a new track is created and the sample starts playing from row 01. with 0G01 which means if you have a 8 row pattern and the sample is 30 minutes of length, the whole 30 minutes will play, until the sample finishes, and then it is replayed again. meaning you can have really long parts playing in addition to a short pattern. great for ambiences or long recordings of playing, etc. otherwise you'd need to have multiple patterns that in total play for 30 minutes, until you then have the first pattern re-play the sample again. does that help explain it?

esaruoho commented 5 months ago
  • What do you mean by native device?

Renoise Devices. These below are native devices.

Screenshot 2024-04-14 at 23 00 14
esaruoho commented 5 months ago
  • Key bindings for external plugins are generally stored in the standard Preferences.xml, right?
  • What is the benefit of storing those key bindings in their own configuration file?

no they are not they are saved in KeyBindings.xml and if you misplace said file, you have to bind them again. most people don't know what to do with Renoise + Paketti because the hundreds of shortcuts are not automatically provided as a KeyBindings.xml - leaving them to bind them themselves.

I'm looking at an idea to provide a pre-configured, for macOS (and later, Windows) KeyBindings which can overwrite the default Renoise one, making Paketti "straight to use" instead of "configure for an hour then maybe use"

tkna91 commented 5 months ago

Yes, I understand most of it. It would certainly be convenient to have a default key binding configuration file, so that I could manually merge the definitions from the XML. I assume it would be fine as long as we don't overwrite user definitions, etc., but how would we distribute and apply them?

I feel like 0G01 could do the same thing with 0G00, but what do you think?

Screencast with audio:

https://github.com/esaruoho/org.lackluster.Paketti.xrnx/assets/102382754/8babffe0-f823-4575-a953-904a7b0fc3ff

esaruoho commented 5 months ago

i could probably offer a way of adding only paketti keybindings, but what i do myself is i overwrite a bunch of renoise default settings, and introduce stuff like cmd-n for normalize in sample editor, cmd-r for reverse in sample editor, cmd-t for retain-selection-cut-everything-else in sample editor, then if you cmd-L to select content in pattern editor, pressing cmd-R will render it to a wavefile. this type of stuff.

so the "how to make Paketti as good as possible, while protecting the precious shortcuts of the user" is an issue that needs to be solved in some way but it might get quite complex. that's why i'm first looking for "retain my settings" - i.e. if i install Paketti on a new computer, i want to press one button and it overwrites the current KeyBindings and replaces them with what i specifically want - and then work on a Windows version of the said shortcuts since windows doesn't offer the Command key.

esaruoho commented 5 months ago

Yes, I understand most of it. It would certainly be convenient to have a default key binding configuration file, so that I could manually merge the definitions from the XML. I assume it would be fine as long as we don't overwrite user definitions, etc.,

what do you specifically mean by "manually merge"? you still want to do the very same thing with the Renoise Keybindings - manually search and then replace current-no-shortcut-feature with a shortcut?

but how would we distribute and apply them?

can you tell me more about what your thinking is with this question. do you mean file distribution, or ..?

tkna91 commented 5 months ago

I was thinking of distributing a Preferences.xml with example key bindings describing only the parts relevant to Paketti, and then the user could copy parts of it with a text editor, etc. and edit the Preferences.xml manually.

There may be some thinking that user settings can be backed up and then overwritten, etc., but I personally feel that it is better not to get involved with existing user settings. Sorry to be so vague, but I have a feeling that the situation will become more complicated and the responsibility and pressure to manage the user settings will fall on you, making development more cumbersome.

Of course, it's your project, so it's your call. I was just a little concerned.

esaruoho commented 5 months ago

i've been making some progress with Paketti Preferences - some of these features are already in the newest build but I'm holding off until I get some additional features in, and then updating GitHub with a new build.

Screenshot 2024-04-25 at 21 21 45

Basically I still need to set it up so that there's a On/Off checkbox for BeatSyncLines writing, and then continue onwards to being able to save User-set Shortcuts for loading Renoise Native Devices. If I can get that working, then I gotta modify the Native Device GUI so that it can also handle VST, VST3, AU effects. Then differentiate them and write them in.

And then have some way of getting rid of Shortcuts from Preferences.xml - i.e. "these are what you have, here's how to untick them / remove them".

It's a longform project to get this working and I've got so many things I want to get working.

btw @tkna91 do you have any additional features you're looking for - I'm not really finding it easy to do the "map virtual keyboard pitchbend to pitch" - due to API limitations (it seems), but I am slowly carving around in the macro mapping space..

tkna91 commented 5 months ago

Changing the default settings related to that Beat Sync is a feature I wanted too. I would be happy to see it happen. I will write again if I come up with other requests. Thanks kindly.

esaruoho commented 5 months ago

Changing the default settings related to that Beat Sync is a feature I wanted too. I would be happy to see it happen. I will write again if I come up with other requests. Thanks kindly.

hi @tkna91 , please tell me more about the specifics of "changing the default settings related to the beatsync" - like, if you can provide some details re: what you're specifically after. - especially the Beat Sync Lines.

like, do you need some sort of math to be added, or..? if you could show me your usecase with some videos, and explanations, it would really really help me. this is new territory for me, but i know i'm getting there somehow. i just need more details and more information.

as you can see from the screenshot, the Preference settings for Loop, BeatSync Mode, One-Shot, AutoSeek, MuteGroup are already there, and they are put for each of the slice in the loop. but the BeatSync Lines is the vague part for me. (omitted is the automatic "Autofade, Oversampling=On and Interpolation: Sinc (best)" - but if those are required for slicings, please let me know and i'll add them).by required i mean "user wants to set it themselves, instead of them being done automatically with no user control)

Of course if there are other things you want related to beatsyncmode or other things, please let me know. I have not really touched the beatsyncmode / lines that much so i need advice and suggestions.

tkna91 commented 5 months ago

Excuse me, I don't speak English and sometimes I can't express the nuances of the language well, probably because I use a translation service for my conversations. What I wanted to say is this.

tkna91 commented 5 months ago

What does “Enable Global Beat Sync” in Paketti Preferences mean? I thought it was an option that is activated at the same time when Beatsync is turned on, but it does not seem to be the case.

https://github.com/esaruoho/org.lackluster.Paketti.xrnx/assets/102382754/f0339195-afea-4dca-97ff-978ae4b635f7

esaruoho commented 5 months ago

@tkna91 for now it is not in effect properly. which is one reason why i haven't properly made a release. the gui is buggy and the details / changes to the wipe&slices code is not implemented. i was working on it but got sidetracked with bugs. so instead focused on the pitchbend. for now, please ignore the "Enable Global Beat Sync", it is unfinished

esaruoho commented 5 months ago

but if you're interested in the details of it - it will have something to do with the slices themselves having a beatsyncline number that makes the playback of said slices, with percussion stretching, make sense. i.e. that you can play the full loop, but also slices of the drumloop, at the same pitch, so they sound good. but i'm still working on it. i barely understood what was being explained to me originally so it's very much unfinished, maybe next week or something.

please for now, focus on the pitchbend. @tkna91

esaruoho commented 5 months ago

since some of this is implemented, and i've broken the rest, more complex ideas and features into separate tickets (#41 & #42 ) - i'm closing this ticket.