MAC preset and locations changes NIGHTMARE!
-
so...i had been using a scriptnode version from about 9 months ago or before and everything worked great. over the last 3 years i had made probably 700 presets for a product im working on...no less than 5000 hours put in total
so i update to a recent hise develop build as suggested by everyone to mac things compatible with new mac stuff
i get that completely working and compiling great. so i compile with my presets baked in assume everything will go smooth...nope
there are multiple levels to why the changes made to HISE user preset system is a MAJOR problem
first off....as hise saves file paths for user presets made within hise with a {PROJECT_FOLDER} wildcard for file loaction...nope that doesnt actually work in compiled VST or AU plugins. it does not load anything with that.
so i do further testing and assume its the old replace {PROJECT_FOLDER} with {AUDIO_FILES} which is the only way Windows presets work for whatever reason...in my head im thinking why isnt hise saving the paths so they will actually recall properly? anyways i digress
so i do batch replace on the nearly 1000 presets ive made all pointing to the AudioFiles folder within hise as im using loop players. that doesnt work either...
so i make a test patch in hise on the MAC and it creates a preset and i examine it compared to what has worked for years...
first off hise has changed fileName=" to data=" thats cool no biggie i batch replace that...nope doesnt work
ok so i now created a user preset within my plugin and viola...i find that it is now using static directories...meaning the actual file path..no wildcard...in fact wildcards for loading audio files DOES NOT WORK AT ALL ON MAC. no {PROJECT_FOLDER} not {AUDIO_FILES} nothing it does not actually work in compiled plugins only in hise itself. well that sucks...but there is more
compiled VST/AU plugins made with hise basically expand the user presets within your hise project upon first launch. this is a cool thing. it has always went to Library/Application Support/Your Company/Your Product etc this has always been the root Library folder directly from the Macintosh HD/Library but heres the terrible part...all of those things...i finally figured out a loose solution...batch replace with static locations replace fileName with data etc. they load finally yayyyy..not so fast my friend
compiled hise plugins for whatever reason...just to make my life helll. are now expanding all the baked in files to Username/Library/Application Support/ etc not the root library...the variable user directory...why was this changed? also why is hise placing plugins in the user library plugins folders and not the main root ones like every other plugin ive ever seen?
it has taken me a long time to get to this point...why were all of these changes made to MAC? on PC the preset structure, the file paths are all the same. Plain and simple i dont even know how to install to a variable username library smh. thats among my many reasons for being frustrated, but i just wish i didnt have to spend the last 20 hours troubleshooting something that was changed, but wasnt broken in any way. almost just making changes to make things difficult.
i would appreciate if you could make a hise commit that properly reads legacy user presets properly, and most of all expands compiled plugins to the root library and not the user one like it did before. if there is a solution for all of this let me know because im at my wits end and have been very close to just burning my rig lol
-
first off....as hise saves file paths for user presets made within hise with a {PROJECT_FOLDER} wildcard for file loaction...nope that doesnt actually work in compiled VST or AU plugins. it does not load anything with that.
Did you build my test project?
Most of the problems you're describing seem to be unique to you and your project. I haven't experienced these issues and no-one else is reporting them. You need to provide individual minimal test projects of these problems so that we can verify they exist and then find solutions for them.
-
@mwplugs I can confirm : No problem here with presets/audio files loading either. I'm on Catalina with one of the latest commit.
-
@mwplugs actually Apple is the one that changed where plugins go because it now reads them from Users/Your Name/Library instead of Users/Library which seems like a global change. only my UAD plugins are still installed to Users/Library. i think this was changed for catalina or another version close to it. maybe high sierra
however i too face the same issue loading audio files because i cannot figure out a wildcard to use for the directory. no two people have the same Users/Your Name names. @d-healey @Matt_SF Is there a wildcard you use for this? If so, would you mind sharing?
-
@Adam_G There is an engine function that gives system info including the user name. I can't remember the name of the function thou
-
@d-healey ahh knew it had to be user error on my part. ill look around more, thanks
-
@Adam_G the ~/ path points to the current user
-
@mwplugs -- not really sure what all your problems are but it seems partly that you'd like a consistent place to put your wav files for use in your loop players and {AUDIO FILES} isnt getting it done for you.
Here's what we did....
We decide to use our custom installer to put the wav files (as many as we wanted) in the same (user selected) folder as the samples(ch1 files).
Okay so how do you load these (and how do presets load these)?
First we have a text label above each loop player showing the name (without the path and without the .wav extension) - this label is saved in the preset....
On init the plugin gets the contents of linkWindows(or LinkOSX) - so it knows the folder/directory to use...we store this in a var called linkFilePointer
Theres a callback on the loopnames widgets that takes the text value and appends it to this path and uses this to load the wav file so:
inline function onLoopFileName1Control(component, value) { theLoopPlayers[0].setFile(linkFilePointer + "\\"+ component.get("text") + ".wav"); }
presets call this, and in normal usage you let the user select the wav file they want and you set the text of the label and call changed on the label...
Seems to work OK so far...
-
@Lindon there‘s also a new wildcard {SAMPLE_FOLDER} that allows you to access the sample folder inside audio file slots.
-
@Christoph-Hart thank you, I have this in the preset file -
<Control type="ScriptAudioWaveform" id="ScriptAudioWaveform1" value="0.0"
data="~/Library/Application Support/My Company/MyPlugin/AudioFiles/Instruments/instrument (number).wav"but it doesn't work. it does work, however, with the full directory. isnt this where I should be putting ~/Library?
@Lindon that's genius, but it sounds awfully complicated when there is a simple line of text the preset files should be calling. Ive done it in other things I've developed before but can't recall what the line of text was.
-
@Christoph-Hart said in MAC preset and locations changes NIGHTMARE!:
@Lindon there‘s also a new wildcard {SAMPLE_FOLDER} that allows you to access the sample folder inside audio file slots.
what! all that effort gone to waste, and now I can just use:
theLoopPlayers[0].setFile({SAMPLE_FOLDER} + component.get("text") + ".wav");
?? !!
Great thanks.
I was thinking it might be useful to have a wild-card the we can programatically set
i.e. Engine.setLocalFolder("some file path here...");
and then use it like this:
theLoopPlayers[0].setFile({LOCAL_FOLDER} + component.get("text") + ".wav");
.. tho it is just syntactical sugar round the process I outline above.
-
i notice the user audio module opens the correct folder when you right click on it. whats the line of code that tells it what directory to open for that specific module? it might hold the key to my original question
edit: on Windows {AUDIO_FILES} works just fine. so i guess a better question is why it no work for mac? lol
another edit: well holy cheeseballs. im an idiot. problem solved. i was using the string that was generated by saving the preset in the compiled plugin manually and it contained the line data="filename". changing that to fileName="{AUDIO_FILES}didthetrick.wav"/> . thanks for the help @Christoph-Hart @d-healey @Lindon