Expansion Tutorial
-
@d-healey said in Expansion Tutorial:
@Lindon said in Expansion Tutorial:
Now a user installs an expansion (with an additional 150 sample maps) - it will put the samples in the same folder as those for the original product - or so Im hoping.
There is no expansion installer that comes with HISE, so it's up to you to provide the installation side of things. I think the easiest way is to use in the server and file APIs and directly download the expansions, I haven't tried it yet though but I believe this is what PercX does.
yes Im well aware that I will need to handle the installation of my samples, sample maps etc.
You might not even need expansions, you could just ship additional sample maps, samples and presets. Expansions (I think) are only really needed if the expansions work in a fundamentally different way to your base plugin.
Yes having spent all of 1/2 a day in the expansions system I'm beginning to think its not right for what I'm doing here...my "expansions" are in fact "just" sample maps (which could easily go in the product sample maps folder), samples (again in the products Samples folder), presets (again in the User presets folder), and some metadata about the "expansion"(its name basically) and metadata about the sample maps (a json file in the end) and metadata about each preset (again a json file)
Given I'm using a custom preset browser and a custom sample map browser I think it would all be transparent to the end user...come usage time.
-
@Lindon Where do the sample maps live after installing a plugin? You can find the .ch1 and preset files easily, but not the sample maps and I wondered if they were baked into the plugin instead....
-
@DanH Yes you're right, I was forgetting that they are part of the plugin, so Lindon would have to issue an update to his plugin that contains all the sample maps, but only the users who have the presets and the samples would be able to make use of them.
-
@d-healey Could using an expansion 'bake in' the new sample maps to an existing plugin?
-
@DanH No, only way to do that is to recompile the plugin.
-
@d-healey - yes - bummer - not what I want AT ALL. So any ideas how I can use the expansion system to get to offer expansions that work with the existing sample set?
-
@Lindon Expansions can contain their own JSON files in the additional source code directory, maybe that would be the way to go with your presests...
-
@d-healey - I'm not really worried about the presets its the sounds I'm concerned about - a picture may help: this is the "sound browser":
So you can see there are 4 voices:
- and a list of expansions (and the "Factory" - so sounds shipped with the base product)
I want to be able to select Voice 1, and then load the sample map called Bassica from the Factory sample maps, and it loads and stays there in voice 1.
Then select Voice 2 and choose to the Substrate expansion from the list on the left, then select a sample map called "BigBadBass" (which is shipped with the Substrate expansion only) and it loads into Voice 2 and stays there.
I now want to be able to play these sounds AT THE SAME TIME - voice 1 and voice 2
I can do all the displaying of names and sample maps no problem, but I'm not sure I can use sample maps from different expansions at the same time...
-
@Lindon I don't think that's possible. Switching expansions is like loading a different HISE plugin so you only get access to what's in that expansion. We'd need some kind of sub-expansion system for that.
-
@d-healey damn damn damn damn damn damn.....
~@Christoph-Hart !!!! Help!!!
-
It might be possible to hack it with the file system API. When the user switches expansion you get the name of the expasion they want, then they select the sounds, which will give you the name of the sounds, and then you load the sample map manually using the File System API. I have no idea if it will work but might be a route to investigate.
-
@d-healey - yeah I was sorta thinking along the same lines - can I not
Sampler1.asSampler.loadSampleMap(<some name>)
where <some name> might be:
Bassica -- which loads the sample map from the factory shipped set
{EXP::Substrate}BigBadBass -- which would load a sample map from the expansion...- I guess (before I go see if this is possible even) I wanted to check to see if anyone has done this and it works/doesnt work...
-
@Lindon I think you're in new territory, let us know if it works :)
-
@d-healey well currently I cant get any of the expansion commands to work at all:
from your video I have
HISE_ENABLE_EXPANSIONS=1
HI_ENABLE_EXPANSION_EDITING=1but in hi_core
there is no HISE_ENABLE_EXPANSIONS
so I cant set that, there is however:
HISE_USE_CUSTOM_EXPANSION_TYPE
-- worryingly for my project the tutorials from Christoph seem to work oK...
-
@Lindon Those flags are no longer required. Christoph added a new option in the project preferences that he forgot to tell anyone about until last month :p
Set it to
FilesOnly
- nobody knows what the other choices do.
-
@d-healey Ok cool thanks..
-
Success!!!
- Yep all you need do is refer to the sample map in the expansion and it will load - even if other samplers in your project are loaded with sample maps from somewhere else...
Cool.
Forwards!!!
-
Hello. So I just created 8 expansion which each has about 80 sample maps. I have been working on this project for over a year. so i have about 700 hr1 sample. when switching to the extension, I had to modify the preset files manually (right click, notepad ....) so that each preset correspond to its successful sample map.mission. however I have a few small bugs sometimes. when i load a preset, it will release a sample map which has nothing to do with the preset. I just have to load 2 3 different presets and everything goes back to normal. do you think there may be conflicts somewhere? moreover, since the last scriptnode verison, the next / prev buttons of the presets cause hise to crash.
-
@Lindon said in Expansion Tutorial:
Success!!!
- Yep all you need do is refer to the sample map in the expansion and it will load - even if other samplers in your project are loaded with sample maps from somewhere else...
Cool.
Forwards!!!
I'm exploring this too. So when you say "refer to the sample map in the expansion", do you mean you use the file system API to get them?
I have a similar use case to the one you explained above. I just need to provide new samples/samplemaps/presets and use them at the same time as the factory ones. -
It's just a different "wildcard" in the reference. So for factory content you use
{PROJECT_FOLDER}MySampleMap
, and for a sample map in the expansion you just load{EXP::MyExpansion}MySampleMap
and the system will detect magically that this is a samplemap from the expansionMyExpansion
and search its content for the samplemap. You can load multiple assets from different expansions at the same time as well as mix it with factory content.What might be a little bit confusing is that there is an additional concept of an "active" expansion. That means as soon as you load a user preset from an expansion (or call
ExpansionHandler.setCurrentExpansion()
manually), the expansion system will set this expansion to be "active" and there can only be one "active" expansion at the same time. This doesn't have any impact on the availability of the content of other expansions, it just gives you the option to do certain stuff like swapping the background image depending on the current expansion.