gwatcha / reaper-keys

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

Route lib / midi io / dupl time sel #43

Closed molleweide closed 3 years ago

molleweide commented 3 years ago

Also adds insertEmptyItem

gwatcha commented 3 years ago

This request has conflicts as well. Please resolve

molleweide commented 3 years ago
  1. l have built the foundation for a routing lib which allows for pretty much anything. It is based on a special type of string that you type and this allows for one to specify any kinds of mult to mult tracks. You can use str.match to batch route many tracks based on target guids or search strings.
  2. Duplicate timeseection, ie. repeat segments of an arrangement.
  3. midi device selection by keyvommand. I created another repo called reaper-jsfx where I started to work on a vim-midi-controller lib so that on can access lots of midi functionality fast. As an example if i switch between my split keyb and my real piano i want to have my personal vim settup for each devick. where i switch to arpeggiator, chords, trahspode etc. basically handle all midi device stuff with eel.
molleweide commented 3 years ago

I also tried to setup a new virtual keyboard mode for testing but i am not getting it to work. I have done the foundation necessary to send midi messages but I don't get the mode to work properly from the beginning I think. Could you please take a look at that and tell me what i am doing wrong. I am thinking that is maybe obvious to you what i am doing wrong.

Could the solution to the problem be that I need to add the definition 'path' to refactorer.rb

molleweide commented 3 years ago

oh an I also added a function for splitting track name up into regex_prefix and main name incase one wants to dive into more structured naming of tracks etc

molleweide commented 3 years ago

I also see that you have made many improvements with the bindings. it is awesome to now that the gui is back. it reappeard after i pulled master now before making the pr

molleweide commented 3 years ago

Hey I just realized I should probably have made the pr to development branch, or no?? Also, something that I also realized is that you need to be able to access key release events in order to create note off events. Do you have any idea how that could be done? I am going to ask on the forum.

molleweide commented 3 years ago

One more thing i realize now is that i included my fx lib. I am coming up with many more ideas for working w fx bow that i am looking at sidechaining fx

molleweide commented 3 years ago

I added fx lib as well!

molleweide commented 3 years ago

something that i want to add is an fx_mode where one can move up/down and navigate params fast. I think I have some good ideas on how to solve some of the annoying ux obtacles that would require mouse normally. I think that if would be possible to use fuzzy finding for updating fx params. it could become a super hacker way of working with fx. I'm gonna look into theming as well. it'd like to try creating a theme that feels a loot like working in a nice terminal. i just got alacritty and am trying it out. i am starting to get comfortable with using dotfiles. i found a guy that had started working on vimifying the mac os completely so i decided to test it out. it is a lot of fun messing round.

molleweide commented 3 years ago

i have a tiny fix that i am doing before you if you merge

gwatcha commented 3 years ago

Thankx @molleweide! I'll have more time to really delve into this in a couple of days

molleweide commented 3 years ago

Im looking forward to your feedback

molleweide commented 3 years ago

l am working on a scheme so that one can easilly have the same midi_keys layout between regular laptop keyboard, ergodox/qmk. i am trying to set this up now in the jsfx project. my goal is to be able to seemlessly be able to move between my laptop, ergodox, (i'd like to get a pair of dactyl manu also) without every having to rethink muscle memory.

i have come up with some nice ideas. but for now since i cannot get key-release events I only create fixed length notes on laptop with vkb. but this works fine for now.

as i mentionned in another issue, i think, one interesting thing to do would be to suspend repear keys when one is entering virtual keyboard mode somehow and let events pass through to the built-in vkb. and only use eg. ESC to go back to normal mode. this would be the easiest i am imagining but i am unsure of how rk could be "turned off" during vkb mode. on my ergodox this is not necessary since i have created a midi layer.

my idea above is to come up with some kind of generalized lyout that is easy to mirror on laptop. tell me what you think later.

molleweide commented 3 years ago

also please checkout the pr but i am still finishing up my temporary custom vkb for laptop with US international qwerty. i have tested it and now i am building out the layout.

molleweide commented 3 years ago

i am going to add my ergodox midi layout in the reaper-jsfx repo so that you can understand how it is mirrored to my laptop keyboard.

molleweide commented 3 years ago

just FYI if you are looking at the library/io_devices.lua and library/midi.lua they are sort of work in progress because I haven't finished the latest version of the reaper-jsfx project but hopefully you will be able to see sort of where I am going.

molleweide commented 3 years ago

i am surprised how fast/responsive vkb is when I access it through rk. not much percieved latency at all!

molleweide commented 3 years ago

If you look at https://github.com/molleweide/reaper-jsfx/tree/molleweide you can see how far i have gotten so far. In my first version every thing worked but now there is something that is not quite right so I have to fix that. But here you will be able to see where I am trying to go sort of.

gwatcha commented 3 years ago

Hey @molleweide I'm happy you're having fun working on Reaper-Keys. I took a look through the entire PR (sorry it took me so long 😅).

I'm still a bit confused about what all this does, I don't use many MIDI devices myself. Could you explain a user case maybe? My understanding is that the main functionality is that for a MIDI device with some functions, you can use your keyboard instead of using the device controls, right?

gwatcha commented 3 years ago

It might be that it will have to live on your fork of the repo, and you could point the people that need it there through the Reaper-Forum or something of the like. This is just because the functionality is rather advanced for most users, and if I'm understanding the use case right, only a few of the users of Reaper Keys would be using it, so it's best not to include it I believe. I say this because of there are already many menu items already, and it would take a lot of time to really get into this PR and do a back & forth to get it into a mergeable state - right now the code sticks out compared to the code style of the rest of the repository, so there would have to be a lot of changes made.

Nevertheless, it's great you managed to get RK working for your usability issue with your MIDI devices, I hope more people learn about it. I wish you luck on your coding adventures.

molleweide commented 3 years ago

yo! Thanks for checking out my code. I hope you see some of it useful. I have tried to keep things as well structured as i can. Please do give me feedback and tell me if I am making some beginner mistakes.

Yeah you don't have to include reaper-jsfx. It was mostly just for showing you how I connect rk to jsfx AND I think that the project is in its very early stage. It might become good but I have to work more on it.

Also i have some good dj ideas for using QMK and so i want to have a good foundation for working with qmk and midi. It is much easier to manage midi messages in jsfx than updating qmk layout etc.

molleweide commented 3 years ago

You have to tell me what you think of the routing stuff. it has to be tested more but i think that it is a great foundation. all though it can probably be refactored and bit more compacted.

gwatcha commented 3 years ago

Okay I'll leave some feedback for you! I'm not an expert software engineer but I had a co-op for a year and had to handle a lot of pull request feedback before I managed to push my first code, so I could try to do the same here.

gwatcha commented 3 years ago

If you really want to learn to code I think your best bet is to find something similar to a co-op so you can work in a team with more senior software people and get a lot of feedback.

molleweide commented 3 years ago

yeah i mean just tell me if you think i am being stupid or something. :D

molleweide commented 3 years ago

Great. I will fix everything you say!

molleweide commented 3 years ago

in some cases i wanted stuff that I wrote to stand out so that you could comment on it but i realize that it becomes obvious since pr highlights changes etc.

molleweide commented 3 years ago

Yo check out the route docs and tell me if you understand it.

molleweide commented 3 years ago

I am trying to learn linux atm. i am using virtualbox to test my configs on lots of linuxes. it's gonna be fun to try reaper on linux!! i also just installed a program called kmonad for keys and mirroring my qmk. have you used it?

gwatcha commented 3 years ago

Hey I've been sick for a while now :face_with_thermometer: I'll get back to you when I feel better :smile:

gwatcha commented 3 years ago

I am trying to learn linux atm. i am using virtualbox to test my configs on lots of linuxes. it's gonna be fun to try reaper on linux!! i also just installed a program called kmonad for keys and mirroring my qmk. have you used it?

I have not used it. Good luck! The biggest issue I had with reaper on Linux is getting all the vst's to work

molleweide commented 3 years ago

Hey I've been sick for a while now :face_with_thermometer: I'll get back to you when I feel better :smile:

No worries. I hope you get well soon 👊

molleweide commented 3 years ago

yo I think that I am ready to take on spacemacs soon. lately I have been checking out a lot of functional programming stuff and I am realizing that neovim is written in lua which is imperative and emacs is written in lisp which is functional. A couple of days ago I played around with virtualbox to learn how to install my dotfiles on linux and I also decided to upgrade some tools. I started using nyxt web browser, also written in lisp, and I also started using kmonad for keymappings n stuff, which is written in haskell, and so I am starting to shift my world a bit more towards functional stuff. I am really looking forward now to learning spacemacs and see how it differs to neovim. However, I also adopted a guys dotfiles whose configs were highly geared towards emacs so I have the really nice spacebar legend. On macos you can do automation stuff with hammerspoon and this allows for pretty much Lua programming everywhere. And now taking on some functional stuff is exciting. Btw, kmonad was amazing. Now I have been using it for a couple of days and my macbook pro feels exactly like my ergodox now with identical layout.

molleweide commented 3 years ago

have you seen this https://forum.cockos.com/showthread.php?t=250419 I'm not really sure how it works but it seems to be a "big deal" according to many in the thread. lt seems to be some new gpu powered way of make guis in reaper.

gwatcha commented 3 years ago

I'm closing this to close this because I decided not to merge it.

molleweide commented 3 years ago

great! I'll create a new PR in the future when I have worked more on this.

molleweide commented 3 years ago

Hi Mike,

I hope you're doing well! 😃 🌞 🌲

How is the music project going that you told me about? I have been thinking about you from time to time now and so I wanted to see how everything is going? Have you been coding a lot recently or are you doing other stuff?

Would you mind also setting up a discussions area for reaper-keys?

// Hjalmar

gwatcha commented 3 years ago

Hey! Do you have a telegram?

molleweide commented 3 years ago

Yes! What is your username on there? I'll try to find you.

gwatcha commented 3 years ago

@gwatcha