Expansion Tutorial
-
OK a quick set of questions - that I cant seem to work out from the tutorial...
I have a 4-layer (4 samplers) engine - I want to ship a bunch of samples and sample maps with the product - then I want to be able to add expansions.
I dont use the standard preset browser - instead I use my own - but they get saved as "normal" presets - I just keep some meta data about them - I keep metadata about the sample maps too...more on that in a minute.
So lets say a user installs the product - with its 4 "voices" and 100+ sample maps - they can load any sample map into any "voice" -nothing unusual here so far...
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. Im well aware I will have to build the installe rfor all this.
Can the user now mix and match sample maps from the original product and from any of the installed expansions - to get whole new unique sounds? say
Voice 1 - an original shipped sample map
Voice 2 - an original shipped sample map
Voice 3 - a sample map from the expansion "Basses"
Voice 3 - a sample map from the expansion "Retro"OK metadata - I keep metadata about sample maps in .js format (its just an array of strings in JSON format)- its a set of filterable attributes, I also keep another .js file with filterable attributes for presets
The original product keeps these files in the user presets folder - can I keep/put this data for each expansion in the expansions_info.xml file?
-
@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.
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.
-
@Christoph-Hart maybe you tried encrypt expansion?
-
@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!!!