3 Quick Questions about Expansions!
-
@iamlamprey Have you checked the box to link expansions to your project? Have you set expansion type to encrypted? Have you set an encryption key?
-
@d-healey Yes yes and yes. But I just realized I lost part of my script when HISE crashed, the allowedExpansionTypes section. Recompiling now to see if that was causing it.
-
Nope, still not loading properly.
I've noticed the compiled plugin also keeps asking me to locate samples folder every 3 seconds, so I think I'll turn those flags back on.
-
Okay so I just noticed that it's set to Encryption, but it's making a .hxi file as the metadata. Shouldn't that be a .hxp?
If i set the preferences back to Files Only I can't encode anything. How do I do the whole "intermediate" encode? Or is that what's already happening?
Edit: Okay so Encrypted mode in the settings = Intermediate encoding, and Encrypted .hxp stuff is done in the compiled plugin, so neither of these things involve my issue I think.
Is it possible that there's some sort of Windows restriction preventing me from extracting the .hxi to the appdata folder?
-
@d-healey I tried replacing my button function with yours from that thread:
reg hr; FileSystem.browse("", false, "", function(result) { hr = result; FileSystem.browseForDirectory("", function(dir) { expHandler.installExpansionFromPackage(hr, dir); }); });
The compiled plugin now crashes Ableton
-
There shouldn't be any issues specific to Windows, as far as I'm aware the process works on all 3 OS.
-
@Christoph-Hart Any idea on this one?
Inside HISE, expansions work flawlessly. But in compiled plugin, it seems like it's not extracting/installing them properly using:
expHandler.installExpansionFromPackage(hr,FileSystem.Samples);
I exported/encoded the monoliths properly (I think), embedded the .hxi file. And it extracts the samplemap.ch1 AND the info.hxi to the designated Samples folder. It also doesn't copy any files, or make any directories, in the appdata folder on Windows.
My brain hurts, been at this for hours now.
I can send the entire project if that helps, I apologize in advance for the horrible coding standards.
OK MORE PROGRESS:
If I manually copy the info.hxi over to the root folder of the instrument in appdata, Bloom appears in the dropdown list, but there's still no images or samples being loaded.
In fact manually copying the .hxi to the appdata folder rebuilds the entire expansion folder structure inside the Samples folder (but the images folder is empty).
-
I don't have time to debug this at the moment. Have you tried running it in Visual Studio's debugger to see if it reveals anything?
-
@d-healey No problem :) no i haven't yet, I suppose that's tomorrows job since it's 6am now
-
Can someone please let me know what exactly happens when using installExpansionsFromPackage? Does it rebuild the entire folder structure of the expansion in appdata? Does it rebuild it in the Samples/Expansions folder? Does it just provide the .ch1 and .hxi files?
Since mine isn't working, I'm not sure what it's even supposed to be doing to debug.
Edit: Okay it's supposed to recreate the entire folder structure in APPDATA, and the samplemaps are located in wherever the base samples folder is.
I've got it working now for FilesOnly (after manually dragging stuff around), still no idea why the encrypted one isn't rebuilding it properly.
-
@Christoph-Hart Could you pretty please take a look at this when you get the chance?
If I call expHandler.installExpansionFromPackage(exp location, samples folder), it extracts the entire .hr1 to the samples folder including the .hxi, and doesn't recreate the expansions folder structure anywhere in APPDATA.
As far as I know I did every step right, and FilesOnly expansions work properly if I manually copy them to the right locations. Just seems to affect the intermediate ones
-
@iamlamprey said in 3 Quick Questions about Expansions!:
doesn't recreate the expansions folder structure anywhere in APPDATA
That's correct. It won't recreate the folder structure because most of the data can be read from the hxi. I think it only extracts the User Presets folder.
it extracts the entire .hr1 to the samples folder
Do you mean it extracts the ch files from the hr1?
-
@d-healey said in 3 Quick Questions about Expansions!:
That's correct. It won't recreate the folder structure because most of the data can be read from the hxi. I think it only extracts the User Presets folder.
So the images etc are all stored in the hxi? Why would it extract both to the same folder?
The only way I can get the expansion even showing up in the plugin is to manually move the .hxi to the APPDATA folder. (Samples/images etc still don't load).
Do you mean it extracts the ch files from the hr1?
Yep. At this point I'm contemplating just making the expansions FilesOnly and using innosetup or something to set the folder structure up.
This same issue occured in the hise-tutorial project once I added my code.
-
@iamlamprey said in 3 Quick Questions about Expansions!:
Why would it extract both to the same folder?
Both what?
@iamlamprey said in 3 Quick Questions about Expansions!:
The only way I can get the expansion even showing up in the plugin is to manually move the .hxi to the APPDATA folder.
This should happen automatically when you install the expansion. Post the code you're using to install the expansion.
Yep.
Then it's working as expected, it should extract the ch files from the hr archive.
-
@d-healey said in 3 Quick Questions about Expansions!:
Both what?
The samples as a .ch1, and the info.hxi file both get extracted to the Samples folder (set using the FloatingTile).
This should happen automatically when you install the expansion. Post the code you're using to install the expansion.
const var expHandler = Engine.createExpansionHandler(); var expansionDirectory = FileSystem.getFolder(FileSystem.Samples); expHandler.setAllowedExpansionTypes([expHandler.FileBased, expHandler.Intermediate, expHandler.Encrypted]); reg hr; /*There's also the GUI elements: 1. A FloatingTile set to CustomSettings to change the designated Samples folder. 2. A button to locate and install the .hr1. 3. A button to set active expansions (one for each expansion). 4. A debugging ComboBox that lists all the installed expansions - this ONLY shows the expansions when I move the info.hxi file from the Samples folder to my APPDATA folder on Windows. The samples and images still don't load. */ //Button to install user-selected expansion: inline function onButton2Control(component, value) { FileSystem.browse(expansionDirectory, false, "", function(result) { hr = result; expHandler.installExpansionFromPackage(hr,test); expHandler.refreshExpansions(); }); }; //Button to set active expansion and load sample map: inline function onExpansions_ButtonBloomControl(component, value) { Engine.setCurrentExpansion("Bloom"); currentExpansion = "Bloom"; //Put Stuff Under This backgroundImage = ("{EXP::Bloom}bg_bloom.png"); Image_BG.setAlpha(1); Image_BG.set("fileName", backgroundImage); ComboBox_Atlas.set("visible", 0); SamplerRR.setAttribute(12, 0); Sampler_NoRR.setAttribute(12, 1); SamplerRR.setBypassed(1-value); Sampler_NoRR.setBypassed(value); SamplerRR.asSampler().loadSampleMap("{EXP::Bloom}Bloom_SampleMap"); };
Is it not loading the samples because of the {EXP::} stuff?
-
expHandler.installExpansionFromPackage(hr,test);
Where does
test
magically appear from? -
@d-healey Sorry that's just a random thing while I was testing. It's:
const var test = FileSystem.getFolder(FileSystem.AppData);
But it's just made a folder on my desktop instead. Either way I had tried expansionDirectory as well as the constants like FileSystem.Samples to no avail.
-
Here's a working example. I've already exported the .hr1 file and it contains the info.hxi. It was a bit finicky on my system but that could be because I'm on GNU/Linux. If I tried to run the installer from within the HISE project it didn't work properly, however once I exported to a standalone app (will work with plugin also) the installer worked as it should.
-
@d-healey Thanks for taking the time to make that, unfortunately it crashes Ableton and the standalone exe doesn't open (eats up 11% CPU). It only works when I comment out
inline function onbtnInstallControl(component, value) { if (value) { FileSystem.browse("", false, "", function(result) { hr = result; /* FileSystem.browseForDirectory("", function(dir) { expHandler.installExpansionFromPackage(hr, dir); }); */ }); } };
I'm guessing Windows doesn't like nested file browser functions?
-
I've been using this code on Windows in another project. Run a debug in Visual Studio and see what's causing the crash.