AudioLoopPlayer load
-
Change those
vars
in toreg
.>I change WAS in vars reg?????
Engine.loadAudioFilesIntoPool()
returns an array that contains the names of all of your audio files.A little bit more info Dave - you know I'm not on your level :-)
-
@MikeB said in AudioLoopPlayer load:
Change those
vars
in toreg
.>I change WAS in vars reg?????
Engine.loadAudioFilesIntoPool()
returns an array that contains the names of all of your audio files.A little bit more info Dave - you know I'm not on your level :-)
Do a little exploration work:
var myList = Engine.loadAudioFilesIntoPool(); Console.print(trace(myList));
-
@Lindon You're just pranking me now with that
var
. :pNever use
var
unless you absolutely have to - paint routines, mouse callbacks, etc. Everywhere else either use const or reg, and if you're in an inline function or callback use local.var
should always be your last choice. -
@d-healey said in AudioLoopPlayer load:
@Lindon You're just pranking me now with that
var
. :pNever use
var
unless you absolutely have to - paint routines, mouse callbacks, etc. Everywhere else either use const or reg, and if you're in an inline function or callback use local.var
should always be your last choice.--sorry it was just too easy
var AnnoyingDave = true;
Actually tho there is a limit to the number of reg variables you can use I think...
-
@Lindon The limit is per namespace. So it's unlikely you'll hit that limit is most instances, if you do, then use
var
. In our current situation - loadAudioFilesIntoPool - it would make most sense to use a const. -
Ok you two Jedi Knights :-)
So now I have an array with 500 files.As you can see there are folders - different folders Kick, Snare, etc.
In each folder there are samples with different long names (not like here in the excerpt).
I would like to select the folder (InstrumentID) via one knob and a sample (VariantionID) from this folder via another knob."{PROJECT_FOLDER}Kick/sample1.wav", "{PROJECT_FOLDER}Kick/sample10.wav", "{PROJECT_FOLDER}Kick/sample11.wav", "{PROJECT_FOLDER}Kick/sample12.wav", "{PROJECT_FOLDER}Kick/sample13.wav", "{PROJECT_FOLDER}Kick/sample14.wav", "{PROJECT_FOLDER}Kick/sample15.wav", "{PROJECT_FOLDER}Kick/sample16.wav", "{PROJECT_FOLDER}Kick/sample17.wav", "{PROJECT_FOLDER}Kick/sample18.wav", "{PROJECT_FOLDER}Kick/sample19.wav",
-
@MikeB Everything you need is here - https://docs.hise.audio/scripting/scripting-api/string/index.html :) time to have a problem.
-
@d-healey Unfortunately this is of no use to me David - but thanks for your support.
-
-
@d-healey
As I said - this is my starting point
I have two knobs - one calls up the folder (InstrumentID).
the other calls the sample (VariationID)So at the moment it's like this via the knobs:
a. The folder is selected for example "Kickb. the sample is selected "sample3.wav".
and this is then loaded into the LoopPlayer.
reg myList = Engine.loadAudioFilesIntoPool(); Console.print(trace(myList)); var InstrumentID_S1; var VariationID_S1; const var Instrument_S1 = ["Bass", "Kick", "Snare", "HiHat", "Tom", "Cymbal", "Crash", "Perc", "Electro", "FX" ]; const var Sample_S1 = ["sample1.wav","sample2.wav","sample3.wav","sample4.wav","sample5.wav","sample6.wav","sample7.wav"]; //Start Knob-KitSelector---------------------------------------------------------------------------------------------------------------------- inline function onKitSelector_Knob_S1Control(component, value){ InstrumentID_S1 = parseInt(value); Synth.getAudioSampleProcessor("Audio Loop Player_S1").setFile("{PROJECT_FOLDER}"+Instrument_S1[InstrumentID_S1]+"/"+Sample_S1[VariationID_S1]); }; Content.getComponent("KitSelector_Knob_S1").setControlCallback(onKitSelector_Knob_S1Control); //End -------------------------------------------------------------------------------------------------------------------------------------- //Start Knob-SampleSelector---------------------------------------------------------------------------------------------------------------------- inline function onSampleSelector_Knob_S1Control(component, value){ VariationID_S1 = parseInt(value-1); Synth.getAudioSampleProcessor("Audio Loop Player_S1").setFile("{PROJECT_FOLDER}"+Instrument_S1[InstrumentID_S1]+"/"+Sample_S1[VariationID_S1]); }; Content.getComponent("SampleSelector_Knob_S1").setControlCallback(onSampleSelector_Knob_S1Control); //End --------------------------------------------------------------------------------------------------------------------------------------
-
Get the list of audio files with Engine.loadAudioFilesIntoPool. Then you can use a loop and the string functions to automatically split that list into two arrays, one for the folders and one for the samples.
-
@d-healey Thanks David - that's what I meant - if I could do that I wouldn't ask here.
-
@MikeB Which part are you stuck at?
-
@d-healey Folders and samples have names of different lengths. How can I separate them with string?
Besides, the user should not get a hi-hat sound if he has selected kick.
But only the samples from the Kick folder. -
If you have a string like
const s = "{PROJECT_FOLDER}Kick/sample12.wav"
You can get the folder with
const ss = s.substring(s.indexOf("}") + 1, s.indexOf("/"));
Ready for an hour of trial and error ;)
-
@MikeB Are you going to Include The Audiofiles into Dll?
Or ship With Zip File? -
Beaware!
This, Engine.loadAudioFilesIntoPool();
And include Audio Files in resources Will Add Weight to Your Components, Dll, Vst3 Files.
And You easily Will get Out Of Heap error. -
@Natan I think you can ship the audio files as a separate data file.
-
@d-healey @Natan
I have asked several times in this forum whether the audio files for the AudioLoopPlayer can be installed separately and - more importantly - whether they are protected.Both were answered with no.
Above all, there is no protection such as Monolith for samples used in the AudioLoopPlayer. - Or?
-
@MikeB said in AudioLoopPlayer load:
there is no protection such as Monolith for samples
Monolith isn't "protection" it's compression. HISE is open source, it wouldn't take an experienced programmer very long to reverse the compression.
But yes it is possible to ship asset files as a separate data file
Export Pooled Files to Binary Resource Will collect all pooled Audio-, Image-, MIDI files and SampleMaps and save them as .dat files in a newly created PooledResources folder in your project.