Legato/Monophonic on one sampler only?



  • I am using 8 samplers , on only one of them I want monophonic/legato behaviour.
    How can I achieve that ? When I use the Legato with retrigger script in the midi processor for that particular sampler , the other poly phonic samplers will affect it.

    That is , if I play and hold a note on the monophonic sampler , triggering a note on the polyphonic sampler will mute/stop it.

    Whereas I only want the monophonic behaviour contained to that specific
    sampler.

    Please tell me this is possible somehow .... 😛
    @d-healey Can I somehow use your mono mode script to achieve this ?
    I have it , just not sure how to use it.

    When I think about it ...this is probably impossible.
    Unless I could somehow have it internally on a different "Midi Channel"as there is no way to differentiate between notes going to the monophonic part and the polyphonic part .



  • Yeah I think you'd need to use channel filtering.



  • I'm currently building an engine with 8 samplers and they all handle MIDI input independently without any issues. They can all be independently monophonic / legato or polyphonic etc. Are you sure you're using the encapsulated MIDI modules for each sampler? Also, are you using any global variables?



  • The problem is that I essentially need this for one instrument on one channel.
    I guess I will have to live with reducing the voices and no retriggering for that part of the instrument as its impossible for HISE to know which notes belong to the monophonic and which belong to the poly because they overlap.

    Its a string machine with a bass section , and the bass section is monophonic on the original.



  • @Lunacy-Audio How are you achieving this? If you play a note it will be picked up by all MIDI processors in all samplers, unless you're using channel filtering or something similar, or is there something obvious I'm missing?



  • @d-healey said in Legato/Monophonic on one sampler only?:

    @Lunacy-Audio How are you achieving this? If you play a note it will be picked up by all MIDI processors in all samplers, unless you're using channel filtering or something similar, or is there something obvious I'm missing?

    yep as David says - channel filtering is your friend: use: Message.setChannel()

    e.g.

    Message.setChannel(16)

    in your "master" note on - for all note you want to send to your bass section

    and in the bass sections note on ignore all notes other than those on channel 16...



  • @Lindon Not sure I fully understand , wouldnt that mean that the bass section would only respond to Ch16 from an external controller? Or can I somehow split into channels internally and yet have it respond to only one externally ?

    If so , could you provide a snippet ?



  • @lalalandsynth

    HiseSnippet 1259.3oc6Z0saaaCEVJNZH1ooXcKaXWxUrKrA5Br7ZyFVVQ90tHX0IFwos6hATvJQYSDIRMIpzETzGo8trGg8Hz2fsCkrhnhUcRTcRSyrtI47G4GO77COAoW.2hDFxCzzqd3I9DM86Xz+DlX31CwTl1t6noeWit3PAI.kvZqS7wggDaMc8JOQxPu57Zweua8svtXlEIikl1y4TKxSodTQF2da7qTW2NXaxgTOEse3F6ZwYayc4Q.dpXzTyGacDd.YOrTs4Lzz+r11TAOnu.KHgZ5yuE29j9C4ulkn+yogzW4RjDlZ8gEJgcGtqsDwxeWa6gTW6dom6PMXQ6k4Epj3EV1nK0ldJ+LuwmGK.kYgp+PetIAOyRBOcE3MeB7tmQeq.puHShDaKZrKCtnbvvUfJrRzUateW2XaNnASrhG9HRm.f3TKpuZylO.8nlMarlSDyRP4LDmsGWP1mUuQs2TqJ0odWXyf6iUFPDRI6E48JRP8FneAsZyFKUCAeuI4GxuTsCIBvAxXD25lq1XsX4us1aqgN6F43bMrSRWP.20UtbxM6LhkgjEKYjg0YwX4AniwtQjSUDtaxe4u3E6x2J4FQQQNaWFUruOYDsZ3Q5MRpzS433nxJ6LpxM9nUfZYrFO5SaTDC7aOa2cvBrLfbDOPOeRffJOs56PNFxzSBOqZrCI7HA2Gx0GK1Exf31QtXQ9zJYsjQB.2ct3WYLJKjJNQsVykHWqYg4ZlEcZufv8dF8nBqgEi24J.ufW6pFuipbsjQaGGhkHCryaz42JaYpxAkEdOsRtSb8GfhDXNMZj3egajnW4pnwgwsjFGe4HtYnyrvFH+ktA581b.oVyNsJbCz29Xj4pnwKYCQBgbWxJ9ATln986CAEH5.FGHGfXvJCav8ar1303iUhz9Xn.TcQ.TA97anTB3co.piykCoeZ2QZ7tPlS2tPmSglYcjl0Q5xBk6l.kEMjouwckhAxWGSidA9XB5IDnsjzoNoVS+8zu0z9VBX6OL.yB84g4V39DO5gblzijw7YgvK2I+wAxaYU9aywAEJ5cq2ANjEZSerHJHNbYSOdDSjK7nRo5IkOqQQ+BZPM+Gg9mS+TuO7JEUtXv8bZwWMEi8od9tj1riItP4vXL9EP8OGbjqHka9f7tbF2eHmQsTi.NfHBnCFPBTwdgGnMEBXR8LNKuwADWBVMZ9613oPTHN.7SjR5KLu39hIce8MFIvEIyLQ2NpvW4+mU3OfGIfmg0ECAp+I7d78h75CEVsHidfGrQF5yIKNlP2TRmTYkYGS7uv2HglRZ8QBMSEdsrGWtYmZMa1oaxyN0ZpM6zikCmb9iNge8OO1nSHujELdvjpSdpjkN++hbWIfzw4CGkWWyNU6SjYmlMuzr4klBPY4z4kjiFkMuzWES6vC7toLtjo5JeFYsTksCQDwxqdBqbZIOdcfimhdKrQJyVpL6gY4VLfN2J0U9XgTx+Y81LLbgzm.mF68CsfCqz2olNzKxMj7BpsXnopgYraox9ZX5LiYSm8wZ5rVylNa1zY2l5mL4LTnV4Mfa5aKCSdcrGdXq.9KsRd8oL8dgXNfukE++pQUitRZjoV76pA6LZtRSMOnIwKsrjQfeObGTrMsJgM+PIr4gkvlGUBaVsD17ikvleZh1H6OuYjf6kjiAL50NdZ.c8j2lDmto8eLDJr9O
    


  • @Lindon cool, that works well for splitting like this <60 but in my case the poly section overlaps the Bass section.

    Its a drawbar system where you can pull down the Bass drawbar and it plays on the same keys as the polysection.

    I am not sure that is possible.



  • @lalalandsynth Actually , the issue is the following.

    The keyboard is split in the middle.
    Bass can play lower half , poly section is split into two parts , upper and lower.

    Everything actually works fine with the monophonic bass and the poly section on top when playing the lower half.

    But when I play the upper half , the Monophonic bass gets Cut off as it has no notes to play on that half and the upper half is affecting the Legato mono behaviour.

    So maybe its a matter of restricting the RANGE of the bass section so its not affected by the upper half notes playing ?



  • @lalalandsynth Use a note filter.



  • Indeed , that seems to have solved it !!

    I might just have overcomplicated the problem a tad 😛



  • @lalalandsynth

    @d-healey ...strange , I am using your note filter script but it just stopped working after I saved ?
    And going back to an older save < i cannot get it to work ...hmm.
    must be doing something wrong

    Could have sworn it worked there for a moment.!
    Using this in the OnInit in a midi script processor.
    does not seem to work even when testing a fresh project ?

    Content.setWidth(500);
    
    const var knbLow = Content.addKnob("knbLow", 0, 0);
    knbLow.set("text", "Low Note");
    knbLow.setRange(0, 127, 1);
    
    const var knbHigh = Content.addKnob("knbHigh", 150, 0);
    knbHigh.set("text", "High Note");
    knbHigh.setRange(0, 127, 1);
    knbHigh.set("defaultValue", 127);function onNoteOn()
    {
        local n = Message.getNoteNumber();
        local t = Message.getTransposeAmount();
    
    	if (n < knbLow.getValue() + t || n > knbHigh.getValue() + t)
            Message.ignoreEvent(true);
    }
     function onNoteOff()
    {
        local n = Message.getNoteNumber();
        local t = Message.getTransposeAmount();
    
        if (n < knbLow.getValue() + t || n > knbHigh.getValue() + t)
            Message.ignoreEvent(true);
    }
     function onController()
    {
    
    }
     function onTimer()
    {
    
    }
     function onControl(number, value)
    {
    
    }
    
    

    here is a snippet , I dont understand , it worked for a moment ?

    HiseSnippet 2194.3oc6a0saaajElzxrIVsdQS2t.8hcAHb2Kjw10fjCkn7ltaj+OFwNQPJ06dQ.BXnFIMHTbHHobh21Bzmh9bzGgdY6aSdC18L7GygzS7pP3vjsQBFFbNyLbNemuyblybrb+.pCNLjFHIu1iuvGKI+IJCuvKZ5dSsIdRGuOHWwkNw1SEIs6E91gg3QRxxMNh0s7ZqJE+4U2aWaWaOGbtHIoynDG7IjYjnbo868.hq6g1ivOlLiazl8N1g5sG0kNGTkFJZR91NO2dB9g1rgshhj7GcvHRDMXXjcDNTRd0coitX3T5K7RF+YjPxybwrF5RCgWTh3CotiXZLSpzdSIti5mA4PII4a0O2.zHw.74JmRFQtTdtg3Si6PMeF71C4UtN0SmW8zVX0ShS6VMQ6.kfNZtqcTQMiQGocPndEzri8hvdgjnK3oq2op6cT5ShblJVeWQf9BD0aa8Mk7WW4fwiwNQ4J6pJG9upWl9OknJelxvn.r8Lh2jg1y7cwAw5yGqbBa6XebfyMwFRoEdCY+.rK0dzPx+laX+bucmCFrfhR+odwK0Nyny8JrVo.Y.1GaGA7O2btcuACNJfN2u7rd08h8Vdb.DP.rE7c7HOLX34WAo8BnggiA3D+tB46p+7fILaUtjA3ywAgEk8v4y.x2yC6BSVQVFD8MgXFYSbN0NJf7R9QGuJZO1NlvgnTws0K01nTaTo1lkZ2tT6NkZak2NwfdpseYWC4UK5kdqWuWJe3R3M02FvN2H2kL4xUIQRtqrVt8NVm3hGKHX6G81JXaiECbBToUtpJ8GTNAOABX8OIQSGfABexjzsdeQZOpu.5R8x9zKpaMtgzMo8nrHgQBiqdGkgNAD+n7dXJ3uOUZtYqntkzqzJ+RCk0atdSXCdXj541ApO26YmPeg5eWMcM2xdznG3QeVqMR5YiuRUC9Yy6tdyDAaEhiZsQD9kQPWavl6CoQ3MJNfA1dSvsfIpaXA+h0YoE89jISeMqJqK3cq2lagYxJtxwu.9kNaHBV6BufQ3w1yciNy1cNFdQlVad2wy8bXmFoR8XuwG40Zy0a9sq2TE93RcrcU8.c8TvtB4kr0DbDaTP3hmgCZwd+4iKp33fPWdg9zvz.hsRLDqQFq1xS8qSM9rAFqMs1T8u.ugu66fk6ejYjJ06lIqF6S15Pl3QCvGbNXGaEELGyVjuGFVYTMd7aWXwFdsiLlCT.00koxwf6Jifc51qsyzo2xKF0eE3cB5C2XE3Yz7aatVyuWr4UPe7JnftS0tW+DKoZYC7Jg4atXQabR1vwMPp2wdjnG4iSCemgzqHY7XdQ43hWZLbDLrbQWW3N4URGNLzn3nc+tz3ZCcIifXwDHX1sURbtjhMH7GIKs.ydMkTuuRS+GNtmz2b791Q1fZHmpQfV5iChHL6q793ygLaRBBulx93vmGQ8iU4Y9TOl9Keq+2J8KYoVvVvKxdHLB6WLIpWcuY144Z7yOsGKlGvvJYQaYH8xE81K.ViW0erRq5GqbYjVI9Pm4Vti5Ue2Vowhkxsfy6k6ekK79oJCIrzaNv6bHAWPBSG+LfZiQYlzhGjdJ0i5Ok5QbJlNYV1Bb5tP.sSTDjMatjOu2.rK1NjiH9y8Ng3gsCJlk7ajsPewsEWGe8EJIpqJaas5uMtkYiO3uk40Y5fnHwY7qBqdPz6477mnDeoHU1cXeWopCnyif6llc+PEH8ogvEmcv7WkbE1YSIs0xB.OD6MJtw+A9j1od18NYcpm0ojS1qBvV5ywGTI2.6wt6UbwSbgaz5x6RGBWOmoRvcEeiqwvtforPoYVVigk0Xfy0ndpwf9680XP6seMFLdOtFCFBqwvu1PQcYQFVVjgkEYXYQFDWjA8OTKxvQKKxvxhLHpHCFKKxvxhLrrHCKKxvuMJxve7ZKxvcxuI4dXWWp1MQoF7qwRM3urTC2zkZPV4CnJJ7+YeEwdGjODplyG5reRX9PW8L6k4CsLenk4CsLenEHenvXRcV7oPLKGHqTlAL3cJwoOELavNFV3Ek6BQ.RlIbs3ATVRAqpXXIcB8A3KRe99j7mOgdFSEXVs6SheTQQGjmtTom.RbS+9T+0JG+2dRb5Wf2V.XDUO01YJD56IrzwTiyG6IWldVR6mt+WZr0KrOWZ+49tDGfIY78ITp+AYlB1hvDj3AKeKlJnqIkLlQLAcauc21YFENng1NGZvyWBsX40AzPu4PqiVmBPqiExT.zL5vwZc3XsNuoP6tUBZUgzzrJhLMKCQjVWNRqKGo0sdPVE3r1aWhyZaZIhy3PlAGxLpGjcPE3rN5Fk3r1h3LSsbjYpkirX40.xpx9LK8hHaaMMQdibHCwgLjVsDB4vpDcrqQwnicPHjHRyfizL3HMiZBZUf0rLJyZs0EsSiKvuAWfeisqE+wCqRzQqxwPZKJtuoNGooyQZ50CxpxNs3H27bFR3NMN2QDm6HpdbGOpR6zPkBOZpIjzL4HMSNRyrlfVkNSCUDZc05Jh037GQb9in5we7HiafLrzrDk7nIhizPbjFpdPVk1oUJ5nkkn.+HN2QDm6HpdbG24KqThHkHMSSgIhvkVrIWZwlcpInUAVSuTNVVZcEk8HhyeDw4OhpG+wcpBo0ocoyzzDlHRaNRqMGo0tdPVUhN1t7NssEtSiCYHNjgpGjsaktk11EQF7QDmwU0.StpFXZUOHqJblUoCqszEdKMNNyfiyLZWKgP1qR0CQynT8P1VX8P3HMDGogrpIncSblV6Nhxdzf6LMCtyzLLqE+w8pRzQToni5VhtKCh6HMD2QZn5oRO6UoaoUpROf+X8TY0Y1NAzm5j70nhUe0aGKAzRuXSvZJmxZqpm8smRQQaKMoYjQjm5v9+aV4uBbf34XTg4fpvbLqvbZWg4zoBywpByo60NG1eZyclGQmk7G1ADz+fjhgKeoKlbCo+Kz2oIp.
    


  • I just did a simple version.

     function onNoteOn()
    {
    	if(Message.getNoteNumber() > 47)
    	    
        {
            Message.ignoreEvent(true);
        }
    }
    

Log in to reply
 

11
Online

747
Users

3.0k
Topics

24.8k
Posts