Problem with looppoints
-
@d-healey Sorry what do you mean by a minimal example? i think its the code to
-
@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); });
-
@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
-
@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
-
@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.
-
@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?
-
@tiesvdam are the images required to demonstrate the issue?
-
I fixed it, sorry. struggeling with files and that kind of things!
-
@tiesvdam Please make a separate minimal project that contains only what is needed to demonstrate the problem.
-
@d-healey This is what you need, it connected to a sampler. More minimal is not possible because it will not work
-
@tiesvdam I deleted everything that is not required
-
@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.
-
-
- 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
- You have two
-
@d-healey Thanks i will try it out! Thank you
-
@d-healey Perfect, its not glitching anymore. But the sound does not loop yet. I would like that when it is played it plays in the area you selected with the end and start point
-
@tiesvdam You need to modify it so that it edits the loop points instead of the sample start / end - or when you edit the sample start / end you set the loop points to match.
-
@d-healey no idea how to do this but will try my best. Thanks for the info
-
@d-healey How do you address the loop points? I want that when the sample start is determined, so also adjust the loop points
-
@tiesvdam This post has some documentation about editing and accessing sample properties - it's a little out of date so if something doesn't quite work you might need to check in the docs - https://forum.hise.audio/topic/64/fun-with-regex
Also take a look at the custom sample import project - https://github.com/christophhart/hise_tutorial/tree/master/CustomSampleImport