Link multiple Table Processors to one UI ScriptTable.
-
I have been experiencing issues with linking multiple Table Processors to one Script Table in HISE. I have tried a few different solutions which will work at first but then crash HISE.
These are the variables
const var Table1 = Content.getComponent("Table1"); const var Te1 = Synth.getTableProcessor("Table Envelope1"); const var Te2 = Synth.getTableProcessor("Table Envelope2"); const var Te3 = Synth.getTableProcessor("Table Envelope3");
So I know I can link the table processors together:
Te2.getTable(0).linkTo(Te1.getTable(0)); Te3.getTable(0).linkTo(Te1.getTable(0));
But any effort I make to set these processors to be controlled by my ScriptTable (either through the property editor or via scripting) inevitably crashes HISE.
I tried a different method:
const var sharedTableData = Engine.createAndRegisterTableData(0); Table1.referToData(sharedTableData); Te1.getTable(0).linkTo(sharedTableData); Te2.getTable(0).linkTo(sharedTableData); Te3.getTable(0).linkTo(sharedTableData);
Again it will work but then crash HISE with a Midi event. Is there something I am missing or any other way to accomplish this? Perhaps a broadcaster could get around this issue?
-
I couldn't really figure out a solution using a broadcaster either. I suppose there is an issue when it comes to processing the complex data given out by the tables. Does anyone here know of another way to control multiple Table processors with one UI table?
Here is my attempt, though the broadcaster isn't adding much:
const var Table1 = Content.getComponent("Table1"); const var TableEnvelope1 = Synth.getTableProcessor("Table Envelope1"); const var TableEnvelope2 = Synth.getTableProcessor("Table Envelope2"); const var TableEnvelope3 = Synth.getTableProcessor("Table Envelope3"); const tbl1 = TableEnvelope1.getTable(0); const tbl2 = TableEnvelope2.getTable(0); const tbl3 = TableEnvelope3.getTable(0); // Create a Broadcaster const var tableBc = Engine.createBroadcaster({ "id": "Complex Data Listener", "colour": -1, "args": ["processorId", "dataIndex", "value"] }); // Attach the broadcaster Table Envelope 1 Data tableBc.attachToComplexData("Table.Content", ["Table Envelope1"], [0], "Connect to table edits for every table (attack & release) for two table envelopes"); // Add a listener tableBc.addListener({"id": "TableContentListener"}, "Table Content Change Handler", function(processorId, dataIndex, value) { Table1.referToData(tbl1); tbl2.linkTo(tbl1); tbl3.linkTo(tbl1); });
-
Can you post a snippet? and I'll take a look
-
@d-healey Yes it crashes HISE so I commented out the problematic code:
HiseSnippet 1784.3oc6a0sSabDEdMvlF6TmlDk+5cirZqLJT.aSIPiphACNX0.XvN+HEkFMr6X6IrdF2cm0AqnH0K6KPuuORspM22Gg7FzNyrq8NqwPbcAhCc2KPZly4L624m8LmOBorM0.43Ps0hEuZmVHsXepdkNDViBMfXhVo0zhcc8Jt6I26EqSZuFZO254zVsSKniCxTKVrIefPyXwmRS97t6uJzBRLPAaoo8XJ1.8PbSLKX2x4+drkUQnIpJtoh1KjujAkTfZQc4nZR840ZAM1GVGsETn1D5Zwtv5lXF0tBCxPNZwlZUpYmJMnuh3o+iwN38rPhEYzpvOHusKRsLEHVrqVgFXKyxc8dGMsXeR4fXwjdwhqquI1D2a+fXxUjB.AVnFOhMQX3MYH3kQEdyq.uA.oXJPZJOHcU8JF13Vr.IB7bI8RDFxtFjG1UghmtZSnoqWfx0fvlsIbeTQa9hdVjdw4meF.+GSeuDI3gdGFnMzFTExAYFv2A5ZYcDq.sYKJguHcJOwol9dISjreq30IHKZKo0xJGgsRI8fs+A.5op7jNhyI6veNYOtyI2veN4B4Yr8rD9RXmq2gjd9f2IWyr8qY1iRyb8qYt9zLYh4lCTvFwKj.Pvp1TnoAzgm2.p9HSXvpF7CacRcLAMqgzBE0S+5jI.7mTXyTeKHkHMZgN.rFjAAODy0ffrSMiuNFxO83580YlAb3Gesf10c357rTs5FBKYlZFPJS9YVhXhNPrnMzxEk54BidSO+YEFCZz.vZf.6o3Qgi+fLRzkLguyMKTZUUpO1EB8yYy5WfJbf3hGN7d1gJudtpz4UWwCGDBxfmQndgR.h+8qCnF0FfZir63uafEokfYevWArQVHnCZZoxrW06.7esNoB7ZSSdJzxOXCTbLSytofzu1OAIAuua0K+7lY7Ez8KR.ugDoNBrAjXZ4k.q4RLXXJIsRVYFPubxL.YFY5jI3EDwmaNuOhm0FUCYWkJiohRcAn4RE0xyZgI6Wk12145eaY1MQuWOfR1hxPaSROchWmHdh2j.zunZ0FnLgqYSs3ty.EKtpv93LLMws4dH6tNZWE48OC2TV+naJqdmggWjVQQJoDAy1tEhbT2jn4mdDMv8QE+0yjsuS529VF30v7lzWT2KInIAr5klhrlVLj9cyNa3m1auYmGVYoMZQZb2Bx0KtSc7xa7xxqtTgtxWb4burxV9qWhztzcpsRwm5qO+G0ti3nV1asl1iJIx9cgLG8bOpExlgEAqXqgZyu.26Fn35qgb1mQaI00+9.9cxuWG7f.m6Gx2o2he5w4eE1j0HPZm7MP35MBlUHOJu1guJjeIL0z0BxBeyrXbDeA7JiPWGJtxi3fYcTGW4D655gEhWUuLlYzXvXbhAfQdV4z.i9C4jTe8Z03s+B.3T5Ee5oyDMpu9K685ujdE9UVxakku7aJWCdBrMB7.QeOQvKywLv4uMrCb1ZnG3baCF+0W0FRbZQcBcvUPMwU4k7Npa9HG9HUnebWQ1Tc+BTn8.E8t6Wj6jCzlJPlqsrrXklTWBKTYvjG2fuYFwAemZrav2OB9XOzr4w6hwJXwvIcG5PhwqwaWVC5Zw5MJRHTtIkPa0fRvFpI5cQLab85HaUrOPGRNL09A6b8765MRRvVeQ9GxK1f173DZDiEY9WySYf4qaq6AWf3CPvGuMom7bcS5AUZeM8xTqNdEpEwV740kfHtt2hiq+rllnOmKhXDDs94+H+Npo2vkl2N+NtPqfnK3Oe2uuxp3VTKn8+0H+6oRdpgr73l58bJvG99OI7P5moGhLoecbeDgNU69rvg69rPdOkjvXsyvQZ8Qhx68K0ytPvqb49ryGGmfESSLjES2xus33eWwaq2Mp9QPCbQanwaL9459c0.htIi2X8x567ABf6RcYXR8Mg7tRbNj5a41rBeTcCj3W+AAYIXyGaBw31dqmWr1aVchobweye7ElQrNluvLcEpFDtQWdIBJHA7RtgbcMpcywEZIYTO49jkUU1ZHlKIr5daERKg6Uj6dJ5cw7c2Lq5lkgjPGFecnSZS7ApKWmHZAWAw8FyscL3NqH1oVqT10xA8DwuD.ky8uT1Nq51a.sM44EiSelQWHhYzYIynrQLihXFcNiYT1SUlQxmHlQmHLixNFvLZB8HZKQzVhnsbdf1xPOoFeb4waHdKc9X6YAxq8AeXt2e7kCX1y4b.uRDGvHNfmcb.yEwALhC34LNf4NU4.9q+xaeaz+5XmLb.yEwALhCXDGvHNfQb.++IGvyh2QSngM8EFd+kAKZ1dQ4Nb+lH+e3Rb8MEqAC3OI3lb5EuvvH7QcHCyNpFlaTMbgQ0vuYTMbwQ0v6NpFtz62PA6uUbYzldeavYAWdcu6ui4Q.V9Yh1+..DgIYK
-
Actually there isn't need for the broadcaster here, it might make more sense to just work from this template. Just uncomment the block of code and recompile. You will see it works at first but any MIDI event or attempting to save will crash HISE:
HiseSnippet 1613.3oc6a0sSabDEdVCSZvo4Ghxe8tUQsRjeDAulR.UUECFb.0.XvjetpQC6N1dBqmY6tyRhUUk5k8EoOH8MnR8ldYe.5E4MnclYWaOqiwXYLN1H6KPZlybNy24Lm4LmOCTzmYiCBX9.iYNntGFX7kvR0o7p4qhHTvVqCLtErT3gp4d6FziWGeXXkrf0p6gBBvN.CiodtbkFyLMP84iOaMjKhZiaME.7JFwF+BRMBu0rEy8CDW2BHG7AjZZqdwbaYyn4YtrPAplBt.vCYeDpBdGjbYof.iKsgCgy7KwQbb.vX50XN0KUk8dZz5eEIfbnKVNHCnjvPQSWf45HQrbVP9pDWmhM79..v3KJ1JVLUTr3VvsINjly2JlbCk.yVZnGOLRkDdSk.dYzg2BZvqCPxPCRvHHMKrjsOwi2RhDOWAtEki8KiDgccnrSXsCPh8RfBnggH3FoLH0rSAyyDpP4yWCcDtfuXPSSL2RKrviME+3AeW5zhyh.t4wHeSkkxX98lMzrBlmmUyiQECl69QhueGzQj1fcYdJcUIRRMURZ5Ewpa1boR6bBlwp2MiUWLS1d2LY07J9gtR+Hoi0zDysPyMTrPq1Wn0IrvrsuvrIWnlODTE4icThVGwQBE2fVgPwya6iE4aqRc1GWgDHNJatFkIdxCSGcBMuOtrPHSIoMqI2JoCNuKgdzArNHV5UcUZ1SV5CeR5zkCo1bBiZxn6v33coy8fz+b5YR+KoMaWT4xcTlL6ym45h86nXYwD+to3bzvZGh8erHZ5FhatPQYjjWagm70V8pJ1QWFzVHitEkv20CSOoZMf3aPxq3wnRr8b0E7qFeAWE3.Dw03KCiN3.J.qWV0QDWAFgvkWb9jeNd2sq+hRKuoGs5SyqFuzdUHqr46Jt1x4aHeoUx9tR6DOl6bvlOJqyRAKEMdY5wa8nxqV3Mw5K9Q4GIM8JQiAfWtk7XsgKH7FgG5g84DYvyXc7whR9Q0rlAtNN3HNySs13BFhp3mpC+gVN6OlqdyA+5qx8dhCuZKo0yUESpTs0qK4v4.ZEOmNBHhx1LmPWDOYsb4CXwBDYJIJfJqIRCH755OvMvJv2qPbVXQB2tZmwXpNfQwox4AFieV7pvMJWFayaAvogEdy4yaf5a+0h19q.KIp2oJcq176nFa9ZzwXymioXeYvKSWZQ4O60VT754VT10lK19C7Qz.OVPBCWBWibfHkOPexWFHdyE+S6KOM0mOOC42QQe7YEDNYG0oDhG5qRKVsFKjxSjFLU2ZUJSe1pzzibsJMFbYOQ2byz.ikH07Z8ruBi2TTtrLJzk2r8hDnbaFk4UkQI15Gz6i49jJUv95XuiNzpbtne5Vybqb6icwH8j1uN2KDIaHeQbB2mwhL8drnamW2CFAWS4EPyw2hzScgtHcmRsuIrHysdThZAhqneTEHlAFMna0mA.YctPL0tUz529qb6oe7lL07d41KD41VzcMhGyE4eVi7mRl7z8X5wcfMcJyO+0eRGgzqCSv5HNOtMpXmqUeV7Sq9rXtnE0j5.v.Cep0YtE2Ssk1XjnsueCzRq05UZSuXbL.SlR0iIS2Mtr3Ytp3z8V1T26G.zyEyaDgGqf8rpdFFse74qfwU6LkUYFsw50f68YBf6yB4DZksQhpUBtkvcBqURzBuMV.NJE6p9ZxRIaCOZ7BxwQ8vScTC9OwmXgYZ9cpIDlogP8fvsavWQRMoEekaqFWl4WaTgtRFcK2lLKcYqi4gzjKOZpDqR5dEDtm15tbtFSZoOYQDMgwDiSXosIePe3FTYo4RXg23rafsvYkwN8bkhgtA3WK+xAzr6+nMsk9zah7cDmK1m+LltzDFSCSFSVSXLMgwzELFSVmqLlx8u+9e+GSXLMPXLYMBvXJEbBclIzYlPm4hLcldtCNQazi1P7tPQ67Vlp1AL+7zOvnK2PqK3bCuwDtgmObCGpOqLVxSL6Ddhliacubl4LNvw63A+wrS9MtMlveL6D9iS3OdQl+3PEuCPtjCUbeV4UNj696rxwbnB2AFeyACpGFbOGF6QMjsO6s1Q+EMKKfeY0LB+lp9e2XF31xwlc3Ok4ZBZMu01Noo9DEs5WEy1uJtX+p321uJtT+p3S6WEW9zUTx5b0PNqVz8DA66haD0SfQDwa0UFv+2iapOM
-
@HISEnberg said in Link multiple Table Processors to one UI ScriptTable.:
any MIDI event
I'm not getting a crash here on MIDI, but I am when saving.
Seems like a bug to me.
-
@d-healey Okay thanks for checking, I'll open an issue for it on Github.
-