HISE Logo Forum
    • Categories
    • Register
    • Login

    Problem with looppoints

    Scheduled Pinned Locked Moved General Questions
    25 Posts 2 Posters 425 Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • T
      tiesvdam
      last edited by

      I have a problem when I enable the loop function in the sampler. When I do this, a generated end point appears. If I change my own end point, it is ignored.

      I only want one end point, and that should be my own—not the generated end point that the sampler creates.

      How can I prevent this from happening?

      Schermopname 2025-04-01 om 10.26.05.mov

      //AudioWave LAF
      const var SampleStart = Sampler1.SampleStart;
      const var SampleEnd = Sampler1.SampleEnd;
      const var laf = Engine.createGlobalScriptLookAndFeel();
      laf.registerFunction("drawThumbnailRange", function(g, obj) {
          g.fillAll(0);
          
          // Start point (using existing position property)
          var startX = obj.position * obj.area[2];
          g.setColour(0xFFFF5400);
          g.drawLine(startX, startX, 0, obj.area[3], 10.0);
          g.setColour(0xFFFFFFFF);
          g.drawLine(startX, startX, 0, obj.area[3], 1.5);
          g.setColour(0xffFFFFFF);
          g.setFont("regular", 12.0);
          g.drawAlignedText("Start Pt", [startX + 5, 5, 50, 20], "left");
          
          // End point (using new endPosition property)
          var endX = obj.endPosition * obj.area[2];
          g.setColour(0xFFFF5400);
          g.drawLine(endX, endX, 0, obj.area[3], 10.0);
          g.setColour(0xFFFFFFFF);
          g.drawLine(endX, endX, 0, obj.area[3], 1.5);
          g.setColour(0xffFFFFFF);
          g.setFont("regular", 12.0);
          g.drawAlignedText("End Pt", [endX - 55, 5, 50, 20], "right");
      });
      
      
      
      // Variables to store loop points
      const var loopPoints = {
          start: 0.0,
          end: 1.0,
          enabled: false,
          settingStart: true, // Flag to toggle between setting start and end points
          endPoint: 1.0 // Adding the EndPoint property to the object
      };
      
      
      
      
      laf.registerFunction("drawThumbnailRange", function(g, obj) {
          g.fillAll(0);
          
          // Draw playhead position
          var x = obj.position * obj.area[2];
          
          g.setColour(0xFFFF5400);
          g.drawLine(x, x, 0, obj.area[3], 10.0);
          
          g.setColour(0xFFFFFFFF);
          g.drawLine(x, x, 0, obj.area[3], 1.5);
          
          // Draw start point marker
              var startPointX = loopPoints.start * obj.area[2];
              g.setColour(0xFFFF5400);
              g.drawLine(startPointX, startPointX, 0, obj.area[3], 10.0);
              g.setColour(0xFFFFFFFF);
              g.drawLine(startPointX, startPointX, 0, obj.area[3], 1.5);
              g.setFont("regular", 12);
              g.setColour(Colours.white);
              g.drawAlignedText("Start", [startPointX - 0, 5, 40, 20], "centred");  // Tekst voor startpunt
          
          // Draw end point marker
          var endPointX = loopPoints.endPoint * obj.area[2];
          g.setColour(0xFFFF5400);
          g.drawLine(endPointX, endPointX, 0, obj.area[3], 10.0);
          g.setColour(0xFFFFFFFF);
          g.drawLine(endPointX, endPointX, 0, obj.area[3], 1.5);
          g.setFont("regular", 12);
          g.setColour(Colours.white);
          g.drawAlignedText("End", [endPointX - 40, 5, 40, 20], "centred");
      
      
          // Draw loop start and end markers if loop is enabled
          if (loopPoints.enabled) {
              var loopStartX = loopPoints.start * obj.area[2];
              var loopEndX = loopPoints.end * obj.area[2];
              
              // Draw loop region background
              g.setColour(Colours.withAlpha(0xFFFF5400, 0.15));
              g.fillRect([loopStartX, 0, loopEndX - loopStartX, obj.area[3]]);
              
              // Draw loop start marker
              g.setColour(0xFF8d478d);
              g.drawLine(loopStartX, loopStartX, 0, obj.area[3], 2.0);
              
              // Draw loop end marker
              g.setColour(0xFF8d478d);
              g.drawLine(loopEndX, loopEndX, 0, obj.area[3], 2.0);
              
              // Draw loop region border
              g.setColour(Colours.withAlpha(0xFFFF5400, 0.5));
              g.drawRect([loopStartX, 0, loopEndX - loopStartX, obj.area[3]], 1);
              
      
          }
      });
      
      laf.registerFunction("drawThumbnailPath", function(g, obj) {
          g.fillAll(obj.bgColour);
          
          var a = obj.area;
          g.setGradientFill([0xFFFF5400, a[0], a[1], 0xFF8d478d, a[2], a[3]]);
          g.drawPath(obj.path, obj.area,1.5);
          g.fillPath(obj.path, obj.area);
      });
      
      
      
      d.healeyD 1 Reply Last reply Reply Quote 0
      • d.healeyD
        d.healey @tiesvdam
        last edited by

        @tiesvdam In your video you have multiple samples selected. Please show just one sample selected.

        Libre Wave - Freedom respecting instruments and effects
        My Patreon - HISE tutorials
        YouTube Channel - Public HISE tutorials

        T 2 Replies Last reply Reply Quote 0
        • T
          tiesvdam @d.healey
          last edited by

          @d-healey Then this is happening, almost the sameSchermopname 2025-04-02 om 16.10.02.mov

          1 Reply Last reply Reply Quote 0
          • T
            tiesvdam @d.healey
            last edited by

            @d-healey, I also have the problem that the audio waveform shows only the line following the audio of the first note in my sampler. Is it possible to do this with all the notes?Scherm­afbeelding 2025-04-02 om 16.17.08.png

            d.healeyD 1 Reply Last reply Reply Quote 0
            • d.healeyD
              d.healey @tiesvdam
              last edited by

              @tiesvdam What you're showing in the video is what you have drawn, correct? At the moment I'd say the problem is in your code, if you can put a minimal example together I can test further.

              Libre Wave - Freedom respecting instruments and effects
              My Patreon - HISE tutorials
              YouTube Channel - Public HISE tutorials

              T 1 Reply Last reply Reply Quote 0
              • T
                tiesvdam @d.healey
                last edited by

                @d-healey Sorry what do you mean by a minimal example? i think its the code to

                T d.healeyD 2 Replies Last reply Reply Quote 0
                • T
                  tiesvdam @tiesvdam
                  last edited by

                  @tiesvdam this is the code i made

                  //AudioWave LAF
                  const var SampleStart = Sampler1.SampleStart;
                  const var SampleEnd = Sampler1.SampleEnd;
                  const var laf = Engine.createGlobalScriptLookAndFeel();
                  laf.registerFunction("drawThumbnailRange", function(g, obj) {
                      g.fillAll(0);
                      
                      // Start point (using existing position property)
                      var startX = obj.position * obj.area[2];
                      g.setColour(0xFFFF5400);
                      g.drawLine(startX, startX, 0, obj.area[3], 10.0);
                      g.setColour(0xFFFFFFFF);
                      g.drawLine(startX, startX, 0, obj.area[3], 1.5);
                      g.setColour(0xffFFFFFF);
                      g.setFont("regular", 12.0);
                      g.drawAlignedText("Start Pt", [startX + 5, 5, 50, 20], "left");
                      
                      // End point (using new endPosition property)
                      var endX = obj.endPosition * obj.area[2];
                      g.setColour(0xFFFF5400);
                      g.drawLine(endX, endX, 0, obj.area[3], 10.0);
                      g.setColour(0xFFFFFFFF);
                      g.drawLine(endX, endX, 0, obj.area[3], 1.5);
                      g.setColour(0xffFFFFFF);
                      g.setFont("regular", 12.0);
                      g.drawAlignedText("End Pt", [endX - 55, 5, 50, 20], "right");
                  });
                  
                  
                  
                  // Variables to store loop points
                  const var loopPoints = {
                      start: 0.0,
                      end: 1.0,
                      enabled: false,
                      settingStart: true, // Flag to toggle between setting start and end points
                      endPoint: 1.0 // Adding the EndPoint property to the object
                  };
                  
                  
                  
                  
                  laf.registerFunction("drawThumbnailRange", function(g, obj) {
                      g.fillAll(0);
                      
                      // Draw playhead position
                      var x = obj.position * obj.area[2];
                      
                      g.setColour(0xFFFF5400);
                      g.drawLine(x, x, 0, obj.area[3], 10.0);
                      
                      g.setColour(0xFFFFFFFF);
                      g.drawLine(x, x, 0, obj.area[3], 1.5);
                      
                      // Draw start point marker
                          var startPointX = loopPoints.start * obj.area[2];
                          g.setColour(0xFFFF5400);
                          g.drawLine(startPointX, startPointX, 0, obj.area[3], 10.0);
                          g.setColour(0xFFFFFFFF);
                          g.drawLine(startPointX, startPointX, 0, obj.area[3], 1.5);
                          g.setFont("regular", 12);
                          g.setColour(Colours.white);
                          g.drawAlignedText("Start", [startPointX - 0, 5, 40, 20], "centred");  // Tekst voor startpunt
                      
                      // Draw end point marker
                      var endPointX = loopPoints.endPoint * obj.area[2];
                      g.setColour(0xFFFF5400);
                      g.drawLine(endPointX, endPointX, 0, obj.area[3], 10.0);
                      g.setColour(0xFFFFFFFF);
                      g.drawLine(endPointX, endPointX, 0, obj.area[3], 1.5);
                      g.setFont("regular", 12);
                      g.setColour(Colours.white);
                      g.drawAlignedText("End", [endPointX - 40, 5, 40, 20], "centred");
                  
                  
                      // Draw loop start and end markers if loop is enabled
                      if (loopPoints.enabled) {
                          var loopStartX = loopPoints.start * obj.area[2];
                          var loopEndX = loopPoints.end * obj.area[2];
                          
                          // Draw loop region background
                          g.setColour(Colours.withAlpha(0xFFFF5400, 0.15));
                          g.fillRect([loopStartX, 0, loopEndX - loopStartX, obj.area[3]]);
                          
                          // Draw loop start marker
                          g.setColour(0xFF8d478d);
                          g.drawLine(loopStartX, loopStartX, 0, obj.area[3], 2.0);
                          
                          // Draw loop end marker
                          g.setColour(0xFF8d478d);
                          g.drawLine(loopEndX, loopEndX, 0, obj.area[3], 2.0);
                          
                          // Draw loop region border
                          g.setColour(Colours.withAlpha(0xFFFF5400, 0.5));
                          g.drawRect([loopStartX, 0, loopEndX - loopStartX, obj.area[3]], 1);
                          
                  
                      }
                  });
                  
                  laf.registerFunction("drawThumbnailPath", function(g, obj) {
                      g.fillAll(obj.bgColour);
                      
                      var a = obj.area;
                      g.setGradientFill([0xFFFF5400, a[0], a[1], 0xFF8d478d, a[2], a[3]]);
                      g.drawPath(obj.path, obj.area,1.5);
                      g.fillPath(obj.path, obj.area);
                  });
                  
                  
                  
                  
                  1 Reply Last reply Reply Quote 0
                  • d.healeyD
                    d.healey @tiesvdam
                    last edited by

                    @tiesvdam said in Problem with looppoints:

                    @d-healey Sorry what do you mean by a minimal example?

                    a HISE snippet that contains only what's needed to demonstrate the issue

                    Libre Wave - Freedom respecting instruments and effects
                    My Patreon - HISE tutorials
                    YouTube Channel - Public HISE tutorials

                    T 1 Reply Last reply Reply Quote 0
                    • T
                      tiesvdam @d.healey
                      last edited by

                      @d-healey I think you need all i send in the snippet, because I think the problem is with the start/endmarker that I draw here

                      d.healeyD 1 Reply Last reply Reply Quote 0
                      • d.healeyD
                        d.healey @tiesvdam
                        last edited by

                        @tiesvdam Make a new project, add in whatever is needed to demonstrate the issue - and no more than that. Then either send me the project folder (if I need some external files you are using) or post a snippet here - Export >> Export as HISE Snippet.

                        Libre Wave - Freedom respecting instruments and effects
                        My Patreon - HISE tutorials
                        YouTube Channel - Public HISE tutorials

                        T 1 Reply Last reply Reply Quote 0
                        • T
                          tiesvdam @d.healey
                          last edited by

                          @d-healey Ahh i understand. Than you need a project folder of mine. I use some png so the file is 25mb. Can I send it to you mail?

                          d.healeyD 1 Reply Last reply Reply Quote 0
                          • d.healeyD
                            d.healey @tiesvdam
                            last edited by

                            @tiesvdam are the images required to demonstrate the issue?

                            Libre Wave - Freedom respecting instruments and effects
                            My Patreon - HISE tutorials
                            YouTube Channel - Public HISE tutorials

                            T 1 Reply Last reply Reply Quote 0
                            • T
                              tiesvdam @d.healey
                              last edited by

                              @d-healey Trokeys kopie.zip

                              I fixed it, sorry. struggeling with files and that kind of things!

                              d.healeyD 1 Reply Last reply Reply Quote 0
                              • d.healeyD
                                d.healey @tiesvdam
                                last edited by

                                @tiesvdam Please make a separate minimal project that contains only what is needed to demonstrate the problem.

                                Libre Wave - Freedom respecting instruments and effects
                                My Patreon - HISE tutorials
                                YouTube Channel - Public HISE tutorials

                                T 1 Reply Last reply Reply Quote 0
                                • T
                                  tiesvdam @d.healey
                                  last edited by

                                  @d-healey This is what you need, it connected to a sampler. More minimal is not possible because it will not work

                                  T 1 Reply Last reply Reply Quote 0
                                  • T
                                    tiesvdam @tiesvdam
                                    last edited by

                                    @tiesvdam I deleted everything that is not required

                                    d.healeyD 1 Reply Last reply Reply Quote 0
                                    • d.healeyD
                                      d.healey @tiesvdam
                                      last edited by d.healey

                                      @tiesvdam It contains quite a few things that aren't required, such as adsr, eq, fonts, preset browser, etc.

                                      Make a new project, that contains just the absolute minimum to demonstrate the issue, it's much easier to find the cause of a problem, and the solution, when there is not extra stuff in the way.

                                      Libre Wave - Freedom respecting instruments and effects
                                      My Patreon - HISE tutorials
                                      YouTube Channel - Public HISE tutorials

                                      T 1 Reply Last reply Reply Quote 0
                                      • T
                                        tiesvdam @d.healey
                                        last edited by

                                        @d-healey Trokeys kopie 2.zip

                                        d.healeyD 1 Reply Last reply Reply Quote 0
                                        • d.healeyD
                                          d.healey @tiesvdam
                                          last edited by

                                          @tiesvdam

                                          • You have two drawThumbnailRange functions.
                                          • You should probably use local laf instead of global for this.

                                          The laf function will trigger for all set ranges, so that includes the start/end position, and the loop ranges (and possibly sample start and release trigger, haven't tested). The solution is to ignore any ranges with an index greater than 0.

                                          Here is a simplified snippet.

                                          HiseSnippet 2718.3oc6Z07aaibEmRxLarZ17w1OPOrnfHnKfyVuxjTePIDzMxV1JVXksEjbxFff.2wjijlZRNLjTNVcwh9EJP+WXQuzS8VAVfdoGC5sBza8efdom5k8RO29F9g3PYkDaUEUi1UvvhyWu4898l489MCUGWpN1yi5JjI+gicvBYtgXuw19CaLDQrEZsMTu3gtzSvi8TE1ZrCxyCaHjIStGxZOypqHD74qdvVHSjsNNoJAgGSI531DKheRscp+IDSylHC7gDKtdWpdKcpcCpIcDnK4DkEbP5mfFf2Gw5VVQgcQdCEx7ghUL5ipXnUVVAWrpglphV4ZkzpHK22nph1wZGWDYfpnIKj4Z6XP7ot87Q9XOgLqrE0XbugzWXGNAOl3QN1DyJnHzCl4vpaRMMXlHqVgFCIlFchAIOAgLhcRfrbgP12RbOhAYR8IP2sCZPJYD7.XlroUuboTOEd0SlS8lgJkgSkVITktiXOcWhieRKL84aH1x1G61GA9IdUIruBY+6hhMnPOr8KXgNA2zEJLYDqoHWUdcI.nu28ymGbVd9RmhbkLQ8k9gRwiS2EClSapNxrMkdxl1FMwXy0ROjMGYPneJ5TbepqkB2nGf8aPsbn1Pg0ta5tcWPFoqofG1+byDnNrIC9pfKd.wCz9lir08IT60tqgK5EGNbj0w1HhYWj8.7cWWpebyCVWhd7O9dReVdI3Sv+H8kVCpqfKqusrMvmI8wRx2KnsUcw9ibsgIiUZPg9vB6MMMWigOSDvFaHsMLoRNlnwCwHCIGpGgMaAsx.iy.6mMEwMH8gAEQ.P9T0mwIpAL6MbGxZxm0D9Ttjb7jMn.y1ZSrwqc15RvexqmHlhOacIE4BoTryKM1mKrzJTdVVomOx0GLQhsujEx8Dr6DyLnoNrVdRjAGHL4mc+KkwwIl0kRU30XvWTa8RH7I1efraRYqWg0aiLQtvRJE0YLyge4U3ECI93TS9lljA1XiCwmARoGadAY7TdD6iXZP40kJAeoJCJvc0gsHtXCXWQ.7eH9D1lKJMBocFY6ed+C11X1dGngy6aTuj9lIBYcItGW.9kKnfe64S1w1f4QRPoOJvS7JbH4+bVDn3vJRT68o93CrW6d4+r7ql+yyKMcS86Oy1XQEcollX2Y1LKAp6qafqYCQ5vtqCdXyQ3IcDRRjNyi3qNyCehQ8vfzbcjZ2xl3efC19UktTHJxNjkJWjVAO4Gji51Q4nfH9GS2hdl.ARFcSwFVG2CY4Xh2C4HDn47zLDlVJe6HojJ0PfntsX5zESKrHs6BnR5udU5Qs1F4iXIhirV.Abvt9DF3lYa7o.MnvzxqJtM16DepS.bDknCnXcwAjylLyN+h5iSTiuecmXXukAahhHsI7Bhg+vI8qNs9PLYvPNFY6WGV5aAZ52Qr6PpA1gfro46Q66G7jfEBlSwLYgtdJOkDANC3VWZeQhcH8S4si1osi7hgltqxTFxe7mOsg7kOOvPB2QqxHxVRsVoZpkTqVUvG1FySt73AwkVUTQtrZkZxBIiVHy0E0TKpoVlqxhLsQohVohJUpJ3A6BZRLinmxDI0A87QQOaRQFeJweXabe+FlD8Sh2ej.YuyEeEWBVU+WxiUqWOx2jCJD4De+Y5Dy+Xh8Xyo7emm0HvWkZ.gK8SShkQ0OpAH9RJliL1g1.ukw7aHVXLaunp3cD6P70GNacL6LzQXu5aCcL57.uq3N86i08STvUDa9j2Nj+4m9q+JNA2MBX0CkXaiV.mgy4BeFtL49+iif806k9es8Rue3z+dh8.RcHKh8fnDQQ2IxjzRK08ScbwrTK8H+Dtt8x5aMBvH2z09k0ClpMsnirSMWQZdWrCbRcvMyMlqWua2G5RG4L8n9pGDrn3PWj9I.Tv2vA1X.q84swFtTOu9f4DHKO9l5Lxc.CqRpoK9TrqW551ejE3usswlL1oYx.U8HOLy+Rz2C46RNiu2Ayh7gn.ebVwvxJSUVcpxEmpbooJWdpxUlprVR4LhoW+csKFcZHydGDXhb8bKxfjr9A07FhDdsuNR3bbeYY4zwUi0wdDFvui8ovNLnFlN9d.a89nQl9w0ld29dTapyPpMQO85YX84fAXWdcelFzl99HFyP9wZhQdXdV8ry+hbSuM8RgEJW56Nbl9quqXn5JwBQI8e8LX2JTUeGwM2c6dciRbE7rzLcVYWLNqFibOM1Q7y9S+y+1C1FqiFyW6qvyFVSaHVmIe06BaumT9W+WqGHtIx+2+ap2ajmeRREoe0+368xzKRpWL6en9N5z2dqPDufqPdW9UHWAI1byX8KzKb0SAugXf6+pJ9cKwnEiWYAvaJFs23pJD9Z4Vm6sK25TQ5uSnRJJ1t4AAZ10D61PU9MS0eKhC0D4xZuoK94iv15ws+x+xMJVmQhskcRDxOnd7U9DcAXQR510aiG.fCu63PrkCEN5ZpHz8rnT+g.mSNpw+n9+th0aSoN6XyHgYjhm5Pv+eP+9d3XJo+1u3K9yOfI1Co6gXuNnFlzzAmaMvl5hCuj1T7Xg06TqI2iEiqWOerSvk8k4ohUJU.9z+Gv9esFv+JdvhorvhK3c1K3JyuIakfzDWNKA+xjQVlYwHiQWM4JviXjEvgMoVk2rVBmbHhqNmGG3H35m9PGIBc+fqM+7qBSe5LR8H1gON8EBe65KL2mvkx6MYC4R16cE5T6u9rCgmsRJ3ErckL+evIKkXwPWlpWW5HeH.a7AqEgk+8nib0w7mAmc8+QkkYkC1UfsMBJ7ufOQMpDefcViJwMJnGKJvdhdNLLZNbbL7LYMmldr2n98YpDD3UvKv4YwNXrXHcyjK59Hgot2BQQkBvIrI5chdo5L.R79b2LAxxBE2udPD9P9y4DYu3fvoBxR1kxtXiUDqHKzl9I3wQOuKI441zGyzYFztKI3QPlpZwJTzo3m7hB1UbCHdjq2FCc1H5UAswda1Z+MNr6Aa0ZiNsezCgBc28fs2YiSU2HvDOph7QFisQVDckibcUJ7BzoBaOxwjnCt9fe+FnvytZvdwEEKWpTEUA1AdLI9CiyEFbkCQ00FaOf8tTXctRwxpBgBnaf3VUrTUYY4BLai57jfUiAilULbuC3U6+w4hFUTUWm8tQpJWVHUh4LYCKZvFyGTekX+HfxS.WENvUgCbUVNfqBO3pNef6Df7Rhvy.MT4PCUNzPc4fFp7nQw4EMz.8RtzB.MJxgFE4PihKGznHOZTZ9PC1KXrRM4xUla33VSfiRbvQIN3nzxANJwCGkma3njZ4RxUmmnQSEWYRzn1OJm.WflhOXlAZJygdk4PuxKGzqLO5UYtQOspJZUjW.6spvAGU3fiJKG3nBObnMuvgpRwpJJKh.uZbvgFGbnsbfCMd3n5bCGkpAsrHh7VkCNpxAGUWNvQUd3n1bCGUKKWUoxB.NpwAG03fiZWV3n0bAG0Rw.TddwihpxZre8J+GiGZbLh03XDqIuTvCszLhUla7HvpW.AS03HwpwQhUSY4fGoHwpnN23QMkZU0t7QSWFGgbYLGVHcW5Q5g2DD6vpWOnFvGYG3bVUbOVYoY7aIzhXPNRWOsnN2.Um2AVbdGXo4cfkm2AVYdGn17Nvpu4Axt2vMG4SsBu2cAg85rS3MPjIgTYNg+Mfi+MpW
                                          

                                          Libre Wave - Freedom respecting instruments and effects
                                          My Patreon - HISE tutorials
                                          YouTube Channel - Public HISE tutorials

                                          T 2 Replies Last reply Reply Quote 0
                                          • T
                                            tiesvdam @d.healey
                                            last edited by

                                            @d-healey Thanks i will try it out! Thank you

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            21

                                            Online

                                            1.7k

                                            Users

                                            11.8k

                                            Topics

                                            102.6k

                                            Posts