Create script variable declaration for Sampler



  • After a long struggle I finally managed to make a script to load a sample map with a switch, the problem I had (as I found out afterwards) was that when I made the declaration for my Sampler using the right click on Sampler module, I got:
    const var freebass = Synth.getChildSynth("freebass");
    but, as I found out, it had to be:
    const var freebass = Synth.getSampler("freebass");

    is this considered as a bug?

    Cheers!



  • @ulrik There is a weird thing with HISE, for some operations on a sampler you have to have use getChildSynth and for others you need to use getSampler. As you found out to load a sample map you need to use getSampler but if you want to toggle the sampler's bypass button, for example, you need to use getChildSynth.



  • @d-healey Ok, I see. Is this about the Sampler only, or is it wide spread?


  • administrators

    The problem is that there is a misalignment between the C++ architecture and the relation between the script objects: in the C++ world, a Sampler is derived from a Synth, therefore you can call basic synth functions (set the volume, pan, etc) as well as specific sampler functions (load sample maps). However, the script representation doesn't have that relation, so you can't implicitly call the synth functions from a "Sampler-type" reference.

    It's unfortunately not so easy to solve, because there is also multiple inheritance (a Sampler is also a TableProcessor, so if you want to change the crossfade table, you need to get a reference using Synth.getTableProcessor("Sampler").

    Now for the special case of samplers, there is a handy helper function in the child synth modules called asSampler() which returns a sampler-type reference, so you can do stuff like this:

    var s = Synth.getChildSynth("Sampler");
    s2.asSampler().loadSampleMap("MySampleMap");
    


  • @christoph-hart Ok, I think I understand a little bit of what you're saying 🙂 (I'm not a coder but on my way...)
    Anyway, it's good to know these little special things for the future, thanks a lot!

    Btw, loading sample maps, I'm working on a accordion plug, and the left side, the Stradella system, is constructed of bass buttons and chord buttons, a normal accordion usually have 4 different chords.
    I have built the Stradella part of the accordion, using only 1 sampler with 4 sample maps, and calling each map for each kind of chord, however I would like to keep the loaded "bass notes" while switching maps, is that possible?
    If not, it's no big deal, I will split the Stradella in to 2 samplers.
    So the question is, is it possible to load a map, lets say the high registers, and keep the low registers of the without interrupting midi to the low registers?
    or loading only rr groups 3 & 4 while keeping 1 & 2?



  • I moved the "Stradella bass" part to a new sampler and set it up, however I have som problems with this project, and that is no big surprise if you look at the code 🙂
    The biggest problem is that if I load a sample map to sampler 1 while I'm playing on Sampler 2, the notes will be cut off, for instance it's common to have long bass notes and while holding them change chord type, as soon as I change chord type (loading a new sample map in another Sampler) the notes will be cut off, as if Sampler 2 receives note off messages or something, even though I don't load the maps with key switches yet, but I intend to make later.
    here you see how I load the maps for the moment.

    0_1526255478769_Screenshot 2018-05-14 kl. 01.40.07.png

    and here's the whole project:

    https://www.dropbox.com/s/4cmfbvzbsfhmcv0/Zero Sette B16.zip?dl=0

    cheers!



  • @christoph-hart that asSampler thing is good to know


  • administrators

    @ulrik said in Create script variable declaration for Sampler:

    So the question is, is it possible to load a map, lets say the high registers, and keep the low registers of the without interrupting midi to the low registers?
    or loading only rr groups 3 & 4 while keeping 1 & 2?

    Nope, one samplemap per sampler is the rule. In your case, just add more samplers...



  • @christoph-hart said in Create script variable declaration for Sampler:

    Nope, one samplemap per sampler is the rule. In your case, just add more samplers...

    Ok, thank you, I suspected that was the case 🙂

    Using 2 sampler give me a problem though, as I described above, when loading a sample map to Sampler 1 cuts the sound of Sampler 2, is it possible to avoid that?



  • @ulrik You shouldn't be loading samples during playback. You either need more samplers or multiple groups.



  • @d-healey Ok, I'll fix it with more samplers, thank you!



  • @ulrik said in Create script variable declaration for Sampler:

    @d-healey Ok, I'll fix it with more samplers, thank you!

    or even better, with split one incoming note and trigger 3 instead 🙂 the Synth.playNote() you tought me 🙂


Log in to reply
 

1
Online

277
Users

739
Topics

4.8k
Posts

Looks like your connection to Forum was lost, please wait while we try to reconnect.