HISE Logo Forum
    • Categories
    • Register
    • Login
    1. HISE
    2. It_Used
    • Profile
    • Following 1
    • Followers 0
    • Topics 19
    • Posts 101
    • Groups 0

    It_Used

    @It_Used

    Steinway & Sons

    24
    Reputation
    18
    Profile views
    101
    Posts
    0
    Followers
    1
    Following
    Joined
    Last Online
    Age 21
    Website t.me/MiDi_CC64
    Location Russian, Siberia

    It_Used Unfollow Follow

    Best posts made by It_Used

    • VSL Velocity Histogram

      Hello, i created velocity histogram looks like VSL, maybe it will be useful to someone.
      This is a not ideal version based on 128 sliders (i know that need uses sliderpack for more effiency). I want update this in the future.
      Feedback on the quality of the code, suggestions for improvements, and reviews are most important to me. ❤️

      Screenshot:

      e952b42f-cf14-4b2a-9211-b2c273508403-image.png

      Snippet:

      HiseSnippet 3779.3oc6ctscaabEFFzxzITI1wIMM8bJpZZBUrBMAHAOj3DaKIKa0HYqZ43C00McD4PRDCAvB.JaEW2ld3p9lzWm9hzz66Z0tGfM3AQJGq8t9lnQQNKxYlMlM9mu4vOEzRaEFzRFEEDZja9aseeoQtWM+166G2akdBWei0W0H2YxuoHJVFZlVzx62WDEIaajK2bWUUPtBmzH4qu9hKK7D9sjiJxv31Atsja3tqa7nR25Repqm2Zh1xa4t6Xst5kVuUf+JAdACf7Yt7kM5KZ8PQW40Eplch7FWSD0yH26mW1tS8xsrDssKKqWGdSMKmNxcpVUZUuS8c1oovtZCQCKibm5JsciCB2NVDKiLxcxkCZu+18BdjeZGba2H2c7jp2XYrMzyoEuVfWa0snpTiU5450dqLgJx.tJaMR1lKU1dy7a511cX4ijuylTg4nHFW.ychISu4lH8rFO8JOV5MiTJ2XozISSoWO+1sBc6GOpFU9jOeTqIShzVYbh+0Yye9yattuabo48AEOBTeo4skdWyMJNX9mL+7Ef5WU1xSDJM6oJrqX24K.iYQwl6IBM666AMOnka79IwzMTrq4GatRferzOtjnc6sD9RuhKLqFtvRlkguW7iluvrptTjLt3BOxscbOnkV1MLOmoEzZSHmNmiYmvfcM8jchM2IHrsLbogEF51sWVokdVW6dRUKgKdkjjXh61HOWH7n4KntM2ChGtst+CR5bkf4J7b+Roob29w6aJBCE6WJsoQwhv39AQ2EZuSRy2VUhITDDUf+cMK5z+wKdfVeuCo02ahVeGnUVIs5NJUwrn0n5tFTmc4jJuVxs0vZ6DDZVzEpFp007BJkDdw4N2hlic6pjW7VFB4IyWnf5d99tOXxQyO0OXmhKnpZAXzvcowtcm3s2SomYWhIGHuyzUMbb3ZSWWT79dRnpEtsLL1skvagoaytt9KffzApP7XE5zXVWVY+sgQPUbkJW1ZFs.lTdK4iiWNPcM5H7hjynQsBC77tSOoz6vajzW.SoUKJrgTD5+LtZR+12V3MPdC+UCEceFMDxsjFtUP+A8Upy0ClktDLHRtszWwR6A3uRKJCeMcK2KcYmCqGS5qhIw8T07jChTNi.pMEOTN9zRyvfA9vRqSRUiO7nlW6Z99pK34gACmEmtarrqLC1MoqFex92beY0v7CLU+Ctref5pMryd57yCWxsfEwgYep0rFeIwjEwRpy0uKrtX5RE3TUrXnSyV4rzgsjSxk3lACf1KK1YfeK0b7hcWLMeguGaFIrZMDpvOYgVWEAolYlLWekfPeXhpheSV2.KV.uIFVktTWY7FAvTkkUxQTQmEyZw18DsCdTeAr1wno0sBkvdQaAEVLogiZjZF+MSkzaJaA4RWOYQwRi2+IQfIdn3QlQIAmjocKsirqq+Fh8kgEGgUcK0FZ3pgA8S6n0fkrS57Q86RlIch5TAQkdjabuK60umnX4GWN4K0TVamEWxzdIy6qd2CvKrneeu8gyt7vCdshCGj04vTrzL5fYd2cRSZXXJsqKNqLXkqn9ujLn7h3krCb1linLsGRGl9C1cGnMlB+1ld.UDUBtzOG4wDJAlGPDqAioEW3lhuncOguqZx0XZtZ0rhKTFJ89NvTg5KYBe23Aika1Uew121US5bXBuMlAVkGlBGhPNr4pVCeW6AKkrJwnr1o1K1r1oVVV6T6Hk0plenYciluXy5FMyx5FMORYsp4GZVaU9EbZCcPVdCuDSb6mqDOo8Sm4OM4rcv56iVOWM8ac+1vwIfihugnyvkzWIYsPSOQGyfc9B3xWZ7S6pVSGZ8TqclrX6FAAO7x9sWCNJPxZKXiKEBKBpbSsV1x8KntY2.lqKB2N4DWpccGtWvRpNF2P3nszzHM24Yuzz8gdnDrEi39kAUp3v2U4AvFv1Kp1cTU1dpM8yJAtnIYVZKsg3r.EeXyf2Obyu6.wXMtzO0wEF1T03PIOoe23doaqO0F2SIsnrlts8DCpY1KCGNZlsUZrpzIFIyZKjSWwG1jRhijIweijQ9hSYInCDznUtcy3mgCdPO35qVDeXII8yPPqHd6kHG6AWfjKFTXRoEb6.kp16N8zVKZdAPvT0lVcg8JoRfUB1sefOvdoaoBaB5jddNUCl7nZETGroPAIzLyot3exAt1CCchVoF3KaWVc5rIJGlrs3nt3o340FdlnLAe3PRorWo5mjRVQ34sCX1ezwfRUmTrWUapdm7+loVW3.haFuMqNUkUIkUzVIMoG16pxXS+f3Qiokl+fievs70gVjcXNHGgTzSwjlJddSvksnqLQYF1D0AKgzHChmbPScRDXtiJOSFRvFM9.CLpa9tuq4Lp5BiWX5QZWb5oL3v3zgeNyJ3ocUHQZbgx3Ag9oSl9n4OvWCkg.ekJbC0XzSvEJUCPcOn.N9vyTRmR1O3UrSmTIEpxbr5TKupLVoNl1LpNcj7YDXwziUsjYxhSCanQtSN4m9R9C+SeY7ObnVoq1OVCC7UeH.2nuz+v9HiLvsHLLx8UXVAMMN4yo4L3mSS5x+FtsMx8R4UZXYijD1HWgSk8woY7bGrEmfs4DbENAWkSvNbBtFmfqyI3FbBtIsfe4THoLqnsXEsMqnqvJ5prh1gUz0XEccVQ2fUzrXMaVrlMKVylEqYyh0rYwZ1rXMaVrlMKVylEqYyh0pvh0pvh0pvh0pvh0pvh0pvh0pvh0pvh0pvh0pvh0pxh0pxh0pxh0pxh0pxh0pxh0pxh0pxh0pxh0pxh0bXwZNrXMGVrlCKVygEq4vh0bXwZNrXMGVrlCKVqFKVqFKVqFKVqFKVqFKVqFKVqFKVqFKVqFKVqFKVqNKVqNKVqNKVqNKVqNKVqNKVqNKVqNKVqNKVqNKVqAKVqAKVqAKVqAKVqAKVqAKVqAKVqAKVqAKVqAKVqIKVqIKVqIKVqIKVqIKVqIKVqIKVqIKVqIKVqIQVq.9Y4VlW3V7B2lW3U3EdUdg6vK7Z7BuNuvavKbdTmEOpyhG0Ywi5r3QcV7nNKdTmEOpyhG0Ywi5r3Qc17nNadTmMOpylG0Yyi5r4Qc17ntY9yT3yVeUQrP8aw.9iIeqvf9pGva0OU9bqJ2yskL82ogB4WUF8v3f9IsEeLJLxcpzt8zY+FOnd.cS502J+rd3aMdrQt74T879YuH44QWkT+cLmReJzUk71XIpex8C6wy9M9ytOoOxm0GpWj7vqaja97YO75FYO24peGX9O+i+8+byc15h6Jd7nekXLuzvDK2TI1ahkL1yld1syXOI5YEcfm67gsbxmx7rhO3CKtp+N66k1e8EgfFLlXbHp7dYO+DoWRiif7YkJemho78NGSkO6T46kXJekOlJeURkuWlo78gGSkupoxWAlx2pGSkOmT4adpx2odCTaNdJe0RkuWQKejju5ox2qpkORxWiT46zZ4ij70LU9NiV9Nhx2vmmyj6kWSqezzOz2wY05GM8CMd75Z8il9gNOdCs9QS+PqGeGs9QS+PuGuoV+noen4iu62F0uCnKOux4QR+P2Gukl+nwen8iumV+noen+iuuV+Hoe1n+iefV+noen+iend+CR6eXi9O9QZ9iF+g9O9wZ9iF+g9O9IZ9iF+g9Odas9QS+P+G+T87WZyeQ+GlZ9iF+g9O9YZ9iF+g9OVPyej3uJn+ietl+HweUP+Guil+nwen+iegV+noen+i2UqezzOz+w6o0OZ5G5+nnd+CZ6ef9OVTyez3Oz+w6q0OZ5G5+3bZ8il9g9OVRqejzupn+iOPqezzOz+QIs9QS+P+GmWqezzOz+QYs9QS+P+GVZ8il9g9Or05GM8C8eTQ6eij+spn+ipZ9iF+g9Obz5GM8C8eTSqejzOGz+Qcs9QS+P+GMz6ePZ+CGz+QSM+Qi+P+Genl+nwen+iORyez3Oz+wEz5GM8C8e7w54uzl+h9O9DM+Qi+P+GWTyez3Oz+wkz7GI9qF5+3xZ9iD+UC8errl+nwen+iUz5GM8C8erpV+noen+iqn0OZ5G5+XMs9QS+P+GWUqezzOz+w0z5GM8C8ertV+noen+ieo97yjN+bcz+wmp4OR7Wcz+wFZ8il9g9O1TqezzOz+w005GM8C8ebC89Gz1+.8erkl+nwen+iekl+nwen+iap4OZ7G5+Xas9QS+P+G2RO+kz72Fn+iOSyej3uFn+iaq4OZ7G5+3NZ9iF+g9Otql+nwen+i6o4OZ7G5+3Wq0OZ5G5+3954uzl+h9O9MZ9iF+g9Odfl+nwen+ieql+HweMQ+GetV+noen+iemV+noen+CgV+noen+icz6ePZ+iln+iVZ9iF+g9OZq0OZ5G5+Pp0OZ5G5+niV+noen+itZ8il9g9O5o2+8Ht+K9m28xnADWM.dDAvLADcf7EZAjn.hVPdnV.IJfnGDOs.RT.QSH6p2Dg3lHnKDeMARj.QaHAZBjHAh9P5qIPhDHZD42qEPhBH5DITOEl1T3r+TnGoIPZDX1eKzi0DHQBDchLPSfDIPzIxdZBjHAhNQdjl.IRfnSjGqEPhBH5DYe8TXhSgQmHeol.IRfnSjmnIPhDH5D4OnIPZDX1eTzepV.IJfnSj+nV.IJfnSj+jV.IJfnSjuhr.9ZGyEPzIxelr.dli4BH5D4uPV.O8wbADch7WIKfu5wbADch72HKfux29NH8VgAsjQQAgF4N4sRDvyleyf1C7DwAgqzS35ar9ppBuJ7RrB2.eik2uuHJRBpat4V2ONIoTIzISSmu9h4NwUZ6BWisiEwxHibysbP682FTE3tbt7VF2NKgmKeYisC7BRekwJ8b8ZOLqTe32Omo3qmeK23V8lcNdhYjiFFuPxw4RywSm+Jc5HaEOJAOY90t6D51++59aFLH10u6lh3PWEuc8A6tcvfvVRn288kdQJt3Dp4KouubFm.zT6j27eguvJsTuOGVoUVkF6J.98yaE3GCXLzo4d4jRfbxWrqZ1R9MUu2zxXOE5NtNuK.3edqVSdolJPapAVgZfUoFnC0.qQMv5TCrw2bfp0et7f3fcSm1XXr4VWYUQr.Xzqjr.UBsZ7+.J9soE
      

      Code:

      // Init.
      namespace VelHisto
      {
      
      	// Declare histogam
      	const var pnlVelocityHistogram = Content.addPanel("pnlVelocityHistogram", 0, 0);
      	pnlVelocityHistogram.set("width", 128 + 10); // +5 from left border, +5 from right border.
      	pnlVelocityHistogram.set("height", 30);
      	
      	// Declare sliders
      	var velo = []; // Initialize empty array.
      	var startposX = 5; // Start positionX (5px).
      	var startposY = 5; // Start positionY (5px).
      	var W = 1; // Width (1px).
      	var H = 20; // Height (1px).
      	for (i = 0; i < 128; i++) // Declare 128 sliders.
      	{
      		velo[i] = Content.addKnob("velo" + i, startposX + i, startposY);
      		velo[i].set("width", W);
      		velo[i].set("height", H);
      		velo[i].set("style", "Vertical");
      		velo[i].set("min", 0);
      		velo[i].set("max", 18);
      		velo[i].set("stepSize", 0.001);
      		velo[i].set("showTextBox", false);
      		velo[i].set("scrollWheel", false);
      		velo[i].set("enableMidiLearn", false);
      		velo[i].set("sendValueOnDrag", false);
      		velo[i].set("showValuePopup", "No");
      		velo[i].set("mouseSensitivity", 10000);
      		velo[i].set("visible", false);
      		velo[i].setValue(0);
      	}
      	
      	for (i = 0; i < 5; i++) // Make left border rounded.
      	{
      		velo[i].set("max", 8 + i * (i / 0.5));
      	}
      	
      	for (i = 123; i < 128; i++) // Make right border rounded.
      	{
      		velo[i].set("max", 18 - 8 - (i - 128));
      	}
      	
      }
      
      // Paint panel.
      namespace PanelPainting
      {
      	
      	// Start painting.
      	VelHisto.pnlVelocityHistogram.setPaintRoutine(function(g)
      	{
      		
      		// Declare assistant variables.
      		var CornersSize = 5;
      		var a = this.getLocalBounds(5);
      		var Shadowpath = Content.createPath();
      		Shadowpath.addRoundedRectangle(a, CornersSize);
      		
      		// Draw shadows.
      		g.beginLayer(false);
      		g.drawDropShadowFromPath(Shadowpath, a, Colours.withAlpha(0x000000, 0.25), 2, [0, 0]);
      		g.applyMask(Shadowpath, a, true);
      		g.endLayer();
      		
      		// Draw gb.
      		g.setColour(Colours.withAlpha(0xCECECE, 0.20));
      		g.fillRoundedRectangle(a, CornersSize);
      		
      		// Draw velocity numbers and lines. 0.
      		g.setColour(Colours.withAlpha(0x000000, 0.25));
      		g.setFont("Rajdhani", 8);
      		g.drawText("0", [5, 17, 7, 8]);
      		
      		// 24.
      		g.setColour(Colours.withAlpha(0x000000, 0.25));
      		g.setFont("Rajdhani", 8);
      		g.drawText("24", [5 + 25, 17, 10, 8]);
      		g.fillRoundedRectangle([5 + 25, 7, 1, 16], 0.5);
      		
      		// 56.
      		g.setColour(Colours.withAlpha(0x000000, 0.25));
      		g.setFont("Rajdhani", 8);
      		g.drawText("56", [5 + 56, 17, 10, 8]);
      		g.fillRoundedRectangle([5 + 56, 7, 1, 16], 0.5);
      		
      		// 89.
      		g.setColour(Colours.withAlpha(0x000000, 0.25));
      		g.setFont("Rajdhani", 8);
      		g.drawText("89", [5 + 89, 17, 10, 8]);
      		g.fillRoundedRectangle([5 + 89, 7, 1, 16], 0.5);
      		
      		// 109.
      		g.setColour(Colours.withAlpha(0x000000, 0.25));
      		g.setFont("Rajdhani", 8);
      		g.drawText("109", [5 + 109, 17, 12, 8]);
      		g.fillRoundedRectangle([5 + 109, 7, 1, 16], 0.5);
      	});
      	
      }
      
      namespace veloIndicatorLaf
      {
      	
      	// Create laf object.
      	const var VeloLaf = Content.createLocalLookAndFeel();
      	VeloLaf.registerFunction("drawLinearSlider", function(g, obj)
      	{
      		// Draw gb.
      		g.setColour(Colours.withAlpha(0x000000, 0.50));
      		g.fillRoundedRectangle([obj.area[0], (obj.area[3] / 2) - (obj.value / 2) - 0.5, obj.area[2], 1 + obj.value], VelHisto.W / 1.5);
      	});
      	
      	for (i = 0; i < VelHisto.velo.length; i++)
      	{
      		velo[i].setLocalLookAndFeel(VeloLaf);
      	}
      }
      
      namespace FadeTimer
      {
      	
      	// Declare timer.
      	const var FadeTime = Engine.createTimerObject();
      	
      	// Declare fade velocity indicator function.
      	inline function FadeIndicator()
      	{
      		for (v in velo)
      		{
      			if (v.getValue() <= 0)
      			{
      				v.fadeComponent(false, 250);
      				v.setValue(0);
      			}
      			else if (v.getValue() > 0)
      			{
      				v.setValue(v.getValue() - 0.020 * (v.getValue() + 1));
      			}
      		}
      	}
      	
      	// Start timer.
      	FadeTimer.FadeTime.setTimerCallback(function()
      	{
      	
      		// Call fade fade indicator function.
      		FadeIndicator();
      	});
      	FadeTimer.FadeTime.startTimer(20);
      }
      
      // Get note velocity.
      inline function getNoteVelocity()
      {
      	local i = Message.getVelocity() - 1;
      	velo[i].fadeComponent(true, 1);
      	if (velo[i].getValue() >= 0 && velo[i].getValue() < velo[i].get("max"))
      	{
      		velo[i].setValue(velo[i].getValue() + 3);
      	}
      	else
      	{
      		return;
      	}
      };
      
      
      function onNoteOn()
      {	
      	// Call get note velocity function.
      	getNoteVelocity();
      }
      function onNoteOff()
      {
      	
      }
       function onController()
      {
      	
      }
       function onTimer()
      {
      	
      }
       function onControl(number, value)
      {
      	
      }
      
      posted in Presets / Scripts / Ideas
      It_UsedI
      It_Used
    • RE: Few questions from a newbie

      @ScreamingWaves said in Few questions from a newbie:

      @d-healey i would start simpler as well, but that's what i need at the moment for a school project, and i have 5 months time to finish it. Would it be that hard for a newbie?

      If you have such a small amount of time, then don't waste it creating a plugin without scripts, because you'll probably do it quickly without revealing your full idea, so learn programming, at least from the same videos from David Healey, he explains it perfectly, I only know two languages, it's Russian and Serbian, but even with the language barrier, I understand what he means. And I have experience using Hise/in programming - only a month, or even less. But I can already do many things that I couldn't before, and I'm proud of this result. Of course, this is mostly due to the participants of the forum, David, and all those who helped me, I am pleased with the fact that it works.

      posted in Newbie League
      It_UsedI
      It_Used
    • RE: Hise won't open on Windows 10

      @bendurso I had this on Win 11, and after clearing AppData path (Use Win + R, paste and run it) %AppData% delete folders HISE or HISE.exe.
      You will lose the settings, but Hise will start running.

      posted in General Questions
      It_UsedI
      It_Used
    • RE: Display slider value with custom font, size, and position

      @Yinxi get resault.

      Update:

      • Changed visibible values after comma/dot for knob and label (from 1 to 2).
      • Some comments have a more nfo.
        4bca0896-7e9f-4adf-ada0-b70a75b8bd99-image.png

      Snippet (Copy and paste in Hise by shortcut Ctrl + Shift + V):

      HiseSnippet 1757.3oc0W0saaaCEVJIpK1XsncqO.DFX.xCdpxw4mlELrzDmz40lFi5ztsqJnknh4hDofDUR7Jx6VtbW0mkcytt6PRoHYGmzrrshUiDXyCOGxuy+G1Og6QRS4IFl0OXbLwv7ysFLlIFs8HLkYzqqg48r1CmJHIHMosFGiSSI9Flly+TIAyZKXn97Ge+V3PLyiTRxv30bpG44zHpnjZ+MeFMLbWrO4.ZTEtWdyddb117PdFfm4sbMhwdGgOj7Brjs4rL9Ab5HCyu1psWvJsWcIuNsW0a0.+0Wcs06r7vgAqE3hwqgWY3Zq7308bcMLuyN9TAOYf.KHovgtE2e7fQ7SX5K30zT5vPhbQaiAvMqIar8HZne+BiSpgg4B8KMUyqMUOzZOpO8B5klr6q1.UJQUil4bWGjZWERtWOjLq.oEzP5AVC7Rnwhxcj34KyoVhn1S.I8tFy8UKZ8nGg1CeDA8pdN02lyDDlvIBHraBrnGrNI.6QrWw0sEpsqayMpWGDoKwKDmPPQ5HEOok.QBBHdBjc.OAQNEGEGRZ5TG7voBzw3DjL5A8cHU3lygDwNJ9saHo2XpC9PIuGw3CAfgj3JgGFRRJNtiXCyOsBLi88eFvtci7sZzBsjq7+7Cd.QT4PiS3wjDAkjVp0oDoULmLn9Q+3f8eQ0y6s0aH.idiuE0Pa.GDR8IIMZUuA0WR8BVq23TXMb+0aLt3GohwgJYkvTxRD02OjzmmRETNC14aZujilSR7.5uoX10wsMb0fBbvHZJJFm.oFJSt1ljhXYQCIIoHbflbTD9Q9bQKDM.Mlmg.0BIlTVAG45zFgY9nSRnBBbyq6rbavIElAK.1ILDXpfuQ7Lg5X.+klMWjs56lZ1cjJhF8ttJ3GgkJu92oYAAT4xFZknmFSLBwGERYDHpveqV4nXDAb79a4f5xQLtPFUwNjncXQbeRKsd.+4gYngDDNNNbLBCG2gXA8XRQDnL.LMhyEiXPvuTMhbPuJkfzvAYmqaPjs.QExSLlmJfsf30F.tNh3e.WiZPGfT0WKU0973rXI0sHg7SJ15.xohs3RcL.GlR.pDFFxmkUDdNnfrhcNapPbs01mlFGhGiBwCIgEg2gCCU2XWXyIiwetjM6FUYPEoOcn9LNbYjffxN7CGxO0oeo3dEHJC6yXTFDCiCoP4EIYAXRjg.ZWdtsNSjAJ8TQh4NRsm1GMbLRbBAeTYlpSQpzD4RA.9k8Hj29Kw+pOHNc1YISd9R4bzhmmfAQxt2.ASAUCwCJN.BTPW5iq3zyh8gx66f8F8LhDmhjLRtoP2fCns7Rq2dsk6rbmGe1UVtyCGFND5B5TmxjYHfgi4IKPf3r75K4kCsgb8XNC7iszt6l0ea8Z0qkGAn84x62AYuOSVYHlFBIQwgYGB2Vp.mHxh0djKtj7TpLAOBRojfY7EUR7ySKSHflJK.4qpbkBIM0pFxHCqr0AAsP6vfKi33yy.60A7AhDHDzVgWHjsYyMjF+YxjtJgLWNuVG5XcmxqpjWQIKccIzITwHY0KHA+Dhp9kRUU6BkqVCJko9r9JcVE7JK4Tw3o7G402pIs4Rc5IB.WCyDDa2BK9FfLmswE4SvkrcgSoryQSov4Nssycu1S6MatQEG8K3Bx9LasC8r5no2JHXl6U1mblaKG9J45DzVaXmHbBXDF1XxIXrt5IXpNTkm1pTgQNqGToX+XR95KOiiQtoTNsSNp.VEpYctmU01tFTXTlZV4VQCEjyGs77+bTmyMdUutXAt3ffyrrTGPqK4XXPU8PT0r5RRORvigYNuv+ACHeCt1SgE24g4y9Nt5hIauWNzq84QUGh9WNG5WVc.5Ia2XX9YVp1MFU50.d.SIqS0nofrwk0g6ZUoxsREtmU0TVsd76yROJqfIo9t28t2KoVTAFtAqhJvFE0UKUmNaVTpr.bSTmTRzL+NLLWzROGB7fgKMmKLgM2OKDKlbraoOHeCoQt5LtxYWYfweb0Gr7u1r32TH9.q9Tg2nYiw4lAFg30+KvX9KXtqkdn6R.tf0t+7Ggmqr3EO1jJeWvSKt96nbgW0iLUIxcIvHLUMP+D0WLpRFzly3Yn8XGCo584P20oMuyei0u+FuP75iATuU4eRb5B2Lmvt7Pe4odE0Vug38KrTl7Ok.rJj3SG.eeq93+ODP7RX9HXRq8vvfMxtJuHKZ.Tn2i.PkwHgxd8lyI6nnW6VTEe.g4qV7d3S9lsKplK2rcwleTtiHrWB+MEOIFRMWTQAzalpGUMq8jqQsmXLgh1zz234M4QcIAW51JXmaqfKeaEbkaqfqdaEbsaqfO9CKnb3lmj+ZDHOwvXu96nFqyzbG0zOpTFi+BXhPCHN
      

      Code:

      // Make UI.
      Content.makeFrontInterface(500, 100);
      
      // Declare master chain effect (for example).
      const var Gain = Synth.getEffect("Gain");
      
      // Declare gain knob UI Controller.
      const knbGain = Content.addKnob("knbGain", 20, 20);
      
      // Set gain knob properties.
      Content.setPropertiesFromJSON("knbGain", {
      "type": "ScriptSlider",
      "id": "knbGain",
      "x": 20,
      "y": 20,
      "style": "Knob",
      "middlePosition": -12.0,
      "stepSize": "0.01", // This parameter controls numbers after comma/dot, if you set this parameter to 0.1 and write -19.41 value - then in the out you get -19.40 (-19.4) value.
      "min": -100.0,
      "max": 0.0,
      "suffix": "", // If you need linear dB, write here dB. Do not change knob mode, this is can be apply a negative effect for smoothness them. Use suffix (in the fact it is postfix).
      "linkedTo": "",
      "showValuePopup": "Below",
      "showTextBox": false,
      "enableMidiLearn": false});
      
      // Declare value display label.
      const lblValueDisp = Content.addLabel("lblValueDisp", 200, 20);
      
      // Set value display label settings.
      Content.setPropertiesFromJSON("lblValueDisp", {
      "type": "ScriptLabel",
      "id": "uninitialised",
      "text": 0, // In the future this parameter can be changed by tweak gain knob.
      "x": 200,
      "y": 20,
      "fontName": "Rajdhani", // This parameter can be changed font.
      "fontSize": 19.0, // This parameter can be changed sise of font.
      "editable": false,
      "updateEachKey": true,
      "textColour": 4291743438});
      
      // Declare gain knob callback.
      inline function onknbGainControl(component, value)
      {
      	
      	// Set label text. (On compile, plugin startup this function apply automatically, if you do not create conditions).
      	lblValueDisp.set("text", Engine.doubleToString(value, 2)); // Engine.doubleToString need for control visible numbers after comma/dot in the value. without it we get this value: -7.400000095367432.
      	
      	// Set gain value.
      	Gain.setAttribute(0, value);
      	
      };
      Content.getComponent("knbGain").setControlCallback(onknbGainControl);
      
      posted in Newbie League
      It_UsedI
      It_Used
    • RE: Display slider value with custom font, size, and position

      @Yinxi create visual mockup your idea, and i maybe implement this!

      posted in Newbie League
      It_UsedI
      It_Used
    • RE: How to control loaded samples with preset.

      @d-healey oh shit this work... How did I not come up with such a simple solution? 🤣
      Thanks again! 💕

      posted in Newbie League
      It_UsedI
      It_Used
    • RE: Few questions from a newbie

      @ScreamingWaves said in Few questions from a newbie:

      Но просто из любопытства: сколько времени потребуется эксперту, чтобы разработать что-то подобное?
      15 каналов, по сотне сэмплов в каждом. Чтобы загрузить и скомпоновать их на семплере TX16Wx, мне потребовалось 4-6 часов. А как насчёт того, чтобы сделать то же самое на HISE и сделать из этого новый плагин? Вот эту часть задачи я пока не могу понять.

      Advice (Soft):
      Channels split - Adobe Audition/Cockos Reaper. (10-30 min) (i have script for creating sampling template into reaper project).
      Auto mapping by sfz - sfz tools, or Manually write sfz with NotePad++, (1-3 h). Or Use Hise sample mapper (5-10 min). as I understand it, the idea is to create a vst based on Hise anyway, so the skills of using the built-in sample mapper will not be superfluous.
      And, the amount of time I wrote about can be spent even by a novice, the main thing is to get past the feeling when software new for you, and then the process will be more or less focused on specific actions to get a specific result, and when this feeling of novelty appears, then you spread through all functions trying to find the one you need. This is where most of the time is spent.

      posted in Newbie League
      It_UsedI
      It_Used
    • RE: Few questions from a newbie

      @ScreamingWaves I think it will work, but I can't know in advance.
      I use this naming format:
      Mic1¹_21²_3³ [A-1]⁴.wav
      (You can use many of your custom separators into sample mapper).

      1. Mic position.
      2. Key (numberic type).
      3. Fixed velocity value.
      4. Key (string type).
      posted in Newbie League
      It_UsedI
      It_Used
    • VU Meter.

      Hello i create a VU meter, maybe this someone is can be needed. 💕

      Screenshots:

      43cc2ba2-0bf0-4f54-898a-2276145fdc96-image.png
      fa90902a-ca67-47be-a25a-64e97d66a57d-image.png

      Snippet:

      HiseSnippet 1929.3oc4Z80aaibDmz1zHRsoMWa.t93B2WjupSgT9e5P+y4DaqbF0JVPxIoEAAGVQtRbuPsq.4J63FDf9Xet.849goeQ5Gg6aP6LKIMIkoUT7YmKoUA9O6LyN6r+lYmcmwoanzkEEICMLqdx4SXFl+Tq9mKT964S4BiC22v7tVcnQJVH46+m+8+gwiNeBMJh4YXZt7iQQLqrhg9y2+0OhFPEtrLRFFOSxcYGwGyUYT6t6ejGDzl5wNgONmzat6gtRwdx.4TvbV1x1XB08UzQrmPQwVxx3anQ9FlegEya3N1tNTul1rc1AFrsyVCYC1bSlyNC2Yvfuh1byVzVNFlqdfGWIC6qnJVDnzGI8Nuuu7LQ7B7LdDeP.CG3XzGV4XxF64yC75lhMQFFlVcyPpkiQp6a0g6wufdFhcOMCR1LxCZlKMOSxIuIYOeSxLmIsRrI8YV8cC4STYbP64WlPMyhbJXRwbMVh8ysdvCHGJ3pFU2SJTLgpwX5qXsCgAGBiCGRcY0ZYaWmrss85+1pUA4e1SIcXX7gGyMfFRUbonQUA3yh.+GC3qYW8MUqTsBH+9ZwXWLuFUq.t8HE4TZHYhHHQdxumjZCTOutTAKn1ZYrWqNooM9EXEUxH2Hhops1YbOkOHgiy1kw1mwG4q.9arExt5aKtOl.9QEWLp3lnKRMaSDROCHB1dplKtHZo6ImB5gUa3TgKhJ0Fsd0JfF.UjGH.+.ORQEZDfSAmeDn2JHbPATP4yiZLhoNR5RCdjbpvKpl1t0RrWe9egARsUJg99TO4YcoJ+bHnaHCh1Ph0zyLSHDb6gJk40i4BVwn.VMZ8X8pkMwXwMbjdZZqaTCOfx9gxIw5BhQFq0elpqSP8nONG03Ltx+gAS7o0ress9SchcilasN3CqSdAN5kytbCFEuR.dFqlZkos8N.+mVa1qqUwnFCgDLK7t5Hx3j3v24Z0V+AWqsl+Z8hsH+FxF0II+nChzg.KVsCDifXBzgFmVsKi9piXmBQ21qS9BRqMgIU+Jb5un4KIeIYCPrl.t05kIaHxCfwyro5cauofuZ8dr4btI2bGQDSGOfExcImxYmgaR9PRtUGNZwGvBhZKCwKoZScgLtyE5Wm76..v1ANgldDM2xEGI9NQxr.6MRPx4Bks9pKBPb1rrs7LVg2.BWLTRTrWqVH6I0ytfgewg.32aAlep8CKQaHMRs05Q+NOepfCIN2NlYQPuj34+.hoHjpwzzrFm.1e577jSgDdmH6qBgTt+vbg.LBeUNzFavuE+FnTVolzZe4ghgqs.ZnZ7OSTzatrmZAiWZ29is3kV1srQXbAb9+X6KSbBEx4cCmVvYtoE5camVHKE6B3t6cKmdv4lN8fykSObamivo73pYw4qLWwhkvXNp6cj3n2schia+HpONRf7d4nubhj.TsUuNGrmqWX6q7oONuD36z.dajyUJyF3yi.YvGHkyw4fdtpUdaYUxDxFFxh7KoZrdwbvBvubkYJjZgxxd1SSlv9TEVSRBxGWVgVIGO36fcaMssTPZDB0RrGMHX.TPeV4PIUCURETgLcQX5hUz6rYTohFFqzZNNoabbmmtFPIJoqBQJdhTwNFWt2nkjLKqgCKkGV7TnLH.VkxXGu9yYh0huMpNffASYWHHTrdwN.Xc0c.HeSIbiqkKmfRAVq9wSXIiubOBLRJ.D9smdHBcXaCRnAxMgEp3nIXtO6TtKKtIBUr1mE8JkbhV1wSjBTClqpzbuaZKFvJxM3dXGix7bFuF1Ol2GVuyS+Ecw3fVWUkzSn3xuQJ+5z1Dc4NYbOqNRuoATUwFqfm9SX.XcgtXfMnPDwUmmukTy1skUVrtszVF3gZ8JP0Ezb+Lqtbkqe416RkXuf2411dS5c0csNX3P3.alwthU6+zbaT0Mto74wlxOw54zSY5lNpMjUsd9iYhahFM9WW3FMdLjn9T1IvafhlHiXN40be1X9IvYfnBTmYFMKcFEntOSMUTT0wjJHEhEvsbiyI2c1MkXy7DgCfETFLtfl5vec1v+8Wef.6rTeFry8NNxE.FLXMOp1cJ7rjmimVcxOwLxMyS9angdfSysvoskW3Pl7Y1JdnNm7kzzyUus5C6GzLC+vSjcyz13Jo1Xe93IArCDvimfaEz13u.tFXHcZfJkZwlF2QJjS7kBta9ftdL3oaiFwJDXU5F5gJEbQcFk6uaOV.iFkcN8u8u18H3UFzP.mXWSrv48tE5k5u9UVwlKASjP9eiKfV9+Ku.pfK+NW7m7RG9+3TS4mkPffTblyUQXJ7.ZA.74IO2Igved2Rtr5P3DUnpqDds8rv+x2Tg1qrvwH3V5SmXZLsD.4eJYv5PhOcL36YAOk3i.yM9Oe1nNT3JErrhmLcbe3EatLvTEPwGXoSlKgE4DO1FGG+9Kgmdv+A9jvzAGalvzIk4hCIvqo9zwC94VvK7ZRzI+I+3m8+Cgi7CwZLl5FJ+V23p6wbr2QSA12B8+CEpX0AGSbLzU7mGXGCOD8accKppKMwlW2Itw0chadcm3VW2It80ch6bcmXq28Dw5Dd3Tkbb74Dn3otGnaWhoYbcS5iLF+WfEl5Yb
      

      Script:

      // Init.
      Content.makeFrontInterface(800, 600);
      
      // VU Meter declaration.
      namespace VUMeter
      {
      	
      	// Declare VU Meter.
      	const var pnlVUMeter = Content.addPanel("pnlVUMeter", 20, 20);
      	pnlVUMeter.set("width", 116);
      	pnlVUMeter.set("height", 35);
      	
      }
      
      // VU Meter painting.
      namespace VUPaint
      {
      	
      	// Draw VU.
      	VUMeter.pnlVUMeter.setPaintRoutine(function(g)
      	{
      		
      		// Declare assistant variables.
      		var a = this.getLocalBounds(5);
      		var CSize = 5;
      		var ShadowPath = Content.createPath();
      		ShadowPath.addRoundedRectangle(a, CSize);
      		
      		// Draw shadows.
      		g.drawDropShadowFromPath(ShadowPath, a, Colours.withAlpha(0x000000, 0.25), 2, [0, 0]);
      		
      		// Draw bg.
      		g.setColour(Colours.withAlpha(0xCECECE, 0.20));
      		g.fillRoundedRectangle(a, CSize);
      		
      		// Draw L meter.
      		g.setColour(Colours.withAlpha(0xFFFFFF, 0.50));
      		g.fillRoundedRectangle([5 + 3, 5 + 3, Math.range(Engine.getMasterPeakLevel(0) * 84, 5, this.getLocalBounds(5)[2] - 3 * 2), 8], CSize / 2);
      		
      		// Draw R meter.
      		g.setColour(Colours.withAlpha(0xFFFFFF, 0.50));
      		g.fillRoundedRectangle([5 + 3, 5 + 3 + 8 + 3, Math.range(Engine.getMasterPeakLevel(1) * 84, 5, this.getLocalBounds(5)[2] - 3 * 2), 8], CSize / 2);
      		
      		// Draw L numberic view.
      		if (Engine.getDecibelsForGainFactor(Engine.getMasterPeakLevel(0)) < 0.01)
      		{
      		
      			// Draw L bg.
      			g.setColour(Colours.withAlpha(0x000000, 0.30));
      			g.fillRoundedRectangle([5 + 89, 5 + 3, 14, 8], CSize / 2);
      			
      			// Draw L db info text.
      			g.setColour(Colours.withAlpha(0xFFFFFF, Math.range(Engine.getMasterPeakLevel(0), 0.50, 0.80)));
      			g.setFont("Rajdhani", 6);
      			if (Engine.getMasterPeakLevel(0) > 0.0)
      			{
      				g.drawText(Engine.doubleToString(Engine.getDecibelsForGainFactor(Engine.getMasterPeakLevel(0)), 1), [5 + 89, 5 + 3, 14, 8]);
      			}
      			else
      			{
      				g.drawText("-Inf", [5 + 89, 5 + 3, 14, 8]);
      			}
      			
      		}
      		else
      		{
      			
      			// Draw L bg.
      			g.setColour(Colours.withAlpha(0xFF0000, 0.30));
      			g.fillRoundedRectangle([5 + 89, 5 + 3, 14, 8], CSize / 2);
      			
      			// Draw L db info text.
      			g.setColour(Colours.withAlpha(0xFF8080, 1));
      			g.setFont("Rajdhani", 6);
      			g.drawText(Engine.doubleToString(Engine.getDecibelsForGainFactor(Engine.getMasterPeakLevel(0)), 1), [5 + 89, 5 + 3, 14, 8]);
      			
      		}
      		
      		// Draw R numberic view.
      		if (Engine.getDecibelsForGainFactor(Engine.getMasterPeakLevel(1)) < 0.01)
      		{
      		
      			// Draw R bg.
      			g.setColour(Colours.withAlpha(0x000000, 0.30));
      			g.fillRoundedRectangle([5 + 89, 5 + 3 + 8 + 3, 14, 8], CSize / 2);
      			
      			// Draw R db info text.
      			g.setColour(Colours.withAlpha(0xFFFFFF, Math.range(Engine.getMasterPeakLevel(1), 0.50, 0.80)));
      			g.setFont("Rajdhani", 6);
      			if (Engine.getMasterPeakLevel(1) > 0.0)
      			{
      				
      				g.drawText(Engine.doubleToString(Engine.getDecibelsForGainFactor(Engine.getMasterPeakLevel(1)), 1), [5 + 89, 5 + 3 + 8 + 3, 14, 8]);
      			}
      			else
      			{
      				
      				g.drawText("-Inf", [5 + 89, 5 + 3 + 8 + 3, 14, 8]);
      			}
      			
      		}
      		else
      		{
      			
      			// Draw R bg.
      			g.setColour(Colours.withAlpha(0xFF0000, 0.30));
      			g.fillRoundedRectangle([5 + 89, 5 + 3 + 8 + 3, 14, 8], CSize / 2);
      			
      			// Draw R db info text.
      			g.setColour(Colours.withAlpha(0xFF8080, 1));
      			g.setFont("Rajdhani", 6);
      			g.drawText(Engine.doubleToString(Engine.getDecibelsForGainFactor(Engine.getMasterPeakLevel(1)), 1), [5 + 89, 5 + 3 + 8 + 3, 14, 8]);
      			
      		}
      		
      		// Draw line.
      		g.setColour(Colours.withAlpha(0x000000, 0.30));
      		g.fillRoundedRectangle([5 + 86, this.getLocalBounds(5)[1] + 1.5, 1, this.getLocalBounds(5)[3] - 1.5 * 2], CSize / 12);
      
      	});
      	
      }
      
      // VU Meter refresh.
      namespace VUMeterRefreshTimer
      {
      	
      	// Declare timer.
      	const var VURefreshData = Engine.createTimerObject();
      
      	VURefreshData.setTimerCallback(function()
      	{
      		VUMeter.pnlVUMeter.repaint();
      	});
      	VURefreshData.startTimer(11);
      	
      }
      
      
      // Callbacks.
      function onNoteOn()
      {
      	
      }
       function onNoteOff()
      {
      	
      }
       function onController()
      {
      	
      }
       function onTimer()
      {
      	
      }
       function onControl(number, value)
      {
      	
      }
      
      posted in Presets / Scripts / Ideas
      It_UsedI
      It_Used
    • RE: Release Triggers with Sustain pedal support

      @d-healey i find bug, your midi list isn't cleanup after function complete. This error may trigger the release notes again, even if they have already been played. And this happens if you send another message from controller 64, no matter what value it will be, 0, or more than 63 - releases will still be triggered.
      Add this at the end of function playReleaseNote

      noteIds.clear();
      velocityValues.clear();
      
      posted in Presets / Scripts / Ideas
      It_UsedI
      It_Used

    Latest posts made by It_Used

    • RE: error C1083. HELP!

      @13murderer в лс отправил всё

      posted in Bug Reports
      It_UsedI
      It_Used
    • RE: error C1083. HELP!

      @13murderer да я думаю будет, там ничего и не вырезают обычно в новых версиях, только новое добавляют

      posted in Bug Reports
      It_UsedI
      It_Used
    • RE: error C1083. HELP!

      @13murderer я полагаю ты так и не смог решить проблему со сборкой до сих пор?
      Может я могу чем-то помочь, к примеру отправить свой забилженный Hise с исходников, который я сейчас юзаю и Hise path вместе с ним

      posted in Bug Reports
      It_UsedI
      It_Used
    • RE: error C1083. HELP!

      @13murderer ну ошибка как будто у тебя исходники Hise которые в Hise Path или обогнали твой клиент по прогрессу или отстают от него...
      обычно Export Setup Wizard решает все проблемы со сборкой. Он и сам Hise path может установить, точнее ресурсы, которые там должны быть (исходный код Hise).

      posted in Bug Reports
      It_UsedI
      It_Used
    • RE: error C1083. HELP!

      @13murderer братан, попробуй сменить Hise path на тот, который соответствует хешу коммита в окне About Hise.

      posted in Bug Reports
      It_UsedI
      It_Used
    • Hise can't save hr file with hxi metadata.

      I create expansion, create sample map them, sample map have a {EXP::} wildcards i've has been check this and save to monolith.

      Problems:

      • packaging samples to hr archive has been stucked on 100%. and in the task manager Hise have a nothing disk activity, this is signal that all finished, and Hise is do not change size of temp.dat file anymore. And if I click on the cancel button, Hise freezes and it can only be closed through the task manager.
      • other Expansion types are not working, working only: File-Based, Encrypted, if i change exp type to Full, or Custom and has after restart Hise - in the expsnsion edit we have a no items, but in the fact this is contain sampleMaps. Also, even if you ignore this and encode Expansion anyway, the extension will weigh much less than it should (in my case, 2kb out of 30kb) and a window with the error "error parse hxi file" will appear during encoding. Also, if you start converting such an extension to an hr archive, then the archive will be created quickly, but there will only be a broken hxi file, without samples and everything else that should be there. After enctyption i can't select sample map into sampler. this is no sample map in the list... Also watch on console, some parameters is undefined... (If do not select hxi file, we have a same resault).

      Screenshot (Диск this is a Disk)

      2ac137a9-6f80-435e-8ca4-6836c0334120-image.png

      posted in Bug Reports
      It_UsedI
      It_Used
    • RE: GUI Design for amp sim

      @Yarost looks nice, but left VU Meter has blending with bg. I've be added a panel, whitch make a contrast.

      posted in Presets / Scripts / Ideas
      It_UsedI
      It_Used
    • RE: Making a list of global, classless functions for reference

      @VirtualVirgin I looked at the js manual, of course there are more functions, but only the ones you mentioned work in Hise, maybe undefined match to context

      posted in Scripting
      It_UsedI
      It_Used
    • Global mod has crashed compiled exe/vst3 on init

      Try build snippet to exe, or vst3, on launch app you get crash.
      I try in on Win 11 24H2, 25H2. Am I the only one with this problem?

      Snippet. Don't change anything, just compile this to exe/vst3:

      HiseSnippet 1611.3oc6YssbSaDFVJIhl3FNUZunGXpFldAzgxHY63CzKvIwNGFHDO1lzdUY1Hs1dGj0pY0p.tL7.z2l9HPeC5iBuAs+6tRVRNGvICID5Tek+++2Ce6+4cUaF0AGFRYZ5E5MN.qourQ2w97gqODQ701tol9hFsY3PLWaswAnvPrqlt97aJjpuzBZxeu6Qqg7P9N3TVZZ6QIN3mPFQ3oba23wDOuMPt3djQYFc4Fa6P8Wm5Qi.jLugkV.x4EnA3mhDCaNCssPgC0z+QiUvVX6UpzudYGTwpE6WpjSoh0q3531upkcsJkc5iK02oll9UZ4R3TVWNhiC0zWXMp63tCouzWsA6QBI66gED1ZcgcVwdCpmq3HJ3ps9Phma6DUTnFrnsSUXyqTXeowNDWxD9oJtaHEXlNirJP84xCu4yAO6rvyJC7NBHomARKnfzMM55vHA7TIB7bqXtoHxNGjTR0z+Ki0o9brO+AiPu.uACH1FnY8QN36Vyx59lUrrt2OWnejuCmP8Mo9Okxw65e26U30EVpvaJXNsn98ORYh8gQ87vriTrvGgcRS7t9Qi1Gytu4AHuH7jAB5g7JWiiW4l016nN1YFH0eaeBe2.r+w4QnEqqf+8rsah3HgEIlGLt.LiSDPPuI9.HdPYeVxnIN7EbZfbriBn9hUPeYdrCkxRrgGEwI9C5Q.nR.Sz0MxxxV6UYC2FmRva7RhKeXJi+nwPLYvvLAh8ZDiQEfJX7X738oHlq19CRBCW1nbwZkqVodoZVZDNdThfO2n7JEqWqbsR1Y3WTMi5kqWoZw5qnwwuhmMhVpbl62zMdcASy6.62uH.4cdnoc4GXceAuljv.Oz3cc3nCvOUZZAw8QdgXo7mPeILMfUcI4VDEkcwpR50iB4zQaxPACINg4lYSbeTjGe0f.LhIRTkS5ZdPxFXs5.5VJHw5AUpK+UqlU05VUskipGcv.O7NT27SVDiCw799XOAVj7dVHdOrC3.lALbVDNQ3FdHdW9XuoVo1sRrBSyGbjY7zcoXB+V9tY16JEdCjh8PYCf7PT2HXKymbRjBOV.DTkKSfHb2OjvGmME+GrLVyJDuoQaB2Y3Qiw4NBLBgdmGXLNO+UMZ0uOXUSA3BFa7qmOI0yt8Kp19uwXSO59HuTEED.CHAqRte6XwlSjaNY.1mPo6+dVKcGLyktmN66ByV122Sk2EtzU4cV8iu0gLMgWfQa5ykAl2PAyOyX0sZ1sSbTl7+ls7O.6A0qx6rrC0mFLj5Sbx5ezAyYjAC.Wurs.RBndH1wdhVkygzrqGwNHmuVSrCZ7g3pFbVuLEmmfATlcfaAdMoz+PC4xMgwaYM5BUEx4wKfuGFElyGtkCUjY+LZArOYKfwL5nbUC0gzTFgc4Kg70RvmxJb4CfKaHM+WV0eW2H1Y7RqB7ZFwwFeLUgKlzS5dPBIGwNJf1WMgLMOp86GgYxJAMd0CIQSZpfsgrdLN1cpLRj8wd4yGbp5sv97u+m4+uc+OcnQh64rCBJz.Wyw.tMPWnACGbb6thK0oOm35WJZKAsPCzE66JI9G3WrPaAsdrP6DgZpEWcmsrm2aqNuegQWNCiFAvnKZTfWbiVELhor+P7fHydWUsYf6OxsK42yLr21XsHvnvxy8OaH2pUGQi7ysWwHuCFtFDOu+8hM5zYSFMJX5Y8tGI8B6wfD+fpHqfc8wfwkm8LtNiFF1GNNx0JLqn1QrA4Cz5.YAYg44AF5rlXgUChaENTDmDugzQK2Eq3n54LTz1SQWbJ5RSQWdJ5UlhtxTzUSoUJzcPABOCfd5Veuxrki.Vf1H3HmYjqQFLYwUb9j6ko9D3pn4ZNN9AP+5310SZHdBhkf86RZlOQ7wUM5Tz47QdFSqVITBIUo.SqfoLokvgCtimOV9pXZ5+zIcEvGNcW9mKkyhKc+swHQlFR91E4UheeBRkCvTNhSUU8Suxw9DUNGUqE+e89ONu2wI2epJonxk4R4MPjkHLEUzuHg2EQ+RNIKEbdh+uJTadruHtS9rbdSeA8PnAEAjf3wKDTNB4vnO2Q8ABDXcQIG.k9xukzRF6HnMs0jezfrPcDTT74NN4WpCMwhm0IV5rNwxm0ItxYchUNqSr5Ych0d+STzyxpQb5HUxQMscZ2R4.p2ZhC37Z+KPa+oqt
      
      posted in General Questions
      It_UsedI
      It_Used
    • RE: Display slider value with custom font, size, and position

      @Yinxi get resault.

      Update:

      • Changed visibible values after comma/dot for knob and label (from 1 to 2).
      • Some comments have a more nfo.
        4bca0896-7e9f-4adf-ada0-b70a75b8bd99-image.png

      Snippet (Copy and paste in Hise by shortcut Ctrl + Shift + V):

      HiseSnippet 1757.3oc0W0saaaCEVJIpK1XsncqO.DFX.xCdpxw4mlELrzDmz40lFi5ztsqJnknh4hDofDUR7Jx6VtbW0mkcytt6PRoHYGmzrrshUiDXyCOGxuy+G1Og6QRS4IFl0OXbLwv7ysFLlIFs8HLkYzqqg48r1CmJHIHMosFGiSSI9Flly+TIAyZKXn97Ge+V3PLyiTRxv30bpG44zHpnjZ+MeFMLbWrO4.ZTEtWdyddb117PdFfm4sbMhwdGgOj7Brjs4rL9Ab5HCyu1psWvJsWcIuNsW0a0.+0Wcs06r7vgAqE3hwqgWY3Zq7308bcMLuyN9TAOYf.KHovgtE2e7fQ7SX5K30zT5vPhbQaiAvMqIar8HZne+BiSpgg4B8KMUyqMUOzZOpO8B5klr6q1.UJQUil4bWGjZWERtWOjLq.oEzP5AVC7Rnwhxcj34KyoVhn1S.I8tFy8UKZ8nGg1CeDA8pdN02lyDDlvIBHraBrnGrNI.6QrWw0sEpsqayMpWGDoKwKDmPPQ5HEOok.QBBHdBjc.OAQNEGEGRZ5TG7voBzw3DjL5A8cHU3lygDwNJ9saHo2XpC9PIuGw3CAfgj3JgGFRRJNtiXCyOsBLi88eFvtci7sZzBsjq7+7Cd.QT4PiS3wjDAkjVp0oDoULmLn9Q+3f8eQ0y6s0aH.idiuE0Pa.GDR8IIMZUuA0WR8BVq23TXMb+0aLt3GohwgJYkvTxRD02OjzmmRETNC14aZujilSR7.5uoX10wsMb0fBbvHZJJFm.oFJSt1ljhXYQCIIoHbflbTD9Q9bQKDM.Mlmg.0BIlTVAG45zFgY9nSRnBBbyq6rbavIElAK.1ILDXpfuQ7Lg5X.+klMWjs56lZ1cjJhF8ttJ3GgkJu92oYAAT4xFZknmFSLBwGERYDHpveqV4nXDAb79a4f5xQLtPFUwNjncXQbeRKsd.+4gYngDDNNNbLBCG2gXA8XRQDnL.LMhyEiXPvuTMhbPuJkfzvAYmqaPjs.QExSLlmJfsf30F.tNh3e.WiZPGfT0WKU0973rXI0sHg7SJ15.xohs3RcL.GlR.pDFFxmkUDdNnfrhcNapPbs01mlFGhGiBwCIgEg2gCCU2XWXyIiwetjM6FUYPEoOcn9LNbYjffxN7CGxO0oeo3dEHJC6yXTFDCiCoP4EIYAXRjg.ZWdtsNSjAJ8TQh4NRsm1GMbLRbBAeTYlpSQpzD4RA.9k8Hj29Kw+pOHNc1YISd9R4bzhmmfAQxt2.ASAUCwCJN.BTPW5iq3zyh8gx66f8F8LhDmhjLRtoP2fCns7Rq2dsk6rbmGe1UVtyCGFND5B5TmxjYHfgi4IKPf3r75K4kCsgb8XNC7iszt6l0ea8Z0qkGAn84x62AYuOSVYHlFBIQwgYGB2Vp.mHxh0djKtj7TpLAOBRojfY7EUR7ySKSHflJK.4qpbkBIM0pFxHCqr0AAsP6vfKi33yy.60A7AhDHDzVgWHjsYyMjF+YxjtJgLWNuVG5XcmxqpjWQIKccIzITwHY0KHA+Dhp9kRUU6BkqVCJko9r9JcVE7JK4Tw3o7G402pIs4Rc5IB.WCyDDa2BK9FfLmswE4SvkrcgSoryQSov4Nssycu1S6MatQEG8K3Bx9LasC8r5no2JHXl6U1mblaKG9J45DzVaXmHbBXDF1XxIXrt5IXpNTkm1pTgQNqGToX+XR95KOiiQtoTNsSNp.VEpYctmU01tFTXTlZV4VQCEjyGs77+bTmyMdUutXAt3ffyrrTGPqK4XXPU8PT0r5RRORvigYNuv+ACHeCt1SgE24g4y9Nt5hIauWNzq84QUGh9WNG5WVc.5Ia2XX9YVp1MFU50.d.SIqS0nofrwk0g6ZUoxsREtmU0TVsd76yROJqfIo9t28t2KoVTAFtAqhJvFE0UKUmNaVTpr.bSTmTRzL+NLLWzROGB7fgKMmKLgM2OKDKlbraoOHeCoQt5LtxYWYfweb0Gr7u1r32TH9.q9Tg2nYiw4lAFg30+KvX9KXtqkdn6R.tf0t+7Ggmqr3EO1jJeWvSKt96nbgW0iLUIxcIvHLUMP+D0WLpRFzly3Yn8XGCo584P20oMuyei0u+FuP75iATuU4eRb5B2Lmvt7Pe4odE0Vug38KrTl7Ok.rJj3SG.eeq93+ODP7RX9HXRq8vvfMxtJuHKZ.Tn2i.PkwHgxd8lyI6nnW6VTEe.g4qV7d3S9lsKplK2rcwleTtiHrWB+MEOIFRMWTQAzalpGUMq8jqQsmXLgh1zz234M4QcIAW51JXmaqfKeaEbkaqfqdaEbsaqfO9CKnb3lmj+ZDHOwvXu96nFqyzbG0zOpTFi+BXhPCHN
      

      Code:

      // Make UI.
      Content.makeFrontInterface(500, 100);
      
      // Declare master chain effect (for example).
      const var Gain = Synth.getEffect("Gain");
      
      // Declare gain knob UI Controller.
      const knbGain = Content.addKnob("knbGain", 20, 20);
      
      // Set gain knob properties.
      Content.setPropertiesFromJSON("knbGain", {
      "type": "ScriptSlider",
      "id": "knbGain",
      "x": 20,
      "y": 20,
      "style": "Knob",
      "middlePosition": -12.0,
      "stepSize": "0.01", // This parameter controls numbers after comma/dot, if you set this parameter to 0.1 and write -19.41 value - then in the out you get -19.40 (-19.4) value.
      "min": -100.0,
      "max": 0.0,
      "suffix": "", // If you need linear dB, write here dB. Do not change knob mode, this is can be apply a negative effect for smoothness them. Use suffix (in the fact it is postfix).
      "linkedTo": "",
      "showValuePopup": "Below",
      "showTextBox": false,
      "enableMidiLearn": false});
      
      // Declare value display label.
      const lblValueDisp = Content.addLabel("lblValueDisp", 200, 20);
      
      // Set value display label settings.
      Content.setPropertiesFromJSON("lblValueDisp", {
      "type": "ScriptLabel",
      "id": "uninitialised",
      "text": 0, // In the future this parameter can be changed by tweak gain knob.
      "x": 200,
      "y": 20,
      "fontName": "Rajdhani", // This parameter can be changed font.
      "fontSize": 19.0, // This parameter can be changed sise of font.
      "editable": false,
      "updateEachKey": true,
      "textColour": 4291743438});
      
      // Declare gain knob callback.
      inline function onknbGainControl(component, value)
      {
      	
      	// Set label text. (On compile, plugin startup this function apply automatically, if you do not create conditions).
      	lblValueDisp.set("text", Engine.doubleToString(value, 2)); // Engine.doubleToString need for control visible numbers after comma/dot in the value. without it we get this value: -7.400000095367432.
      	
      	// Set gain value.
      	Gain.setAttribute(0, value);
      	
      };
      Content.getComponent("knbGain").setControlCallback(onknbGainControl);
      
      posted in Newbie League
      It_UsedI
      It_Used