surge-synthesizer / surge

Synthesizer plug-in (previously released as Vember Audio Surge)
https://surge-synthesizer.github.io/
GNU General Public License v3.0
3.01k stars 385 forks source link

Linux gets windows portable mode #7607

Closed RustoMCSpit closed 2 months ago

RustoMCSpit commented 2 months ago

i dont store my plugin documents where surge defaults to and i need to relocate it, especially the patches. cant get around this any other way for my workflow and as the user folder already does it i imagine it'd be an easy fix

if i can download the factory folder on its own (not .deb cause that downloads everything for example), then move its contents to an ideal location, and set it in surge and have it carry over updates thatll fix it

baconpaul commented 2 months ago

If you imagine it to be easy why even open the issue?

anyway the code is all in surge storage and if you read that you can find be environment variable which will override the defaults, here: https://github.com/surge-synthesizer/surge/blob/314bf28b0a083e96c4fcb52d442a681515f6f763/src/common/SurgeStorage.cpp#L1504

RustoMCSpit commented 2 months ago

If you imagine it to be easy why even open the issue?

cause ive no idea how to code

RustoMCSpit commented 2 months ago

If you imagine it to be easy why even open the issue?

anyway the code is all in surge storage and if you read that you can find be environment variable which will override the defaults, here:

https://github.com/surge-synthesizer/surge/blob/314bf28b0a083e96c4fcb52d442a681515f6f763/src/common/SurgeStorage.cpp#L1504

that wont stay if i update surge right? also, is there anyway i can download the factory data on linux without using the deb download as i dont use debian

RustoMCSpit commented 2 months ago

if i can download the factory folder, then move its contents to an ideal location, and set it in surge and have it carry over updates thatll fix it

baconpaul commented 2 months ago

Just clone the git and the content is all in resources/data. Then move it wherever and set thst env var

baconpaul commented 2 months ago

If you imagine it to be easy why even open the issue?

cause ive no idea how to code

As a bit of advice, and I don’t know if you meant to be rude, telling volunteers in an open project that you think something is easy but you won’t do it can be read as impolite. If you imagine it’s easy then use your imagination to fix it! If you don’t know if it is easy the comment doesn’t add much but is a bit grating to people who do actually write the code!

no offense taken if none meant, but thought I’d share why I flagged your comment

baconpaul commented 2 months ago

if i can download the factory folder, then move its contents to an ideal location, and set it in surge and have it carry over updates thatll fix it

Yup. The folder is all in git. And then you just need to set the env var however you do for your runtime.

RustoMCSpit commented 2 months ago

Just clone the git and the content is all in resources/data. Then move it wherever and set thst env var

that doesnt fix it for everyone, just me. this should be a feature

RustoMCSpit commented 2 months ago

If you imagine it to be easy why even open the issue?

cause ive no idea how to code

As a bit of advice, and I don’t know if you meant to be rude, telling volunteers in an open project that you think something is easy but you won’t do it can be read as impolite. If you imagine it’s easy then use your imagination to fix it! If you don’t know if it is easy the comment doesn’t add much but is a bit grating to people who do actually write the code!

no offense taken if none meant, but thought I’d share why I flagged your comment

i wasnt trying to offend anyone

baconpaul commented 2 months ago

Just clone the git and the content is all in resources/data. Then move it wherever and set thst env var

that doesnt fix it for everyone, just me. this should be a feature

It is a feature! The factory path is resolved by the build environment following the Unix standards of your distro or of Ubuntu if you download the binary. If you don’t want that default in Linux you override with the env var.

The factory data is available in the deb and rpm and also via git all of which are unoackable on a Linux system

So on Linux The env var is the fix!

I’m not sure what you imagine changing

RustoMCSpit commented 2 months ago

Just clone the git and the content is all in resources/data. Then move it wherever and set thst env var

that doesnt fix it for everyone, just me. this should be a feature

It is a feature! The factory path is resolved by the build environment following the Unix standards of your distro or of Ubuntu if you download the binary. If you don’t want that default in Linux you override with the env var.

The factory data is available in the deb and rpm and also via git all of which are unoackable on a Linux system

So on Linux The env var is the fix!

I’m not sure what you imagine changing

can we then make it a feature to change it like how you change user data cause im not tech-y sorry! thats what im trying to say

baconpaul commented 2 months ago

Oh you mean you want a ui and a user pref?

Hmm well here’s the problem. Almost everyone who uses that will break their install. I really don’t like the idea. We use the os defaults and allow build time and run time overrides.

Curious why you can’t just use the default location anyway?

mkruselj commented 2 months ago

I also vote against adding this as a feature in the UI.

RustoMCSpit commented 2 months ago

Oh you mean you want a ui and a user pref?

Hmm well here’s the problem. Almost everyone who uses that will break their install. I really don’t like the idea. We use the os defaults and allow build time and run time overrides.

Curious why you can’t just use the default location anyway?

i save it all on a usb stick as i move from computers a lot, so i have to have it all on the usb

RustoMCSpit commented 2 months ago

can you show me with a photo what the file address is for the factory settings and what the folder's content look like, ive moved it and cant remember

baconpaul commented 2 months ago

https://github.com/surge-synthesizer/surge/tree/main/resources/data

That’s exactly the factory folder contents. Put that anywhere set the env var to point to it and start your system

sounds like what you really want is the windows portable install on Linux. (The windows portable install searches for the factory data next to the plugin basically and some windows users like it because they don’t beleive in their os defaults and stuff. ). That requires some code but might be feasible

RustoMCSpit commented 2 months ago

https://github.com/surge-synthesizer/surge/tree/main/resources/data

That’s exactly the factory folder contents. Put that anywhere set the env var to point to it and start your system

sounds like what you really want is the windows portable install on Linux. (The windows portable install searches for the factory data next to the plugin basically and some windows users like it because they don’t beleive in their os defaults and stuff. ). That requires some code but might be feasible

that sounds near-perfect, ideally id be able to set it anywhere i wanr but this is still very close

baconpaul commented 2 months ago

Ok lemme change the title of the issue and see if we can skip it into 1.3.2. I think almost all the code will apply on Linux like on windows

RustoMCSpit commented 2 months ago

YIPPEE!

baconpaul commented 2 months ago

The next nightly will bring windows portable mode to linux and will also include a portable content tar.gz with the distribution. So closing this issue as done.

RustoMCSpit commented 2 months ago

The next nightly will bring windows portable mode to linux and will also include a portable content tar.gz with the distribution. So closing this issue as done.

how do you use it

baconpaul commented 2 months ago

Exact same as windows portable mode https://surge-synthesizer.github.io/manual-xt/#windows-portable-mode And there’s a text file e planing it in the new content tar

baconpaul commented 2 months ago

https://github.com/surge-synthesizer/releases-xt/releases/tag/Nightly And there’s the nightly with the tar of the vontent

RustoMCSpit commented 2 months ago

i tried placing it in the same folder as my .clap and it didnt do anything?

RustoMCSpit commented 2 months ago

also the docs need to be changed to say linux has portable mode

baconpaul commented 2 months ago

“It”? Did you follow the folder directions in the readme in the far? What did you place where?

we update the manual when we make releases and use the git log to remember everything but thanks for the extra reminder!

RustoMCSpit commented 2 months ago

“It”? Did you follow the folder directions in the readme in the far? What did you place where?

i downloaded surge-xt-portable-content-NIGHTLY-2024-04-20-6a6f094.tar.gz and placed it beside my .clap of surge after extracting it

baconpaul commented 2 months ago

It contains a directory called "SurgeXTData" which must be somewhere in the parent path of your executable, vst3, etc... That is, if your vst3 is in /foo/baz/frank/Surge XT.vst3 then this durectory must be /SurgeXTData, /foo/SurgeXTData, /foo/baz/SurgeXTData /foo/baz/frank/SurgeXTData

You can also override the directory location on linux with the SURGE_DATA_HOME environment as you see fit.

baconpaul commented 2 months ago

That’s from the readme in the zip. My guess is you don’t have the SurgeXT data folder in the right spot.

RustoMCSpit commented 2 months ago

i do have it in the right spot, it still doesnt work

RustoMCSpit commented 2 months ago

do i need to toggle a "portable mode" in settings somewhere?

RustoMCSpit commented 2 months ago

oh this is embarrasing, i forgot to update. i assumed the portable mode folder itself only needed to be updated. works great!

baconpaul commented 2 months ago

running the software that has the feature is indeed one of the key ways to make the feature available :)

glad it works for you. will be in the 1.3.2 update sometime next few weeks.