Accessible chord injection scripts for REAPER
Report Bug
·
Request Feature
Chords are an important, if not the most important part of music. As soon as you're composing a piece of music in REAPER, you'll come across chords and will have to insert them into your MIDI editor. No problem if you are able to play them with your favourite MIDI controller, but more of a hassle when programming your music manually via keyboard, or if you are unable to play an instrument.
Thats probably the reason why the ChordGun scripts where invented. Those were ment to provide a nice-looking interface and the ability to get a quick overview over all chords available and the possibility to quickly shoot them into your project whenever you need them.
Unfortunately though, those ChordGun scripts are not accessible for visually impaired users. The interface is not accessible at all, neither with JAWS nor NVDA, not under Mac nor Windows. Thats why I started this project. Let AccessiChords be the successor of ChordGun - at least for VI people.
As such, AccessiChords provides a way to quickly access all chords related to a note selected with the pitch cursor and inject them into your MIDI editor at the current position and with the given grid size. See Usage for more information.
- Lua 5.3
- REAPER 6.13 and above (older versions might run as well)
- OSARA nightly build as of Sep 4 or later
It is recommended to get the latest stable version from ReaPack by synchronizing your repositories and searching for AccessiChords in the package list. This will make sure to add all the available actions to your actions list as well.
If you thus instead want to test the bleeding edge build of this package, clone this repository locally:
git clone https://github.com/Timtam/AccessiChords.git
Copy the timtam_AccessiChords folder into your REAPER's scripts folder afterwards.
note: make sure to copy the folder directly into your Scripts folder, not in some other sub-folder or a totally different directory to make sure that the scripts work directly.
Open an empty project within REAPER and open the actions list (shortcut: F4). Make sure to filter for MIDI Editor so that the actions will not be accessible from outside that one. Now select New Action and Load ReaScript. Make sure to load every timtam_AccessiChords file from within the timtam_AccessiChords folder, except the one that is called timtam_AccessiChords.lua. That one only contains dependencies and doesn't contain any action. Also do not load the smallfolk.lua file, that one is not required as an action.
After installing the scripts in either of the ways above, you will have the actions provided by AccessiChords available in your actions list to be used. I however recommend to assign shortcuts to them to speed up the workflow and productivity with this toolset. Therefore, open the actions list again and search for AccessiChords in the filter input. I'd recommend the following shortcuts for the corresponding actions, although that's up to personal preference and you can assign them as you see fit:
- timtam_AccessiChords insert selected chord for pitch cursor.lua: Shift + i (CAUTION: this one seems to be assigned already, so you might need to overwrite it. It seems to be the same one as plain i though, so you shouldn't have any disadvantages in overwriting the original one)
- timtam_AccessiChords process notes deferred.lua: no shortcut required
- timtam_AccessiChords select next chord for pitch cursor.lua: CTRL + ALT + Up
- timtam_AccessiChords select previous chord for pitch cursor.lua: CTRL + ALT + DOWN
- timtam_AccessiChords select next chord inversion.lua: CTRL + ALT + RIGHT
- timtam_AccessiChords select previous chord inversion.lua: CTRL + ALT + LEFT
Note: when using MacOS, control is command and alt is option. Shift remains the same.
The script will be entirely keyboard-controllable afterwards.
All the functionalities below can and should only be executed from within the MIDI editor.
note: all speech announcements will only work if you've got an OSARA version installed which was released Sep 4 2020 or later. If your installed OSARA version is older than that, you won't get any speech announcements by these scripts.
After you've selected a note using the pitch cursor (ALT + UP or DOWN arrow within the OSARA keymap), you can use the actions "timtam_AccessiChords select next chord for pitch cursor.lua" and "timtam_AccessiChords select previous chord for pitch cursor.lua" to cycle through all chords available for that note. When doing so, the chord will be played on the note channel selected for the virtual MIDI keyboard with the default velocity of the same. The name of the chord will also be announced by your screen reader. The scripts will also announce if the selected chord is not available for the given note.
After selecting a note with the pitch cursor and a chord using the above actions, you can use the actions "timtam_AccessiChords select next chord inversion.lua" and "timtam_AccessiChords select previous chord inversion.lua" to cycle through the available chord inversions. Those will be announced with speech and remember as well, so that you can use the above actions to change chords while the inversion will be maintained and can be inserted as usual (see below).
When having a chord selected, you can use the action "timtam_AccessiChords insert selected chord for pitch cursor.lua" to insert this chord at the current position into the MIDI editor. The notes will have the length of the current grid size or, if the length of the next inserted note is set using the appropriate reaper-native actions, they will have the appropriate length as well. The chord will be played again and the edit cursor will automatically be moved along the track by the size of the inserted notes. Note though that in contradiction to reaper-native note insertion, there currently is no speech when the cursor is moved that way. This will be considered a feature later to be implemented though.
See the open issues for a list of proposed features (and known issues).
Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are greatly appreciated.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
Feel free to give these scripts a go and see if they fit your workflow. Do you like those scripts, but can think of a way they might become even more useful to you? Feel free to let me know by opening an issue or contacting me via email at [email protected]. Same goes for bugs you might have encountered or new features you'd like to see.
Developing takes time and effort and since those scripts are free to use and open-source, I don't get anything out of it except appreciation. Appreciation doesn't pay monthly bills though. If you think those scripts greatly improved your life by helping you with your productivity and workflow, or you simply want to give something back, i'd greatly appreciate a small donation via PayPal to the following link: https://paypal.me/ToniRonaldBarth Don't feel obligated though.
Distributed under the GNU GPL v3 License. See LICENSE
for more information.
Toni Barth - @GixGax95 - [email protected]
Project Link: https://github.com/Timtam/AccessiChords