LAF SliderPack Bug
-
@d-healey hmmmm, ok but the value 0 is half way a the top:
HiseSnippet 1231.3ocsVstaaaCElJIpX1aYXcXO.D4OSo0QwN21JJxlShs6BVt3UmlUfffBFIJatHQJPQ4D2gf0mn7JrWk8Hr2ftCojsjScJ1BV8OrMO2324vy4irqT3QSRDRjUkSFESQVegcuQb0f8FPXbz9sPVeocut3N6zpM9j18NAs6nXRRB0GYYM+Kz1XUYAj4ye+i6RBIbOZgHD5TAyid.KhoJj1s4OyBC6P7omvhJY8FM22Sv2SDJRA7LuccTLw6RRe5QDsYyYirdTaelRH6oHJZBxZgcE9i5MPbEOy9SYIrKBo5EMP8f.kItiHzWiXsTzdCXg9cGm2IHHJcKpBymUE9F6CY9rIxKpFekQAtvix0Cq4lFdyOE7ZTFd0KAuY.IqRPZgLH8X6ddRVrpPiFOet89bEUFPfxdYnjYKZtWuf8dBvBtxMhbIsiDVLwCmspWuFF9Z4mWsJT5ST3gDINjDf2F2l2mwotdRJjLuHTbAILKnGHDWtC2uCkF5Lsi8BY9TYW3PqADfw6aepZOQTrfCKbVpjMKcGu6dvNcJ4W1NefviDd2szXpqj1mk.oRmTtmhI3NK4KIWc.fZhLaaVpFNXrx90vhK9skq96Uqr5p38agYIX0.JlmFcAUhEAlUIF+pVQCHB.FvEWB.jmmIZXtngjvT5QBYDIj8Vpet1PC50suItwL9k4hkkDeA3GHtR0J8cSzEFsXmwZuZ.SQgDDTpSkeRHYuEpFPA.RJGxYqeNdU7Z0vjypet960NWarIgBMoMloOaiEgPkCSIdCljPfIo7.gTkxAcgiviDo3AjgTrR.+J88D9zRk.LIRjxUFGcXAXl5aSv9i3jHlWMbZB0TGhgZCWomO0gIfpfcTGiL4iCkdLd4rZgWoZQD6ZmvZXYMs4ITnszQGSl+xPV1XK8A8TUIOSxVsBfFmg3eXabc2MgvBGnUHm03bHxledJdbgB+DrSC253UvC0tVwHe6B0qXb.zbi9.gFlPuSzxr69bsXSVC1jmjsI2X.c.Pv8Rn9AzNuj5oH79gv4WM7FfI2X5fKFCzY3Gzka5vACG29hE7iDJ5wbGSGb0aphuqpffYpSONIEggT4LUqofkeLGcxFPpgM87SLD3kllry99I6JyE6kMcWxPAeeNScbLkeeLznbJAMwXNpfsWYnE+5bZwhBJhALfKZWpBiLPGfn0hPv7IJBx5L6s1vcFeBd5j+tdpY8t2mdW2890iieVI8qu4uryybQnWseK8ljCW.4P1DSkJltPY0hNDtTLiUuhcKZxkJQrw1bVRP7+gj65haPa0bzjEuiz7JluZvDA+0ezb.k0ePwMwu6zlQScC9epnWqFeAbkGc6s29dsbfjMtGvyke97g2MA2JJ7SARmoupT+9fbEPK0T2OouChmvTiJ+9g+2t+7eKDercWFPYMaLN2LvHbj9o.i4u5XQ61AA.cQA.Wvtyq+z7DCDPOoX79GRTRFzBYeTZTO3b2iB6NmCjg54k4zCeYqqqWqq.8nbeyh2CexU1Pu1JWYiwJQQDOo3MdYir5207YFI.l3lmzUw9P8ZbwDpcc25nH3IVuwySm9q.8ay1m0d.9r9CvmMd.9r4Cvmsd.97cO.e99OpO5W2tSpRDkMN.B511vkYY0lSfNKSWH5e.3K8WIA
-
@DanH Oh yeah, my maths is bad. I'll leave that to you for homework :)
-
@d-healey ha thanks! Either way it's still a bug that needs fixing right? What's the method for bug reporting these days?
-
@DanH I'm not sure it is a bug. Once you're in the world of LAF you're in control and you may want it to be mono-polar even if the range is bi-polar.
Bug reporting is through github issues after the bug has been confirmed in a forum thread.
-
@d-healey Ok thanks, @Christoph-Hart is this a bug? If so will report :)
-
@d-healey ok sorted the scaling but now my sliders above zero are kinda oblong
HiseSnippet 1637.3ocuX8+SaaDE2FvcKoi1RWk1udheXyzlllPYrNU00DHgRJAHpIkUMDp5v9bxMruyy9bfzIj5eQ8Ogs8mT+On6cmShcBATZFcQnfde897d28du6Ri.tEILjGnomoUOehl92XzrGSzYyNXJSqVEM8rFMafZUsYKj1F87wggDaMc84egTtdlEzTe93y2.6hYVjDVZZGvoVj5TOpHgaiR6Pcc2BaSZQ8Ro8ZkpYwYaxc4Q.Vl2nflO15DbaxdXoZyYnoeip1TAOno.KHgZ5KrA2tWyN7SYw5e.MjdrKQRTTqI3nX1awcskHVxUayNTW6FCh4PMvKMRx.yGmAtmwtTa5P9IYh6nDfRrHc9PetQg27i.uhogWgTvaBPZtTPZgXHsjQSq.puHQhDO2znFSPBbvPZOMTh0Uat+ZAiM4fFLQdO7IjsB.hgVXtdgB4PvWq7zrYgTen.0EGfbwNnmgpxZSYj7VADHXdgK+XrarSqy4mTlYuEg3ZNpgMco1jfFvlVQvACV21DwlbOeNCHLWNkNKOl0MpWdqT1Eux04VX2wWRkp4CHsogPnrUDyRP4LyksCvmVGPMNHdYVNGxYfv14P7i+8Ux9mYy7nGgpUAQCQhNDDKx6XR.h6nnBU1kMiDPX.LfI4w.PdZLqt8Y0E6FQ1iG3gcouiX2WpqB8xiug48orS5yNHE6iA6.1Yxloc9PYhQx1bfzS6PEDH.AgxPYad.8cP1.R.PPYhO7wGgdDZ0bH7gENR98pGIUVEPtpvFQk6s9bWHygHXqNCCHPkHlCOPDw.Yt8P83QnN3tDjfC+Ov1haSRkBPXOdDSnLzj5fnheHDY2ig8nV4PQgDUdvGxMLgr9T5FGh.VQoOh4OvUxx3UhyEVoxEdzyLcygBxIUOj.GKMk9jZuBDkEWWtQORVxRErYy.nwrK5WdFpH3TX6LC9vhGA9U8uGfFjlP2GYVLeAzCQckFlQw+YIhenx.Px4xsChaHYLuEq2kYZxhrJrH2OdQNOqLg0NuCzf6UDKgINd2TQC4SnMjjMl01E1OygVSJdnAiqvgP0I7mnCMTVE8qTaQGyURXrMg1tivbEHnW6HkyPHT1LH42mqpSRJ1j4wKTKopi.EGTjf3r83Bx9LSUcR1yyhFWjiyDkIKZC3ttjfIJV1nO3pLzLtLLGRUYMTQn62nsTMt7Vpo63aE2CIkhbVMFUruOgcYyAz523AZ+p2GUvxKTMeua+luIITMJzmcQiTYXMEzAHp+UfyrwBrl9gFquVd3S27aBeWsN7UqtRFkAZmJR5WJoqnn2nB70u0.nqWtrjqT9qkxaIk2UQ2PRuc4M0zdcsJxEoObAjCQiOIPPkIJ8Jjtvn23YGYLpPBOQv8U51uWLL73yH3NKYNcsR8FR7dboSkGKGxnz6K0QcrLQ+dk7ReOgm7OBxYhAi4ybiO7gO7IIenUteSnaZ5aT3gSstOoj+fsqZ.9tkQ4.eR61TLb9.1Pu3T7ESqgZb4X1Lxv64m5g2Euxg2oNG8sCOGMebp9V8S0aDIDblJMeKiXTzmU+CQI2fRaJ7whFuh.02e1tHdCV4haarWjWS4VPLuwbRgRSiStogzCJrLan3NJGz7D5k.iO97oIc.dAFzsCoW3+kLBDL9Dh8NL9wi6fu+hYi6z2AP40w7M3mobATYQ9iHBbm3grm9.JETVzXeXlPWxqf4BjYKZxXzrSjiiKY1NgcSipLLb7uEkbUgvU2t7dP5vi1B59jRv+2cMmZrd.wkaQE8tHVGF4+8H304Aa.q+OuCfmGG035gdpw6cMpSXsEcldzdhb0N3kvp8FdiqGZsoqrXIC3AULFwsIwEtrCeZJymni9Ni8iD9QhqI2sjwtMpB8+CF3vKTqLk082V5npL6KwMWQyzTkb2vXa3cqSnb8huMDdUJ2NxUNTK8SUkuOuu.3xViLsS9FPVHb5NcV5Z68qSKDWxnAEdxvjw3bS.ixmF+E.iCuuPUGG3DTB.WvXq27k4I9Zvs8ETV6cwh.JbIG03W3FQvnh3CMxK6pOmr6bLcAIsLCzjvrUDeB9zWXQIsdegEGHTyCaEveqU7YM4uqvWq3.Xho9IUxXrqjFkb2UiB4Kn4Qsou0xRF9ODtX0jsY0YvlGOC1r1LXyONC1r9LXyOMC17jqzF4utT4HA2Ktb.Xznp5V955wCfUmB09WHLefwJ
-
Could some one help me with this little bit of code pls? I'm not sure how to get the parent name into this - perhaps I've misunderstood...
// 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);
HiseSnippet 1637.3ocuX8+SaaDE2FvcKoi1RWk1udheXyzlllPYrNU00DHgRJAHpIkUMDp5v9bxMruyy9bfzIj5eQ8Ogs8mT+On6cmShcBATZFcQnfde897d28du6Ri.tEILjGnomoUOehl92XzrGSzYyNXJSqVEM8rFMafZUsYKj1F87wggDaMc84egTtdlEzTe93y2.6hYVjDVZZGvoVj5TOpHgaiR6Pcc2BaSZQ8Ro8ZkpYwYaxc4Q.Vl2nflO15DbaxdXoZyYnoeip1TAOno.KHgZ5KrA2tWyN7SYw5e.MjdrKQRTTqI3nX1awcskHVxUayNTW6FCh4PMvKMRx.yGmAtmwtTa5P9IYh6nDfRrHc9PetQg27i.uhogWgTvaBPZtTPZgXHsjQSq.puHQhDO2znFSPBbvPZOMTh0Uat+ZAiM4fFLQdO7IjsB.hgVXtdgB4PvWq7zrYgTen.0EGfbwNnmgpxZSYj7VADHXdgK+XrarSqy4mTlYuEg3ZNpgMco1jfFvlVQvACV21DwlbOeNCHLWNkNKOl0MpWdqT1Eux04VX2wWRkp4CHsogPnrUDyRP4LyksCvmVGPMNHdYVNGxYfv14P7i+8Ux9mYy7nGgpUAQCQhNDDKx6XR.h6nnBU1kMiDPX.LfI4w.PdZLqt8Y0E6FQ1iG3gcouiX2WpqB8xiug48orS5yNHE6iA6.1Yxloc9PYhQx1bfzS6PEDH.AgxPYad.8cP1.R.PPYhO7wGgdDZ0bH7gENR98pGIUVEPtpvFQk6s9bWHygHXqNCCHPkHlCOPDw.Yt8P83QnN3tDjfC+Ov1haSRkBPXOdDSnLzj5fnheHDY2ig8nV4PQgDUdvGxMLgr9T5FGh.VQoOh4OvUxx3UhyEVoxEdzyLcygBxIUOj.GKMk9jZuBDkEWWtQORVxRErYy.nwrK5WdFpH3TX6LC9vhGA9U8uGfFjlP2GYVLeAzCQckFlQw+YIhenx.Px4xsChaHYLuEq2kYZxhrJrH2OdQNOqLg0NuCzf6UDKgINd2TQC4SnMjjMl01E1OygVSJdnAiqvgP0I7mnCMTVE8qTaQGyURXrMg1tivbEHnW6HkyPHT1LH42mqpSRJ1j4wKTKopi.EGTjf3r83Bx9LSUcR1yyhFWjiyDkIKZC3ttjfIJV1nO3pLzLtLLGRUYMTQn62nsTMt7Vpo63aE2CIkhbVMFUruOgcYyAz523AZ+p2GUvxKTMeua+luIITMJzmcQiTYXMEzAHp+UfyrwBrl9gFquVd3S27aBeWsN7UqtRFkAZmJR5WJoqnn2nB70u0.nqWtrjqT9qkxaIk2UQ2PRuc4M0zdcsJxEoObAjCQiOIPPkIJ8Jjtvn23YGYLpPBOQv8U51uWLL73yH3NKYNcsR8FR7dboSkGKGxnz6K0QcrLQ+dk7ReOgm7OBxYhAi4ybiO7gO7IIenUteSnaZ5aT3gSstOoj+fsqZ.9tkQ4.eR61TLb9.1Pu3T7ESqgZb4X1Lxv64m5g2Euxg2oNG8sCOGMebp9V8S0aDIDblJMeKiXTzmU+CQI2fRaJ7whFuh.02e1tHdCV4haarWjWS4VPLuwbRgRSiStogzCJrLan3NJGz7D5k.iO97oIc.dAFzsCoW3+kLBDL9Dh8NL9wi6fu+hYi6z2AP40w7M3mobATYQ9iHBbm3grm9.JETVzXeXlPWxqf4BjYKZxXzrSjiiKY1NgcSipLLb7uEkbUgvU2t7dP5vi1B59jRv+2cMmZrd.wkaQE8tHVGF4+8H304Aa.q+OuCfmGG035gdpw6cMpSXsEcldzdhb0N3kvp8FdiqGZsoqrXIC3AULFwsIwEtrCeZJymni9Ni8iD9QhqI2sjwtMpB8+CF3vKTqLk082V5npL6KwMWQyzTkb2vXa3cqSnb8huMDdUJ2NxUNTK8SUkuOuu.3xViLsS9FPVHb5NcV5Z68qSKDWxnAEdxvjw3bS.ixmF+E.iCuuPUGG3DTB.WvXq27k4I9Zvs8ETV6cwh.JbIG03W3FQvnh3CMxK6pOmr6bLcAIsLCzjvrUDeB9zWXQIsdegEGHTyCaEveqU7YM4uqvWq3.Xho9IUxXrqjFkb2UiB4Kn4Qsou0xRF9ODtX0jsY0YvlGOC1r1LXyONC1r9LXyOMC17jqzF4utT4HA2Ktb.Xznp5V955wCfUmB09WHLefwJ
-
@DanH The parent name is "obj.parentName"
if you want the number of sliders you can use this:// This is the amount of sliders var sliders = Content.getComponent(obj.parentName).getNumSliders();
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.
-
@ulrik ah ok, I think I get it now, thanks
-
@ulrik Use Content.getAllComponents instead. This will return an array, just use the first element. -
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