Scriptnode synthesizer. - How to?
-
@Matt_SF ok, that is a bummer, would that affect polyphony ?
From the little time I played around earlier, It doesn't seem so.
If you set the Default envelope to 20sec and the "SN" envelope to 20 sec , the overall envelope is no longer 20 sec. Apart from the fact that using 2 envelopes is hacky.
What do you mean ? I tried with both envelopes at 20sec and it seem to last 20sec...
I am also still wondering if its possible to make a monophonic synth in HISE ?
I think that would be best handled with scripting
-
" What do you mean ? I tried with both envelopes at 20sec and it seem to last 20sec..."
You can hear the difference between default at 20 sec and disable the SN envelope.
Then enable the SN envelope on top of the other one, not the same , understandably. -
@lalalandsynth ha indeed, I didn't even bother to try them, I tought they would be the same. We should have access to a "Release curve" parameter...
-
@lalalandsynth and replacing the 'global' envelope module by a Script Envelope Modulator doesn't seem to work...
Tweaking the skew factor of the OSC gain parameter does the trick. This way the release is not linear (but the release time is not precise though) : -
You can do the entire synth in scriptnode but then you must implement the voice killing logic there too or the voices will stack up until the polyphonic limit.
- Remove the default envelope and replace it with a "Scriptnode Voice Killer" envelope - you will definitely need a HISE envelope that tells the voice to stop at some point but this module is made for precisely this use case and will handle the voice killing when a voice kill message is sent from within scriptnode.
- In your scriptnode network, add a
envelope.voice_manager
node. This will send a voice kill message to the envelope when the value is zero. - Connect the gate output of a envelope with the "Kill Voice" parameter of the voice_manager node. Now the voices should be killed properly when the ahdsr gate closes (watch the voice counter if it works correctly).
HiseSnippet 1415.3oc4X8zaaTDEeVmLN0ooPpDRTwIefCoRkH6RnfDGhyeasnN0JNDwsno69b7Hu6LK6NaRLHjPhK8qPuwWCtUINwAjPhu.7QneCf2ryZ6cscMdcSbQhToJOu2al2ad+426May.oMDFJCHVkNomOPrVi1pmP0YuNLtfTeeh06QavBUPPYCoc64yBCAGhk0ROVSvpzxj3+d816xbYBaXHIB4TI2FdJ2iqFRsYsuh65dHyANg6kR5spU2VJ1S5JiP6YIZEhOytK6b3HlVrBThUwCb3JYPKESAgnL6Jc50pi7RgQ9S4g7m6B5EUIsvCxPlrWGtqSy920PBwh1b3MeIyM+CnM3N7AzG5AVOlQ4g6HsOvpvzLop4vjrRYRKaLo6RaYGv8UC4nsmaSqKv.RaF5pSaJFYIVuhtmDEPn1zi0ENL.WLXCa7nJUdPY7+t+W1NRXq3RQYo3HoBdlXi6u52uZoU+gUKOJq1smHOsZBjttPvDYqitASaiaHh7dND7fxWvbifABhW+r9zhylO01bqSInTTWvUOyGRVenz0Q6qz+d7H.Iwsg+5qquOSwzAkDZnb9PfhqMGq8gKvrZSHpDceHrqR5i40iE+vLGoSjKSkMcRW2jv.8GYhg5.kHjq5kttJG4XUlZN1rZh2k1jqr6LYarvDrQzScSXiIUl2gdP61fsZnAtL8vuYdKCmc0Wpu5MUVw.iwp+dITDRGnrlLDxCgfpSAc7OlUzQ+YFcre89Cn4o1ZDHzkmsZqrorojeB.YEeGfsd8j2+1WZt7rYhSGHJSqfhF68CSkxEm1nyR.SCgOJc5XLyxFtYSHaHER+NRA2NcN3wfJfe94PPZhusvPUu4ggV5+MvPSyEcK5AWoBXU+OXSjDS6gKRS6XYjhKNuACyouBmx6nHuVHdoMflkP.t3gSsJna0aVWQuVaDs.gS7h+F+KgYU8ZqDlU6yL0TBGApKkAciqXS9MVuZZPDNnh7rvTMH1w0Ud4dROedRFM5Sho0T51qewoUAiD8s5c7jQnBSL8mvBOgwc0hcJDDFeHqPqrI9OL8+HTinjGxrQGZulLriEVGoGMBiKPvl1ChOuQaLc7Reb864X7Tno4ou9wyiuTp4hLvV5UXvsfVCqQqGdplqMykbptOj1nI5yTK9RI1pQTYnMhYoSgHiY7AvloXOu1mlkuKbU+Q61mG56x5saDVUafcyPQeIDNvU8C7Gf8ScPT63s2OYnIK.ebhBRZ70eE96FbQxUdH5TC1UiPa8ZsTfeK92AoKHZ0Etz3DRSU6mJpqz.xXmLY5pdqZio5W7mip5e9ku7WFW009IueeayyNNL.91HPX2aD8+icq8un+Wu83W8J47puVr9KerttgL14SxuuGUVN88OFwmtwTMhy7FU8JzlcXg4Otecn6hwCEMgqcpx2UnrNNgiT4tNEDW.tXA3lFt4nvkNUfk2WCrmpzKw1L3ijVWpmZ3DVv4fRu6BoIj7lNADOub3HhOF2zKSPWq6nMfKziYclGSvziNMvVzLWipm9xLH10KnC5Yxh3TJ2g+W7qyXY+QM9ssMsw2QoX1cGMA3iqs.x8tShxeJfIRWGUd495Wj9DbVcxX3oK.UuBcevlMJX6qBVDN9RzVQgpIT2+WKBmdI5wfKLA.usVjIc6EEbAbcb+ycmlaSG9praJH+72oSezCdJ1.30zsAFEVLS6f6MrcPVoxQagBYlmKCTnUJ2xJ2LtkL.6icV6DojdnaK9ajkw1H6Jkc8XwuTX99zhKh203wrCjmYa97QZO5shofCQKh+96knMzqKWkbQR6V8iNHdbG9Y115GC+IUIjIumGNG64Smi8r0brmOaN1yili874ywd9hotG8mNKIqSOdBRn4AlAErNPvvWLGWRQ9GfgnxRK
-
And a mono synth can be implemented using a ScriptFX and a
midi_chain
container. In this example I'm using a midi node to control the frequency of the oscillator so that I can smooth it for a portamento effect. In this case I need to put the oscillator in ano_midi
container so that the frequency is not controlled by the note input.HiseSnippet 1534.3ocwY0zaaaCFlxIzoNM8KrMrK6fOrCo.cA1aYcCXGpSbhWMVcpQTVPuEvHQGSXIRUIpj3MLfsa81N2CCX+M1sBrS679CreB87tr8RQIaJaOuHiD2TfTwW9RxG979oT5FJbnQQhPjUkiFFPQVafsGxk8a1mv3n16grtKtCIRRCqpEs6v.RTD0EYYsxWqDXUYUTxOu8I6R7HbG5XQHzwBlC8YLelbrztM9FlmWKhK8Hlug1a2nsif2T3IhA7rBtFJf3LfbF8.hRsRXjU48cYRQnsjHoQfN6JbGZ2WbAWq+wrH1odT0f5HaXizhQM6y7b6lcWiPHqU6N9luh9l+93NLW1H4iYf6mLQ0wqvjCrJMOHUu.Pxx.RqpgzCv1Ngr.43YT34131bvfzi.TsITz5hrdCto.TfK2xmLf1JDFLZAa93Z0dTU3WO7q5EycjLAupfefPReNeyGt92udk0+g0qN4T85My4TGSnvyiFNyoUV2v4svM4w9mRCeT0yIdwzQJBW+7bZ4qFm5nu0FJJ3s4L4yCnoiaI7bUbk54os.nTZCd5aauGQRTFkTYfdAzPISAGq8nmCd0ZSTE7dznARQ.3WOk8C7bDtwdDYd2IUbS5D.ejyFpLT7HlbnYbUA7wpMWerqJDe.tKS5ze1XrzLvHvT2DXLMx7N3860i5HGCvUwsdwhFFVqvggqmFFBmo5v2HcX0Vun9LC.eEdrydPHMfDRORz0iLbyHhefG8P.iOp5odBmA1ruiNcDRfFB6pzXSm9DNm5EsHARkulRNgNTDKY7y5PjgrKQV3Ch8sgzzNzlonCjYURECoGWSMV4WXS4tIC9G3mzIqqFakNY8rIMB+NfJuPDNHwbj9LbWzbeTBIeRuKqi1wySbQSge.K0KErAIx5J7FFzWvYNJQZMxP5N9hX3PRg6SIQGQXdJ25iogQIaxZ3ZaA+CboOP3BjCtEwAHwgcIx9pXCUdFvQjFtkyHGxb3xzmPsEYkzzLB.Ge00Lof1JFIVz9dpQPjUI8t1N5X0rNDOzwJaqBnH0dp4FM9zEE7ghTZ.kCuefAdGqxxBhkLf3cv8XWV+wmj33mGjenAHMU5lElqLBlqX.yxILYd7c2D7AQZITXQf0p4fUoIfUEbSOXmZ6lgIXInIzorJCMMSgaiaEReYLk6LDgFmf9HR3YTYTZEKN0QGOjP+vtCM2D4KDx9T2SfzQP+TP+.ntYOozXMr9DTvGxQcYZAP7QDHCgJEfsGykF1EZISMZmXWlnESOE7+vtndZOVT.jna2XHgsNad1YnFXvxyDP437OZDmOCMu1bLxytqiel3hpcgstHj6FXQjCzRqpHZdRMm0xjJ.TM5tXsVGFOE.iKn1gb4Dxd6Srkz.UECS8rGPuPyalZptZYVzo15chkBenhPR0bjAPJOAP90W+5e6ISAjF+biI.Rhd+2.4dX6DKHT.Ioieis6u+kW+Surw7vPAHi2NGLTAuOW4I6hlZiLcKqf4hSlN9+8LxOkov6hr747zlprTHcKioWT7MQB.qIComPh5RvcoWlUFeenSDWnK6jkmUZOmqe4hasueihYsyGUaXpmeT21Ml5ne0eVPmcyP97a0ONnwUNxKY6llGpUPdXiDvT8PUZr4yF2PgckgW1QRuwN54m9qaeRzLR+sDN6xIui27t1yq13ZXRe2nIBvuOlxOm5Awoaoms.w234l+4dpt4MvRJp0MHiruP8pfiKAVxTP9RhQSn9zydclZIoUIy7JUJrc8U+9UK3twAc9iD65sv6HkPGPSZY+3FKAmp6jd3OiB9AWGgTE95WF+Tg2TUP2twR3nWCuG0gLYJ02DtLH9JX63H4+S.8M1MuB9PpGcFYx1dY5z0LN77oPvesLJgba39KCYmcFbF2T4xKdILzLeAg4jeeWgXfOI4iZrXedwkwmfwm3DJNI88tT4TuUhDnCQdx2fuBtiZb05nySKRn9VIHU+vm33n9tbeRcDZ1q4SWf07YKvZ1dAVymu.q4wKvZ9hEXMe4bWi5OMQZWkpWJEDzcec8QqrW3Q8gN9W.kYXt5C
-
@Christoph-Hart nice! I wouldn't ever have thought of doing this :beaming_face_with_smiling_eyes: . And we don't have to even connect the envelope to anything, just having it "filtering" the signal is sufficient... interesting.
-
@Christoph-Hart that is interesting but is it possible to have note priority as well , this particular one is " last note " but not really as you hold one note , play another , let go of the second it should go back to playing the previous one , and without retriggering any envelopes.
Portamento as also strange as it glides to the note then jump to it at the end.
prominent if you set the time higher like 5 sec -
@lalalandsynth That's the job of a MIDI processor. Just add a Legato with Retrigger script or script one yourself with the behaviour you want.
And the portamento might sound better with a linear fade in the smoother node.
-
@Christoph-Hart great , will check it out.
-
@Christoph-Hart Would this work with script node?
HiseSnippet 2127.3oc6Z80aabbD+NIcJlz1RI.0nOEfK7IJ.YERE2zhDzHJIJYQXIJVQE6DH3Fu5tkjKzwcud2RIQaH.i9TeqOa+TA5mh9l.5WfBzG5q4if6Wf5NytGI2ihhhQ.J01nDBPbmclY+M+Y2Y1UpVjviFGKhrryre2Ppk8cbp2kKasdKBiaUork8m4rifKbUToOmESib4BoarWDKTxE9Tq05FRhio9V11S+PTL6LyXo97lUViDP3dzAjrrdrf4Q2l0lIGPsVoGwBB1j3S2m01f6GTphmfutHPzAf3zNErBIdGQZRqRP1lxwxd1M7YRQTcIQRisrmYMge25sDmv07+XVL6v.JNnnUcPQZxaJB7QDie2Z8Vr.+Z8bEwVV1N0F3XlV6X9EN6v7Y8oOvA8wpIbGHgo+vdpzva5TvqnI7JX.uQ.IaCHMiFRehScUTXvLHdtsSEtjF0f3kNzn40Zp+8rNqK.N3xkZSNhtYDLnuD4+xBEVz8AEJrvWmMaDsoaU2eq6KxEFQQ0bDsabtux8fmdFLKDXhktGSh.SmIdD+PfydJtIUttncnfCCxmKY9bfNSKz1GFLVgf4QgxlkwCXbpaiNbOISvcE7DchxFIBx60SvEAkGzgtP1WjMSfviD3FBbJomJgU5fbaKNgFKysnatsI5euEqYKjzS+5rYxlIYUWJlBP.kBXomBNPo4mB.BM+qvTQMj.t0IAAGBos4GF0flLrnpvhrKOuB46.taHKeIVStHhtwwntkQfYo.I593f4ziK.BnvU6z9PZTdjGjiiSywiof6fI6lWqCVC27p8zJo6ztlNB+HHBmeA2uws3BYy..IS0kLh8KE1ItUdNpA0RD1.+F7S7ILoWK27I1mZ8PmU9E.0nzSFORL0svWk4y+7L5f.RbH0CovRE9fOgM.7mZ5CJ7T26Cj3ZFNLhRNR809punV8jDkOBUjd8Bn7lxV2u3Uo2kU5MIS4mNtmzEE91YZ+oNxP78qg9U7bw7UWh4unKr4LrA7KbwNCiizfX5UDoPIAL0WmIIZEWzkC6VRTFvElRwU58rrtCmX1ngNy7py8t5bqBI4VCRgRi8HZawwzDz++ytdmH6RKCWmJTlFP5R8Wqq5joJ98DegKFK8BnDcdQRFVGtOsAbXt+HxzRNWL.yjvjsglF6MXzyzqL.WkFZVC.YDJXltJrykWE1rIAO8Q7FLJ3U3L4tgzjwWrNsURcArIhDTArJU0qmKodc8.lOMxhAkky3jjTaofrYqSVSf3S6r50UvxCI3e5eVZxDrdJA+Ku5U267ISv8FZEeyenj02VoLQRv1aR7afuLjFIYXXxtL8XnWQcyNYbJSiORJBUN1jBt.Y8Bd2jEbaxgz.05MqCTGun0olsd10bvILeYq9DN+OVpEE1BZzTZ0RM.LUm87TMjhcBXY+oN6ra0cqs0tUqrtamXFuoasJ6u9VtatZ4MrnP1FoeacVSBbcP3Zf1yCJ00DJoQ6KIW.seyHPagDzNuS0c2eC2Z6UY28pr+2OF7c6IHS8R.4Ke7UCxxkhkcCTWyXKQD64.hIAVsIlQIfEZXZ63Mqzl46GPqIhY3NdyYhgcm6CV4ZhS0lClJMr8bQ+s1bR6yGeFxHMmPRDrNlA39tIsqGRCgBFVTN5uStvwnBTWdH4Nxj6enMgMCDDIjusOCXFsja6rZ4568vHRXKyPyglglFCEZNOZXa4kGTJYGXu6At5V8U6gM6cErLy95W+51n.LIs8.pu8su82kl5xIj+6HYzWjhYs6C25auoyKx55lq+gnU7gqXjCsobKhSTAJXbJPpfZDbws.wIOQDcTLbUPJPG6KN6YobYylNpWivSh5yq7UngB2dCRrO0LVNve8r3g7Wkd4HNcvdFikbtwdF8jliY86uv5T4h4XCaEswagCYZp6NatYBNSeTalh6znA6T7LG21wVWbq0+ABPuck+bovAgDT83hB2+NBt5MbaQj1sbVUJga1jx4O2XK5L.bkdVoOb7DeDTcxizMkiX9wVD0vQDdS4HvZldL7HOSi+0uB+72tzyTW971lOhy2ed5ymsLbZ9qYcktlLN06DivZhyR1yv47rS+.JKIiydTne3Xpk0EeMmO1YGgem.hL8iKgunVxD3xY9hN3q1vAXz0DrC+hSyLYu3zfGDajc0Ngv8SbTWoXz3cpQfWnyuaZ7l79c20YiFMndxAfcFmM+tw9XcyLYWSXxgx8zP41NOgbLUciJEPtmZbCQTa2GRgDTzmVbLOq5+XReV0vI9YU20SBPX+HBONTDSKZp4glaYy4JSkc3oYWSJEWn4sIXdF7cqR8HtrIQnTcJkAiSoocXFGE8iqrgpsp5TvZ72M1CLVz2YtcnVG3JrOAOznnofCHurI4sHQ9PbwKUB5zWqrhz6aM3eDus6r2TO27Oqa9uQOq5mvi2a9R4yqw6Go6lUAyjClMAG9W3HrkfyRE32iJiXMaRSkOMR6P2Ez5chNt+lr+0e8GWQ0RPJpCX9hT1ldLTn1X82BLyzarvNLLpU0qtpwMw6Uew3N1a3I1Q2Mvk52mdx76Wwenjwkab2jNEcUGD8tcQr45gUcD4cavdGcimuO3WmuWifuW3XmqWuZuO3ZGaeWS+ATeW2DUsfdJbeuoC6eoCzmyxtpvs6+6i26I5fOF0NDnTIdCopcZWGZpziBHlyoA3isaOE9r35wEvwHbpS49pA3cmRlrHN1NYxh8l7mk0nMwKR7Cd5mwFKrcKEEvt4p+SCx3rCN1sXu2v1wovREv6Bx9AOOLm99f+Yzxr70Plu3ZHyCtFx7qtFx7kWCY90WCY9MiUFrK3U6HEs04+.gZanePQ6M58Xq1Sa8ewHzTSD
-
@ulrik or is it not possible to control the midi from outside script node?
-
@Christoph-Hart when controlling an osc with that midi node , its way out of tune.
Probably the Lowpass , it also skews a straight 440hz sent into it. -
@Christoph-Hart BTW, I am always getting this issue with compiled dll´s where it says its failed the sanity test and I need to compile , after I have compiled.
-
@lalalandsynth Yes the low pass might have a error margin that is relevant in a pitch context (it usually stops smoothing at a difference of ~-80dB but this might be a audible error when you map 0...1 to a 20kHz range.
The linear mode should be fine though.