Global Modulator / LFO always retriggered ?
-
@Orvillain yup, should all be doable.
Monophonic VS polyphonic (is this even possible?)
Just make it an envelope then, that's polyphonic by definition. You can always switch envelopes to be monophonic (including defining its retrigger behaviour).
Free-running VS sync via sub-divisions
Also no problem, for the synced LFO this is your best friend:
HISE | ScriptNode | clock_ramp
A ramp signal generator that is synchronized to the HISE clock, producing a ramp waveform for modulation purposes.
(docs.hise.audio)
Retrigger on/off
There are multiple ways to go about this, you just need to make sure that you can somehow bypass the processing of the note on event. Of course in polyphonic mode this will always retrigger, but if you set a envelope to monophonic and ignore every note on message, it will just run.
-
@Christoph-Hart said in Global Modulator / LFO always retriggered ?:
Of course in polyphonic mode this will always retrigger
Some way to have polyphonic, free running modulators would be awesome. It's a really nice effect.
-
@modularsamples said in Global Modulator / LFO always retriggered ?:
Some way to have polyphonic, free running modulators would be awesome. It's a really nice effect.
what is a polyphonic, free running modulator? polyphony is tied to voices, so when no voices are rendered, nothing is there to be done...
-
@Christoph-Hart said in Global Modulator / LFO always retriggered ?:
@modularsamples said in Global Modulator / LFO always retriggered ?:
Some way to have polyphonic, free running modulators would be awesome. It's a really nice effect.
what is a polyphonic, free running modulator? polyphony is tied to voices, so when no voices are rendered, nothing is there to be done...
Only thing I can think of is, having the modulator continue to render in the background so that when the voice is re-triggered again, the modulator phase picks up the latest "newest" value, but still on a per voice basis.
But I would guess this is a pretty edge case thing.
-
@Christoph-Hart Orvillain describes it well. Think of a traditional, analogue oscillator. It is producing a continuous signal from the moment you turn it on, the only reason you don't hear it all the time on, say a minimoog, is because it's passed through a envelope controlled VCA.
It is pretty niche admittedly, but it would open up some interesting possibilities (modular, classic polysynth recreations).
-
@modularsamples you can replicate that with a monophonic script fx and an oscillator but when you do this polyphonically it just boils down to randomizing the start phase which isn‘t the most spectacular sound.
-
@modularsamples
@Christoph-HartI've done it in c++
I keep a global timer, and for each synth voice I remember the phase when the voice stops.
When the voice starts again, I look at the last phase, and the time that has passed, and I can make the voices start at the phase which it would be as if it had always been playing
It's the only solution I could think of. The reason being that hise voices inherently do no processing at all when they are not active.
This means that you have to resort to keeping track of phase yourself, and doing all the bookkeeping. -
@griffinboy forgive me if I'm ignorant, but why?
-
If you wanted vca to act like a gate.
Imagine that you have a saw wave polysynth.
Hold down a chord and keep it held.
Because each voice is a different note, you get the phasing effect, you can hear the held saw chord coming in and out of phase.Now, play the same chord in a rhythm.
The phasing effect stays continuous and doesn't get reset. The envelope sounds like a gate on the phasing chord. This is the effect you'll experience on an analog polysynth.Whereas, if it wasn't free running, the phasing pattern would change every time you re trigger the chord.
There is no reason to do this other than analog emulation. Admittedly, free running oscillators make bass sound loose and worse. But it does sound really nice on pads since you get this feeling of continuity.
-
@griffinboy yeah, but what's the additional benefit over just randomizing the start phase when you start a note? I get that you might want to have phase randomization between notes, but my gut feeling tells me that there is almost no perceivable difference between randomizing the phase and meticulously keeping track of the phase of each voice.
-
It's a big perceived difference in my opinion.
I can make some sound demos if you're not convinced. -
@griffinboy sure, please.
-
I thought the difference was significant enough for me to want to model it.
Then again, I am a perfectionist when it comes to audio things like this.
It might not be significant to others.But in some cases I do prefer the free running over random phase. The overtones in the highs have an evolving pattern which your brain can follow in free running, and I find that pleasing. Wheras random phase gives a chaotic and hard to follow pattern.
-
@griffinboy said in Global Modulator / LFO always retriggered ?:
I thought the difference was significant enough for me to want to model it.
Then again, I am a perfectionist when it comes to audio things like this.
It might not be significant to others.But in some cases I do prefer the free running over random phase. The phasing in the highs has a clear pattern which your brain can follow in free running, and I find that pleasing. Wheras random phase gives a chaotic and hard to follow pattern.
IMHO, it is extremely noticeable and having a way to support that behaviour would be excellent.
-
Do we have a way to prioritise these sorts of request? - not nesc. an order that Christoph might do a thing - that's up to him - but so we can see its relative importance to everyone. Im sure we had an approach I just cant seem to find it. Essentially so we(well me really) can say "Hey this sounds sorta esoteric and only applicable or even audible to a very few people - whereas MSEG envelopes might be considered more useful by a broader audience....."???
-
Yeah, the feature request system is quite messy.
Not to mention there are bug fix type requests as well as feature requests. I'm not really sure what would make it easier though! -
I still would like a proper bug/feature tracker, the github + forum combo isn't the best
-
@d-healey Could all be done on GitHub. There are Discussions that can be used for proposing and discussing ideas. It also has a voting system. Then the issue tracker can be used for formal feature requests.
Discussing things on the forum is great, of course, but a single source of truth for feature requests and bug reports would be really useful.
-
@d-healey said in Global Modulator / LFO always retriggered ?:
I still would like a proper bug/feature tracker, the github + forum combo isn't the best
yeah sure - but one with a voting feature - so at least we can see who really cares about what - as I say not any indication at any time that the heavily voted request would get done....
-
@griffinboy @Christoph-Hart said in Global Modulator / LFO always retriggered ?:
It's a big perceived difference in my opinion.
I can make some sound demos if you're not convinced.Sitting in front of a friends Matrix 12 (classic 80s poly synth) recently convinced me of the value of this approach, I'm not sure you could even call it subtle.. the variations in phase and pitch do something best described as lush. Most hardware VCO poly synths (or serious emulations thereof) should behave in the same way.
There's at least one way to achieve this currently, by cycling through multiple, identical monophonic "voices" with a round robin script:
HiseSnippet 3435.3oc6c0sbaabEFTRKkHhSrSp5L8RTM8BpXYZB9mjF2zHq+RzTKKFQG0L0SlTHfkhaDH.K.njU73Y5k8wnOA8pdQuKuE85z2f9Fzd1cAHVPBJ9mpsjyxLSFs+b18aOmyd1yteASp64Zh88c8Txn9hq5fUxbOTiqbBZsSKChixA6pjYYzwtccrN18ThygtNtG4a5qr8UcL78wVJYxL+WP6YlbKnv98e97sMrMbLwwUonbhKwD+LRaRPbs0252Srs22vB+BRagdWYqCLcc1w01sKfp4QEU5XXdtwY3maP61bHkuzvukRlOEUsTYyJVqaUpT0MqYZTCuYSilM0KaUoRsM1Tu7lFU1nFtXUkLY2yhD350HvH.6qjYgscstpQK2Kc3SvIDexo1XZAckFvLyqdeWaK5RjVqxNsH1V0iTW9JJYVpdrxadtxaYzgDKRu5iUhOf0fVrDhJvLykDdym.d5hvqn.7RARYDfzBbH8wnFldjNAwsPwyGfNvI.60z.rShPg2Wk49apncbgd3DTnsw4388fB8jHud0hqoUtXwUehppJXr7CztvvS6jcNxW6yzdIyApvY3f8Z1DaFjekiZri9JqtlpVzuz5QoQ1ixirGUVY0u8IzFAbQbrINXslccLCHtNZtN6BqBLcY44Zm2zscGnnSvZ.1s6hWU80p4Z55k2Ri3vVJq1atrJ3iCdZPfG4ztA379E183id9dQB9D02.5gH0E.nchF57qvlxUVkJe3Duigs8ofCc9j3goJUe7i8n60z7na1Dzr64X.N.ftM8Yg27JzwHVlcZRrACVRKRB2y7qb3A6dvi1m0ujFHweigvklEgKOKByr3oKsnt.TavVQt1PMWtXEBaODqT9UXQoRWOL79WZB6e4Iu+bW5w62f98m1yiyj6pI3vy.B0ouI0oOxiI1wuI0wMJ9P9ecj+NuwG+XQY6ogWUn4QLNuQUk65l19id3ls0vAB96CGDf016Bvm+.KHXo44QKgXK8gO8a9tFG7G2Cry5k1fBUVG5WoPbHA4sLBL3n80wa0g5J3g8wdWfyGMXqF6gEqZfUNAlkhOQin8a6MuPoG9vXE3qSXpoC9KIeKcG4izWSC1oiaBvxRvC9Mpw+a0zwdmt9sXXeMMLWWzyhlbJ6EMKdgNHlHMya8xh.l9LsGouZhld8.9o7dFMsOIk10osyPyfs5gC554jr92nN3eo16u.eBeWv8f523E7But37MMr8i7ACUSoqkb6jTIMqZmDCyHUQOReXqelR5FUI7F0DGC63FfOxAx8vwAayB+CSmp31lBL2+j8K5.HsfVXsiOF1R0kddupG9LMOuC.W0WQ2S8DgySeNa.xyN4LTPBqeDese.64pcpArcWylbNlp87tJnEw4LMXxncT6LWWKlfc7bOyyncanw0z7c0tDq4fAACb0LrrfIBS+SH3HaJLLC5ZXyDzjicMmtsOEfZNaWSCaMK.mgH9gfUHGqqMf7qvL4YNmz4mVfdRxyHfhC7FXUPUJvLplKg9hskKo9ZMsCgSifzRYofv6b9UWSyBTj4hLYc7Hv4yrph5MMRGeH30yP2NWYZSQGb5+YsX3PHO.Mi1TagZNvYLZc8Pse2moUYU0bL+JAyC3L.QM52H0rIXkhbV4ZISn6IWivFlwYIRc6Ra0XFEkTU6MByeXXcarG2QgBPglo49mdKQIpwMthYoQ6HjeaxjlQCOoYwb5M4IPIzQWmCfcCG0A6LrL8UBy5BRvNaHpftFvRu9iBSud6tAAtNJDHK5kP7C0TXHV7lQJigzKhXoE1uvgnHMgaXSrvdLgyhpa3nOCxVZFjs7LHakTj8qOXWHxL8VMg5evlzAh.Rnl6L6hu.xNheGmbncw9mG31gYfBSKFbIFsI5Uwy3mt0UwEz1J.+p.58jnW48w0csuhtX5MzKLR6mvH+aDF4s5rk33nNJSovvTTXX9K6t0kDq.3ZvnLuBJ2BSNqEcImoDTpSjy6ArAhd8K3RzPHVLDQmVGhN3JsSbu8erMwxxFW20mP2A1mYbbQbogg3s9CSFhK81BwkGFhUNcxPb42VHtxvP7O0ZxPbkYCwC9XCO.1tX001HH4aePegnvFnig3CNPeTAGXruRLNY+OHxBi2Chb8uWy3B2OFUmDX1Jc7NWJ3EhP8+a7F97ReHh+VGwfcAz9ey09VR23P49Idlvu.xSoCCIKg3We9l3oA6L1OMHOL99GJNh6X34Qv7bhD8j6YqGnku1g3Cg4YP4orjsDAcXq6BYu6j.5gMzniG1vRTBJ5afAnZwFR+D91yO1FnI3sHyd69sHCgz8QgIKxe6FFZ9Hj3iPkDKyO1XQ+ZwhPBbyOFYjbeT3EKdNK0yARMYqwIsFUT6NX.4dASWZQKQkeOGqTl82ZwcuYL94hvXCR6N1vZ5BrMjHWXv1cwMM5ZGzqVQPRy8pSKWGhon16XbfG4ryvdhPO00ySCn2rItlk25XrMFtTpXtYOi3fM7.0DdJUE5S7axmp45Wg3vUiFyS68iiKm+t1wk2nTunFtqFlS5jGlHdJzsj4uhDd3JOLjUF9Et0sMtJuuAcOyw.5VS6T3l6m2f7C3AutbXtcaS6QdynmzYJtUc1apPtG61Mf3b1gFvlU3vVDDKsAbrsIN50EnokNGMVHubQZYp2QCriEqv+E9E1nNsblvF0iZLNrtxywAW55cNyPD92PHTpVGgtvzU4DrmOK80EQEK.+ixSsscujlxMIzqErFr5nW0KJlC8zBZOhvbTtAbfG6xucjgIZM7kF9uvfXSSXrQW+N.nOxoALNrbendcOmEtYw8MLAk8U0Mn4r+wHynGQufYOWVN9icZnpaNSn7VnFm5QYw6yMLzQOJKINff0Qa1UKlCAcg1NUUMOGFY4LBBY5S3yaBX8KEfUbWRCPhCwz.gEYxqmb5+HTHsErIO04MKStQNkBOe.e6JsDDXZN9lS1I.mvOrcIzwFNVtsEMxuvv6Lbfe36Q3fM4tMLSI81S2C45aBI9QCOpTW7dU2CsuG9OqcLcXTTDLVJJBq9DxOfigGtfPyooERH+nzET+Za7qhdfkcI9cfnMa2EhWxilknFnbXNyKfdjdxk.j5YTI3uOj3DpBQzMZJGZ7pdkq.kaDf6DtQAoCkGT0yqOLqfDikhvDsX7DkEUJ4LkCp.9kX1VFFA8h7e5U1rntdMH9043K4JZdGJUZyMKVoZsRkJWYi02nZHS4TiWWXq6UQPbQTI1TlDjQ0pjt9fNAatYshB+zE.8hzkMTSLjoVVtegf2S+5Ept5ocCbaCgqiNZbbsG5C0d7Evnc81C89VnnQMQ7820aQS9JQGGkkdrF4rrTcGGHKDCPbyWXHj28QdBU9SPbmEQFsr76KjSzvjHXSxBWGltG5.+SnsZZXGgL3LuvSs3W2+TO3p7sRpx9DgyJBaOM0VOgmkCulKwIGbcPBv7.DN7REE3slFThjbDyJ5ZUW2mlciv5HxmiklfRiKoIHGaFmSrhjlU+959fsNoAtmSLv8dPNeVPNzLooqqjQxykd.1921kCoOcwW02b8ZqqWaC8ZUJUsboxguaT3sztlnBYgYbZBK7ggi8yvfevjEP6s15OK5Kg60b8q9REeWgtEg6maZb00AuEQkKNUVmbHH23fQF2tXgpuaV64PQuVP3v+KPkqUTuPUXjpVtVsZPOGsoZhbT2oq2EINer5HUGS0Q7e.J9QTlnSimkDJ5KOkDSUpG3ojHBeJWMYvaLkdH9I5JIy9wjIBplY7zdr6SmhtaQDO.90q7FVZM4PeeG5MW85Oylu2xuSgn1RSoEK4HTaykX0NW5d9YgSeFhqOmzoQr7FSGvZC0A73t13IM8vgtvlpMAPjT5+QiN5sa8ch+Px5qWJTIR6KxaQYJMCmH7Vya8u+g+wON8.L1Ap9fbLNUaq110871FrG4Yp9uMfw8EMuGhS0C8MXGE2euie706g3jO8tDpuMdnuwm+wRR9Gk7ON07OV5t.+iKMi7ONdxOL9GWRx+nj+QI+i2U4erjj+QI+iR9Gk7OJ4eTx+nj+QI+iR9Gk7OJ4eTx+nj+QI+iR9Gk7OJ4eTx+3sB9G+ou5e92+bI+iR9GuSw+XYI+iR9GmZ9GKeWf+wGLi7O9fYh+wGH4eTx+nj+w6p7OVVx+nj+Q.iR9Gk7OJ4ebp4eL6sA9GuMwzH5lhoQwAcgolUwIdTRiAQIagR1BkrE99.agKLirEJYFTxL3MNyfKLiLCNyG+NTV.uoNXu+7E94.GenaLN9tcxp2BSOqdisa0jvi2XxYG5FiytaA7y8I.PpUc8MKt955U1nR40qpbahnNI4bRx4RkbtJRx4jjyM0jyU4t.4bKOijys7LQN2xRx4jjyIIm6tJ4bUjjyIImS9wAJImSRNm7iC78mONvrSAMdwIDjl0VXUkYd4WKnj+OI+e+7j+ugElP9ECJ4ET9ECJ+hAkewfxuXv2S9hAieRuaye0f+olM+WxuZPIwj2FHl7swbz1vzy86Bu5G0sbIVMv51ILp3gzxZo7+TfoWF76LMSNTCHXooUvxSqfUlVAqNsBVaZEb8oUvMFsfTdPCOjgFiBx2n9d7qBkgSrL+wG9evUTMqb
Easy enough as a snippet, but things can get tricky using this approach in more elaborate projects as everything needs to be duplicated for each voice.
What if there was some way to "clone" and assign voices without the need for additional stuff in the module tree? Maybe aaronventure's "continuous per-event modulation" snippet shows us the way.. IDK. Seems it would have pretty broad applications beyond fancy VCOs.