Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/gwatcha/reaper-keys
vim-bindings for Reaper
https://github.com/gwatcha/reaper-keys
Last synced: 3 months ago
JSON representation
vim-bindings for Reaper
- Host: GitHub
- URL: https://github.com/gwatcha/reaper-keys
- Owner: gwatcha
- License: mit
- Created: 2020-04-19T01:37:50.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2024-08-16T19:57:26.000Z (5 months ago)
- Last Synced: 2024-08-16T21:01:14.316Z (5 months ago)
- Language: Lua
- Homepage: https://gwatcha.github.io/reaper-keys/
- Size: 93.5 MB
- Stars: 139
- Watchers: 7
- Forks: 10
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
- vim-keybindings-everywhere-the-ultimate-list - Reaper-Keys - Bringing a modal editor to the Reaper DAW. (Music Production)
README
# Reaper keys
Reaper keys is an extension for the [REAPER DAW](https://www.reaper.fm/) that provides a
new action mapping system based on key sequences instead of key chords. The system is
similar to [Vim](https://en.wikipedia.org/wiki/Vim_%28text_editor%29), a modal text
editor, and by default comes with vim-like bindings.Click [here](https://youtu.be/ChuZswEfQuo) for a very outdated and low quality demo for v1 or jump
to [examples](#some-ideas-to-start-with).## Pros
- Save a couple minutes per hour
- Develop arthritis at 60 instead of 40
- Reduce mouse usage
- Increase maximum bandwidth between your brain and your project
- A structure for Reaper's giant bag of actions## Installation
- Add `https://raw.githubusercontent.com/gwatcha/reaper-keys/master/index.xml` to Reapack.
- Install [SWS](https://sws-extension.org/) by hand or from ReaTeam Extensions.## Features
### Bind key sequencesWith Reaper keys you may bind key sequences to actions rather then singular key presses.
This allows one to hierarchically organize many keybindings.
A completion/feedback window is provided to assist with command completion.### Compose actions
Reaper keys lets one compose actions of different types to create new commands. For
example, in normal mode, any action with `timeline motion` type can follow any one with
`timeline operator` type. So if one enters `tL`, it would compose into `(t ->
"PlayAndLoop", L -> "NextMeasure")`, and play and loop the next measure.Other examples of `timeline operator` bindings are `s` -> "SelectItemsAndSplit" , or `z`
-> "ZoomTimeSelection", so you could also enter `sL` or `zL`.This grows the number of available actions exponentially but still preserves your brain,
as you only need to know the `timeline_motions`, `timeline_operators`, and the fact that
you can compose them.### Multi-modal
Changing modes changes the way keys compose. By default, it is in `normal` mode, but you
could for example go into `visual timeline` mode by pressing `v`.In this mode, `timeline motions` extend the current time selection, and `timeline actions`
operate immediately and return one to `normal` mode. Useful if you want visual feedback
before executing a timeline action, or just want to extend the time selection using motion
commands.### Macros
Macros are a way to save a sequence of commands, and play them back later.
To record a macro, enter `q` and an arbitrary character to specify the `register` that the
macro will save into. Then, perform a series of actions, and finish recording by pressing
`q`.You may play it back by entering `@` and the character you specified earlier. Optionally,
prefix it with a number to indicate the number of repetitions.## Some ideas to start with
```
o # insert track
fc # show fx chain
a # add fx
# add ReaSynth
# close fx window
im # insert midi item
so # open in midi editor
0 # jump to project start
a # add note and select it
5p # paste 5 more notes (last one is selected)
NN # select two more previous notes
# move 3 notes up semitone
Z # close midi editor
5+ # zoom horizonally 5 times
```An alternative way if you wish to start recording straight ahead:
```
iv # insert virtual instrument track
# Select ReaSynth. Track gets created and armed
# close fx window
R # toggle record
# play some notes
# stop recording
```If you want to manipulate the item:
```
v # set mode visual
3l # jump right 3 grid divisions
o # change time selection bound (to left one)
l # jump right
! # play and loop
```If you want to adjust item volume:
```
> # show mixer (for visual feedback)
10 # -10db volume for track
```## Help
Enter ` (Ctrl + Alt + x)` to show a list of available bindings you can search and
filter.If you're stuck in a state you don't know how to get out of, you can press `` to
reset back to normal.Also, if your key press is not being detected, try unfocusing the feedback window.
## Tweaking
```
internal/definitions/actions.lua -> add actions
internal/definitions/bindings.lua -> add or customise key bindings
internal/definitions/config.lua -> change GUI settings
```## Contributing
### Running testsFor running tests locally you'd need some Linux distribution with X11 and `xdotool`.
```sh
cd tests;
chmod +x prepare copy-configs test./prepare # This will create a local Reaper installation
./copy-configs # This will make current instance of reaper-keys testable
./test # This will run every test and compare with reference projects
```If you don't use X11 you can have a look at `.github/workflows/wf.yml` to see how x11 is
emulated with Xvfb.### Writing tests
Each test is just a sequence of keys you press to achieve some result. One notable exception is
a hotkey or a special key like "Return" (Enter) or "Backspace". In that case, prefix line with
`&` and enter the key combination after, like `&Return`.### Reporting performance issues
1. Download "Lua profiler" from ReaTeam Scripts and "ReaImGui" from ReaTeam Extensions via
ReaPack.
2. Change "profile" to "true" in internal/definitions/config.lua
3. In Reaper, click Actions > Running script > rk.lua > Terminate instances. There may be
no "Running script", then just skip this step.
4. Press any key. A profiler window will open.
5. Click "Acquisition > Stop" in the profiler window after you're done
6. Click "Copy to clipboard". Paste in a GitHub issue.
7. When you're done, change "profile" back to false and repeat (3)## Further Information
Check out the [documentation](https://gwatcha.github.io/reaper-keys) to learn more.