MIDI Ex Machina - RobU23/ReaScripts GitHub Wiki
Description
MIDI Ex Machina is a composition tool for the Reaper MIDI Editor. Originally released as the MIDI Note Randomiser, the latest version has expanded the feature set and now includes a Euclidean sequence generator (Bjorklund algorithm), and a monophonic random sequence generator, as well as a cheezy rebrand.
I wrote this primarily for my own needs, but if you like a little random with your riffs, you might find it useful.
MIDI Note Randomiser has been retired, so if you used it then I'd advise switching to this shiny new version. It implements all the old functionality, and adds some some new bling.
Installation
If you use ReaPack, the URL to import is:
https://github.com/RobU23/ReaScripts/raw/master/index.xml
If for some reason you decide not to use ReaPack; Go to the repository's 'master' branch, download all files, copy them to your scripts directory, and then Load 'RobU - MIDI Ex Machina.lua' from the Action List in the MIDI Editor.
I highly recommend the ReaPack method though. It makes script management easy, you're always up to date with the latest version, and there are a ridiculous amount of fantastic scripts available.
Dependencies
Recommended Midi Editor Preferences
For a better MXM experience, please see this forum post
Screenshots
Features
- Note Randomiser
- Scale based note randomising
- Per-note probability sliders
- Special 'Permute' scale for randomising only selected note values
- Force first note to scale root
- Randomise all or selected notes, even if using Permute
- Octave doubling with probability slider
- Sequencer
- Monophonic random note generator
- Grid size selector
- Note length probability sliders
- Shift notes left or right by grid size
- Accent/Velocity randomising
- Legato randomising
- Force first grid slot to contain a note
- Pass-thru to Note Randomiser
- Euclidean Generator
- Euclidean sequence generator (Bjorklund algorithm)
- Grid size selector
- Sliders for number of Pulses, number of Slots, and sequence Rotation
- Accent/Velocity randomising
- Pass-thru to Note Randomiser
- General
- Re-sizable interface
- Saves all script state with the Reaper project file
Roadmap
There is one, of sorts. See the Project Page, or the Issue Tracker for planned features. If you have any suggestions for features please let me know, and it fits with the general philosophy of the thing, then I might try to incorporate it.
Known Issues
The script's behaviour is unpredictable if the MIDI item is not an exact multiple of the current grid size. If you experience any unexpected weirdness, check the length of the item first and glue it if necessary.
DANGER !
It does not like Ghost/Pooled MIDI items, at all. Reaper will hang - you have been warned!
Disclaimer, bugs, etc...
While I've done a fair bit of testing and use this in production a lot, it's highly unlikely to be bug-free but it's also highly unlikely that it will eat your latest masterpiece (chances are it will throw an error and nothing more but see the note about Ghost/Pooled MIDI items above). Of course, you are sensible and save regularly and often anyways. :-) However, if the shit does hit the fan then please file a bug report on the Issue Tracker, and I'll try to fix asap. 👍
Credits
- The GUI is a fork of Eugen2771's superb Lua GUI Template for Reaper.
- The Persistence library is by Gerhard Roethlin
- The Bjorklund library is from https://codegists.com/snippet/lua/bjorklundlua_ptrv_lua
- The Pickle table serialisation code is by Steve Dekorte
Other Stuff
All other code, copyright RobU 2016, 2017, 2018, 2019, 2020. Licensed under the GPL version 3
If you find this script useful, and would like to buy me a beer then the internets has the answer... Beer Donation
Cheers - RobU