Old 09-04-2016, 01:29 PM   #1
rudeog
Human being with feelings
 
Join Date: Dec 2006
Posts: 26
Default JSFX plugin: Stochasticizer

Hi all, I just finished working on a JSFX plugin which is a MIDI sequencer that allows random selection of some (or all) notes in the sequence. This is useful if you want something that doesn't sound purely random, but has some variation. It has two modes, one of them better for mono stuff, and the other better for making drum sequences where some of the hits are not always played (and the likelihood can be edited).
I've made a brief video demonstration here: https://youtu.be/xWGBd6XY-C8
Also see attached images.
The plugin is available from https://stash.reaper.fm/v/28399/stochasticizer
Any feedback is welcome.
Attached Images
File Type: png mono.PNG (23.7 KB, 464 views)
File Type: png poly.PNG (25.5 KB, 10082 views)
rudeog is offline   Reply With Quote
Old 09-04-2016, 01:36 PM   #2
EpicSounds
Human being with feelings
 
EpicSounds's Avatar
 
Join Date: Jul 2009
Posts: 5,536
Default

neato. Thanks for sharing!
__________________
REAPER Video Tutorials, Tips & Tricks and more at The REAPER Blog
EpicSounds is offline   Reply With Quote
Old 09-04-2016, 03:07 PM   #3
Smashed Transistors
Human being with feelings
 
Smashed Transistors's Avatar
 
Join Date: Jul 2014
Location: Là bas les huîtres (FR)
Posts: 424
Default

The second mode (poly) is really interesting.

Would it be possible to replace the randomness by a control.

So, if you automate this control, only the notes with a %level below it will be triggered. (sort of density control for a drum sequence).
__________________
JSFX plugins and synths. See you here and there: SoundCloud, Youtube, Google Play...
Smashed Transistors is offline   Reply With Quote
Old 09-04-2016, 04:55 PM   #4
preferred.nomenclature
Human being with feelings
 
Join Date: Dec 2014
Posts: 354
Default

VERY cool! Thanks for making this, I expect I will come to use it quite a bit.
preferred.nomenclature is offline   Reply With Quote
Old 09-05-2016, 06:46 AM   #5
rudeog
Human being with feelings
 
Join Date: Dec 2006
Posts: 26
Default

Quote:
Originally Posted by Smashed Transistors View Post
Would it be possible to replace the randomness by a control.
So, if you automate this control, only the notes with a %level below it will be triggered. (sort of density control for a drum sequence).

Interesting idea. Look on line 268. It has the code randy=rand(10). If you add another slider, and replace that with slider value (eg randy=sliderX) it should work.
rudeog is offline   Reply With Quote
Old 09-05-2016, 12:58 PM   #6
digitalfix
Human being with feelings
 
Join Date: Nov 2015
Posts: 86
Default

F yeah! Thank you Been after something like this.
digitalfix is offline   Reply With Quote
Old 09-08-2016, 01:46 PM   #7
rudeog
Human being with feelings
 
Join Date: Dec 2006
Posts: 26
Default

Thanks for the kind words.
I've put a new update to this plugin at the above link. The new version adds new features:
- Clock divider - to control the speed of the sequence relative to the project tempo
- Patterns - you can create up to 8 patterns and switch them via MIDI notes
- Velocity - you can edit velocity on a per cell basis
rudeog is offline   Reply With Quote
Old 09-09-2016, 09:31 AM   #8
hopi
Human being with feelings
 
hopi's Avatar
 
Join Date: Oct 2008
Location: Right Hear
Posts: 15,078
Default

NICE! very impressive work and very handy tool.. I thank you very much for creating this.
__________________
...should be fixed for the next build... http://tinyurl.com/cr7o7yl
https://soundcloud.com/hopikiva/angel-rain
hopi is offline   Reply With Quote
Old 09-09-2016, 01:32 PM   #9
vanhaze
Human being with feelings
 
vanhaze's Avatar
 
Join Date: Jul 2012
Location: Netherlands
Posts: 4,772
Default

Quote:
Originally Posted by rudeog View Post
Thanks for the kind words.
I've put a new update to this plugin at the above link. The new version adds new features:
- Clock divider - to control the speed of the sequence relative to the project tempo
- Patterns - you can create up to 8 patterns and switch them via MIDI notes
- Velocity - you can edit velocity on a per cell basis
This is pretty awesome work you did, many thanks !
vanhaze is offline   Reply With Quote
Old 09-09-2016, 08:18 PM   #10
ijijn
Human being with feelings
 
ijijn's Avatar
 
Join Date: Apr 2012
Location: Christchurch, New Zealand
Posts: 479
Default

Very nifty! Great work.
ijijn is offline   Reply With Quote
Old 09-10-2016, 08:53 PM   #11
hopi
Human being with feelings
 
hopi's Avatar
 
Join Date: Oct 2008
Location: Right Hear
Posts: 15,078
Default

hi rudeog

in playing with you plugin, I just noticed something... maybe user error but if so hopefully someone will clear me up...

OK so this should provide the example:

put whatever VSTi on a track and stochasticizer on same track

clearly works fine

Now put another copy of stochas on a second track, give it some different notes and settings and send its midi to the track with the VSTi...

I expected that midi data would be sent from both instances of stochasticizer to the VSTi... but that does not work

The second instance will only trigger the VSTi IF the first instance is bypassed...
so this can be done with an automation lane for the instance... but

I do wonder if something can be done to allow multiple instances of it on other tracks to send midi to a VSTi all at the same time?
__________________
...should be fixed for the next build... http://tinyurl.com/cr7o7yl
https://soundcloud.com/hopikiva/angel-rain
hopi is offline   Reply With Quote
Old 09-11-2016, 02:41 AM   #12
slipstick
Human being with feelings
 
Join Date: Apr 2016
Location: UK, near Europe
Posts: 876
Default

If you put the VSTi on a track on its own you can then put several stochasticizers on other tracks, each with a MIDI send to the one VSTi track and it seems to work fine.

I assume that the stochasticizer can't pass through any incoming MIDI so if it's on the VSTi track in front of the VSTi then that's all you get.

Steve
slipstick is offline   Reply With Quote
Old 09-11-2016, 04:37 AM   #13
ijijn
Human being with feelings
 
ijijn's Avatar
 
Join Date: Apr 2012
Location: Christchurch, New Zealand
Posts: 479
Default

I haven't tried it in context, but I imagine you could insert the following line of code into @block to allow simple MIDI pass-through:

Code:
while (midirecv(offset, msg1, msg23)) (midisend(offset, msg1, msg23));
Hope that helps.
ijijn is offline   Reply With Quote
Old 09-11-2016, 05:37 AM   #14
slipstick
Human being with feelings
 
Join Date: Apr 2016
Location: UK, near Europe
Posts: 876
Default

Lovely piece of work. I can definitely use this, even if it's only for playing at being a minimalist composer.

One teeny thing, perhaps I don't have the latest version but if I'm reading it correctly the Note Start array is missing an F#, which sets the index out for all following scales (e.g. A# natural minor is all white notes ). Easy fix though, even for those of us who know nothing about JS.

Steve
slipstick is offline   Reply With Quote
Old 09-11-2016, 03:51 PM   #15
hopi
Human being with feelings
 
hopi's Avatar
 
Join Date: Oct 2008
Location: Right Hear
Posts: 15,078
Default

Quote:
Originally Posted by slipstick View Post
If you put the VSTi on a track on its own you can then put several stochasticizers on other tracks, each with a MIDI send to the one VSTi track and it seems to work fine.

I assume that the stochasticizer can't pass through any incoming MIDI so if it's on the VSTi track in front of the VSTi then that's all you get.

Steve
ah thanks... right ya are... had to say a big DUH! for not just thinking about that...

Well now another ??? ... trying to get the midi output of stochas to record to a track... don't seem to get anything... ideas?
__________________
...should be fixed for the next build... http://tinyurl.com/cr7o7yl
https://soundcloud.com/hopikiva/angel-rain
hopi is offline   Reply With Quote
Old 09-11-2016, 06:44 PM   #16
ijijn
Human being with feelings
 
ijijn's Avatar
 
Join Date: Apr 2012
Location: Christchurch, New Zealand
Posts: 479
Default

Quote:
Originally Posted by hopi View Post
ah thanks... right ya are... had to say a big DUH! for not just thinking about that...

Well now another ??? ... trying to get the midi output of stochas to record to a track... don't seem to get anything... ideas?
Ah yes, this can be a confusing business! After setting up the MIDI routing, make sure the destination track is armed and set to Record: Output (MIDI) and you should be good to go.
ijijn is offline   Reply With Quote
Old 09-11-2016, 11:27 PM   #17
woggle
Human being with feelings
 
Join Date: Nov 2015
Posts: 314
Default

first rate work - thanks - I like the way you have thoroughly and creatively thought through the features
woggle is offline   Reply With Quote
Old 09-13-2016, 07:34 AM   #18
rudeog
Human being with feelings
 
Join Date: Dec 2006
Posts: 26
Default

Quote:
Originally Posted by slipstick View Post
Lovely piece of work. I can definitely use this, even if it's only for playing at being a minimalist composer.

One teeny thing, perhaps I don't have the latest version but if I'm reading it correctly the Note Start array is missing an F#, which sets the index out for all following scales (e.g. A# natural minor is all white notes ). Easy fix though, even for those of us who know nothing about JS.

Steve
Ah, good catch! Thanks
rudeog is offline   Reply With Quote
Old 09-13-2016, 07:54 AM   #19
rudeog
Human being with feelings
 
Join Date: Dec 2006
Posts: 26
Default

Quote:
Originally Posted by hopi View Post
Now put another copy of stochas on a second track, give it some different notes and settings and send its midi to the track with the VSTi...
I expected that midi data would be sent from both instances of stochasticizer to the VSTi... but that does not work
Thanks for the tip. I've added a new switch to turn on MIDI passthru (as opposed to using midi notes to change patterns). New file is posted at https://stash.reaper.fm/28399/stochasticizer . I also fixed the missing F# note.

I have been using two instances on the same track where the first one is set to 1/16 time and randomly sends a pattern change to the second one. I hadn't thought about putting two on the same track to both send midi notes to the VSTi, but that's a good idea.
rudeog is offline   Reply With Quote
Old 09-13-2016, 08:05 AM   #20
hopi
Human being with feelings
 
hopi's Avatar
 
Join Date: Oct 2008
Location: Right Hear
Posts: 15,078
Default

Quote:
Originally Posted by ijijn View Post
Ah yes, this can be a confusing business! After setting up the MIDI routing, make sure the destination track is armed and set to Record: Output (MIDI) and you should be good to go.
ah thanks.... so strange cuz I do know that but did not get it to work the first time around... but now I got it working just fine and dandy.
__________________
...should be fixed for the next build... http://tinyurl.com/cr7o7yl
https://soundcloud.com/hopikiva/angel-rain
hopi is offline   Reply With Quote
Old 09-13-2016, 03:40 PM   #21
ijijn
Human being with feelings
 
ijijn's Avatar
 
Join Date: Apr 2012
Location: Christchurch, New Zealand
Posts: 479
Default

Quote:
Originally Posted by hopi View Post
ah thanks.... so strange cuz I do know that but did not get it to work the first time around... but now I got it working just fine and dandy.
Glad to hear it!
ijijn is offline   Reply With Quote
Old 09-19-2016, 04:40 PM   #22
akademie
Human being with feelings
 
Join Date: Mar 2007
Posts: 547
Default

Congratulation rudeog,
wonderful midi plugin sequencer.
Is it possible to expose individual steps to OSC (for both to transmit and receive)?

akademie
akademie is offline   Reply With Quote
Old 09-20-2016, 07:36 AM   #23
rudeog
Human being with feelings
 
Join Date: Dec 2006
Posts: 26
Default

Quote:
Originally Posted by akademie View Post
Congratulation rudeog,
wonderful midi plugin sequencer.
Is it possible to expose individual steps to OSC (for both to transmit and receive)?
Akademie, thanks for your kind words. I have never worked with OSC. I just briefly read what support Reaper offers for it, but could find nothing as to how it is exposed from JSFX (which is what this plugin is written in). I assume that if there is a way to translate to/from MIDI then it would be possible. Does anyone else know?
rudeog is offline   Reply With Quote
Old 09-20-2016, 08:14 AM   #24
hopi
Human being with feelings
 
hopi's Avatar
 
Join Date: Oct 2008
Location: Right Hear
Posts: 15,078
Default

again, thanks... great tool

I would love it even more if when we change the number of steps the GUI showed that number instead of always showing the full 16...
but I doubt that is possible with JSFX, eh?

still it would be really nice.. %^)
__________________
...should be fixed for the next build... http://tinyurl.com/cr7o7yl
https://soundcloud.com/hopikiva/angel-rain
hopi is offline   Reply With Quote
Old 09-20-2016, 08:39 AM   #25
akademie
Human being with feelings
 
Join Date: Mar 2007
Posts: 547
Default

Well, rudeog,
the thing is, that JSFX parameters are exposed to OSC automatically (defined sliders..). So are also sliders of your midi seqencer, thats fine. BUT the steps here are done in different programming way - graphically (the same as megababy sequencer) and this is not directly auto-exposed to OSC as I know.
So would it be possible to map steps also to sliders somehow (as separate version of the plug), just thinking aloud... ;-/

I mean if you would do the seq.matrix (drum mode) like rows of sliders (say 16 in row for one note to be on/off for the step - that would be seen via OSC. Then for other notes the same ... well it would make of lotsa sliders and we have some maximum limit here, I think :-(

As I say again, I am only thinking.

Or more elegant - Hey Justin, are there functions to do this for graphical objects like we have here (and of course in megababy, too), please?

akademie
akademie is offline   Reply With Quote
Old 01-21-2019, 11:58 PM   #26
EpicSounds
Human being with feelings
 
EpicSounds's Avatar
 
Join Date: Jul 2009
Posts: 5,536
Default

Hi Rudeog

I promoted this plugin in a video today.

https://www.youtube.com/watch?v=znnYVDC-HKc

__________________
REAPER Video Tutorials, Tips & Tricks and more at The REAPER Blog
EpicSounds is offline   Reply With Quote
Old 01-22-2019, 07:36 AM   #27
rudeog
Human being with feelings
 
Join Date: Dec 2006
Posts: 26
Default

Excellent! I feel honored to have my script featured on your channel, because I watch it pretty regularly (especially when you do features from new Reaper releases).

Thanks.
rudeog is offline   Reply With Quote
Old 01-24-2019, 06:46 AM   #28
Ozman
Human being with feelings
 
Join Date: Feb 2015
Posts: 556
Default

Randomized arp. Love it!
Ozman is online now   Reply With Quote
Old 01-25-2019, 04:23 AM   #29
ThrashJazzAssassin
Human being with feelings
 
ThrashJazzAssassin's Avatar
 
Join Date: Oct 2010
Location: Scotland
Posts: 357
Default

I initially thought this was a rip off of Stochas, but turns out it's the precursor
__________________
TJA MIDI JSFX | REAPER-OSC-panels | erthoide
ThrashJazzAssassin is offline   Reply With Quote
Old 01-28-2019, 03:43 PM   #30
MaXyM
Human being with feelings
 
Join Date: Aug 2018
Posts: 314
Default

What I'm missing in this plugin is an ability to change the base note by sending notes to the plugin. I expect the note change would be performed relatively to defined one.
MaXyM is offline   Reply With Quote
Old 01-28-2019, 04:17 PM   #31
ilias
Human being with feelings
 
Join Date: Jan 2015
Posts: 17
Default swing

thank you very much for this!
there's only 1 thing i'm missing for this to be perfect for me, and that's swing. I'll try to cannibalize smth from others in the next few days and if it's a success i'll post of course, but just thought to tell you, it was clear as day from the 2nd min into playing with this.

be well and thanks again!

edit: just found this for anyone needing swing too: https://forum.cockos.com/showthread....ighlight=swing

Last edited by ilias; 01-28-2019 at 04:30 PM. Reason: found quick solve
ilias is offline   Reply With Quote
Old 02-04-2019, 01:20 PM   #32
rudeog
Human being with feelings
 
Join Date: Dec 2006
Posts: 26
Default new version of Stochasticizer

Hi all,
Thanks for the additional suggestions. Transposing and swing are good ideas which I might play around with. Someone requested ability to use this without vision, and I thought that it would be an important feature, and so I've released a new version
that allows full usage with keyboard, along with midi note feedback to indicate
position and cell contents (See comments in the script itself):

https://stash.reaper.fm/v/28399/stochasticizer

Also, yes, this is the precursor to Stochas, and obviously since that is commercial, I added lot more features to it, but this JS script still has it's place as not everyone wants to pay money for something that they might not use a lot. Also it is useful if anyone wants to modify it or cannibalize it for parts, etc.

Thanks.
rudeog is offline   Reply With Quote
Old 02-09-2019, 03:38 PM   #33
TonE
Human being with feelings
 
Join Date: Feb 2009
Location: Reaper HAS send control via midi !!!
Posts: 1,833
Default

Can we set the probabilities for each 16 step ranges, without doing any programming there, using the original incoming notes? Having to program everything here, destroys all the fun.
TonE is offline   Reply With Quote
Old 04-18-2019, 09:57 PM   #34
namunger
Human being with feelings
 
Join Date: Nov 2018
Location: NC, USA
Posts: 1
Default

Found an odd "bug" (maybe?). When the plugin is loaded as an item effect, after the item is done, the sequence plays about 1/2 extra cycle. Also, if playback is started after the item, it will play the same 1/2 cycle. Having fun incorporating this into my live setup otherwise!
namunger is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -7. The time now is 01:53 PM.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, vBulletin Solutions Inc.