gwatcha / reaper-keys

vim-bindings for Reaper
https://gwatcha.github.io/reaper-keys/
MIT License
144 stars 9 forks source link

Reaper Keys Revolution: Observations, Ideas, Feature Requests, etc. #25

Closed elgiovanno closed 4 years ago

elgiovanno commented 4 years ago

This is not an actual issue and I don't know if this is the best place/way to post something like this. Open to suggestions. Github Project Board maybe? Never used one so I don't know. For now, the goal of this thread is to have a place to gather information that might aid @gwatcha in deciding his creation's direction. Reaper Keys has already changed how I work with Reaper in the best possible ways, as such I'm passionate about it's future, whatever form it may take. I hope it's users and those directly involved in it's evolution may find this useful.

I'd like to add that I'm just one user and with limited knowledge(so far) of the overall script design, therefore I could be missing important design choice information in my assessments. That said, in my testing(mostly in the arrangement/track edit modes and the dialog) I've tried to keep two things in mind: what a seasoned VIM user might think, and what someone with no VIM experience might think about how RK functions. I'll post my observations in separate comments on this thread as this comment is already too long!!

molleweide commented 4 years ago

Hell yeah!! I agree 100%

gwatcha commented 4 years ago

Yeah feel free to post suggestions!

molleweide commented 4 years ago

Something that I want to look into later when I understand the project/lua better, is if there is a smart way that one could program chords and complex scale sequences in the midi editor. I want to explore how fluid midi programming can become.

gwatcha commented 4 years ago

Hmm my first thought would be an input box, similar to setting the grid, where one could enter a sequence of numbers that would be halfnotes from the root, and it would enter a chord. For a scale sequence, you could probably do something similar. It would be just a bit more convenient then pressing "a(motion)" for each note.

I think a cooler idea would be to implement a register action where you could store a selection of notes (be it a major chord, a scale sequence, some melody). I would put it under y"(register). To paste it later, one could just do "(register).

Afterwards, something similar could be done for items and tracks. Then snapshots and fx chains.

If one of you want to help out with this, 'marks' are the most similar feature. They are under 'library'. You could create a file next to it say 'midi_registers.lua', and make use of the reaper API to write and fetch note selections. You may use the 'saved' lua module to store and recall them from a file.

molleweide commented 4 years ago

Cool! It is a lot of fun to hear your ideas. There really seems to be exponential potential in this. It makes me happy. I will for sure look into the markers code and see if I can help. I'm going to try to read through the code later and see if I understand it.

I come from Logic Pro X background. I got really sad a while ago when I realized how restricted everything in Logic and its scripting feature is quite bad. Now having switched to Reaper I'm blown away by the freedom and this project really excites me.

gwatcha commented 4 years ago

Yeah I like that part of reaper too. Here's a link to the API for convenience. https://www.reaper.fm/sdk/reascript/reascripthelp.html#l

molleweide commented 4 years ago

Thanks! I've been using it all the time when I browse through the code. I’m gonna try to skim through the library code now and see how it goes.

elgiovanno commented 4 years ago

Hi! Curious if there are any thoughts about improving the RK window/interface in any way. From an operator's perspective, I think it might be useful to generate the available commands(based on context of course) in a more structured way. Currently commands get listed at random it seems. For example, hit "s" and you get all the commands available for that context. But if you ESC and hit "s" again, the list is the same but commands have completely changed location. While the more obvious mnemonic sequences are easy to learn, some of the command lists can get pretty long(options are great don't get me wrong) and there are choices which are less obvious mnemonically. Having a consistent display might help new users find what they're looking for faster. What I'm not sure of is what structure might make sense. List by key order(alphanumeric), list by command name(alphabetic), lost by context(tracks, items, selection)?

Another thing that could be useful is to show the initial commands available on reset or maybe less invasive might be to show the name of the first command entered as that list is also pretty long.

Let me know your thoughts and opinions and if this is possible or desired.

molleweide commented 4 years ago

Good questions. I think that given more time the options display could probably become more condensed and easier to read. I'm also looking forward to learning how the gui programminc in reaper works.

gwatcha commented 4 years ago

Hi! Curious if there are any thoughts about improving the RK window/interface in any way.

Yeah I would love to have it display in an actual Gui instead of a console window for one. Then I could dock the window at the bottom, have it grow to fit the amount of text, color entries depending on type, and just be prettier in general.

https://github.com/jalovatt/scythe/blob/develop/README.md Looks like a promising library.

I would have the help menu appear in a Gui as well, and sort by type and then alphabetically.

Not sure when I'll get around to this. If someone else feels up for the task let me know.

After that is done, I was thinking of adding a custom action list that displays Reaper-Keys actions, their keybindings, and possibly reaper actions as well. One would be able to quickly bind keys and create new RK actions through this list. The way to bind actions would then be similar to REAPERs default.

molleweide commented 4 years ago

I agree, it seems that Scythe, formerly Lokasenna, is one of the main contributors to reaper scripts. I also like the idea in his circular menu gui.

I thought I'd mention also that I have started using a plugin called firenvim which allows me to use my own neovim configs in the browser. It's quite nice actually. I started using vim a couple of months ago tho so I feel like I'm still learning to swim. Therefore it also took me a while to realize that registers could be very efficient above but now it really makes sense to me because then your not bound in any way to pre defined patterns of any sort. Music is interesting for learning modal typing like vim. It really makes sense. I'm also gonna check out spacemacs later. As u mentionned before @gwatcha it also seems cool. I have no experience w/ emacs tho so I am imagining it cound take some time to get into it?

Oh and by the way. Do you guys @elgiovanno @gwatcha store your reaper prefs as a github project? I mean have you ran git init on your Reaper directory? I'm thinking that it would be interesting to try to store my Reaper dir files in my dotfiles.

gwatcha commented 4 years ago

Spacemacs is made for vim users, so most of the 'getting used to' is for learning the non-vim features it offers (such as the various plugins, commands, configuration in lisp). It took me a couple weeks, but it's worth it if you will spend lot's more time editing text or code in the future.

You can check out my dotfiles. I am on linux, so most things are in the .config directory, including reaper. I put files I want to track in git inside my '.gitignore' by ignoring all files and excluding the ones I want to track with '!'

molleweide commented 4 years ago

Wow!!!!!! I'm gonna read through your dotfiles later. Very cool! Do you use Reaper on linux or windows mainly? I read somebody who said Reaper runs even better on linux when using virtual box on mac. I've been tempted to try it for a while but I don't have the time to get into it linux atm lol.

haha I see you are also using ergodox. I also have pair and I love them. I remeber the name of your keymap because I was using it when I was trying to learn how to use the kb a couple of weeks earlier :P This so funny. I got the black one with sculpted keys.

gwatcha commented 4 years ago

I use reaper on linux, I've never tried virtual box on mac. Also woah, you were using my keymap :o ?? What are the chances.

molleweide commented 4 years ago

Yeah, I was using it for inspiration.

I made a flow chart of the project. learning drawio. arrow means require file into..

rk-flow-chart

gwatcha commented 4 years ago

Oh woah that's cool! If you're trying to understand it better, I recommend starting at state_machine/state_machine.lua looking at the input function. This is basically the entry point for all key presses, and you can see what happens on each key press at a high level there.

gwatcha commented 4 years ago

Putting the log.level on 'trace' will help for understanding as well.

molleweide commented 4 years ago

Yeah, this provided some clarity to me in how the project comes together. I'm gonna walk through it later line by line starting from state mchn. @elgiovanno maybe this can help u as well. I will continue working on it and add it to the project.

elgiovanno commented 4 years ago

That's awesome @molleweide! Super helpful. @gwatcha I'll take a look at that entry point as well. I haven't had this much fun in a while :)

gwatcha commented 4 years ago

By the way, if you guys have any ideas about how to share the project I'd like to hear. So far I've made a reddit post and a reaper forum post. And if you have any friends that like using Reaper be sure to send them a link :)

molleweide commented 4 years ago

Sure!!

elgiovanno commented 4 years ago

@gwatcha check out @reapertips on Instagram. He may be willing to feature the script. He might need an explanation, as I don't know if he knows what vim is. The thing with this script is that VIM users will get it almost right away, but just like vim is tricky to learn when you're a beginner, I assume that will be the case with reaper keys beginners. Your video was super useful to me and likely other vim users, but I think to new users who don't know vim it might fly over their head. I propose a series of short screencast videos where each screencast covers a smaller set of features. I could help with this. I've never made a screencast in my life, but I understand reaper keys pretty well in use so far. If you want I'll give it a try and sent it to you and see what you think. Also, I feel like if there's a group of DAW users that would know what vim is, it's the reaper crew. So you've got that much going for ya'!

gwatcha commented 4 years ago

I think I'll contact him and see what he thinks! Though I fear his content is too much about short and sweet tips people can digest quickly.

I assume that will be the case with reaper keys beginners

I agree, even though I find this plugin makes me so much more efficient, I think that people unfamiliar with vim may get intimidated and uninstall or don't install it before they get to use it properly.

I think I'll focus my development on usability improvements for that reason, like a better help menu, windows to bind new keys, prettier completions...

I could set up a wiki @elgiovanno, I've never done it before but it should be easy enough. Screencasts would be amazing but if it's too much work, you can always just write an entry in the wiki about a feature! You too @molleweide, if you're up for it.

elgiovanno commented 4 years ago

I think I'll contact him and see what he thinks! Though I fear his content is too much about short and sweet tips people can digest quickly.

I assume that will be the case with reaper keys beginners

I agree, even though I find this plugin makes me so much more efficient, I think that people unfamiliar with vim may get intimidated and uninstall or don't install it before they get to use it properly.

I think I'll focus my development on usability improvements for that reason, like a better help menu, windows to bind new keys, prettier completions...

I could set up a wiki @elgiovanno, I've never done it before but it should be easy enough. Screencasts would be amazing but if it's too much work, you can always just write an entry in the wiki about a feature! You too @molleweide, if you're up for it.

Ok... heads up, this may be a long message but I promise it is not a rant!

Yeah, and Instagram might also be the wrong medium to showcase a script that fundamentally modifies Reaper. There is the off chance that reapertips is a vim user though, however small it may be. In any case, he seems very receptive to anything reaper. It can't hurt to reach out.

This script has changed the entire game for me. When I saw your Reddit post I was still on the fence about moving to Reaper from "Avid Pro Fools". Pulled the repo, opened reaper with stems from an old session and I started navigating my session... WITH VIM BINDINGS!!! WAT??!!! Haven't opened pro tools since, true story. That's to say that yes, the efficiency, capability, and the sheer fun of using RK is a total game changer. That being said, it's only a game changer, at least right off the bat, if you know VIM. This point kinda segways into focusing on usability in order to reach a less knowledgeable user base. I could go on about usability as a general topic for days. It's part of my work. In the case of reaper keys, many improvements can be made, even for those that know vim well, but more importantly for those who don't. I've pondered this for a bit and some of the thoughts I've had might require out-of-the-question changes to your overall design(I'm assuming here, I could be wrong as my reaper scripting knowledge is almost zero), while others seem very achievable.

-- WARNING: the fact you can have multiple reaper setups might negate this next paragraph completely as this allows you to learn RK at whatever pace you'd like xD! Sorry if I wasted your time every one 😬!!

An extreme example would be the fact that RK replaces all your key commands... A "sacrifice" I made without thinking twice... But I know VIM. That brought me to think that maybe other users might prefer reaper keys to be less invasive to their current, completely different workflow. All they will see is "shit, I can't work anymore". This made me think of MacVim and others like it. The mantra there being "work how you've always worked, Vim is waiting for you when you're - ready to become a Jedi and never look back". In other words, it removes the humongous learning curve(I learned vim cold turkey) and let's people find out for themselves how useful it can be at their own pace, slowly integrating what they've learned into their every day workflow. However, taking control of the key bindings seems to be at the center of RK and setting up something like that might be a huge, heartbreaking task for you, one which I would absolutely not fault you for throwing your computer in my face all the way from Vancouver jajaja! I've seen some "virtual key press" implementations(ex. Radial Menu), but that is of a far less complex nature than RK and would never assume it's existence means it's the right thing for RK.

-- BIG BREATH!!!

A less intrusive example of a usability improvement could be not randomizing the possible key presses every time they are displayed. This I assume could be solved with an appropriate sorting algorithm(what's an algorithm? 🤷🏼‍♂️). Consistency can go a long way in helping learn the ways of the RK!

Want even less intrusive(I think). Add the name of any initial command next to the key press. I sometimes forget what they all are and either guess at what they'll do or escape to reset. I'd find it useful to know that I've actually run the initial command my brain told me to run. Being able to see it would also help with memorization, as it has for many secondary and tertiary commands whose names do get listed.

And then there's all the stuff you mentioned about the improvements to the UI which could be huge for adoption as well.

--

A wiki sounds like a great idea for sure! ID totally be down to help with that if you want to set it up. I'm still willing to try to make some bite-sized screencast for the video lovers. I was thinking of taking it by DAW sections. "Dive Into Reaper Keys: Transport", or "DIRK: Timeline Navigation", and so on. This could help people search for what they're looking to learn about RK more easily.

PHEWWW! Ok, I think I'm done now. I'm pumped about this script... Can you tell?

elgiovanno commented 4 years ago

BTW, really positive reception on your Reddit and forum posts. Congrats!

molleweide commented 4 years ago

There is the off chance that reapertips is a vim user though, however small it may be. I

:D

elgiovanno commented 4 years ago

There is the off chance that reapertips is a vim user though, however small it may be. I

:D

:)

@molleweide, I've seen on some of your comments that you aren't too familiar with VIM. If that's the case, it could be useful to know your thoughts about working with RK and what that transition has been like. It could help us understand challenges faced by non vim users when using RK.

molleweide commented 4 years ago

I have been using vim every day since last fall. I switched to Reaper when I saw the initial project from which RK was forked by @gwatcha and then developed further. I have suffered from quite severe shoulder pain so I decided to learn vim and I am super into it now but I still feel like a beginner since there is just so much to learn etc. Now everything I do in my computer is finally pretty much in vim style so my point is that I am quite motivated to get into this. This way of interacting is quite hardcore and you really have to be motivated I would say in order to try it bc just understanding how to get a good sound is hard in itself and you have to be good musically and programmagically for the shift to come naturally which is probly a small percentile haha. Dunno if that really answers the question but I really like vim. I think if we just work on it it will become great. This project is in its initial state at the moment but it could become absolutely awesome and the people will just pick it up naturally. Somebody needs to be RK jesus and show people da wei. Another point about vim also I think is that reading the manual taught me a lot. It's dry but very good so you just gotta push through it and have faith in that it will be awesome later. It is the same with RK I would say. I am not fluent with it now but I will be. I also noted that just as you I switched over to RK now as soon as I got time to do it, just to try to be clear about where I come from. I know that RK is the way I want to work :D

It would be interesting to know also what percentage of reaper users that do code. I mean, I swithed because Reaper has the most support for customization and scripting so I wouldn't be surprised if it'll gain traction.

elgiovanno commented 4 years ago

Ah I see. I thought maybe you were just getting started with vim as well. You make good points though. I'm very excited to see where this goes :)

molleweide commented 4 years ago

Thanks! Yeah, this is fun. I have been reading through the code today with the help of my diagram from above. I pretty much get the whole command generation and execetion now but I have to do it a couple more times so that all the details will be clear. It is not that complicated actually but the lua syntax is new to me. The composability is just so cool. I can't even imagine how efficient this could become later when mixing, routing and all kinds of things have crystalized into nice composable patterns. I am also trying to imagine how one could work with articulations and things such as small bends and vibrato on certain notes with RK. That will be fun to explore as well. I haven't looked at creating automation at all yet.

molleweide commented 4 years ago

What type of music do you guys make?

elgiovanno commented 4 years ago

@molleweide I have yet to dive into the RK internals, but once I do that diagram will be very helpful. Thanks for that! Lua is brand new to me also, there's plenty I have yet to learn about it, but at a glance it seems like it's a joy to work with coming from javascript. That's not a knock on JS, it's just that the Lua code I've read in this project is readable. I'm all for readability :).

Music-wise, I play a few instruments and the music I make is mostly just songwriting stuff. I spend a lot more time freelance engineering sessions for artists here in Puerto Rico, where I'm from. Everything from pop, edm, jazz and folkloric music. How about you?

molleweide commented 4 years ago

I also come from JS. (in lua ~= means !=, and not regex (bash)which confused me at first) Allright, cool I'm from Sweden. Have you worked with any cients with RK yet? I guess since you went cold turkey rigth?:P Same here, I play a bunch of instruments. I like heavy sound design and Skrillex type of music. I am excited to see how RK performs when it comus to programming notes and beats. But I also grew up listening to lots of old jazz and metal all over the place.

gwatcha commented 4 years ago

I think I'll contact him and see what he thinks! Though I fear his content is too much about short and sweet tips people can digest quickly.

I assume that will be the case with reaper keys beginners

I agree, even though I find this plugin makes me so much more efficient, I think that people unfamiliar with vim may get intimidated and uninstall or don't install it before they get to use it properly. I think I'll focus my development on usability improvements for that reason, like a better help menu, windows to bind new keys, prettier completions... I could set up a wiki @elgiovanno, I've never done it before but it should be easy enough. Screencasts would be amazing but if it's too much work, you can always just write an entry in the wiki about a feature! You too @molleweide, if you're up for it.

Ok... heads up, this may be a long message but I promise it is not a rant!

Yeah, and Instagram might also be the wrong medium to showcase a script that fundamentally modifies Reaper. There is the off chance that reapertips is a vim user though, however small it may be. In any case, he seems very receptive to anything reaper. It can't hurt to reach out.

This script has changed the entire game for me. When I saw your Reddit post I was still on the fence about moving to Reaper from "Avid Pro Fools". Pulled the repo, opened reaper with stems from an old session and I started navigating my session... WITH VIM BINDINGS!!! WAT??!!! Haven't opened pro tools since, true story. That's to say that yes, the efficiency, capability, and the sheer fun of using RK is a total game changer. That being said, it's only a game changer, at least right off the bat, if you know VIM. This point kinda segways into focusing on usability in order to reach a less knowledgeable user base. I could go on about usability as a general topic for days. It's part of my work. In the case of reaper keys, many improvements can be made, even for those that know vim well, but more importantly for those who don't. I've pondered this for a bit and some of the thoughts I've had might require out-of-the-question changes to your overall design(I'm assuming here, I could be wrong as my reaper scripting knowledge is almost zero), while others seem very achievable.

--

WARNING: the fact you can have multiple reaper setups might negate this next paragraph completely as this allows you to learn RK at whatever pace you'd like xD! Sorry if I wasted your time every one grimacing!!

An extreme example would be the fact that RK replaces all your key commands... A "sacrifice" I made without thinking twice... But I know VIM. That brought me to think that maybe other users might prefer reaper keys to be less invasive to their current, completely different workflow. All they will see is "shit, I can't work anymore". This made me think of MacVim and others like it. The mantra there being "work how you've always worked, Vim is waiting for you when you're - ready to become a Jedi and never look back". In other words, it removes the humongous learning curve(I learned vim cold turkey) and let's people find out for themselves how useful it can be at their own pace, slowly integrating what they've learned into their every day workflow. However, taking control of the key bindings seems to be at the center of RK and setting up something like that might be a huge, heartbreaking task for you, one which I would absolutely not fault you for throwing your computer in my face all the way from Vancouver jajaja! I've seen some "virtual key press" implementations(ex. Radial Menu), but that is of a far less complex nature than RK and would never assume it's existence means it's the right thing for RK.

--

BIG BREATH!!!

A less intrusive example of a usability improvement could be not randomizing the possible key presses every time they are displayed. This I assume could be solved with an appropriate sorting algorithm(what's an algorithm? 🤷🏼‍♂️). Consistency can go a long way in helping learn the ways of the RK!

Want even less intrusive(I think). Add the name of any initial command next to the key press. I sometimes forget what they all are and either guess at what they'll do or escape to reset. I'd find it useful to know that I've actually run the initial command my brain told me to run. Being able to see it would also help with memorization, as it has for many secondary and tertiary commands whose names do get listed.

And then there's all the stuff you mentioned about the improvements to the UI which could be huge for adoption as well.

--

A wiki sounds like a great idea for sure! ID totally be down to help with that if you want to set it up. I'm still willing to try to make some bite-sized screencast for the video lovers. I was thinking of taking it by DAW sections. "Dive Into Reaper Keys: Transport", or "DIRK: Timeline Navigation", and so on. This could help people search for what they're looking to learn about RK more easily.

PHEWWW! Ok, I think I'm done now. I'm pumped about this script... Can you tell?

Thanks for the Reaper-Keys love! I love reading these so don't worry about length. Yes I can tell you're pumped!

The idea of having RK be introduced gradually would be difficult to do. Currently, the way keys are sent to RK is through binding each key to a script. To preserve user bindings would mean to not bind a certain letter for RK. Introducing that binding again would be complicated, the user would need to import some sort of custom generated keymap.

There probably is some sort of complex solution to this but it's just not worth the time. Sorting the outputs is easier though, and I'll work on that next!

gwatcha commented 4 years ago

What type of music do you guys make?

I'm not sure what genre I make but feel free to check out some of the songs I posted on youtube! https://www.youtube.com/watch?v=Qy7ndyz58ho

elgiovanno commented 4 years ago

What type of music do you guys make?

I'm not sure what genre I make but feel free to check out some of the songs I posted on youtube! https://www.youtube.com/watch?v=Qy7ndyz58ho

That's pretty sick man. You're telling a story with your music. nice textures and melodic content. Reminds me of Blake Mills, which I love.

elgiovanno commented 4 years ago

I agree with you about it not being worth the time and effort to change RK in such a way. Plus honestly, I'm not sure that it would increase beginner adoption anyway. Also, multiple installs or exporting your keymaps and reexporting if you have to return to what is familiar is more than fair. Time would be better spent making RK as awesome as it can be for those who naturally gravitate towards it. Just as in VIM, which has a kind of "right of passage", RK is the same. If you want this level of efficiency, sacrifices will have to be made to learn it's ways.

molleweide commented 4 years ago

What type of music do you guys make?

I'm not sure what genre I make but feel free to check out some of the songs I posted on youtube! https://www.youtube.com/watch?v=Qy7ndyz58ho

haha yeah I don't know what genre either but it was very beautiful. Amost puts you in a litte bit of a trance-like state.

I have never done a wiki either but let's do it together!

Atm I'm working on making sure that my reaper install is portable and synced between mult compters. I test out Syncthing to sync my sample libraries. It works quite nicely.

gwatcha commented 4 years ago

Thanks for the music love.

gwatcha commented 4 years ago

I agree with you about it not being worth the time and effort to change RK in such a way. Plus honestly, I'm not sure that it would increase beginner adoption anyway.

Yeah it isn't worth it

gwatcha commented 4 years ago

I was also thinking, maybe we should move this discussion to a reaper thread? Github issues isn't really the place, and using a reaper forum thread would increase visibility.

Here's the thread I started sometime ago https://forum.cockos.com/showthread.php?t=237366

elgiovanno commented 4 years ago

I was also thinking, maybe we should move this discussion to a reaper thread? Github issues isn't really the place, and using a reaper forum thread would increase visibility.

Here's the thread I started sometime ago https://forum.cockos.com/showthread.php?t=237366

Great idea!

gwatcha commented 4 years ago

Alright! I guess I'll close this then :)