HISE Logo Forum
    • Categories
    • Register
    • Login

    How to smooth a path + Ducking Display Script

    Scheduled Pinned Locked Moved Solved Scripting
    13 Posts 5 Posters 188 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.
    • HISEnbergH
      HISEnberg @ustk
      last edited by

      @ustk Have I missed something? I am just getting errors trying to use the roundCorners.

              // Invert the path vertically and scale by duck
              p.scaleToFit(a[0], h  , a[2], -h, false); 
      	local roundedPath = p.roundCorners(10.0);
      		
       	// Fill
       	g.fillAll(panel.get("bgColour"));
               g.setColour(Colours.white);
               g.drawPath(roundedPath, p.getBounds(1.0), {"Thickness": 2.0});
      
      ustkU 3 Replies Last reply Reply Quote 0
      • ustkU
        ustk @HISEnberg
        last edited by ustk

        @HISEnberg not as far as I can see 🤔
        except p.getBounds(1.0) that should use roundedPath but this shouldn't lead to an error...

        Can't help pressing F5 in the forum...

        1 Reply Last reply Reply Quote 0
        • ustkU
          ustk @HISEnberg
          last edited by

          @HISEnberg So it appear there's no need to create another path... I don't where I get that, I was sure it was the case when I implemented it, it's even written in the description...

          But there's something that you can't round. There are too many points, so the rounding will happen at the pixel size. you need more space between the points so the curve can smooth out freely

          Can't help pressing F5 in the forum...

          1 Reply Last reply Reply Quote 0
          • ustkU
            ustk @HISEnberg
            last edited by

            @HISEnberg did this and got rounding:

                 pnl_DuckingDisplay2.setPaintRoutine(function(g)
                 {
                     var h = this.getHeight();
                     
                     // path is restrained to a width of 60 so it is created with less points (rescaled later)
                     var p = BUF_DUCKING.createPath([220,0,60,200], [0, 1, 0, 0], 0.0);
             
                     // Invert the path vertically and scale by duck
                     p.scaleToFit(0, h, this.getWidth(), -h, false);
            	
             	 g.fillAll(this.get("bgColour"));
                     
                     g.setColour(0xFFFFAE00);
                     g.drawPath(p, p.getBounds(1.0), {"Thickness": 0.5});
                     
                     g.setColour(0xFF00ff00);
                     p.roundCorners(100.0); // set to 100 so it rounds up to the next point, which is way closer. so 100 is just a limit we never reach here
                     g.drawPath(p, p.getBounds(1.0), {"Thickness": 0.5});
                 });
            

            Screenshot 2025-01-29 at 01.34.33.png

            Can't help pressing F5 in the forum...

            Christoph HartC 1 Reply Last reply Reply Quote 0
            • Christoph HartC
              Christoph Hart @ustk
              last edited by

              I don't want to interrupt your Path manipulation party, but I think that should be solved on the DSP side.

              I know I can add some smoothing within my scriptnode chain to get similar results, but in this particular case it comes with the drawback of loosing the information of the attacks.

              If that's your only problem, use an envelope follower with a short attack time instead of a smoother (an envelope follower is basically the same but with two different times for upwards and downwards smoothing).

              HISEnbergH 1 Reply Last reply Reply Quote 1
              • HISEnbergH
                HISEnberg @Christoph Hart
                last edited by

                @Christoph-Hart thank you the envelope follower should be a better solution!

                @ustk thanks for taking the time to script these!

                Thank you guys these are both great suggestions!

                Christoph I am actually seeing that the envelope follower is producing more noise in the signal than the peak node. Here is an example of one arpeggiated sine wave gating another sine wave:

                Screenshot 2025-01-29 at 8.00.37 AM.png

                HiseSnippet 2669.3oc6Zs0aaibElx1iSrxlqa5Ef1GHL1Gj65pna9VWTDIYIkn0V1ZEcb2EAEFiHGIwHpgLjT1VaPPQequ0m2GVf92nu0e.6BzG5Oi9v9On8LyPJRJQaKqboMKVBjHwybly4aNyYNWF4l1lpDGGSaoDIOZjEQJwGgTFQc6saOrNUpdEoD2BUYnZ+Z5mSbjJOxB63PzjRjXwmvXHwJKIwe9gGWFafopj.RRRGapqR1Wefta.0lE2S2vnFVibj9fPbWnXcUS5tlFlCAvrHJijEVsOtK4.LisEPROE6zSJwuAso5NajoMIyFarcg7aWnvlE1biLcxjuS6s2rP67aUHuVgMxplWJwxU0zcMsUbwt.3SrTYSsQJ8LOiJTvw5N5sMHrWxJo.ZVPtlogFaIxnJsaOcCsl9VIGIPnMCrYKJrYOD0PWSeL8.a283CHGLivFvDKDEdKFAdYCCuLgfWLPJQHHsj.R2GonZqa4FLhXurN0kX2AC6SgghfWoE9VDRdWSfEpa5A39jZ1vKimRpMxjYc47Yxr1mkTNoLrc43JeJ1V1hZbByIQm1shtikAdTN4e+XA0k3tq4.KSJ7RpUig2UYxKPZ8osOoooiKiqKVNQ3ZBIT9Y0pUs0IUd1t6Aym6Oylsm9JOrSGhsB3mAKoU4tmD6ok.e50O3IfDBIuojSprQmolXswbtsgoVk1UmRRqZSfMYNwCa+BhpaJgMjBN2NfiNQ1ylThpO.6paRSJ+pjxrGcpAHA4NCopL5bFaBNXtsLG5Bijp65xVXJwXMA+dSi8XXphMjw.L3Lvv99LRkMGR0bRkIMemLJ28.tc6o6vX9oD8t8DPMJSVBihuIxa40D61KEdc4mCdIYWWF9+L+Q3ewoElURA9BADTCXZf214ohrkxz+wXigjTqI+H4rYxlNCWVYEFN+mG8H45zSI1t.nIvxzsmL6McP1FijwTMYGtZZOhqyfIZklOvQl0zcSgeNCo8jkWWF+7bvW+s8VWtC1vgr1mImLo7Jq.5oFD2h8U4to6.esjgQpwl0Tq1tqH10pqEd01MsCyqkMPJwGNoOqG3vEkIMa7YbqmErWxjm2NDrnWac4Ws5Q8zU6Sgywq96jykNyq8m8q89Lousf6XH64YHnFyANFnh3B46bkp6ZAv5JdB4mEmKIyGZLLWaRbJNdrKrI0F6uqD9jCCg7u3yR.DADtRHcG2xylXwPSpKP+QUjK1VnpT44Npud7IMS5AltjCYp7UIWI4qSJO4Pc5D6XrHV1lFFfLiaXg1tjIlhNbPah85P.E3.vXFgf6QyXft3LFgSnoJBfFhQSZcpt6gVD5EklSxKpKK6hGp.Vc44VtiWtEECcMhsjNjB4tnHGdk3.Ob0AROqdErK1WbfjAsYwNoxVHIpPNEJUPj5ZETEhSeWSKHq+3.9RItgP421OwF6nGW2+LTL9.RmGtPjQge4LcM2diIT7OUrGOLW.K5E8OLyJGpPts1N6NYxrMK0a.bVdlsEAHoHoX.R9GFEs7M300XKauTQPgO1PZA3aLxKi3EZIMcJdn3BSsgFX2nUbvX2a.voJRZdVlbpit6nv6Lu0JCYVg38QM0cU6EOFWHFLBNMuKvnWwa2FUExiq5F.vkP09x2CUpgD5OomGDnSlxCbCBifCFNHRUGrC+IV.VOdUtk3ufBhiXwh+YCo1ZB7mxAOvxfzBP95xsgru8Uz+ZxzAe77EKy3HkZOLENd4LOwnVdlsUYu7sJQxjtP4A15ryPfMPTz1tdniYCXtHdumg8NyaQgP03u7efGuAyxdOg2fYmXvbislvf4lXv7r2Wzav79CFDeT5.h6Yl184audeGhVIJ21gu8z47bRP4Blmwhen64zC6pbZMMMFY0yjpqxHI3veIVZ.TGfqO5fFfNBqavNknLzABdqcHUAXl20UhEOFbK3B9FHnNozfEXgCL0fgVtFVE1QFwpvfc7ikO.70gjepg5xK.pQb73ceEdTlL8iNJr2.lGviIBMokXwPw0E96r2fSyKvTyGgp6brW8YRGKRR.qMlLYr6CXFq2DMPryGA82CYKbKR6M5zfc7DuBjtvkhz6fpB92ZPmf77VdX8Oi1Ie57laW9y+zV6UezVsxkqxdlz8eYmR0J70CaMpQ9s1yg9BkLE1u09C2pUiA89pNewwe0KpV6K6ThtUizUfJFO+v7GMZupm1dmCal9n5Mp.D694lco0M+hN4GwHUtQ8F0pPpAjO6zW7hRo6nVZmdkfHX9YGXmQBYutAZvPCWcoKbyVL7z1K+Idc1XicG6FHg+zU3tEGBDi7tz0JQDfBgR0cuXfJFNNfJF4M1TsLxhf6GE.2B.fMIMefoUs2LtBMuTDMGjh8HrMzUgntNV5fy8KFahrJSRgYaoZjy8C6E4LgenvKxi7iQDn0LC.PmzwjEpCjWjU7uFoMB5.VW0I8zbNsIHN48+P6ASaWo8.7E7eCbeZnSONZkw.nvmGkVw+ZQEWhEKMsGs+127M+8Gqzmblv54QU96+1u+whHkkbcgdjjBKm+028c+6GWgzACmsmPmEJJ8tGTqfZQLHXGRDTgjj9jhu8PET95Dnh+LEp3bxP0cQdkXnn2kFDmHXpwiMoIB6dQd72TDHK60OD33Y9NLF3krFh7RYSy9Cv7JZlq11BWj8cDCdKjBr742DGubieN+c4+.9Th7SHfgg0hP1K49k+my58KaMy2u7gptf5OxFScrLch5.QFneDznmSXhOygTyl7xVr.HgouqI1N1g9gGWCVjwNGEr6PadjH+R7B0ryhW10VegUPGsuuP7GSaHK8+c2g8G.82Fo4sU7wnhNK+QUuDSbL9.jWTDepQcraXRM8K3OXWuEApYsaWRzPVwsf7B1OlxCK5GocLoOo39fmG1tAOzzbYKxds+IGhc+5W5kaheiexe3duDK9i56kXxdsQw1q8BuQ8ZOuYEx813Wc7mxJ7AYVgHgYFetnjsEoaWclygjnU8PThFqcRq17eaTA2G9GeQ2Gd4gttPTC1c.eGj.EdjNcpxImAYbanBZGhaTQHN0IMSWIO6PLq5XAswBXoYT.voSX1bLbMV.gDv83BPou9TPHwLZB.IXZ6tGYz02PFcgXQHZ6QMaOo.jKNk.tmm.fxtaaV17btHd.Rg7xgraZaL4YawDBF2FIhszBS6Rt96mqfT5A8fZPlOuoagpRwfq9Q5jKB5KIl7Chn6lrZMXB3gH+3egFXrjXQ303MA+qPY2Lc7OWCccLT3jJjsMNcwxCEQWc9zxkfO1Y2zoa5zjSX100CP6Sncc6MaZpOWSrmNcZN0p5xbgtOxK8nBTsFu2zK2CJVg7KPGNz0Zn6aAQceTilUUX+5mdBK5xd1DxcYBoJUaJQbuYzsbYzSMMzhwk9Gy8Cj6m5G3Muefkls8sK+ulq2i8F7VGuyeeBucfxb0yvBWVOCKNUOCum+M.ktreCvDS8a.N.qZadhpHJG6TvM4T.KFkeodqfZvdWN6zw2F.UOehpZTQM0DyMuSL+7NwBy6D2Xdm3ly6D2Zdm31W8DYM2TZnqo3uEO1UO2rp3N9SHJihetR5+B3gvR6H
                
                1 Reply Last reply Reply Quote 0
                • JulesVJ
                  JulesV
                  last edited by

                  Sorry for bringing this topic back to life.

                  I want to make a peak oscilloscope using the rounding script of @ustk that shows only the upper position of the sound. But the max. peak level does not go beyond half the height of the panel.

                  What should I do to get it to full height?

                  HiseSnippet 2127.3oc6Y80aaibDmz1zmkRthjqWwcOcfvnnPoUmAocrctdnHxV1JQnVV5rT8cEAEIqHWIs0TbYIW4X4CGZeruceN52f9VCJPA52h19P6K8g1uAsyrKIEosisipsaBfILj0NytyN67meyrTsB4NznHdnldwNiCnZ520n8XewfpCHLes5aooeOisXQAdjwlaNpWOZn1liCHQQTWMc8YeBNK8ByoIe92OdShGw2gNgjl19blCcG1PlXB0VU9oLOuZDWZG1vLy9gUp6v8qx83i.MZVCKs.hyAj9zcI3zlwP6ojnAZ5+Pi0b6QVyc8Usroq7H20W1d8U+rGt9ZVV8bej85cWu6JDWxZqaooO+1tLAOrsfHnQZ5ysI2cb6A7W5q1f8YQrtdTbfsVaXmUjqw8bwiHRUq5.lmaqDSUjlltQqIFtYUFtOznAykkROqADYXNYEYMf5yjW8lMm5YmU8rxndmgJomQklSoR22nsSHKPLgCpO2wntufF1i.9orphZtZy76l0nJGlguXogjCn0BgAoqnzpVVkMWwx5AedQ3A7VQByCIglsH9TOayehYxZ6SEU4CC39v.yRKp3uHtL0hb697fC1y0Q.qQFxgqHNTSEo0FhBfcbQkhU6qjqdxNJEPCJnXfDRk1ojRIkpNY1KEQE6w76qXC1l.ZnfQiJ80EWTQaGpeewfE+wlqs5pqrV4hKt6ngf+zGNAQ.U6hei5zWTcnPA1B71h83iDLeZodi7cDLteo9On3WWnXg9K0CB22vyqj0QqZuUssqYUEj.vAOGC.0WLfEgZ9Sor9CDk.llpG4+wYcbxgTcFbBoP.SKhXPomYCtDqx1qZUdYKqeQYym8o1kMg+.G0mZCisVxJVfxONdoHGhGsCuFSTxRNsjs+KYtf.ePYyAkM6Q7hn34TslP9He2p7PeZXTIXGQYZlnkpuzGMDpjW3fVK9IdqU1.oBebYPdvtsIJRPXfnlbfMKjZcy4p6LDcya62GLvwmdD6HrY2eI0QZwTSB0AIipDOut.5wDugxYD6yBoAnKCVXA0NlrbAITIfRqDGjmH.St+tbAsoTRf26aJZdRV85cl7vbhPtmGHzyhsZ6NmEVxezvtzvxfwvaDMchPhddzCiWO5QVvMGUJZlIx8q6yDMCn9uNHOs37Z3a+r5aQDDDxIl1jbHf1VzCA.eE.TAisnQGH3Ax4FCF.jERtueB7D5QzX.HzBFJui1QYqfLN6ft7PW.ZfcL8zT2i3xFEkk9Kw.5TBU90UFHSvRo7pvJLAcXREmBye2+0e4KTknNEZJfiycG4QD4A2wRfwL.eVNDUD0zOhIFmsD4UFh+kUEuuQKlvYvYqiybF5H3YuNzw35juuw1.FqiXhBNmQsu5FnnngZ+KZjTOItZXZ4kb5..4mqLBlcoqCmn3xj5+ViIIpAHZRH.o1BleoHxv.O5dftW1rqG24.LZ8zY2AJUaSbFkbhKuLMf.yeosV1muyRU+peChHjAYfFfMPUCNo3GZClAwBTisvwX7Rapuqbv+AdhYZmZv.l1ILy.irKU7Rd3AR2T720zeOzmrfwF9diONTaevtiAr5umATvYIKMnFJ+kHRBKNTF7TRZs3diCFv8YNHI0LRT6MFBEZDI5NzAYGByCi8aOJBP7ba52FlrrsUL1aWtK7s4qQb.i5XrhElCgXlP.KV5MMvMUOmD3fVVUypoLQ4k.vnLWf5MTBDBMzBQZ.ekQPswnjm2HfRNPKmNbGPGBoKIYbVaX7ZtfsaNz13QOJAB+DA4mjBLttuK8n3XlVjPXuDzjb6DXeMsIvKcHgPwc4DdcyVlWhi.TmYvy6cMpGsOxE5LQaeL9F8OZax4GLjHiQlppNYge9HEy6X7kjCoxFNk9vumbbOd3PymPA2KhcZeUbGmfK8cbZ5H.UnSHwOJfGQsmL2EdUa5PVGnrYjc186DqX4r7RWQNpaQEi7o1mlTtYglhZfoHqJTIgXlY9gUf5z4DFLNmjZvRJg+a9mewe9wa6S.Hn1T3j61LxALLncNqUs0HncSY+mYj6eMC4kyR9ojPWvG5jqn0rm2M8rmxa5M+00M8l6xUT67Uuat1TtZrlYqGWHQeayPDos8Oj5AYzR88CfT3djQdhDp4SIav84In8SB.1iB0s52mlKt5LObaHDvMCxFOuG0iRhxjl98qrCf1SBaHAkmp12reiuv9Y569XCk5Zh3HlWS9vq9PtyssyYuTscd0GycekBaXrSslwIFv2LSUe6Kzn9G1jEv8HXgwYpER+UifFGR3+hd+iEqfH90SJXT4uc7GWIo.Sb0ozXtcn8g8LqAnCEtizIw0ZOjygKn62OScjW7s+w+zi2gyCT.qt4PRG.AxvMQgKBmSLfX6vaPhf5wUwdNyxrdeen2B0sayRu5nHAeXxAP1AQaAMPVIV+YFq8vkfmd+H7yOqJ7wJMuZFqc0klMykLd86JiDRc4XLwa4YXJMNMH7sDMd5ul2ab59E5uWH8cZKKw7jDU46DSvDobdc6gcIA8BmqGobuRAsedkynev5PUqPQKDm3jPbydUEWO2kFGFORl2n09uv5c26+Yb3GeRv2W8IFeddv2W7sa9CtV.e+8exe+Vv2aAeeKD787zXrmZ7mw6clNH+.CIV66NJ78vWes4+2uk0Mx6w6MsJ6xutprPKx2qxsUYuEL3VvfqE08FFL37MIMXG8tiG7iLZF4rro70XXdM8dLdKyQdSrGCINg7m6n9QsPL1EjTfysu72wnfQCbros1gpeHfIF1gLW1ycbxKpSsvkm1EtxztvGNsKb0ocgqMsKb8ocgO5hWH91u2XDbmEUdhlViVaqtshd5UkzmU6+B7fxCb
                  
                  Panel1.setPaintRoutine(function(g)
                  {	
                  	g.fillAll(0x51DFEF0C);
                  	
                  	var h = this.getHeight();
                         
                      var z = db_pkMeter.createPath([100,0,150,200], [-1, 1, 0, -1], 0.0);
                      
                      z.scaleToFit(0, 0, this.getWidth(), h, false);
                  
                      z.roundCorners(100.0); 
                          
                      g.setColour(0xFFFFFFFF);
                      g.fillPath(z, z.getBounds(1.0));
                          	
                  });
                  

                  Peakkkkkk.png

                  HISEnbergH 1 Reply Last reply Reply Quote 0
                  • HISEnbergH
                    HISEnberg @JulesV
                    last edited by

                    @JulesV The problem is the createPath, try this:

                        var z = db_pkMeter.createPath([100,0,150,200], [0, 1, 1, 0], 0.0);
                    
                    JulesVJ 1 Reply Last reply Reply Quote 1
                    • HISEnbergH HISEnberg has marked this topic as solved
                    • JulesVJ
                      JulesV @HISEnberg
                      last edited by JulesV

                      Like @Chazrox say, you guys are goooood! :) Thank you @HISEnberg

                      ChazroxC 1 Reply Last reply Reply Quote 1
                      • ChazroxC
                        Chazrox @JulesV
                        last edited by

                        @JulesV 🤣 👌

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

                        45

                        Online

                        1.7k

                        Users

                        11.7k

                        Topics

                        101.8k

                        Posts