AudioLoopPlayer load
-
@MikeB Change those
vars
in toreg
.Engine.loadAudioFilesIntoPool()
returns an array that contains the names of all of your audio files. -
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?