Keyboard(s) Paint Routine Inline Function
-
@crd said in Keyboard(s) Paint Routine Inline Function:
Is it possible to play one particular sampler in a callback? Synth.playNote plays all of the samplers...
Yes if you have the samplers filtering midi channels and use one of these to be able to set the channel to send
Synth.playNoteWithStartOffset(int channel, int number, int velocity, int offset) or Synth.addNoteOn(int channel, int noteNumber, int velocity, int timeStampSamples)
-
@crd I took your project, added 2 generators instead of samplers, added a channel filter on each of them.
Added an argument on your "playNote(n, ch)" functionTry it an see if you can get any use of it
HiseSnippet 2900.3oc6b0uaaajDmJ1LMRMe0hhC8eNf8LJJjS2JKR8cRChcbrS8kHKAKmzqnnHfgbkDgoH4QR4D2C4c3dTtGg9HbOJ4M3tY2kerjlVVwIJIsQF0oZmYmY+syN6Lytqf664nS78c7jJT7vSbIREtp7fSrCFu8XMSao8dfTguQ9HxIO2Qyy3YSLMLia3BcHvyYZfoMQ59m3p46SLjJTXkGRkrPwUkX+756ceMKMacRBIIom5XpSdr4DyfDp827QlVV6pYPNzbhPuqu4d5N1a6X4LEP4JxUkb0zORaDYeMZ2tjrTgKuigYfi2f.s.huTgUuuiwICF67Bad+epou4ysHzFJRC.EwIuqikAEwTpRaO1zxnej0vWRpvU5mXaVgaa9J4tfEHldhM5lLFnDIDsGEtTZ3sRJ3oHBupBvKGHUP.RqxgzWHOP2yzMHgCEOet7d1ADugZ5oWZ38U5RS+Z4scfdXGTYh1Qjc8fFwRTVoZ0pXD8eW+NkXdCULHCIdaqYY8bv16WNvaJA3swFc25Q6f1a+C6g1Bs6VaeXuC9YfZvXhGAY5izP1NADjiMRy1H7yCGhzcl35XCiNzBELF5nOCXkfEZ+.zwZdnAZSbsHdJn6h3HXDIHjV40hXtFfgSIh5rDQkJhnLfy6OocL4gDahmFrHkZ.Yq.rVfBfdhncEkz2LieVco9Fnqr.ibLXd1yvGTwN1if9WQ2i.9OT+rGa5GTl18nNUYHryo722oCkXIQ03Za8nvMrflhVy0LL5qYSrJul.+0vHXUmtjKPrhOIn7ZuvzHXLvud0bYOlXNZb.vuYtrAuFmWD66.cassrrPIDROwEDW47frBGyJYgkx4.akyA2JyMvKVT.51SmzaHnC5hlhRGXZkwVzmFx7.dHyxCmZqGX5XWdz5k9WkJRUvKFaB6PtK5WphUw0wMvsvcvJJXEUrRcrRSrRKrRGrpBVsFVsNVsIVsMVsCtlBtVMbsF3ZMw0ZiqWEWWAWuFtdCb8V35swMphanhaTC2nAtQKbiN3lUwMUwMqia1.2rEtYGbKEbKUbq53VMwsZga0A2VA2tFtccb6l31sws6f6nf6TC2oAtSSbm1XvxC+B.rZM32Fvu..qBzU.5TTq.zU.5TfCHWQEnqBzAvqnBzUa8qLiXwgNdnxlvbu5cPlne.on1F9v28cqWpHXbJZNDUlYcp.l6.vL5W1bczcA6L5a+13fEUL82Ghwr+zIOm30Uy0kXD1spfdJVbDcQfmIoL++4WgoU1JIwxGBZ8VNPJrAJdiIrw+oZVSITt+s6hfsnn6gxCFZ+1TOx5namKSWS6ihg3BP+O2B7moCPIpMhFL4.hdP4ewDcKV3Y5v7SzMSkWeiXmb1VuYvMh0Ox1kUd8ekN.upXoWs9o2Xz0YpOIZiUxNC1zLd2AT4A3e3p44SfbUblUdIZirf..cLLniIDBw2whTw0C18UFzBelRWo45vvSaTneFcbrz7CdDarhTL2DyVAnRQABXrC6GcAmJZQ+.GWpWQ4HFz9Wz0R6DFUPJHTEi3qJQ+OQHL14Xh2hBCrgSbzzsL0OhXPkJO3I10IzUlm3R6ZrtCMgP+XfyOBbgzYD8Hr5Co.9U7rRYiutLX3BMXn56qfgpKCF9tKXnxmTQCU+3NZn5hKZ3F2pDB9Y6ofZlfhV8Yzrgi0hQu7wN5XzIr+0muQiddWVOJcqMJUxz1hdJhHuCD+3A8OLRWkC0CnjTZf5.QUhkitlEBJQFrl4Umch3.fSD3T03x.DatDpAZncOGWhWfIwGNY4j+9fd6GpN9PiPgkleaZo43HZgkieanb7XZ9vgj1ytuGAzJvIgQlZyuc1Zyi6HwVCNbM6XSDMOanmC0nANnLoqEE2XCX0A1ySPuHxNAGXkE7yL.Y3P7gyo9BGuipvjgawpXnEnUgZDDLsBFivdMqzbztEYOBk5S67darQtGhJ1BUbV4E4a3mcBqTKcmW5wKPZECMui7f.ImQhkjjqyS104Dr7TrfsaloJW.ylDcGkG9L.Qb9zEAJRTNujlEY5ZHesfuXb.jb1yO6D3Ia7eqRjWLL2Wpr17sAmaNyyHoIW5yH0ctGUflMk8aJvDk+dAhF93lZTEximah7zXTHU9oykS6ZtYyOU5bQu.tOgGIXpmcn2.ju+NotPtjDzfs3T4rWK4ygWGGNtLa18s9NPQJEoUf.pZtKX3zEaDadsw5iYkjFuyN1hYiCu7SnjBZe6YWVeLFAjg7MPP10uyFaD1CA0ALWmVkzoGy3EIa1.FuRlJbhcT3jvpG45mdwy8FN79mrCWfbEjelh7lFrKVk5S7J.Ww3wwNbVcFy+tDeesQD5PjD6t75Xj.iH7vFbw6DQrfwRnri4vguwCJeRLmCBsTNOGK5EmyFmLrouOS9bBErrMabwfiJ.p3NJUX0zuDh7Y+RHhOTiNuxRgN5XumsYPOWh8Y87MRgkiBe5I68.HIJ84SBokTdJP6AjiM0I7GSon7CH9GA9YfV2N5MJjJ7YALtWK5oVn0GKYZPoHXNkdILgJPewpSh9.qJWPsW9eWf+VV7RboT9gvWBKccrREtgbp5XoyiyGGWWDGJY.hw6QfbU4j3IKH6woeBraJ20wXpE8UTDeQN5yPFx.bNS8LXzm5x12L3DwmoL6yzs578Lcy9UDmW39Ex8MCzGmOduTN3EbmWz3M7QOul7NCGBkTk.1Uk28eLyW37cNTtNGJetL8kyXwzY.4uHm2qxMiGi9+NuOFs6b+Xz8zCfg+POMaeWG+TJd.Yh4gvVFeQhOwmrqG4ed.cUVj91NzJ.yg0qu2tvjLWYFnAkZvbW1BJmwNHk6wJy8ZhXr1z6ZD5eNOG8pKpWHeNwZh+y49Z4gv6Fx.hrgnU6ZZEP7Bch5t2C1CEx.w4j1IJqsbk4CeyJqDMACKWI7IdzzqGFMcfkoA.MZ3zaHqyQEOOtDKcp3hrzbnjRxSbI.x8BtXxeEp76XaDIsbgaJI8dLN76lutDEiv3.SZks6XeLwBpBfgwuDR6OTapUPD0zq9ccrcbG6XapKZ5NfD3YNZDwSD64Ng1JH.RckP4q17.hEQSLVw2r4ig83ZdfchbAsEJuwe0Qxc85qk4vEQi6g9yQ9yU9zL+I+RGG0UCbTo0hAAQF.oszIgg5nEfW3Rzf.71UiJSa.w1f03+A+DxTg1tPHSkHlhS2+Je59kxCBfSVNAF4vCbxlykjiN9YpJatfeWwl+zy88fczZFCL+Mgt86ad+ovZhWZp+mMYCU1TotaFh7CHtvIlSuEErxG7POmotYk5JaxbHg5BzOBLEhywdPILicRkrdaOGe+gvzgoqT0Kzep2HpsRLxywDO+zzf0VwU0U3EZP8mL0ib.R5MaTpdnFym5Rx71JYZqlocsLsqmociLsalocqj1bCZWMWpmA8KvWlyE9YyWXNPAridHzy6aNJV4bJhaRhMyLnH7MDLm.lW9ilhadahKtL86xzuKS+9g93qyxzc8vDiHdI5ebuNeUYVnbDMy6GJnlorlqkaYMW9sprlPlphRplgYMQIqkgYcQIqmgYCQIaDWJkdD7gYd3mY2aYgU3OgMqdIKH2uk31HenPFpY3xxc6seOIoKhjGzqW2yVxUxH4O+6QRVTdv1+Xuc5O3BeWMpKuqlk2Uya6c0n9Gh6pYyk2UyBoXwZKKVbYwhKuqlExc0n9mp6p4JadF2Uyqu2Gx6povx6p4Oh2US0k2UCkp5xzuKS+t7tZVdWMevJqQ3dSJ7le6GPFs2Knbhltmyyz4Ggi8mW.FE.k1r+LFTTtKsMRI9naxUqTUh9WbgmoqS2H78fENeYTu.xT6BHS8KfLMt.xz7BHSqKfLsmoLzxD1ZZfyDdPRfP+c3NVE1I4xwj9+fjAiQH
-
That video is out of date now, you should probably be using LAF for this.
-
@d-healey Is it possible using LAF to display separate keyboards with separate sample map ranges?
I used the paint routine to get around using Engine.SetKeyColour. .isNoteNumberMapped allows for showing more than one sample map at a time.
-
@ulrik hm.. I get the idea. I'll see what I can do with it. I'm not sure how routing the midi will work with MPE enabled instruments. Thanks !
-
@crd I think you can use isNoteNumberMapped within laf
-
@d-healey Got it. Thanks. I will give it a go.
-
@d-healey
What is the laf function to call? draw___?Sorry -- I see: "drawWhiteNote", "drawBlackNote"
-
It seems like paint routines are still the only way to have multiple keyboards with separate sample map ranges shown. Unless there is some way to assign "Engine.setKeyColour" to a specific floating tile LaF keyboard that I am missing.
-
Unfortunately it seems the
parentName
property of the notes isn't populated - @Christoph-HartIf it was you could query which floating tile the key belonged to and colour it differently.
At the moment the only other way I can think to differentiate between them is by setting the key width differently for each one.
HiseSnippet 1158.3oc6VszaaaDDdoroQEaRaCPO0SDF8fLfp.kphsSBLhs0CWi3GBVNNAnoHXE4RosZ0trKWZGg.CDzeY8mTu2CtyxGlT1JtwBHEn.UGr47ZmuY42Lb5IEtjvPgDYT9zoADjwCL6OkqF0ZDlxQ62FY7UliISGHvROEITg1cZ.NLj3gLLVZOsOFkWFE+6Oe9tXFl6RxUgPmIntjCnSnpbs819ETFqK1ibJcRAuat89tBdKASDA3YISGT.1cLdH4Hr1sRlHiU53QUBYeEF.C3ytBuo8GItfm3+YzP5.FQKTG0GNnD0nVinLudY0ZHBYrbu7JeojJ+aMOj5QuVe9Mv2DavNOhh2AFktKHU+d.IiBPZ4DH8Hy9tRZfJ2hFOeo49bEQ5igq5hPIwWTo+xvrk.7fqpMAOlzUBBWGQk0cbpZC+YsmYYAW2gJaF12dK6N7gTNolqj.ExdLw.LK4.OPHFuC2qKgvpnCBbuljLjFBmX2HtqhJ3UV0Shu3UinJxQBEY0p19YVFV0VL3WWy58Vko91UfmqwAWNJZx.hzdqs.rrlUYvZYsILj9etwun0WuYMG6maOrVHQkPJpj7uPH8dqY+z4ZZ.Kh.nr7kVkIrPRxIOOGwbE82hHWnwbZ.Vfi9.07DQD2i3cBwUg4CYjJYHqpcCv0KW6YYUmsfqq2i4UhKPqKsruoIe+4ZS+FRJXLhbtl0cFx6JvJ73Kvp1mi0Ubli.0YV93JeZ7Q2DBSAGE784T0wAjT4tBlmlmoe91rWTJiCd5k62FqvZBcpNvu.hTQ0vwnM4bXhPB8trYaR3XkH.ZtaIlDH35SvXEUr0GlQ9wbBCQ8zihB3rWjNMpN5cEGzLMW3629BpmZz0J9iee6QD5vQ4if9va1Vitqy3CToS.RxXWl.qn7gmRgKJch+Zyhp93YFgtUlSuCRJXKyLziFLLaPW4U777tR6NvDmjq8pqt56lUaiT0wNqHuSk6bV9iu5K8FCy2aYauJjsWoAzpO0t9iqp0zlFFvvSOFX1mm1CBF8wPqRr8CDW.AApZzLV9mnIh0arQrbqnPkXxdRbvHpa3Lg1l3iiXpcBBHXo96.fUkLJw3tLXTNbTm.2hBvfSs0eR7uM2zYim3rQ8XuNULDZ2NT3Ql4j0iegwwbfGngRrtWFRNC5OExBX45rAF6xvp9porabR85j8F3l5gFFoJOKMxz2g6UH2qacI7UII7Fs.84F7Rz8lK23iwn9v3Oyb4F+mjK27+4x+qvka.KqcqkRf0gDdQ.jlcGI8xfoFfOTMyhI5kO3gT0zhKKdOVbx4NWb5SEhOxrGU4NZ9XrzbvH7IrOGXLccyGZ1w2GdqmCvkM695Ec2x+gzCazn63ODqjTng2D5V5CcatjT5.b3lFkzeFOQ1QKquA5S3dwB5V0Ti00xFoFqmYDMA6JEu0MY8D8BseQrF.S7382KadnV1tNJdkEHNSmZNnIPCwacc0k+O.yNmeLMVfX9wEHllKPLOdAhY8EHlMVfX17NiQOKZmHXFXR6.nnWm3gtFFc3XfYEyBQ+MvlYZ9D
-
Is there a way to trigger a note in a specific sampler with code directly? That way works but breaks MPE...
-
@crd Sorry I don't know how to do that
-
When the keyboard's
useFlatStyle
property is set to true the keyboard has a transparent background. However I notice that there is a line at the bottom and a shadow at the top. How can these be removed?HiseSnippet 1044.3ocsV01aaaCDlxIpH1qcaEX+.DxmbA7Lj8xxKaXXN9sLiFmXT6lNLTrNZIZINSSJPQkTih.Lr8mZeb+j1+fsiRVVRINACFq5CA9dt6He3wm6XFIENjvPgDYTdxx.Bx3oliWxU9c7wTNZPWjwmZNmrbp.KcmPBUn1KCvggDWjgwNmoiwn7tn3u+96aiYXtCICBgtRPcHmSWPUYniZ8RJi0G6RlPWjK5CZMvQv6HXhHfO6XZiBvNywdjKv5vJYhLdROWpRHGqvJRHxX21B2ki8E2vSh+JZHcJinMZfFCKTBbeAyUyXMJpiOk4NJ8bGhfUYTVUXmjpvWXNj5RWimUM97XGVYYjudXTpH81o.8Zjmd14n2FnjQNJsaBkdt4XGIMPk4QymOwb.WQjyvPYOOURhEU5OML6HfH3p5KvyI8kfw5LpdnscMK3Ou3aqTAJ8gJKFdl02Y0i6Q4j5NRBbPNiIlhYIK34Bw7S4t8IDVUcRP30kDOZHrh8i3NJpfWceWI9lWtRzzFtB8jhHt690rlkFhWMKwze8EU9Pkae7k4M9TE4BghrUY2lA69ilcJpkfqi6RdUsixUtsh0ccMa1F8oKuRAiQjazsVhKerDqxiVLkHqYcMlEQVGHbuWTLY9vho7Zcmja6bAJ3C3T0kAD9C0AfVIQfe85AcwJrVAtBChKfHUTMEL5RtFZmSzikM6RBmqDAPmYGwh.AWuBF6oh89rT0JlSXHJnI2yL92MPuO+7gk4a+gq5Eos+kex+.eZ7Lzl4gug5p7Wm8u7Gs7ITO+rwLshZgxwqmpV0Xmvq9LAVQ4dSnPITSuOyLOzCyxet0pBSRUnhYpPGM0Ki6oIV7Dcezl4gUj2qtevw2Gkdqg4GpXYsOrauQev2+arNvttcMMVWZX.Cu7RGE9ZxEwpIv8LLKjD6+bgtaDfNI17GnIVMZdTrcmnPkXwYRbfO0IrPlcIyvQL0oAADrTOZG7pjQINiatfk5UPUS.Nrqe3IweGer8QmXeTi3nlH77XjgBWRgUVOEElpxAEglJwXuNjbEwAj743x5cCb1mgUiUKYEXwvQ8RuAJtAi5AcNRU1lzLEuG2M2VeXkauiV5u986pk9sepE59Sjg2BDtQ.oJ9.g9UwUNfF8BSk0Sd4gT0x7uZ9+1qF+Wo3yMGQUN9alik1.GgwAeL33p2ZelYuYyf68LBtqY+e7iyCqnWIhz83CwJIEZwMg1kwPCmCYkhPOn0njdjXhss1VWAFS3twF54Oqb1PaarxYiTmnEXGo3cNIi20uluWLBvId7+HSYygZaqFn3Q9PdlPqLZAzR7NGG8w+KgozaNmlaQNe0VjyAaQNe8VjygaQNGsE4b7ilidZzoQvTvj1A.XTu34tFF83XPYEqBQ+qzA2fh
-
@d-healey setting "DefaultAppearance" to false gets rid of the lower line. I'm not sure if that helps...
I ended up using a paint routine instead of the floating tile approach.
-
@crd said in Keyboard(s) Paint Routine Inline Function:
setting "DefaultAppearance" to false gets rid of the lower line. I'm not sure if that helps...
Still shows up here, just moves down a bit.