Get Sample Filename from Sampler using custom Sample Maps.
-
-
@d-healey if I remember correctly this is not working for custom samplemaps. That's what my original post was all about. If it works by now that would be cool tho.
-
@d-healey If this is the correct way, what about my script is incorrect? I have also tried
SampleName1.setValue(s.get(Sampler1.Filename));
But neither snippet has worked. They have both compiled, but not changed the label.
@oskarsh This is what I was afraid of. How else could you view the name of the currently loaded sample if its a custom samplemap?
-
@trillbilly I don't see in your script where you are setting the text property of the label
-
@trillbilly said in Get Sample Filename from Sampler using custom Sample Maps.:
@d-healey If this is the correct way, what about my script is incorrect? I have also tried
SampleName1.setValue(s.get(Sampler1.Filename));
But neither snippet has worked. They have both compiled, but not changed the label.
@oskarsh This is what I was afraid of. How else could you view the name of the currently loaded sample if its a custom samplemap?
if:
SampleName1.setValue(s[value]);
is attempting to set the text of a label called SampleName1, then try:
SampleName1.set("text",s[value]);
-- but in your code thats gonna happen a lot of times - once for each sample name in selection
-
@d-healey I assume thats what something like this was doing:
const selection = Sampler1.createSelection(".*"); for (s in selection) { //Console.print(s.get(Sampler1.FileName)); s.set(Sampler1.Filename, s.get(Sampler1.Filename)); SampleName1.setValue(s.get(Sampler1.Filename));//label
Since this changes the label text from a combobox/viewport samplemap:
const var list = Sampler.getSampleMapList(); inline function onSampleViewer1Control(component, value)//viewport { Sampler1.loadSampleMap(list[value]); SampleName1.setValue(list[value]);//label };
-
@trillbilly said in Get Sample Filename from Sampler using custom Sample Maps.:
@d-healey I assume thats what something like this was doing:
const selection = Sampler1.createSelection(".*"); for (s in selection) { //Console.print(s.get(Sampler1.FileName)); s.set(Sampler1.Filename, s.get(Sampler1.Filename)); SampleName1.setValue(s.get(Sampler1.Filename));//label
Since this changes the label text from a combobox/viewport samplemap:
const var list = Sampler.getSampleMapList(); inline function onSampleViewer1Control(component, value)//viewport { Sampler1.loadSampleMap(list[value]); SampleName1.setValue(list[value]);//label };
look at those two pieces of code.... one is passing in something called value (the second piece of code) where as the first has no idea what "value" is....
-
@trillbilly said in Get Sample Filename from Sampler using custom Sample Maps.:
s.set(Sampler1.Filename, s.get(Sampler1.Filename));
What do you think this does?
@trillbilly said in Get Sample Filename from Sampler using custom Sample Maps.:
SampleName1.setValue(s.get(Sampler1.Filename));//label
Try changing the text instead of the value.
-
..also try this..
const selection = Sampler1.createSelection(".*"); Console.print(trace(selection));
-
@d-healey said in Get Sample Filename from Sampler using custom Sample Maps.:
s.set(Sampler1.Filename, s.get(Sampler1.Filename));
What do you think this does?
I thought it was setting
s
to be the filename of the loaded custom sample.@Lindon Ayaya (in my Mario voice). Call me Simpleton...
I have ran the trace and it comes back empty. I have also change the setValue to set the text as you suggested.
const selection = Sampler1.createSelection(".*"); for (s in selection) { //Console.print(s.get(Sampler1.FileName)); s.set(Sampler1.Filename, s.get(Sampler1.Filename)); SampleName1.set("text",s[value]); Console.print(trace(selection)); }
Again, it compiles but the label does not change when using a custom samplemap.
-
@trillbilly said in Get Sample Filename from Sampler using custom Sample Maps.:
I thought it was setting s to be the filename of the loaded custom sample.
Let's break it down.
s.get(Sampler1.Filename)
This will get the name of the sample
s
s.set(Sampler1.Filename,
This will set the name of sample
s
s.set(Sampler1.Filename, s.get(Sampler1.Filename));
So this will set the name of sample
s
to the name of samples
. In other words it doesn't do anything.@trillbilly said in Get Sample Filename from Sampler using custom Sample Maps.:
I have ran the trace and it comes back empty.
Are you running this code after you have loaded the sample map?
-
@d-healey In THIS post you referred me too, Christoph uses this case below:
sample.set(Sampler.RootKey, sample.get(Sampler.RootKey);
This is where I thought he was setting & getting
sample
to be the RootKey. I took this and thought it would sets
to be the Sampler1.FileName.And yes, it just comes back with a number of commas like console like below
Interface: [ , , , , , , ]
Also, if I put the entirety of the code into the SampleLoadSave.js, below where the sample is loaded, it gives this error in regards too
SampleName1.set("text",s[value]);
Uknown Function 'set'
-
@trillbilly said in Get Sample Filename from Sampler using custom Sample Maps.:
Christoph uses this case below:
So he does, I have no idea why, it makes no sense... but you don't need to change your sample's name so there is no reason to set it to anything.
@trillbilly said in Get Sample Filename from Sampler using custom Sample Maps.:
And yes, it just comes back with a number of commas like console like below
That means the array contains sample objects. Each one shows as a blank line. You can also open the script watch table to see what's going on in your variable.
@trillbilly said in Get Sample Filename from Sampler using custom Sample Maps.:
Uknown Function 'set'
Whenever you see unknown function it means the thing on the left side of the
.
doesn't have a function with the name of whatever is on the right side of the.
. This could be because the thing on the left side isn't available in the scope you are trying to use it. -
@d-healey Ok, thank you. Ive changed it to this and have now got it compiling within the SampleLoadSave.js after the sample load function.
const selection = Sampler1.createSelection(".*"); for (s in selection) { //Console.print(s.get(Sampler1.FileName)); SampleName1.set("text", s.get(Sampler1.Filename)); //Console.print(trace(selection)); }
It compiles, but again no change to the label.
-
@trillbilly You can only set the label to 1 sample name. So you don't need a loop. Just grab the first sample
[0]
from your selection and use that.const s = Sampler1.createSelection(".*")[0]; SampleName1.set("text", s.get(Sampler1.Filename));
-
@d-healey said in Get Sample Filename from Sampler using custom Sample Maps.:
const s = Sampler1.createSelection(".*")[0];
SampleName1.set("text", s.get(Sampler1.Filename));Thanks. This should replace my entire code, correct? I replaced and receive this error in the console.
API Call with undefined parameter 0
-
Show me your code
-
@d-healey if I put it within the loadSample callback in the SampleLoadSave.js, it compiles but still not change of the label.
At this moment I have it like this in order for it to compile (changed s to sn):
inline function loadSample(file) { local s = [Sampler1.parseSampleFile(file)]; s[0]['LoKey'] = 60; s[0]['HiKey'] = 60; s[0]['Root'] = 60; Sampler1.loadSampleMapFromJSON(s); const sn = Sampler1.createSelection(".*")[0]; SampleName1.set("text", sn.get(Sampler1.Filename)); }
-
@trillbilly You need to wait until the sample is loaded. Use the loading callback. https://docs.hise.audio/scripting/scripting-api/scriptpanel/index.html#setloadingcallback
-
@d-healey Holy Moly. Ok, am I even close with this?
samplepanel.setLoadingCallback(function(isPreloading) { if(isPreloading) { const sn = Sampler1.createSelection(".*")[0]; SampleName1.set("text", sn.get(Sampler1.Filename)); } });