Any examples for step sequencers in HISE?
-
Hey there i would like to integrate a small step sequencer like this into my project.
Are there any examples on how to setup something simmilar?
In my example i would like to trigger a simple envelope modulator - but am curious on how to setup a step sequencer overall.
-
Hey I've just setup a dynamic sequencer in HISE. I am using a 1 Panel to draw the graphics and get the click positions. I then populate a 2 dimensional array with the values that is assigned as data for the panel. When a step is added or removed I create artificial notes that I then push to a MidiPlayer.
Saving a preset is also straight forward since the values are already attached to the panel value.
-
@oskarsh oh this looks very interesting (maybe a little bit too advanced for my case)!
Do you have a snippet as an example on how you achieved the button grid?So this is all custom scripted and does not build on any arps or modulators that already exist within HISE right?
-
@Straticah I've built upon this example here which you can easily modify for your case.
https://docs.hise.audio/tutorials/recipes/ui/scriptpanel.html#a-buttonpack
-
@oskarsh thanks man! It seems also possible with scriptnode but i am not able to have a working loop yet.
HiseSnippet 1187.3ocuWEsahbCE0CASBzsc6Jse.7XVsQHnaZ1V0GVBjPKpMInLznUpOD4LiIXgG6Qy3gDZUeu+B6Ss+F8s9Is+As263AlABa1DTamHEv2601GeOm60CChzd73XcDwo5vYgbhySntyTlwcGyDJR+iHNeF8DVrgGU2ZpyrPVbL2m33r02hFbpVlj9792zgIYJOdtIB4Bsvi+Ch.gI25f1euPJ6w74CEAEhd+188zptZoNAvyVzljPl2D107SYXXknDmJG6KL5HWCyvigX5n8m4NVeixF+EhXwURNNnEwEVHqYR2wBo+f4m0XBwo7f7S9V1S9yomH7EKrmmA97TG0ymQwbfSo6CRsdDPxo.jJagzyntdQhPStGDOeBsuBHjQLHUWDJ1XIN+EsqFBPYZDvlv6EACVLgcOnYy8pC+6EeynDkmQnU00pS0F9YpceQseoV0Z+Zs5q5Zzn05C2lHsTxiVqajcituItqJI3Jdzd0mxjI7EABG+kyoUdX4TO6otPfZUekvbVHOabOszGyU32uKCPxRav29w9GwLLjTxrAwExiLBDNNGwmBpZKEUkdDOdhQGB556vefxQ6mHYlkkSXcSlCHerDGhDkJVXlUrtZUMV4Ob9nYg7wG4z9.g6ynCDFuwqGukVCdgr1+03Mqh8SoGOZD2yjC1xzdu8dKOK+vjR4P4gVpVKqTE1eDHOIaX8dus0ZKR+MZdAQXDOjEwGpGHYy1MlEDJ4mC3cu5WI0dSbE+L+tUQgVHzAiXWuwLkhKi2jhsJ+K0.ibtNwHTWeByDItk3POMIvEZk6w6lgNvlSIrNyNtINF0Ktbke5f+Fdxb1BG6j4r0bmEJQOkatQGMIkNx9NwYaatONMIe4naaQNTJ02zUGDJxTu.GjZafVNKbrVI7PS1HlizCCzIvljA2uiEOjIjnb2MIFZl3elxEBN8pNmstfGEmtvaSa1.9Cj+mp8AWzdLOHwNa.yLFqiv9SfPkG0vagfcIrVTmfKw7qBsYI.hA3QO8hvsJzPxpGwQPUXI6p1O9BzqGSRt.4aD7DbMwvmiOandLfduDupkrDfedJfAkSiBQ7HfX4hPjj2+XHK5Ztw1uEU52NuUqqT3yiF.aS7xCwSkxme6bUvwfP1GpOSmnyOQOX+FvynW1XMOec20X7UmsFiid4qUSaNqX7PSGVD7xGvkm1z77Q.YehPkkYya7cB61Ur8923Z3gXEbw3bmvuwlqKFIRGaSsKvcVlCSL5.nB0eASlQfaSM38rKycOcA2YctozlSoUTVUockvJ02eNBgoPVIlJ30HKNB6POmo70AqUBjd+ph6YqLS0kvRurnbQRG8LO+rh1gNDiG0TKIhHGl3Kz8DVWvmVhjbjHNDZ01IAt9vd2RQZtTAZtxlSyfsOHMuC8P3LOcM7L4Qu4s+81qr4+w6d2edOadM66ONMu2.5ucEBQzdoLAoiVOIfk1jcydkn+OtRHf4EouLSui72NoVfdjpze2PU3Gv.iq2hLc0bY.7d8W54s7RcmI9Ea5De0lNw82zI9ka5DOXSm3q2zI9Ue7Ih+rqr9dX+AP6O3XaOemiUXAeZ+Lx+.DPYFHE
might need a node that adds 0.1 to the signal and resets to 0 when it reaches 1
-
@Straticah what is it exactly that you are trying to achieve? From the image I assumed a pattern player which randomly triggers samples.
I have my project setup with 12 Audio Loop Players that each listen to a specific note. I then use a midi player to trigger these notes.
I've scripted a simple random function which populates my 2d array which then updates the midi player notes to trigger the samples.
I've decides to use the midi player because you can
- export the midi
- have more control over each note
- have 2 samples play at the same time with one player
You might be able to just use a Arp in your case and randomize a sliderpack to get a similar result.
-
@oskarsh What i want to achieve is timesynced rhytmic modulation of my audio effects that i made in scriptnode. Prefered with a simple envelope per step to smoothe things out.
But each step should be on off only like in step sequencer. I could map buttons to the slider pack inside scriptnode but would still need a running loop that scrolls thru the sliderpack like in the hise snippet i sent.
-
@Straticah Here's a simple 8 step gate sequencer in scriptnode, seems to work okay, but I'm sure how accurate it is at the point it switches from the first cable pack to the second..
HiseSnippet 2255.3oc6asrbiiaEEz1v1x1cOYR5jZV5EoR0S08nRz5gsprX76NthenXow0zSV3hMIrMJSAvPRYaMSkOjrJ+.4GHayWP9Ex1rJ+Act.jRDfVTlRV9QW8vtJ0BuO3dO3hCHja3ysIAAbejQgVc8HHikvM6xBuXqKrnLzdaiLlG2vmDPBQa10yJHf3fLLl9chRMJLCR97+91MsbsX1jjrPnS3Tax9z1zvjbar9ej55tqkCoEssRsqr9d1b1VbWdG.ISiKg7rruz5bxgVhpMEFYL6NNzPteyPqPR.xXlM4NcadA+ZVT8OgFP+fKQjvD0D5nnr2k65HPrHWzVWPccZzaFGfPF3FIy+oil+uBe.0g1O+D6vuPVvxIsP0dXLkN7lVCdlpvqjB7F.jLTfDNBReItosO0KLoDAdVDuGKj3elEX1UgxgcZuQGGJeWpq.IXCCv.G0AHi+EdKNzJVXw1VWR10GRzuWdcsRkd6xvGe8uegENqCyNjxYKyYGxCIGwd8WuvOsPgE9qKrb5hN6rAVlXf74ttD+AVrf.3OrF9ZVm1ef3+1kuxxsCoeEAWutoFmsoVkIXGMuUpHmsGiFdjGgkE+.Earfu8c6ssUnkv+DmGTOOheHU.AisIWAj8HuUA71jfKC4d.cOwUNSTg.Ih6zw0JTmYIVNEW.XCzbmB2CKfF1Uc41DitkWH9k3FzP6KFLFmZ.XDrTODXLdQ5Kv6b1YD6vD.NCd2u+gYEo5vuXugOZ8jLRob3+p3bXbGxxhrIAz.hu4PBZ9uyaPSubGzDV52zk5P7a.QOkq8EUcnADdKdTV5MzfvliYP3Ye1ED9SfEtZ6STnGFaRa64R1gcEwEhNIw3uDBGclUG2vd4pyIOfy3dWvYTaUZ3wjPe54mS7Uw9.mPaDFBbsjbd05GSbIVAJ7ze656SYDKevNQFSagY9sECye8U3H3trXgzxe5Fvc5OaB3NLSz73ctIz2x7Yn2KFZq7XBsi4cBoryOvBV5dCDlWrY.ryfMAfEiQbkg9mRHpIJcIQZAHZRXNxDeDdhKzr+9DPgl8JTQOzgjvq49WJW8E+cjwbh4dArG2saatCZCWW90MfD8BvHmPD+.Ac1XNbohv+f9rsGryT7.uQadGX.jU8OXEzxh5FMikcVTciVO.VzlcB.0aNGwZBcfbmTAM7PYblY20xFrqcaXAaQCKmD5+.2Cwunce2TBTS7SR6LX+aX4Cm8.jFGDAFQu1au1H6F.l1Big73ISKJOxZHGdbDMPNVqgtCrnO54cjvJizbXaHpqu9.sDtM7+EiJYjFioTl8hvq8RAr9CnrSDpBf1IbfnCrtoeZSHcDZhxRqhHEEyHjB1KfY7SaCaqqi9ekhYpWEFOC0zJC1R3PRaO9oAcY15i2qjiGn9onRMFsALIZcKK+yIgAwmWfQrinrRt4dPuMKFrndn9FVQdKgaP7obGoJOjlGXFEO.NaOvrXy0fLZFR7ZR+wTtjVhYEZiNgbfUzWNVVcrYpNt7JYzwKgO.DWP8boPej2dePDmA04Ev6vrfveNHsply9cdrYoRkz55WAUQjo3wrR8Rll0LkizKweGS3wIQl+z8Plj2XGoFSZQfI4SJJKXjHPyLHBzTCj.8RrsvvbZn3yJ5DodK+P2cKWMyVJDRdSuy7tMMvy0p6lc.Q.QgDzxARuGygbiPUv2Xlh6N8fcVCzSLd9NsENCgBlqXWKh2my8fsi8Cu280rv4CBIo4tYvjlGCVTZXsr2rPV9XFCbpauszpO7aKkhkpMd+59waUpyDX8xfC39hXjHduhkyGouknAA8+FR7dNRH46.mP1ANVqr1F6fqrVQ8mqNR7YMszMdScwWquUuxO6MJoSsvYr218Vz1LYbRoAl4R0PjCdnZFTGlLmIylLSRN5RxrIQYbxB+j507Rx0QfU6fo2VxQRSTmveAV39W6zq8o.VVQed+a5yGUqzHRHSQgTeaLZISHSQ8hNapjX619rizOR1h1SJy87iJwY9Him48NfWbGsRZkeiW2TdRgmJSF7TcRgmZSF7r5jBOqMLk5CHFq5ZJ8.qYnnNoJOIqm9y3ZUJ9Ctu+jn0SM5te2ObT4p+oMpydu66K20oU4KN5ft62rNj44U1JzoE6niO+uzt99PUq1D9v+HRqxUqeUI5lq1Dp00hxe2aJ9PEydTNJgkiSV53xV1prQZtqEhB7CE7jbXwgtqk5PnUh7c+IR0UPAjhA2K3DQo1Vt8n0FSoedSo7FSyGY8Oq9bQ+SsGZ8O802bUJ8NMJ9Fc8QOGz+T9yT8OUeln+wHS8O484m0+7y5edNn+o1yB8OFedo+YNgTFyRin.nds5yGEPY1ASTwUyg8HVWtx.egnhRdvD3rHNPd42mB6ZqQEheIbSvWo4cInXkOIuFlE5cMLlOT2Ci56fT0ckJnII9GpPwjZLRiGdnT3uPbwnJ10dFG4UihZds3V2Ud46pYny8xlJhEwVxHdzP6uQliNDE4fkH66PZ1roOEvqTJWu4cUsnhJTtjYoxPEpWesJ0WsjY7Frw+.QFxN0OZfo.t2uMkI88TEGi49JG4EwVqs53eUt1RTc8aDq6t2OaRcPl4djOHih4XX6lcu2Nbb5.iWpxfhlFxaQFcmWV6slmo4W4Kli18ZmJzSzM+hRCQLtcGWzHeouZ099BNsaOVa8RDB4LB5tV4nUX9.zft9c0K96VHYN4Bby7hEkeeO4BOouXBMf0+zoYfpUFUTk28wxCpJmEpJ+TZqplEpp7TZqVMKTU8wwVUcz3U0dbrUUGMd0pOk1pL4Uq8TZqz4UyJP0z3MPOFxpFyYUlGVqudwArWfs+U42J+e+cly+OJ9e916IdzUjM.y7wOtl4O9w282+a+ySV+dNsRTBOVRe1jyursk7W+438GFyiwuU01V197SieCbxWKrLGvowj+QkU.efH8xlnqRShEmw8Taa8t5VMbkwsgkG2FVYbaX0wsg0F2Ft531v0t6FJ9S.I9z.B9NbpiF6DcnWid+bAgS4f9+bUCpqL
-
@modularsamples oh, interesting setup! thanks for sharing this
-
@modularsamples any idea on how to daw sync this on playback? Its currently freerunning at BPM speed.
HiseSnippet 1309.3ocuX80SiaDDeMIafjiqpmDe.xibpzn36nb2o9PgDHsQ8BXcIG5j5CnE6MjUwdWK6M.4p568s9Upej52f1Y75DaGBPH8ZMRQd1clc92uYl03Dob4wwpHhU0ASC4Dqso8mJ0iZOhIjjtGSr9JZOVrlGU2rTqogr3XtGwxpzOhKXUsLI44u9gVLelzkmsDgbtR3xeuHPnyV04veV362g4wGHBxw89G10UIaq7US.6oDsIIj4NlcE+TFx1FThUkS7DZUTeMSyiAdZo7l1ej5Fog+yEwhK84HgMoObPlkIsGI78bl4qwDhUYmLOujwy2g1S3IludVD3qS1ndlD4iAVa7Plj8SvjrxYRkMlzKn8ciDg5rcP64YztRHgLjAg57lhgWh0eRaq.Fj5FArw7NQ.wbA18flM2qN7yK+9gSjtZgRVWIOUo4mI28k090ZUq8a0pu3VCGtz8P0Do784QKcaL6F8PBtqbRvk7n8peMyeBeNif6WLlVY0hotFuNGiJYWoPeVHOktix2CiU362MCPRCavaer6wLMCSJoqA7ExizBzbrNleMfpMonpzi4wi0pP.Wem7GfbTdS7Y5hvIrtIcCHdTHGhIJYrPOMec0hXrx2e7nYt3wi3sqn49BpiP6NZ416FKwdgn1+01aZE6yomLbH2UmYrkoc9zCVdVd0fRYlxiVpRM1RszRUP+ngrcJY8NextfAc5jf99BOdjCzaCLHpkE3ayJc+cZVYRXDOjEwGnb7YS2MlED5y+.3E6U+Rek639hOyuasUnwvZgbrq6HlTx8iWmRvJegZqQ9fZhVHupGSGItE7WL..M3c4sSsNLFrAV8YnahzHJpOW5kP72vS5l1yCXvl1y1LWg6ob8MpnwIIoz2IVahYjsnAJuKFdK4Hee0MsUAghT7rwg3QwIDaRa1.9yvlixeZ3HkT3h4NiPyL7iBTS.clZ8+DKd.S3i0D8mDCcb7NS1GXNYdHhCOU4AuUoCyEBqScX5QXsE1yB.u7nFtyAwyszLbSRgBD8cXQvrPnWdrwpwCc1.SSTCrw.LTjLtrDtOFKJYzNEO9mS07fP0EwSktPKw71yNI1C.KZjwxBVwiowr9DCXQWw0woMQkbWSvNIPz0CCzfuD9JxbeBWbapCORn7RtY.Im6hirmQAgwdB44HhELBLeQ5wtMktB09svB807PrDAYvFnQOeS5.zsHGMQqB.bcRAYpXYcaI4zCMudrWTOGbO5YaZuI9ZQnu.NiU+7K5GliaYGeU5IRFT74s1m8VT6lMaV332AXAWDer2+cMssOvN89eeTh3.tImTTkG9GGRxMZjPxgypgvXCpdIfLCneNGOMP1LXsUN0MCNUPWOCzUDuAtySSEkWcb71TWLabAdY0hf4MolnEdzPy6amcmhiEwgPO8VSfoWl4IEVAn6J832hiy9V6EpBJs7L7RSeqWBuPIXtRkjwx4zd4GC6Ztq56UpPXJRjlTf4m7IUAt1jlSJrdQrW93TgcRlWiTvsT1v3hciOG20k4O6Dgt34PSERp2SOxbb7uFasHDI+cDJPhdfAbfZ5DX3sGbSkDwr9E5A62.dF9M3uuqM7yqO6go+7YqF+KfBsdpYuYkB2AO8EMA1RoFGvRF+udWg++iKqDvbiTWjBhPmaqjUf.hL46bqBevMPW2lbcw16DR.7cnW35V7ntifuZcE70qqf6utB9cqqfGrtB9l0Uv293Bh+aBRA33HBBomyIlJSqYSrgKbP9G.jKmtMC
-
Use the clock ramp node, this is basically a tempo synced ramp which listens to transport changes.
-
@oskarsh said in Any examples for step sequencers in HISE?:
Hey I've just setup a dynamic sequencer in HISE. I am using a 1 Panel to draw the graphics and get the click positions. I then populate a 2 dimensional array with the values that is assigned as data for the panel. When a step is added or removed I create artificial notes that I then push to a MidiPlayer.
Saving a preset is also straight forward since the values are already attached to the panel value.
Heya, sorry for the necro bump. Not asking for a snippet, but would you be able to point me in the right direction for how to start on my own version of this?
In essence your description is exactly what I want to do - create a series of artificial notes (based on a similar drawn grid approach as you've got) and push them to a midi player. It seems to me this is probably the most sample accurate/timing accurate way to make a step sequencer.
I'm pretty sure I know how to do the panel side of things. But I don't know how to push notes to a midi player.
-