setAttribute() from array string problem.
-
I am trying to set a knob callback to setAttribute() from an array that has been populated by combining two other arrays. But it doesn't want to accept the attribute name. Apparently because it's a string. For example: Env1.Attack. But it works fine if I just manually type in the same thing.
Can you help me figure out what the problem is?
// Processor names array const EnvName = ["Env_1.", "Env_2.", "Env_3."]; // Attribute names array const ATR = ["Attack", "Decay", "Sustain", "Release"]; // Combined processor and attrbute array const Combined = [[],[],[]]; for (a in ATR) Combined[0].push(EnvName[0] + a); for (a in ATR) Combined[1].push(EnvName[1] + a); for (a in ATR) Combined[2].push(EnvName[2] + a); // Knob1 Callback inline function onKnob1Control(component, value) { Envelopes[0].setAttribute(Combined[0][0], value); }; Content.getComponent("Knob1").setControlCallback(onKnob1Control);
HiseSnippet 1527.3oc6ZEtaaaCDlJ1bc1qMscXan6eDA6GtXAow1YcCnXnNwIY0nwstwocCHnnfQhNlHxjpRTY0Xn.8m6wX+dOE6QX.6EX.6EXuAajTRVTNNNNN0EN.QvHPj79N9wiGu6jTZ4ysIAAbefUg856Q.VWG1tOSzsdWLkAZrIv5NvlgtBZqDIQ04LgO2ErQeObP.wAXYk6GTRaUHOPe8uObCrKlYSR6B.dAmZS1g1iJR6sUsGScc2F6P1i1yP50p0vlypyc4gRlkCtJvCaeD9PxSvJwV.Br9nsbnBteaAVPB.V42f6zucW9Oyhj+Ez.5AtDUixf1REE081bWGEiU8Bp2k55LXcE..VvVo1ibQ1iOC1j5jt5SsK2RO.JEgo8vZgrzKWF5U1jdqZPuQPIKCJkOhR2F111m5IRGQwmOA1fIH9cvRytIUhjErv6xCU6bDlXkd3iHa6KaL.Qo6u5pKij+4tOnXw6cOzyafdLiePPQ41PfHYKO.88nDcbHQrtqacdOONS1NnzRJ.KEgOcEDqfiw9nsXG+pxRMn8uT3axcBcwRqTokzio.mU7JiQ7JmT7piQ7pwTKcCCstuOteVUPb4dD0xrv9EKDcMF5t76YYd4vLjIc2CPXEOijHlsRbpSBRdtejNVYokQQVkA2Uckkh025BgO8fPAYH8Eqr02aWshjhIOjofuIwF2WcS6v.gzeWc6tDWBNfjnS4F+ATFwA4MfrXlCBKmJ8LgMrsCjUNK6+xk0+TpoPGIpRXDko3vcGH29q9xU7BC5VJdYJai9ZDVt+cpHJODhxmIhJCgnRBB0pS4JWFUG65dfzjTnHk4JAg5DxrETNCwYZIhOVTxN4TvxR+H2PxcK9KEKLvaRsbBjmVR1EJYrNk+Rv7fhu8AEMNcM3nUzIKoahRKwSYB0JkkIJ5aPxmvEjmxJooSw2VDM7Pc5LxwhUlKwejCqBU6ONfkXg8Nf3aZLTBJiekMnH7zCJZFy1NxlXHHm0fQEO0ivNsH4fXCoL.Z9j7UV4D5vmKFG9rsK0g3CnxnjWCpsh.MgiSCUqZ0+4gfIFbkLfitlXvUuHfWaDfediMwBrJ8QrgPZb7H9BpxtasI4XYt3njIEfaRBNRv8zVpXWN48mos5MClv+1tV+zYeoZfygdpXnmeyTOuamykdpdp5Y+ykdVyPO.GC8fbpANYpXYQ.IQyMqLPUNT7.xSFYRGqR4xBnh9lkK8dqbgIkh2F1hJr6NZNtvH3nzUZVvw3hrtAbqNcH1hTBlGt8OMapnxb5udhI5GwGSDXIdcV535dGzYTQEj.Z.wu7Xp68Omz5d8l35dezqk6QDSekc3RXNafYG0f4Pdi4Tsmhr5dewvQD1kzwmDzsI0qI1Ky1ZtwUHc4orP5OZtqP5KAGdyTq+Mi330fq+nMauqlZWCpq0KCiZxYbutbF0N6tsrViCOj3axyQR9nh9pG5ebF2EcEfmn2HgMcWi5YGhrTGSAejz6Hs8WUSqtAc7G90hKrLKm0EXZp8sr4C68eNL1kGuwFNgND2.FsHQ5ipmaug7Sl2v3OOMoNuKlv0ncj4axdcn1s3xfc8lvXG1KEF1EgwmktLXZGakH4lsUhjIf6sNs.tUl1.taP83tX+Sshpqh8Nii8NyKV3hFuclSvKVL1YN8tvwU+.rCewhkdY8ojxDZL9SC7ovVb29QA+1l5JHQu34BvnFi6Ii.fs8IuNjvrSsV+5eU6YlltrgatSsmEhcMstc+8ZwQTunYENinS4mPeiu.NXQgliefgpW8.CWkz5pjVWkzZd50OpROflqeEoeILNaCREke9lqKBe17MAuAT+tIQQuxx4O984l7Ck7fae.44t7PAkcXSrLO7aj4ZdRXu17PeahjiLFwU84xrVP8YghZuppshDsILGci+SdEOXYUaq3AKmL3Gj4nG11m+J63+eAjYM+XcOx0MS+utQAXSUaT4S9Qq5Qcnux1NqpNAvJSKvpSKv0lVfeyzB79SKvucZA9cmMP0Koe8PAuWTLF.nYqszejQKqsXpCO5iIf+GfWK4J+
-
@CyberGen those words "attack", "decay", etc. mean nothing to setAttribute. The attribute needs to be a number. You can get the number using the predefined constants such as
myEnvReference.Attack
-
@d-healey said in setAttribute() from array string problem.:
You can get the number using the predefined constants such as myEnvReference.Attack
That is what the combined array does. It puts that constant together. In this case Env1.Attack. But still doesn't accept it. I suppose I could change the array to populate with the numbers instead of the constat. I've gotten so used to using the constant that I didn't think about that.
-
@CyberGen said in setAttribute() from array string problem.:
That is what the combined array does.
It doesn't do what you think it does, I'll post an example when I'm at my computer soon
-
@CyberGen So as a simple test you can use
Console.print(trace(Combined));
. You'll see it outputs strings, not numbers.This is how I did it using the constants - https://codeberg.org/LibreWave/RhapsodyBoilerplate/src/branch/main/modules/AhdsrController.js
-
@d-healey I see. I'll try to adapt your way to my project. Thank you.