Play held notes on Modwheel/CC like Omnichord
-
Hi Community,
What would be your approach to achieve an effect like the omnichord.
For anyone who doesn't know this:
I want to hold several notes and slide the modwheel up and down through all held notes and the same transposed/inversion notes.Is it possible to generate or trigger notes via the modwheel?
I found a midi cc to note generator module, but I don't know how to use it and the doc doesn't have anything about it.Thank you already and I am looking forward to helpful posts
Translated with DeepL.com (free version)
-
@StephanS use the onController callback, look for CC1 (the mod wheel) and use its value to decide which note to play in the held chord set...
-
Hi Lindon,
thank you for your idea. Do you have a snipped of it to help me with that.
it doesn't play any notes when I scroll through the modwheel.Thank you very much for your help
On Init var notes = []; var heldNotes = []; var modwheel = []; //Console.print(trace(modwheel)); inline function Omnichord() { for (i = 0; i < heldNotes.length; i++) { Synth.playNote(modwheel[i], 60); } } function onNoteOn() { var note = Message.getNoteNumber(); heldNotes.push(note); //Console.print(trace(heldNotes)); } function onController() { if(Message.getControllerNumber() == 1) // Modwheel { Console.print(Message.getControllerValue() / 127.0); modwheel.push(Message.getControllerValue() / 127.0); } }
-
@Lindon said in Play held notes on Modwheel/CC like Omnichord:
use the onController callback
I think in that case you can also do without the 'inline function' and just write the for loop.
Lindon will verify that if its wrong.
-
take a look at this ...your version isnt playing any note in the Controller callback...
HiseSnippet 1336.3oc6X8taSbDD+t3bHrKspzRE8iaQ8CWHoo9b9mSciZH1IfEXhUbJTIDBs4tw1q37tmtauTrpx6XeD5KPk5aP6r6ZGemwDRsnfJPT9Pl++amYm4lMsiE9PRhH1xtzwCi.K6q4zYHW1udeJia0rgk8m4zhlHgXhg0dCinIIPfkscg6pXXWbQK8O+0OsGMjx8gIrrrdjf4COfMfImvs8t2mEFd.M.NlMHi1quaSeAutHTjh3ofSYqHp+yo8fGRUpsfi08nI8srusSktm3Wo6VqU0aaus2Z8s871n5IqWthevFau1ZatVP2JUoaVEM5J6Gvjh3NRpDRrrWbOQvvN8E+J2DfGwRXmDBJBOqNXjMrOPDFnNhp+1pdeVXP6wIpDKKam1SRaELosa3zhEvNm+jz2mqEPlXQ1Dn8BWD77xBuxyDddy.dVYP2hFzgfPDjFRk4Qlp9MR.Sjuz1jKAdBSNLa88cJbutSalzu+rw6By.uXg5+Z7Np3+oN62sK3Km.1EcN3Wd6Vou5qn88ZN0EbIRAwduIZditzMu1E9Xu2G689Pn26lFn7INOldJn6+z.4qzzcEwCH2Ev9OUN8h5A+8278fG5KQHbbLkmDIR.urdtCLfcrfCI43NkEUloE431.jo77t1vJmVpTwAXpHidWc2wLqjkYaJOmyP5bdpE6EYI2mSwhWG.O4AGl3iIFUdNaqS6zvD3wr.Y+L98OxvtRV12iFGf0P+bWlKbouAkcTV9d7L5Oi4ZW4cvbs+Eicse4IEW2oieLKRNQhBae4HtSPW9q7FoVK7mEbHXIKQR5CgAOTHwK4HwNjm7zZkFIod8iiY85AwIYkEC8z1TWjxULKOhW85cv8EY7di3UpaJ2Wk3I9zP+wdxcoeqTwrgbU+PfF6tTsREyGuLBlJbEKUD6pcY6TtF6G8pTsFa4kWpTQzwEYcc0C.VkkbeXXCLq6xVBkoElOtQoI8Qg0FKPGfkWVQeVohmowyjSTKJ5zXTk.WuJa88tSrvaIkOL.xCAzN4hRHv6I6mAgScH0n37.cahFPmoOi3hCIhPX0nXFW5dKN5RRHZyObKxxDYL0GbyFJMLlxl50m1h7gWYC4rZmWoDbk2Nj6tTIDqsv6O35+qx5wEwv9mBnKkwofJP4qo0JcVIxzdoaWiatXUUqGEKBCgXi1kT0vwQtGHmH+goCNQoEYmcHdjQoS72PAFAhJ8zrQsyok8YIsEIXoapLNiG.u3vWQLdDMLEb0oRENF6juYGx24c90HSnPOatpEERGpNv4pFOYjoOcExlkMWxLZyMolF.ZEDr2PcZsYfqwoqPprQ4xFCT2BmJYo9dy37zLSitbcRZExopCx4JhCMxOUx4xMUBmCf6VHynnf2jyjGFAuxQoV0MFg+0O2rAURUiuFwC0KBhkLEDra.mhea0LLqnSCH44RQzawU3Jb41C40LMt3XL1gMHJD1meJDhGRMF+B7T0klFJGyM+r3VBtHpufyx8wti.o45ZVrOyCzcjR7A5S3bicOBvYlIYVI4a28A3SOnwXdBlybg2kOWbQ0qu1w.Wh5NL48iUuK7A+p2WbGJtp3+epz2zAWesBQWtIu6q2GIRk3FA3dGwpEtcvu90AeWgOfHlygP0Pb6ETiaMzkUzlWIvCzD+M9yHgdJZ6QB8FK78lXLf5GKdlu4SfpgRWUyAysb8+5xhNsTzDOK8mEyV7Ffax+Le+7t5kLrx7Z3ZyqgqOuFtw7Z3lyqgaMuFV80an5gV2IUJFX5EwWe1de8NE11lGdpaKs9GjyXSmC
its not over efficient and it seems to drop notes if you move the controller too quickly but it will get you started.
-
Here's a slightly better approach - its using areas of CC values as opposed to single calculated CC values in an array to trigger the note - then when its in the area checking to see if its already played its note...this helps with the inconsistent value sets you get out of most CC Controllers/MIDI systems...
HiseSnippet 1466.3oc6X09aSaDF2tsdBaXRiMlXe7FZBkRYswouurvJMoEhfPiHcvjPHzU6Kwmv4NK6ycDM5+i6Og848o8ev1ycmShcZHvhfMXin7gbOu96dd4dtKsi4djjDdrgoywChHFlWxpy.lHnd.lxLZ1vv7hVG0mQ8B3w9F6OHBmjP7MLMW7NRALsWxP84O9g8wgXlGYLICiGwodj6S6SEio1du6QCCOD6SNl1OmzarWSONqNOjmBfYQqxFQXumi6Qd.VJ1BVF2EmDXXdCqJcOwqR2sWeG2cc2c6M100cycNYixU772b20Weq086VYG7V6.J8IG3SE73NBrfjXXtz9b+AcB3+LS6fGQSnmDRjKbM5.dVS9PdnubKJoZTOfF52dXTJwvvzp83X1h5X1UrZQ8oinON18YJFnwZjO.ZtPQ3sXA34lGdkyAuyCIibHZIMh.Gy8SCwhhnQlyxXP4rBnoISPXITwf74z+wg3ksZSEdASGiKLELBIj2EXLKw9oVGzsKwSLFfKYc3O8tOKdgWQu3krpyYBXEI18sQyXzabyn4herW5i8ReH1KcUs6un0iwmRT8SJm+kp0c4w8Q2g.8SxX2r5o90298TG4I.HbbLlkDwSHt4sbGRe5wbFIo.0IznxT0n.0FDQJqno0jJHkLTbHDJxI2E1aHwJ4I1FyJXLXcAK0h9h7KOfggDVGBry8OJwCBLx3b91h1ogIjGS8EA4r6ukibk7juKN1GxgdEJZm4QSty4QSex6cGMYZd9F+Ka0wKlFIFyQhmuHi5XDUrxVy0Xge2xBAYlDAJfD5+.t.pkgE0PO4oUcx3Tu9wwzd8HwI44ES5ozoNOkIIVNiV85cfqsQY8xQKDmHZGhGP7k7H.mu0EX4zMk4IOVB4gC8F5jRK+KN14QypdgDbbokq5XWDJ4XLARrcrg95RzZkqR+d2J6TktxJK6XCF1l1sj5HfUoI2iLnAjDJQWF3oXVzuQoIA.ypCYnbvJqHWeli8YUcj.Z7tsEFrZLHieI2JauVoQprrzDZ73B3oVAmDRX8DA4.3D6QEHF4lafT34L0Vbs0f6BjvCIqFESYhRWiAFEEBZ8cWCsBRDCw5R4clBHmSq50mTmhPPpE5rpiRVblzdGwJsrCf2VP0EbG8Uo8X7XxAmR.SJhSIRWULsV04LGzjVoaWsYlsnx67DyCCIwZocjowgdtGQLl+CR6ehTJTsZHWz0uNZJAazsPkyB1v2PN3ajLz0rQ0QqEAzj17jpn0VCRsSjSnLexKN5UffGgCSIkjAMvXSFreMZHKOQyTH09px1nW9RzLESJW4Qk0SuADJiIvYrJIx1u.Gccb2PNTvNKWr1nhRcGBjQFZjaUaZgcIZx6noHBfJ6Ir0WWaxiOT1QAZ6IpjEwCjshBNJBDGACH0E0YlZEz0PTFRRZZvSsKr0EB.7zmRHMjTvB8QOIyhO8lnsJmomVbltltAQA28Gn5GZ5WRa0ahprY4xC037IkgEcNpfvYYmyLQuf7NECaClZWRIlpG3lnSkIpQBBSLJNFx5MaJILD.tmnHmfbVSFUbTDg8plcZTWqD7qerYCr.KmckQCjKhDKnRHX1fbJb+I8jLaqFjjmK3QeHbE7BihsGhwNz9QgjCXmRBgMoBieNrq5hSCECoVbPbKNiGEvYzBWn4gDg97l7XepanaKDXumOlxU16gDXpXRtqc9M6ce34h3XHNQlyXg6e6qkL070WYogKRVCi9v8oSK9+lmNM6tO3p9uemEupE7jiJHUpD8uSt7g7TALTBFpFKeXjEbAkNv6+7H.JYLX9KPybA4Ql50kkq0uli4qV7mvmLltx0lYLcGx7+L9nO1Kl+LO8XL4AKWPQAhsL0eArsUK4ZjqgZzV9DVe34WOyyqnoNmhUlWEWedUbi4UwMmWE2ZdUb64Uwcd8JJec7sSE7959OCiVsOPcu.SS8ePfpUz3u.TGfEGC
-
@Lindon Im avoiding work.....
HiseSnippet 2524.3oc6Z08aabbD+njOGS5OZyGEoOYrkODPYwPyiTTeXUGSqurUskEgohSKrMROc2Rws5tcYtaorXUDPPKPQ+WHuk+LZeon+ITf9Zenn.EnOlG56syt6cG2i7jDkfSiaaNHKc6r6LyuYlcmc18bq.lCNLjEXjqvNC5gMxcMy1Cn7tq10lPM1bMibW0baeJwoKKv0XkA8rCCwtF4xM8CDCHW9KYHe956shsmM0AOjjgwyXDG7iI9D9PpsZ9Hhm2F1t3cH9Zidtla5vnqx7X8AvLsYUid1N6auG9I1hgMkowCsC6Zj6Vl05rqSsNKTeQqkrVZg4Vxxpwh6NW0ZNtMVpd84q61o1h1yuHvzkW2kvYAs41bbnQtKsBycP6trWQUJ3YjPxtdXQCKi1flUj2f44JLQAUiU6R7baE6kBMLxY1ZnOaZkO68L2h3RRnOz288kcfFxgtCL2TmF7rzgW0IFdFZn6RJzAff412ylmFYh3WTGDFMEx1jxwzPBefd78aU391lsHbmtYi2ox.uPf5aZ7FE7ut45c5fc3CA6kL23mdQizYOQrZVSDyogkqpvxaYtF1ydfDEWQ8tUJjHIIV38XbGsEk2pYRGOkrW2T8rAF6tKrTTiiup2c+a2KltNC+7e2M+626wrW0BT3FA3OKQN+1+byGRFipwZM2hbXrP+xu72eucv98XPBHmTy7lNs6a5Iy8kQz6or9bBcusr4AB8Z9j99sg7MNXH3QoXOP3l4lxPvprcUQaAHZiotxF+K3IpSKQ6bQcZE2o9LjqbBoTul4pLJGZgCrdcjSs2DmScTW42kR76RI9ldJwKFTdeETtp4mXe.Vt9SBjefrcGVfO5AXX8mvmdZqA+Su9WCtsCGfvNA1zvdrPrktjai8I6vn3vTTGgiZYxQJpqg48ooEshTpQIbEa.tBswcklwDqoSrkMMkvf1ojzvz3xm0o1PvqMFrb2sCc.GivOquzoUeuP7mPb4c0j6eUibMcxOzNvM8tBFmQpLqKXprK+MUpromrI3mw97QIDday1NAjd7g8Hvy6FQcHhROyV0qwTO35lHHxDxQcwdtOgwg4xPi6hd9KWtPgntrCaAUDfGsaT.dOIaqx5SEDqFQa0UaCErCatpQyyNjqjhnOLzyGZAcEqht88sojP7yvdLGHUkPEVUpVtZkFMfeMecwav+VRznF7qErDuIPQZAzhAY5fLff.FUlU7vz83ciAdTuiB9Q4599hAHgZAzsuMxI.CQQDuKVnYd.yKD36y5SBvtUfmBh8ywTdEe68waD.MD4eC5.FcoEqVsLpV0pyrbAEpEGmZUwwofT2BeRLu1tfS0eW1JrCKUL4LWhAUrLpQYzbM.QDO3PrH32CGvIXnnJl+Oo81OYL1Np3gEuCpA3SKN.dYN4a91Bh0KW.kGgxW7UhUa.AKqpPuHTwtXQEc.kZyIHTLDRHrIsU.FzYw6XEwGLPBG6GBiqnXNBZ6.WbvKn2ODoB4uf9TapKy+EzhGOtsqEy0r+GQY6VRJt39KV1pd0xBS+5mksmlsitdA.ipmg137BabnEN2hRGBgV7N0i7LHXT0jDcc8RlYAicdg2PWngbbu1jeIVH2JUQfQhF0JkKdjS.OI6T0awx0qprxIwHi44nymEZ0nplMVU7jgY1PPG34zMzjNG0heXzJoz16J84bFUM8L0vJVtwjY3nr38nDydIK4T0zScKxwGJZTLgCwDQw54N8oNB6MTsBuPbajismyNAj81CGDVZFvAqmgrhiG1NnDHCEcsrH4KjGponD4tUWl7isps3xjYmclB4AAjmzojr7iJjvGgGrFrAPIxLPexNSK+d8C6BctbbGREL6rh1GWH+wB8pmlENFS2JAvXbKYUagaWJgkYDPDc7xIlEiJzw1zRyT.z5VvdC16gqP1ixBvqe.30KwC5iEJNsC.HL59.JPFKh8vbQGv4n1ECdFfgiKfFUsc5nz6YK6.rO6.7oHcg2bLt7hVgAQhHedF44AOXZnspJQtmPxBzIksllG1er9EZvB8AePpsMi09Gknb3GHIjsGhBCYy0VNoMuKIDVoAoIzoDmxRDcAHfxFCOy1qONBB0V.84eN5TGVryPMIK68gymseJ+wv4fwR9h.LzgZtVGOFLI+zT7sSleplECtzXg7Q2MK+l.i5JJig.XM+Hx5Gc2QqsPJmiJHkFr.GRhH2s9f3sYXcjs6I4PFYRTr1VQis8jvHiLMo8H.wXIhzFjxbNR7K4aipfTMu0X0c77TAjWpT4wp+D9Jww8PkRU9v3pVoVGaHEr0cTM.GBDnBYd3J8BHvh8h7fAhTHblzgffCUbmhnYimfBuUDQnHAorBYKGIV07avpT42DhRLzR5777HY9xxor8DYrKTY09KqA5ZuF.8Ijg3LA9n7ctAe82D73psEfZufZPKUsbVxaRLn34dx+lZdoZGowydnxQ3ybKkpmxiVl9LxLfCUhxXnpsJjWDI1ckAx8k1zsjxlKmUQU5y9UPZ7LcwIcEcebzFoirSf3.6waBj4dDknxc.JiNPnrjABGGK8Y7Lmrif5npzQafL5lTBe6dX5Id0FQkGAmG7RQnBFJO55gTmrK9zCFD33deOyTmEvPBcsyO2zXTwbiHwz1i.UxKExML0KpdDYz7mMQx3ZlCCXiHge8e3jkfpjQoDdWywR4Np4702y3i2bMats37xQtpgUQBzVCe.wAqN8bdy0vg6yY8j9R+dLpvwl6JmCuo1sc7dMGdGaewFMg5qglWd5H2r7LRF4to4vyHUH4HRETmPpfgrL1gR44MUExNTIKJbTIHsvjFvD2wcteEv+.wKeH7R5580+rbwU4q6T8kWE1kuYjwDYaGF0LMpMbGC0OLEpuwjMEQh4x4zvbHefXQzkMEGa5jrfew+3zrf+hYJK3q9Mxa02HremNhatZJSiNDO+PN.rM8ghaLx8NleLjP2E2wtuGGEtOHGOBcer6NL43OmF+actlcK8A+Scef3nLPf2LYHo0+e7YYMk4MgK99b7AslRCu4iwaaheOO75TQkb.EAdeGX8qLrDSM80bsEix50kAKW0utvmh4pidnaGYZb2mysc1WeA9SwvA+BGNu5K1p4iIT3rfxbAmhe4B+kpx5R+xL18CMUvEI1DC8F0GuH5qeUvLIcj5B3Sp+MwbrNazBKF2wVBG8n2AP9cAS52xsCYWrW5.igQrNkxPtOgXM7qsv0qkuYyz+e+2r4zSRsE4Pz+0704deysCcpgjgaz29w6+S7gu+eEc3a6Dv9z364GhHWQRA7sT4+UjxatknMxZrZpE0lP9TGmzhZLFqcQYr9Ekw4tnL13hx37WTFW3hx3hmMihOW286yY9p0hFFa0Zc0lA4TewR4xRi+MZn3w+.
Now with playback mode, note velocity setting , note length setting and humanising...
-
L Lindon referenced this topic
-
Hi lindon,
Sorry for this late reply, i had a lot of work the last days.
I can only say wow you are really great. Also what you have done with the idea :)
What do you think, would it be possible to generate new notes values based on the note values that are recognized? Predefine the new note values using an array and then push them into the list when, for example, note 60 is recognized and then play them?
What do you think? -
@StephanS I really dont understand what you are asking...
-
@StephanS Sounds like you got a great idea! You gonna ask him to make the whole thing for you?
-
@StephanS said in Play held notes on Modwheel/CC like Omnichord:
Hi lindon,
Sorry for this late reply, i had a lot of work the last days.
I can only say wow you are really great. Also what you have done with the idea :)
What do you think, would it be possible to generate new notes values based on the note values that are recognized? Predefine the new note values using an array and then push them into the list when, for example, note 60 is recognized and then play them?
What do you think?oh hang on like key switching for chords? Yeah that would be pretty simple I think - I'm sure you can work that out.