Free-running, or randomised phase, for Waveform Generator oscillators?
-
Is it possible to have the Waveform Generator oscillators free-running, or to randomize the phase on note-on?
@Lindon asked here in 2021, but got no response: https://forum.hise.audio/topic/4752/waveform-generator-free-running
@Zerofox97 asked here in 2016, @Christoph-Hart responded but it doesn't look like it was implemented: https://forum.hise.audio/topic/43/would-it-be-easy-to-add-in-a-way-to-control-the-phase-of-synth-oscillators
Looking to make thick synth pads and the waveform re-triggering kills it.
-
I did a really crappy version of random phase, by writing a polyphonic c++ node that adds small amounts of delay to a voice every time a note is pressed. I'm not proud of it, but it might be something to consider.
-
@Orvillain Clever idea, but pretty hacky though (no offence!
)I'm gonna start nagging @Christoph-Hart to add it directly to the WG.
In the meantime, I'm gonna spelunk into the source code to see if I can see any way forward.
-
easy job for scriptnode:
HiseSnippet 1455.3oc4X0saaaCEVJNzswKqHcnWrcmuXWjNTDXm5kzfcQb9wIyX0oFQoA6tBFJ5XBKQpIQkDugALfcydE5c60X2sWfALf8hj2fsCojrjhbbs8RSwvb.BDOjT76b9N+Q00WPnAABeCyJmLziZXtLxZHW1eu9XF2n89FlOB0AGHo9UiDs6PObP.01vzrzgJAlKsng920auK1AyIzTQFFmJXD5KYtLYpztM+FliyAXa5IL2LqtQy1DAeOgiHDvSITMCOLY.9b5QX0xV.Y703f9FleAZK5YjFjy5Yi2ZimWqw5aUmtIdyFaQWmPNqgcs5a7b6Mo0dggY4V1Lov2Rhkz.3ktqvdnUewk7nC3TV.6LGpZPcCK3jiDarWelic2DiSfggIpapopTjo5InNLa1H4olrUzSTMcGYMZlKLIHUeFfjYFHsXDjdLxh3y7joynvyGgZyAFrGF3lrPIZsFl+NZOAr.tbMW7.5A9vfQaX0MpU6YUg+8zupWHmHYBdUA+Hgj9J9pOsxOTYoJ+Xkp2bpd8F6bpiwW33P8G6zJ2A+IswU4gtmQ8eV0KvNgzQKDT+71zxSmMkDo0YVnf2lyjuxiFO9.gisxVodtHCXDa1fmdc68wRrhThkAqyi5KYJ3XtO8BHLHhhVBsOMXfT3AABE3OvyQXG5fk4cmTAZwS.1ibbnhn3AL4vrAhyfOVsI5iMsP7wntLIo+3w3BiAifk58AFiiL+XTqd8nDYJ.WDcv2NuggS+wuTxwGEYoyjpO9OKVBWXSqpESCXAT+5SHe5eNs4S8l57oIA7OCMKAW2HG5hSWvUde1LqeLYxJ+AH45cii+GvXyb4+WJAiVLWOGZK9ETGHAjFieBjwoGNzQlHMuWWGAW30WvYjrNZGSk9ryOm5mE6iUg1QJgxzoRdRyioNTbPFOwOu4KYbJ1GrSz4zVL60BGKe8onH3VUEpT8+t4TK8+lbpSxD8PTqqj935uqpMe.XuXns98IzNVDJY7y6fgP2qfVVOJz0Bx8Sn.r3bpC7xQlKn5aIZbM0XEHrnba8f+F9EOYc0Xy3IqmLYlVdNhJuT3OPG8E+Ln1QU6BFUs6MAYq1siii3x8DtdrXWZvqQKqqvYXRRHyEhVQBr2wUDBmXL1SiG10QPFXw9dZhZ.WO3DLyQ8FrBCfl3reE2BdO5ZnlkNk5GnOyGfpsF7GDtbjNgT4CvDf.F1ECkqg3NUeg.OR8WiLhOuccJaDPzMUt80pNujBxQXFTUWk8Tc8FyRY5ZLJmlZD3srfBBKiZGbpZVB1w3TUQZklpempkWJVYTKsLxEJRZjSudjVufB8qomqHri2z+JLVFoywGitJnSgBNDkCeFd6Dr+4TYPbyxbJIxSPSFssUgN9Xtsv0nK1G.FbQDkzGfhdooRUt7Yz4QaKmVuxHsNd1h58nMNKZ9LnOKiDADnCMUBhapSc6qJTlSm.aZxH3pacX7XiYZZ9N3qtgrq21RR8hhERWm0.5kQFibEw2O0XdB8J4IB8y.zu.TN8ghdM2l1Ch.rAjcdzcusBO6PeQnmdPAHE2gQA46DJEtPdM6QtpwrUNiRg3Oe5ZYltHkka2yDsoRs3PuJ41Z6yB7bvC2MDpsEY7yIQ4UClhqRR+0B5P1FtQnd6IoDyQdkyPdUlNxaklEIOfPuUxKNF6Nh6td6ai6LlrpznYAU4W9qapJ+5ae6uUTUZ9yt+w1QeYhC7oeWHjgd3cj97SCZNV8Aj+Nzmq2tH0TaFolk05S0iU4EdeSPWuswr6qMtDES1W6PH589UUdukyKJY68bNu6FNZRJVY8cPuO4HUhzcEhAtXc+ey2W+59naUWLwW7l3N.TomenVBTTfqqirDpiZb05FWbSdQ0KzaHj7upBab84ciOed2Xi4cie47twMl2Mt47twW7t2n5i.EGno51Bhi51JpprYKNFtujtaAi+QDB5ZT -
@Christoph-Hart Yes, works great! Is it similarly easy to add it to the built-in modules?
I feel like the more we can do with built-in modules, the smoother the on-ramp to learning HISE.
Feels like having to dive straight into scriptnode for this might prove too steep of a learning curve for someone getting started, like me!

-
The idea of scriptnode was precisely to be able to customize stuff like this so that I donβt have to frankenstein every HISE module with fringe use cases.
You can literally rebuild the waveform generator with a few nodes (minus hardsync)
-
@Christoph-Hart Diving in to ScriptNode now. Fun stuff.
Quick question - if I want several random-phase oscillators, would I do this with multiple simple Scriptnode Sythns (like your snippet) in the Module Tree? Or would I create the whole multi-oscillator thing in one Scriptnode Synth?
I'm guessing both are valid approaches, but is there a benefit of one over the other?
-
@dannytaurus said in Free-running, or randomised phase, for Waveform Generator oscillators?:
@Christoph-Hart Diving in to ScriptNode now. Fun stuff.
Quick question - if I want several random-phase oscillators, would I do this with multiple simple Scriptnode Sythns (like your snippet) in the Module Tree? Or would I create the whole multi-oscillator thing in one Scriptnode Synth?
I'm guessing both are valid approaches, but is there a benefit of one over the other?
Definitely recommend digging into Scriptnode and just playing around with it. Your best friends in this case are going to be the various container types. So if you wanted multiple random-phase oscillators, you could reproduce Christoph's example a couple of times over, using the split chain.