gwatcha / reaper-keys

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

insert midi chords timeline operator #42

Closed molleweide closed 4 years ago

molleweide commented 4 years ago

insert midi chord timeline operator

Here is another feature that I'd like to discuss.

How about if we had a chord commads tree just like from which one selects a chord that is then used when triggering the motion. This would be cool. Then you'd be able to select from a vast array of chord combinatons and insert them easily with a sequence of 2-4 keys.

ideas

"c" = {"+chords" "d" = {"+double" "h" = minorSecond "H" = majorSecond "m" = majorThird "M" = majorThird "j" = perfectFourth "J" = perfectFifth ... }, "t" = {"+tiads" "M" = major, "m" = minor, "s" = sus2, "S" = sus4, "p" = phygian, // 1b25 "l" = locrian, "d" = dim, "a" = aug, "q" = quartal, // 14b7 "Q" = quintal, // 159 }, "s" = {"+tiads" "M" = major7, "m" = minor7, "n" = majorMinor7, } }

actM4l : insert triad major 4beats right (ascending from current note in editor.) acdP5w : insert double fifth 5nextNoteStart

Or you could maybe build the chord somehow by specifying how the notes should relate to the current note in the midi editor.

ideas

a1l : insert 1note right a3mk : insert 3note minor up

This could probably be done in a smartert and more refined than above but you get the idea..

molleweide commented 4 years ago

code blocks are not working for me

gwatcha commented 4 years ago

I think this could be done. Not by me though! I like to just play the chords with my midi keyboard to put em in. Some operations are just more suited for the midi keyboard, and I think this is one of them.

If you really desire this feature, you would have to create a lot of custom actions (one for each chord), because I don't think reaper provides actions for insertion of particular chords. Then you would have to create the mappings for them like you've shown here. You could probably create a single function that takes an array of semi-tone offsets, and inserts them into the midi-editor, and then have each chords function call this one with a particular array.

molleweide commented 4 years ago

Nice, I am going to see what I can do. I'll try to think in as general terms as possible and see if I can create some nice reusable components.