happy holidays everybody! :-)
Oli Ullmann
@Oli Ullmann
I am a composer for film and advertising music and have worked for clients such as Porsche, NIVEA, Bugatti Automobiles and German Television, among others. I am currently building a new audio brand called studiobro.net.
Best posts made by Oli Ullmann
-
Horizontal And Centered Pan Sliderposted in Presets / Scripts / Ideas
Hello all! :-)
I needed a horizontal and centered panning button/slider. I am completely new to HISE and didn't find a built in solution so I scripted it myself. Please feel free to use the code if you need it. :-)
All the best
Oli / www.studiobro.netHISE Snippet:
HiseSnippet 1692.3oc0X0saaaCEVJIpq1caXcnEaWrK3L1ExcINVtsIEHanwwNt0nw+fX2zBLLTPKQayFIRAIpj3Nzmsc6ta6QXOB6MX6PJKaoF2rLm1NTi7GO+wOdNGdNGltAbaRXHOPSOW+I9DM8O0n2DlXbswXJSqYcM8uw3HRffZicQcwLFI.0mDJPkqrQ4JZ6MwGGFRbzz0W8QRMzysll5ye8v8vtXlMYNIMsi3TaxATOpXN0t69DpqaCrCoO0Kkz2a2l1bVMtKOBP2pFk07w1GiGQZikhshgl9012gJ3A8DXAITSes83NS5MleJKV9ingzAtD4BKsdfghI2f65HQrjpVswTWmtIdgPMMcity8IqF6StkQKpCcF849luPw.MWiz9C8UxBuUy.OqzvqbJ3s.HomBRqECoaZzyNf5KlyQhmaXzjIHACwfaOMThkUake+ZF03fDLQIO7wjFAvhYZXtU4xqifeTbm7atYrJnASPsJg53ROAB7O000CRA.tmd5okBEQNT9f.dIFQ.zZDPHHAGEER917427Na.epuesCpdX09M6zt2FWgO2YSXCpEP.OI5.tLW7.N+XTUlCpAg3h5L3kDaQdHgARMOlwGnX+injSqsRUklRNfdR0LKletYk1pIy1MxgfdBXAEgdDwh2oDCicbjBaVP9SqBqipHchUTNwXzbBNPYOqTvYDQTi64yYvhDUAET+QoPh3b.M4HABAHNAlOCeBYHOvC8HBbuDC4Zo1yDly3IAf5tsZ6kIYpUlENuYTnA1nivATLjiFlWZQeL6HraDwZmrK6S77iI4RYjmCaS4cRR.dR6N6g5se+9Ma+ndWo3+LmSKtCwr.TKJiKqmXhKP9w7.5q.uL1MCWyBdTFDc1vpT42fN9Lf94HGJH98nuh.7JWprUwrGntUa1tOpwSaWSlYujGnjXZo.xHJreAMhX1BJmYVvI.e5AfuDGzyk5PB.TLLg4n0Q7AurX9eIetM2rNw1EG.IuPNLJIZkOmLVfg3.HXIfMdm74PvWvcTnTab18dPwzQA7HlCvXTog.ipttlw0aCKMvE3Wbld0vt1QtxqIJkkXCU3rBytiH6LPYi.YoCMiciPRlJ8vrH5GfLhh.O.xnbyRa.7cNIuCxbCK01lKS5EHKDhPajJGTBrbIIblYkdSTEosrp7.kojeCUzxfybm+9gLxWUHBnChDDSq0OG7T.60v2D2PR74YFB15dnuGYVtD7a3PrfClETSPZ..MuIXtRXQEepCILyCMpHZnrFiLXNKld5XpfnzaTojLLSE9WGM8WPsK7Oc2eFtPTVci.L+qKtSRtGhyZyEjNLSU5W9WmG8lrFNbg7jE9B3ttjfExV14O3hTzjE4MfDrNTYCN8yDDZGlsGqwauGa5Q.riqCmRPNqIiJ53SXusACzlV7V1OdJp.QEptwe9ztww2V0nPS2OwPEwzT.N8LPZOsYcr.mXFvhvt3KGwRd.zqSNAlQJtIeNi5jviEbekrS6W.c4+W2zy.Og9uA60jj+HTVdTNc27BjZdTGGWRWdHU5rSiQuLSx8qgQCGROS5XNPyCp9BF0.Rd0BA+mJcrK2OxWt8UGvOgnIHmIRFbKug0Vau81UrtOLp24FiAFfh6HKrjcpJ4njSYHQV5QYjiqv.DOI8nluyF05xBwaZzkJrGuXLtxBvHDteefwoCn9YF6ObHLVxb.tlQim+9YZzza+si29aXHKfollPs421XAiTbAuU3OtruUv+R+VgN1B.B8CvrPedHwJskeCdURyqNQDwxJdLoLRIOdMfiWJ4t9tIDqjlHbMIiwf0YrTK48pjk+4C2mIaf2i.mFmNg1vgU56Rmp2MB587LpiXrUZEmStRZxOFGHmxyNSh3pWzylrVxmMcs2WOaZsKWh5ECuOBJ8j4Ud4RvXOpmuKYe1IDWnIgBieIzUXHNxUjPM6UqVbF2eLmQyDzOj.yRLZDIStzBOPvTGvneyobqcOj3Rvgott8c6FObZKUufkxWX8e9EuKLd80FwvEIqGftJwsOnoYWX6iUuTsOdmi2kuUxG3anPIyOdhzekATFuBREtQ++GuOjGIfmbzBCUCjCI1NxqGzyzl.Hlwfm0HmWbE4vtwqKKWKgSOByQs3ugOSYZIWqOkoUByOH6gG1Nf+B63wvkELtthBbtYp+6f4LZIWilM+sgA7fF4DuzWXaKyo2.7OKVmJKgN2cIz4dKgN2eIzYqkPmsWBcdvEpirie0HA2KN+GHzce06fz0iG5QcUP6e.wSHwv -
HISE as a 3D rendererposted in Scripting
Hello everyone,
For a project, I need a 3D cube that rotates. I asked chatGPT if it could help me, and it actually worked! :-)
I'll post the code here in case anyone wants to play around with it.
I'm still bothered by the fact that the cube changes size and “pumps” when it rotates. I still need to take care of that. Or does anyone here have any ideas? :-)
Have fun trying it out and with matrix multiplication. :-)
I have translated the comments into English for you.
All the best from Germany,
OliHiseSnippet 2102.3ocsXzlaaibkxIJsVc21t.8.Lv+nfxlRQTV9q0caW+gbhPicDrbbiqgvhQjiDmZJNDbFYIk1Tz6POM85zSPuAsu2LjTT1JYyZfJaQQ99ddeMyicSDdLoTjXUpxUyiYVk9px8lGoBNIfxir5bpUoeY4yoREKgX.c77XpTx7sJU5YuBATZ8mao+7e9CGSCoQdrEfrrtVv8XugOlqV.s62+G4ggmQ8YWwGWf5VeeGOQzIhPwDvddV4FVwTu6niXWPQxVqr0qox.qRaV1c2lC2ys0.3uCZtaK5fg62XeW2CNfxNXHqoeqc81m1nUCqRunsOWIR5onJlDD5wB+48BDSiLJ3ZtjOHjgO3Z0CzrAr0IA7P+tYNGokUom2cgq5YFW0uo74bedN7EtresFAYAGEcZkV6yYRt+DLoRELomaLouobOuDdrZAFzd9Ek6DAQvgTH1TzTLzZs1+5qJeh.nHRUeL8N1YIvC4bXuaiFND3R0CqT4kujTqVMxkBv34QiHaeJwax.FgGQdcmdsQjYzbzDUfH4aIdAT0q5dEYJWEPnjPtRExHArvXxvDwX.jjONFAMYLMhLfgxEkCJH62Fq3hHZnCYnHgHCnIwPpXHOhIIBPo7S61oZkLqWxTuSxdMeTvkLoHbBx6YhjtzHVnzVkLgktH7RXf2mDiHp.IcRE4dJjhCqEMwjuijISpuuFj8F4X2vg31.+BRKGHpb6Mlx8UA.9s2eEHCXfko9TXogghom.WG.Y8RfpMNJLjr.Ppo2idOijnC.fCPhYQn62rTVHRephVmFMJj8dXwzndiCIDBv9kYbNYL48qj9a9jzeyCoWFyX9ox2cmCKRubDS5ELkG4yGcGiqVIqoppYiCeHZLBeU.26NHPKApbquiY4iz8sj8I2yRTPqEIwl4OhQBYQif7qlNDOFl4RhE7HEwtgC7W0pEhwW29xq5AR71JqeaMWG8+8cH2RV9dR180VbOn9.NlUjyJo.qjBrRJvJbu1SduHIhUouYYzFLZv1oRH14ylAgOdBduw7JZusO8Usyr2FNfbu00oIbsoy1v0scZ7.CqkyN.7cb1Ettqydv08bZYnwXAnXZoEyNZwrqVL6YLxdPnBDSpUhUofub3jHOcLsBOBCL4.v7v2ei88ND5L367pU9qUVG3aVdBZk0CEdzPh2LXIbNUET2SHsoyfj4TLxbLRdzRXPD2eai94.lqA31eSPZ0f6Z1eS4rbreHCKHwsLX8.rZCZ9iMn4KYPyKXPyWxfJfYVS.CY1l.uaQ9vlx4KzMho1L.jFi2bTuIL0jjHxsyfrx4N.MvJ4iZ+ZWVBj+CtPnTNNQ7WXFuYseO4h2d44G8lN+41mZpnIdBQhOOB2q.xlqW2s5iBBoR3JwEhjw1wa6Pl5PBbHRvxXYgjSf8PSnDwvgPyFrY5TZhOQJHJn+LIRnBv9tbIz.FtyG.yHdZdJ5ei2FbqvRrETNRx+.heCCsDeNzQBNCvFYbMD3RaHjWR9PAdzbcl35ZHRP0YzGiQc6ojMgFC6TETEnxF82bnt4RLeFzjKiRLNYGjQYMjR2knjXeCQIHShqtHX.x+kn+A3Fxu6eXtsLFbdfk7AludqF+D5ztPRfc0rXFr6t5RArmRDz.53IvtwjeqlL81QP3RErbK8hbXmEsrGoiHXk8Tv9A2tr9Hl5Og6aXioZHlfBXdsdSibTxrjywPxIFmqBN.WrcMXiBnqHreAIympi7cSXwzjz8LfUmtynzHM5rLMUX+hTMQm+Xb2f40HxKuFaI0eQKePvXKYPtn2yFogic2OD942Y5pU2zjFfr0VPDY8Kutd7DYfsoIhlja48y6kTMs103py8wD6nEQpBUGUMFlljE6da1n2DHQ4kabLiww.iS2gM23XZiCBQFm.P1kWeqljaY8gTQrcjF0fGfxEQkh6Hrevx0kz7xxpYR33GS0fhTAjEq6ConIpKXS6MYfdkbTyawt9vOt80BSSkdKSg8wFjGmg7iFuXuPLMJbNwmlbGKRWeimqXThXBTtaKROnEr1GgIuligaa9QVGO81QgwAzbHCBAtcfZul6fgJfqgvo5uDVJ1YotuAqSOFkuztQd7TWxfmZ7KUSSCf8jPMcPphxqMw0sCY0pyoPt6Rml.jwGSOKktTsFNEBbP0NQXxhjQzY5PscBCUzx0zZZyNS1hhZcM8pO70VeGYkmZ5vUyvMeJFtYIFvZZnL1tvh4uucCxYc6AM8DSfV2PHlAGgvc2+8+3e1pwXo9QVzglEMQuPv98uqSsAvp1ud0hqTLiSSh81aW8v7sZDQWHTr2ltfgNijGhZ3vUhCqGSDggf.WEZip9LLZGMY7.VhCbjnvIrbBgAeVdZpW7kMMkmo8PABEQch3p2FyRe9LQnONkDd+im8xJs+Bb265bJDivwwRgAzEiGNEMmRmxtGNkpY3r0KeJSdmRDqocbrHBkPoelRi8qyFcCC.Vbebrs7.h0LqRkKUAT27razSZ.B8E+sRlwmMSWTDxxSTXU5WUdoIJfIwez.jvnqB+IgT0xyyhS5mh.BKKMDINnXjjqlW7MA7SXH2Fe1gb+RMwuobWtxKX013ZqvFg.1+OrwzWMvWWt8vgPqvEF3yKe16epuGfeD0aNhwH3TAIbLO4hIi6AMN8Xf1ivIewTl0vjVyyMvmQOPOVju9g+K7IEoK9boTjtYHsFS8RD+fmoXDe4C+bMDvlhzubl0KeN9Lw0RWfVzOOl6y+AOukE0iXr4SkwsepL15ox3NOUF28ox3dOUF2+GmQ7UUczDkXrorwx57ts0czJUpcDEx.0YqV+O.znjCC -
Disable the “Skipping changed() callback during onInit for...” messageposted in General Questions
Some of us would like to disable the “Skipping changed() callback during onInit for...” message.
To do this, please open the document “ScriptingApiContent.cpp” and comment out the following lines before compiling HISE:
if (!parent->asyncFunctionsAllowed()) { debugToConsole(dynamic_cast<Processor*>(getScriptProcessor()), “Skipping changed() callback during onInit for ” + getId()); return; }Just like in HISE, you also comment out code in C++ with this:
//All the best
Oli -
RE: Close the preset browser after double clickingposted in General Questions
Ok, it can be solved quite easily with a broadcaster. You should also query whether a preset is loaded so that the browser does not close if you simply double-click.
For anyone interested, here is a snippet:
HiseSnippet 1303.3ocsW0raabCDlqr2jJ01zFf9.rPmjKDTjrrSTaPQskrbqPiRDrbSSQPP.WtTRDdWxEjb8OHv.8Pe.549Vz2rdqGSGRtRZksZ9Q.UGR14+ONblgiGIEDpRIjHuJmdUJE48Y9iuhqm0aFlwQCNB4cO+gXklJCbr5dUJVonQHOus9ACCuxair+96uuKNFyIzkrPnmKXD5SXIL8RtiN3mXwwGiinmxRJn8dGLfH38DwhL.Oa42DkhImgmReJ1nVIezOhUyPdeseaZztc5f2eu1sIc9lNjGQvcnjVgOp4t3IQs6PiBi1a+8vHu6zOhoExwZrlp.m1UDc03YhK3t.7blhEFSMDsPigH6Xi5MiEGMZdxQgPdaOZYpZKWp5q7GxhXK3uLk8kVAAKsnXRyqz6BRs9HfjWAHssCR22eLQxR0KkXvym5OfC2fSvvcSQn3zEU5ta42S.Zv0MRvmQOVBDKrn1Ca1rd.7O673JUf6GkN3brLHML36Bla0TptmHIUvAhZUSCqZz8AOHnqTfiHtxmH5DFmoYBdAuDR.uzmOkwoMHRJjQJXRs2TIHnJKp52FTMjTstgBKmp.5WVkLOdUqGTkdt4iWY0PicZ7pJWmiBrViIyBzh.qdAlTUkPRCG+SEKf9PQlh12nip1KMGiWA99v33fd333PnVTYBV0Uc6DlDNLwL.wbpz52nnmjSVKMDr.7T8fIYbh4zWaAxq6vyNuoRY1jZ1uaDIxfK+dwLxY6Tob4zvFJnzvjmkh3ZSvwJJD94mrmkR4PYFUQ0lb8EJ..LdLjMWDt.AOTyMJN2IEh+433L5NUb.Hm3VAUKyrwDB45uuy8e0cZnL7sVMOiU6lgG7TAn8Tgl9LdMKDpbckfaJZxj0JK2WwPBdchMiUjuKCqwyRBoxhI.ihPazp8l24Cq2j3RKETTvG.05lisi9XQbjomy78s6jQ44U3qedvQXM1zbmyCzKkJ0LCb7NhdNLN00pW1+Hp5LsHElLt3x.5004ylbM2GGKvZFe5oL.1L.Aa6mFhtbwP2e64Gb0xIv+5A4Q0Ehuv2UakWZgBmNe3b46.Z+OFSXZZxRt+0a+i2tJ2cyU19yd1J86k7sc1l70X74ztYZsfC8rlJs5ykz+xTLWAWapCUfqxRLZXa.VnhMqJWu4lxG0s7Ib65TeEQKYCEbv4Ej0p4BiNLJZ8g3DJGdXZ8xNhFS0+GxNFetPBYHyqcEkkirAvoNh1UHgy1JG4mlk3RDFv21xxQ+KrH8rSf6YgYvGvOHnYi123W8OR9.a2.UyrrCgYyKxM4Qn959uEV4P1IhKFAiCgBvOT6FSwRxrtXYWQFOxMI2JXnPlmOuojk0P2Tx7L8sjV4ZzEljFxy26O8PnYT1zYZC0od19wE8S200Ocu79ImmrcRk8ymrUrcJoX6ziOPSuTaL1NnddajBv6.tq0x7LLSMTj.ACKAa8Jgt8y5vBEhnrXrd0sLL6ekK.5SV4ocyy2Pcj9ph6m8Qr5Qy24pGenP799iXZxr0iwRqAivfu+OvX9Baete+ISnD8R.ts+wuXS2N68D9SDYlAuCwZICJP7gt2wv7PBEhNmSiUlpsRlhMGcSCsICLlxirDuE9kKrkg1KWXq4BQIXhT7Zh6QMyJgehkCfItck4xvt6.cPKj8gth44DXC0WSHq5paY3tapgs2TC2aSMb+M0vGtoF9nM0vNueCM+ADGloEIt1FDZ3n91WO875ywPEnsZE8u.cyl5YA -
RE: making wavetable files - already Im confusing myself...posted in General Questions
@Lindon
For example, if you use buffers and slider packs, you can draw your own wave tables in a great way.
Add a little unison and you'll quickly get great results.Here is an example:
-
RE: Disable Shift-Click Knob Text Boxposted in Scripting
@ILIAM
@d-healey is talking about something like this:const var knobs = [Content.getComponent("Knob1"), Content.getComponent("Knob2"), Content.getComponent("Knob3"), Content.getComponent("Knob4"), Content.getComponent("Knob5"), Content.getComponent("Knob6")]; const mods = []; for (x in knobs) mods.push(x.createModifiers()); for(i = 0; i < knobs.length; i++) { knobs[i].setModifiers(mods[i].TextInput, [mods[i].disabled, mods[i].disabled]); // No text input knobs[i].setModifiers(mods[i].ResetToDefault, [ mods[i].disabled, mods[i].disabled ]); // No Double click to Default }; -
RE: Start timer based on the values of the buttons in an arrayposted in Scripting
@d-healey
Thank you, that worked.
For the “UI” example, the code is as follows:Content.getAllComponents(“^(?!.*UI).*$”); -
RE: Granulator Envelopeposted in ScriptNode
@Straticah
I am referring to the general amplitude ADSR. I took a look at the C++ code. If I remember correctly, the parameters Attack and Release are present, they are just not made available to the user via a slider. I am currently finalizing a plug-in and therefore do not want to experiment with the HISE C++ code. However, when my plug-in is finished, I will try to implement the sliders myself. If I succeed, I will be happy to let you know. :-)
Latest posts made by Oli Ullmann
-
RE: Disable Shift-Click Knob Text Boxposted in Scripting
@ILIAM
@d-healey is talking about something like this:const var knobs = [Content.getComponent("Knob1"), Content.getComponent("Knob2"), Content.getComponent("Knob3"), Content.getComponent("Knob4"), Content.getComponent("Knob5"), Content.getComponent("Knob6")]; const mods = []; for (x in knobs) mods.push(x.createModifiers()); for(i = 0; i < knobs.length; i++) { knobs[i].setModifiers(mods[i].TextInput, [mods[i].disabled, mods[i].disabled]); // No text input knobs[i].setModifiers(mods[i].ResetToDefault, [ mods[i].disabled, mods[i].disabled ]); // No Double click to Default }; -
RE: Disable Shift-Click Knob Text Boxposted in Scripting
@ILIAM
Phew, unfortunately I'm not familiar with this topic. I'll take a look when I have time. But maybe someone here knows something about it. :-) -
RE: Disable Shift-Click Knob Text Boxposted in Scripting
@ILIAM
I did not try your code but if it works, it will also work in a loop like this:const knobs = [Content.getComponent("Knob1"), Content.getComponent("Knob2")]; for(k in knobs) { k.setModifiers(mods.TextInput, [mods.disabled, mods.disabled]); / No text input k.setModifiers(mods.ResetToDefault, [ mods.disabled, mods.disabled ]); / No Double click to Default }; -
RE: Enable / Disable Scpritnode Nodes with a Button?posted in General Questions
@Christoph-Hart
Great, thank you very much! :-) -
RE: Modulation does not work when processorID/parameterID is set dynamically.posted in General Questions
@Christoph-Hart
Ok, ScriptNode is really fantastic! When you integrate custom nodes such as precompiled RNBO effects, the possibilities are truly endless! Thank you so much for bringing this to my attention! :-)One question I can't find the answer to:
How can I switch nodes on and off from the UI?As far as I understand, I have to create a parameter with a range of 0-1, which I then connect to the node's power button. However, this doesn't work for me. Is there a trick to it? Simply connecting a cable between the parameter and the node's power button doesn't work.
Many thanks,
Oli -
RE: Enable / Disable Scpritnode Nodes with a Button?posted in General Questions
@orange
When I load your snippet, I can see that it works. However, I have tried it several times now and it won't work for me. Is there a trick or something special I need to do? Simply dragging the button to the node's on/off switch doesn't work, unfortunately.Many thanks,
Oli -
RE: Modulation does not work when processorID/parameterID is set dynamically.posted in General Questions
@Christoph-Hart
Hey Christoph,
Thanks a lot! I'll take a look at that! Thanks for your support! :-) -
RE: Modulation does not work when processorID/parameterID is set dynamically.posted in General Questions
@Christoph-Hart said in Modulation does not work when processorID/parameterID is set dynamically.:
that shouldn't be the reason, you can replicate this easily with scriptnode.
Puh, unfortunately I'm not really familiar with Scriptnode yet. But I'll take a look at it! :-)
What do you mean? If you're just reloading different networks into the same Hardcoded modules you can leave the processor / parameter attributes constant, no?
I will test this thoroughly tomorrow and provide feedback here. It didn't work during a quick test, but I will create a new test project for this purpose.
-
RE: Modulation does not work when processorID/parameterID is set dynamically.posted in General Questions
@Christoph-Hart
I have the same problems with HardcodedMasterFX. And I use SlotFx because I wanted to use the HISE internal delay for its tempo sync functionality. -
RE: Modulation does not work when processorID/parameterID is set dynamically.posted in General Questions
@Christoph-Hart
Hmm, my use case is as follows:My plug-in has 8 effect slots. The user can select any effect per slot.
However, I don't want to create a separate slider for each parameter of each effect. That's why I change the processorId and parameterId of each slider appropriately when loading an effect. And I adjust the min/max/middlePosition values. Except for the modulation, this works perfectly!
The only solution I can think of is the following:
I always leave the min and max values of the sliders from 0 to 1 and control the effect parameters via the slider callback.
Depending on which effect is selected, I multiply the current value of the slider by the maximum value of the effect. For a frequency, for example, sliderValue * 20000 (With Math.range(20, 20000)).
This should work for unipolar parameters. With bipolar values, i.e., if the parameter ranges from -1 to +1, for example, it gets more complicated. But even that will definitely work with a little math. :-)
However, that would mean a lot more code and is not as clean as the current solution, which makes extensive use of your API.
Or do you have a better idea?
PS. I use hardcoded effects and the effect slot from HISE.