surge-synthesizer / surge-rack

Take Surge and factor it into modules for VCV Rack
GNU General Public License v3.0
166 stars 12 forks source link

Is there a reason Surge XT puts it's pref etc. director in ~/Document instead of ~/Document/Rack2 user folder? #939

Closed fractalgee closed 8 months ago

fractalgee commented 8 months ago

I have a Surge XT directory in ~/Documents, all other Rack 2 user content is in ~/Document/Rack2. Why is that so? All other modules' prefs/etc folders are properly at the root of the ~/Documents/Rack2 folder as they should be. Liking things tidy this seems wrong to me. Can that please be moved to where it should be? I don't have SurgeXT VST installed so that cannot be what put it there, I only have the VCV Rack version (which I dearly love). I don't think there is any other way for that directory to be put there but the Sure XT for Rack modules... Also the Wavetable VCO looks for user wavetables there so that must be it.

baconpaul commented 8 months ago

The rack modules use the same startup path as the vst and in 2.1 that creates the directory. I have fixed it for 2.2

baconpaul commented 8 months ago

Actually I slipped thet into 2.1.8.0 also so should be there https://github.com/surge-synthesizer/surge-rack/commit/00082de93418b5f24aef6170bb56df9d930180b7

if course we won’t delete the directory but if you do and are running latest it shouldn’t appear

let me know if false

fractalgee commented 8 months ago

OK, for Rack that should be inside the Rack user dir, I guess you want to keep it as close to the VST as possible, but would be nice for the Rack version to use the Rack user dir instead of using the user Documents folder, which is one level up. I grabbed 2.2 nightly and it's still using the folder in ~/Documents ( as I have my wavetable directory sym-linked to that Surge XT folder and the Wavetable VCO still sees it there). I just like all Rack stuff in the Rack user dir for tidy backup reasons, so don't have to remember to also grab that folder one level up in case some real stuff ends up in there (prefs saved or such).

baconpaul commented 8 months ago

The rack version does use the rack dir unless the vst dir is present

fractalgee commented 8 months ago

so it would be fine to move it to the Rack dir?

baconpaul commented 8 months ago

I guess if yu don’t have the vst you can just delete it. Or am I missing the point? Is there something there which is being read?

fractalgee commented 8 months ago

the symlink to my wavetable dir is there, so it shows up in the right-click preferences menu of the wavetable VCO. If it can be moved to the Rack dir that would be fine, if not (and will break something) then fine, I can live with that, just nice to have available right there. without having to navigate there every time I want to load a wavetable of mine....

baconpaul commented 8 months ago

Oh I see what you mean

yeah there’s a directory in the rack dir which gets scanned and you can put the symlink there. I’m on phone but lemme look at code in a bit and will let you know and we can update the manual also

baconpaul commented 8 months ago

Right so the wavetable VCO scans the directory ~/Documents/Rack2/SurgeXTRack/SurgeXTRack_ExtraContent in addition to the VST directory if it exists and the built in ones. This directory will get created if you do the wavetable vco / download extra content gesture but also if you just make it you can put anything you want in there and it will get scanned into the wavetable VCO.

I think this is exactly what you want yes?

fractalgee commented 8 months ago

Is there a nightly with that fix or do I need to build my own? The one from Sep 20th (nightly dir you linked in your VCV Community announcement thread (https://community.vcvrack.com/t/surge-xt/18631) does create the SurgeXT dir inside of Rack dir after wavetable download, but does not in fact scan it. I symlinked my wavetable dir into ExtraContent dir. Renamed old Surge XT VST folder. Started Rack 2.4.1 again, added Wavetable VCO, told it to rescan, no dice with that one, as it just recreates the VST Dir every time it starts and scans only that but does see the extra wavetables. Symlink is there:

SurgeXTRack-DirectoryContent

In old library version I had it inside ~/Documents/Surge XT/Wavetables right next to Exported dir which 2.2 sep 2 still does scan, but does not see same symlink in the new Rack2 one...

If I do need to build my own, which branch did you put the fix in? Main was last updated Sep 20th.

baconpaul commented 8 months ago

Well that sounds like I screwed up the code then! I’ll look. Thanks!

baconpaul commented 8 months ago

OK I see what I did and why I was confused

The SurgeXTRack_ExtraContent directory is intended for "downloadable extra factory" and the scan ignores it for "user" content. The rescan option ignores the don't build a directory.

So you are completely correct that there's no way to have permanent user content posted in the rack directory.

This is an easy thing to fix - I can do it today I bet and if not this week - but you aren't crazy - there is no way to do what you want now. Sorry it took me so long to get to the point - LOL!

baconpaul commented 8 months ago

Oh ha even better,

       menu->addChild(rack::createMenuItem("Reveal User Wavetables Directory", "", [module]() {
            module->storage->createUserDirectory(); // fine if it exists
            rack::system::openDirectory((module->storage->userDataPath / "Wavetables").u8string());
        }));

that's creating the directory when you reveal.

But OK so I need to be a wee bit careful that I don't break people who do have the VST and want to share with the rack modules.

fractalgee commented 8 months ago

alright, we are on the right way here. Take your time, so as to not cause any other folks grief, I can wait until you are comfortable with the implementation. If I was a tad unclear I am sorry, hope I didn't cause any confusion, but glad things are now clear. Let me know when things are done and kosher for you and maybe shoot me a wee arm64 build to test 2.2 once done

baconpaul commented 8 months ago

have it together. just waiting for our surge-side CI check. will get it to you today

What I did in the end is

  1. Add an extra directory we scan for user data (SurgeXTRack/UserWavetables)
  2. Add an extra menu item to reveal that
  3. Don't show the reveal-vst-wavetables directory if that isn't on your system

and then it all works. If you have both you will get a union, but if you don't you can pick either or.

Should be in a nightly later today

baconpaul commented 8 months ago

Ok got this merged. Should be a new nightky within an hour or if you self build and pull including su modules you can get the feature

baconpaul commented 8 months ago

I’ll reopen this awaiting confirm - no rush!

fractalgee commented 8 months ago

will grab the nightly once up and let you know. Thanks a bunch!

fractalgee commented 8 months ago

Just grabbed the last nightly 2.2 and voila, once I symlink my wavetables into UserWavetables and delete the ~/Document/Surge XT dir, restart Rack2, the user wavetables now show up. And it no longer creates the Surge XT dir at the Doc root anymore if not there. So all works as I imagined it should now. Awesome stuff, thanks a whole lot Paul!!!!!!

baconpaul commented 8 months ago

Ha great! Sorry it took me a minute to figure out what you meant

we will do a 2.2 release before Christmas which will include this. You can also use the other new goodies (ring mods bonsai unison and auto connect) with the nightky you have!

fractalgee commented 8 months ago

awesome, will play with that, so far rock-solid