LAF SliderPack Bug
-
However I'm not sure it's a good idea to use "Content.getComponent" from inside a LAF, someone else have to respond to that.
Nope, bad idea. The paint call should be as fast as possible and
getComponent()
and especiallygetAllComponents()
should be avoided as it has to iterate over all components and find the one with the matching id. If you have less than 50-100 components this might be OK, but for bigger projects it's recommend to create a reference on init and then use this instead. If you have multiple sliderpacks, you can create a JSON object with the id as key:const var SliderPacks = { "SliderPack1": Content.getComponent("SliderPack1"), "SliderPack2": Content.getComponent("SliderPack2") }; function drawRotarySlider(g, obj) { var numSliders = SliderPacks[obj.parentName].getNumSliders(); }
-
@Christoph-Hart Thanks, I'm still struggling to understand how to implement this into that code.... :face_with_tears_of_joy:
// linear interpolate each slider // unfortunately you have to hardcode the slider amount // (if it's dynamic, use obj.parentName to fetch the parent slider pack) var c = Colours.mix(l, r, parseInt(obj.Arpeggiator1) / 16); // this is normally parseInt(obj.id) g.setColour(c);
-
@DanH
Console.print(trace(obj));
Will show you all of the data that is available to you in theobj
object. -
@d-healey what am I looking for? I was hoping something like this might work
// linear interpolate each slider // unfortunately you have to hardcode the slider amount // (if it's dynamic, use obj.parentName to fetch the parent slider pack) var c = Colours.mix(l, r, parseInt(obj.parentName) / numSliders); g.setColour(c);
-
@DanH obj.parentName is a string (the I'd of the parent control) why are you trying to convert that to a number? Use Console.print everywhere to figure out what the code you're writing is doing.
-
@d-healey I'm not.... Maybe this doesn't make sense without context...
const var SliderPacks = { "SliderPack4": Content.getComponent("SliderPack4"), "SliderPack5": Content.getComponent("SliderPack5") }; function drawRotarySlider(g, obj) { var numSliders = SliderPacks[obj.parentName].getNumSliders(); } SPLAF.registerFunction("drawLinearSlider", function(g, obj) { // ID is the number of the slider var a = obj.area; var v = obj.valueNormalized; var l = 0x7FE903D9; var r = 0xA502A3A3; g.setColour(0x7302A3A3); g.drawHorizontalLine(a[3] / 2, a[0], a[2]); // linear interpolate each slider // unfortunately you have to hardcode the slider amount // (if it's dynamic, use obj.parentName to fetch the parent slider pack) var c = Colours.mix(l, r, parseInt(obj.id) / 16); g.setColour(c); if (v >= 1) { a[1] = a[1] + a[3] / 2 * (1.0 - v); a[3] = a[3] / 2 - a[1]; } else { a[1] = a[3] / 2; a[3] = a[3] / 2 - a[3] / 2 * (2.0 * v); } g.fillRect(a); });
-
@DanH are you trying to get the index in an array?
-
-
-
@Christoph-Hart Thanks! - still a bit janky, however!
HiseSnippet 1760.3ocwX01SabDD9LvQqcJMPZj5WWwGZMINN1.kl1HZrM1j3FCXESnQBghVtaO6s9tccuaOCNUHk9GJ+EZ+Ik+Aoyrme4LuEGWhp+vYMyryrOyb67xd08kVrf.ouQhj62qCyHwWY1nmP0ZqVTtvnZYiDoLaTmrekF6SLJ0qCMHfYajHwrOEkmH4bF5eu+IkntTgEaDKCiCjbKVMtGWMha8BOm65tM0lsO2K1pWuPUKoXKoqLDvxrl4L5PsZSax1khKaFSiDyWwlqj9MTTEKvHwbkj18ZzRdhHZ8GvC3G6xPh7FM.CEwdaoqMhXjqwVs3t10G3yAFfUpOJBLaTD3tl6vs4C4OJRrnV.YjFwiGIlYb3M6XvKeb3kKF7tDHMSLHMWDjVxrgkOuiZjDDO2xrpPw7cnPXONThVqwLqYZtkDVgPk0i1lssOPLTizajKWFB7XkGmJED5CTjtTehK0grIohnIWvxZ4y.m4otxiotQFslT1tnvdaFyM83J1vkay7qCuzxCFXv91jo1R50QJ.hzKGaMKeNsqWq31wzKZmqIsntSxVFP1L0elhPFaG94IAEYRk5Lvn58OqOqIO.hOaGJrTboH8x19zSpAgBpejVKmg3LPXyLD4w+9JvFm7gOjTsLgGPTsXDQn2wLehzQSEn0KURDvTvCAUxRAu6wQr51mUWpaHaWouG0k+Flceot5PBlSDjsCWztOa+XrOFzCXmLUxlYCP+DYmdfzSZwULHpABQW4YRe9affBDUAmJM8v0Nh7PxpYHzCycD9b0ivEqcHWsaS33AlNRW30AgQsZMzgfkDJbj9pPAHysGomLjzh1kQTR3eeaKoMKVHfP8jgBkVwzbGBW88AD6dBpG2JCILfoiCcfXiPgI8nYbXJXGQaDwefovZCqDgSLdXEKd3wOMsaFheFTk.FbdOMZWt8JfmleiH26SRoXGyNbbHdDdxZ2PunUDjdkUdLA7tcq7ajZU2sBrSi+VwRu6oRBde5tjeYSRdvIfiOIoGl+H.N5+tOYvqEx8HoymMG4AjtnhI072bj3GnU.jbF95m4FvNm0hV2Uo5nMYUXStWzlbVJLn1LqCTk9ELKUZZzoGMM79Cpkhrohltv4mLj0QwD3WpyvjyX4VneegDXcdFrvAIQDoXWohsmHsNOJ0YoHmWjiykJCys8kttL+KUL1cw+5TLcTZZFhNya3BgRtiWG27pqiGuMiUTolXKTJpJ3p85vDWUyGi90mvZ98QEr8JcE+6zuh+n.pAGJtufYrHrgF5.DSbavX1TE0HwglardV3W4hagOqAO1sK7PjEoKgzkQ5rZ5e54Y6+y495+JiOpizYKBOJgz0P55EKFgWMHmMBje8XfTCvuv74B4wCg1f164JX7xpkQDBMn561PnnCyWwwnbhxrtvvBQc6RZVlEzVI6niK8qaCs69DhLmNZqqVn2Ph2RKbB2V0ZHiBusPKFuYqXSnzqfW7Iadz+nXmpFLXRx4e26d2GP9PehNMfR0wmAxiFaeeTgNCdWW0FiUE86vZ1jSgCW3ogQN1W+QilWg6j6uJDn5gGFmWuPCOtssKqtLfiG1iAs+dDbMMgZJFi4iFFig7bEBBcb3mpG6BR78BT.tp5ASigg+WBkpsYNzPWndbavNPmh1L68k50ecNMT4DpZB8SPY21DqbhvJxeMt3jXKDWc8HOmyfiM.1rS7.X4u1AvhkV9MW0I9RgJEDf4ZeLBE8YctC9FWcVSLarf4KXP4xOYSD6nx4CmWLAbBLxsLQKnwxzghE0FnQa9U.i2+jIIb.VAlq34rdA+WhHfyzgwr0IFmy.e2EiFK12.Pd4wxRxS0l.p0v9iPFbulgrmbGJFTVvbOnmYW1Kf9lroyaRZ1nEjU5xltSX2xrhfBG+2mytNW3569bWHb3w2GJaESv+aMg9XX8.lqzhq5cQrNpr3X3049kJhvA1u0BqeyPOw38Nl0XhlpVSNZai61A+JrauRV+lg1XxRKVxDtTrPvbavbggAkSRZ9kZnu0buPUmP0Mj4Vxbm5Uf5+9CL3ExUlv79aiFphv9JLy0TLMVJ27lOS5ZeIoqW798KZtizNzEapE+yMfeik9Bv14w61g2iW.s46EOJci8MHlTHtjYcNbCsKGiybIXDG08y.FGNuPEGG3DzH.Nm41u5yymow.tMjhKZtCEFNBFUR29ElQDZUDcnAu6PhYvpyQz4PZLBzfIr0De.90WXdjNQeg4GHDFKyxW9ZqnyZ32F5K0b.LIzeVrjl6fzjQWEvLmd3Na9qsrP2+A4MLtbcVcJzYsoPm0mBc9goPmMlBc9woPmGcs5fegvhgJoWT5.vndE88dRjHpAr9Tnw+16qWeJ
-
Has the bipolar fix been merged yet? Just noticed this on my arp sliderpack
-
@iamlamprey no but see the snippet for a workaround in laf
-
Need some help with this LAF. Trying to draw the rectangle with drawRect on a bipolar SliderPack (+/- 24) and it will only draw on the + side when the Slider hits the max value (24). The - side is fine, as in the uni-directional SliderPack below... Thanks!!
HiseSnippet 1307.3ocsW0rbaaCDFTwzSoRSmlN8TOgwmjSTTnjr7OSlzZY8iiScrThbRsGOdx.QBIgXR.URHYqzwuA8de.5KRO1Gm9Fjt.TRjxV10VyTdfh6t3C3aWrXwplABGZXnH.YXc3n9TjwWa1ZDW1qROBii1qJx3aLeCITRCvQp1YTeRXH0EYX7fcUJLrVBoe9meZGhGg6PiUgPePvbn6y7YxXsM29mYdd0ItzCY9IF8ZaumifWQ3IF.74Al1n9DmyHcoGPTCKkIxX4ZtLoHnkjHogvX1Q3NpUOw47nw+AVHqsGUIjG0BlnH0nJ8XdtMm3qgHjwRMi87GD44eu4aXtro5ii.eq1.NFQxXfQpaiR4uGTxHAkVJhRO1rkS.quL1hhOOzbONrgzg.g5jTIZrnT+foYEALBtLmO4LZ8.PXJhLqaamECuV8EoSCg6PIdHI.2xi4RCZBw60vuDOAdWprhvuufCBYVIwXVAPOOvktCfKo.mdlEu49kqm.oS.EBl6KbHd6KDmUl6VmR8xL6ZpvT3NAJsdr4BncYpD45C3NRlfmYE2.x46y3TRPD6VIKtyDicyhEs+zpo+szVO+438phYgXYOJlOvuMbXPzQKEpwk1RwHBPF.RNBPjWDoZ3XUCIdCnGHB7IdrOScAJY0MWnJ9nx0yXewFEsKTtX4h.aAKJd8JQ.6yfqAdCvvLjSJdJ943BYwjSrOU8tvoqNcd1Mf3xffPc3bUlSrunVknoKKNOrYaqckbLI0OZAyGoOusczbv5fyLD+iuDme0zVfCaQNI+o.00+7T7j0F+Dbl74rwOCOTwSKs9WFa9YZ.fkKsrRaQ8BoWY1hF2MAMdQJ.KxShVjK0tXGvudG0Qlgnzckf2QS713fmdrS1KxlW4jWpSDhyfUyv0RVzIJSyXJrvoLyea4nMpWaK6hU25NtsLwAz6Bw4Vp.0zch4jcMNsXZLaBt4E5lvnaKzYggmqF+JcywuBq9hIgDrfefPRavynOHk9xz3qZpSm4ZScpNP34QClqY0EGA2FvLQmSyh0AmoCDprNa45kuakqchJxjXfB9dblrQe5X45BOWUYX02Wu3NZbUJnLepwLDnhTWj+6FWjON3hXvD8HyDYqHsafLLMT2U5RjDjwIlquVN0S4J4x0r59vWGODd8IkbmZUgOa1Dd0tbY38tJ41J4gwxuWIKut8H9dOIYoXR9vYI4qpI2ZqOsyuzXCF75hFpOeZ6M4C2n0qau4Pk7fs3G6cbI1gEKIZDrK.3nFut85sJV5s1M7.SOUKWY8218WandsUND586UUsHvceiCuPHuOMPxT6rFUoCgdOhtH0xrJM7LonuN9O9RI3lz6wNvEIaqYTrvwa6mrKnM+KeRhgt41P8i9sfykQoFmybk8TgniRgP8nrt8jJo+FFZbgfB.9k+Cj4WPynVo8OQKetdhS3EKeO1htIuXz12.y9ccGaWqyDnmHg6.Ohb1FkTcDN1.bbbltSTcfvCYxQI6X7dz8j8s18zckhO1rIS5za9bL0b3n5D6+CbbbOmOxrVmNPE2XBtjY8iVzFL+OV92IFHY7tugHCXPdf4AC7aAoUNTX04b39Z09cJUtUjrsRVEAZQ4tZgu.OiMlWIaL1X9IFQ9Dm.wGchpdn5p8qzZ.Nw0MwaA+aBPFmeZwBS6b1HenA6O53nb+mA0OmOlBK.lhK.l0V.LkV.Lqu.X1XAvr4shQ8eaJOPJ7iNN.JZVSWV0vnFm.YV5rPz+NhzdOO
-
@DanH encountering a similar issue with this snippet. Only works if the slider is at max value on the + side... Really strange as this has been working fine for weeks and I haven't touched it!
HiseSnippet 1112.3ocsV0uSiaDDeMfqpc6U0q5d.VweYNBFGBkODh1P9hx0.jdg6NjhPmVr2D1C6ciVuIPtS7t0Go9FzNqsC1vEN0F0KxxQyG+142N6Ly5NRgOMNVHQFVmMYHEY78lcmvUWU+JBiiNpAx3GLOlDqnRbppZSFRhioAHCiEOTqvvZITxu+5WqQBIbeZtJD5sBlOsMKhox01o5uyBCaQBnmwhJ38lUOxWvqKBEi.9rnoGZHw+Zx.5IDsaKXhL9llALkP1UQTzXjwR0DAS5dk3Fdp+ukEytLjpEJi5BKTp5Vhv.Mi0ZQ0uhEFzY59NFAqRm7rvhoYgWXdLKfcu97rwOlX.minX9vXgGRuEe.8JWjddEn2LnjQAJsTJkdtYWeIanJ2hlOem4Qb3voOAR6EoRpunEBWzrt.7fqbiHWSaIAg6Q3rkmWIL7Zk8rsgTerBOlHwc6z9fV38wSA5Kov9osvmD1VHt9.dPKJMzA.U.SHKfJ6.mWkKfb.UUWDMTvAAmkK3yx5HZamDIWIc.SWg0ZD2WwDbmkCjjaZy3ThLEyxkv8mZbPIr3xOrh8mrsszQl.wCT3R.VtWppwYpFSBGQOQHiHgrORCfPZMvMVyIcIli2saWwaiCpbPEfMfEcT+Mgj8Qf8vVEhuCoWkKvqi2nDlzy6B86MtPScK3g0G6LF+K6iKuhs0mrsrH8JeAD4j+VEOEJ9kXmxtd30vi0gwJQ+94lWKA.X4NKKaKZXL8QqVpeOEz7frADjWlFj6x1nGJIALH22B52b54cay5o62R3xvAu947sa0bWuJM1MUUYOuKRSF8AHul5qbHZ4Gk3Ne5Bkm3dsXDGZxzPH7AgTmomIIwor1w0WOyU8xlaVay9N8qBEH5n8YUbIkKqr2zRArfehPQOk6nqFrruyF+XS86OSa55SoHLjJmoY8XI4WBnCeTzkTYIbRE18NB8pOb.f4SO.n37I+z1kBNJ3GwYpSGR4O0TKTVOldXQFqfvqRFU7SYiJxymHFLU3YlERvnDpmO78EUCHJBxnm4Va5tCerm6MdrZMZ355dVmD4lu6zW41Fja2QdXS0piCNqxt025OFLYj1U2C012lU6cqNpoJ3CIx0t7zWc4NiR72EgdyQMzAIix.6gczPpTwzIKiFzwvkEoS6rLaPiuVIFl3a1HDX9++gM3s4aNZ0I2KzQUMp30VN+YDofqNUQe9rWXpuHXTHQ8vqBz2+kY.JOdv7W8LVdLSMo38i+uc+v+VJ9byNLk+UyliKLCNBGMeM3X1spOyrY+9PyeNAWxr04ectBEACjTL9fiIJICNeMOYTTWX3kOEhNmCyYAcFKnajRk8zx5LPWJOHQ3ugeYFKqkMxLVdpQTDwWJdueZ6m9d6uMQCvIdxmrXAe6DHiuuayzzy0CEAeBw6880a+0fd6YiYi4.Sk4.ylyAledNvr0bfY64.yNeQL5ud6fQJQTZ6.nnSyjYRFFM4DnxJoJD8Or4D+2J
-
@DanH works here, I'm on develop branch from Nov 15, 2022
-
@ulrik Thanks - yes worked on my other machine too, weird! Got round it by using fillRoundedRectangle with 0 corners...