Old 05-29-2017, 03:28 PM   #1
lunker
Human being with feelings
 
lunker's Avatar
 
Join Date: Nov 2007
Location: Lucas, TX, USA (via Luleå, Sweden)
Posts: 2,008
Default ReaScript : MIDI Guitar Chord Tool

========================================

Change Log:

2017-11-06 : Fixed issue with sorting strum/arpeggio notes. The "None" button now puts the chord notes back in the correct order if they get out of order somehow.

2017-05-29 : Initial release.

========================================

First, a *** BIG THANK YOU TO LOKASENNA *** for his GUI library. I couldn't have done this without it (or without his help and advice).

Second, this tool was designed specifically around my work flow with the MusicLabs instruments (Real Guitar, Real Strat, etc.). Hopefully it works well with your work flow, and with other guitar VST instruments.

The package is posted here: https://stash.reaper.fm/30836/MIDI%2...ord%20Tool.zip

I am pretty sure I included all the necessary files in the package, but please let me know if it gives you any errors when you try to run it.

The package contains a PDF file with instructions and a demo. The PDF is available here https://stash.reaper.fm/30837/MIDI%2...ool%20Demo.pdf if you want to preview it before downloading the package.

Here are some basic screen shots:

"Chords" tab:


"Strum" tab:


See the PDF demo for details about creating chords. This is the final result from the demo. The chord progression is Bm7 C#m7 F#m7 E7sus4 A6. The guitar tab for each chord is shown in text below the screen shot:


Code:
Guitar tab for the chords above:

  Bm7  C#m7  F#m7  E7sus4  A6
  2    4     5     5       2
  3    5     5     3       2
  2    4     6     4       2
  4    6     4     2       2
  2    4     -     -       4
  -    -     -     -       5

There are a few minor annoyances in the GUI display that I can fix by upgrading to a newer version of Lokasenna's library. In particular is the caption for the "Use Strings" check boxes. The function calls in the new GUI library have changed, and it would require changing quite a bit of my code to align it with the new library. So at the moment I am just living with the problems.


The PDF demo uses the chord types in the top portion of the GUI. The chords in the "Inversions" section work similarly. For the "Inversions" chords, choose the string you want the root of the chord to be on, and then select the type of chord. The "Chord Form" and "Optional Notes" controls are not used for the "Inversions" chords, but the "Use Strings" control is. The "Inversions" chords only use the top 4 strings (E B G D), and allow you to create different inversions of a chord type based on which string plays the root note of the chord.

For the purpose of this tool, the term "strum" means delaying the start time of notes to emulate the guitar being strummed. Both downstrum and upstrum are available (see the PDF for instructions). Here is an illustration:

Code:
Original Notes:
------------------ : Channel 1
------------------ : Channel 2
------------------ : Channel 3
------------------ : Channel 4
------------------ : Channel 5
------------------ : Channel 6


Down Strum:
     ------------- : Channel 1
    -------------- : Channel 2
   --------------- : Channel 3
  ---------------- : Channel 4
 ----------------- : Channel 5
------------------ : Channel 6


Up Strum:
------------------ : Channel 1
 ----------------- : Channel 2
  ---------------- : Channel 3
   --------------- : Channel 4
    -------------- : Channel 5
     ------------- : Channel 6
If you choose the "Arp." option on the strum tab, it will alter the start and end times of each note to make the notes play consecutively within the duration of the chord. Here is an illustration:

Code:
Original Notes:
------------------ : Channel 1
------------------ : Channel 2
------------------ : Channel 3
------------------ : Channel 4
------------------ : Channel 5
------------------ : Channel 6


Downward Arpeggio:
               --- : Channel 1
            ---    : Channel 2
         ---       : Channel 3
      ---          : Channel 4
   ---             : Channel 5
---                : Channel 6


Upward Arpeggio:
---                : Channel 1
   ---             : Channel 2
      ---          : Channel 3
         ---       : Channel 4
            ---    : Channel 5
               --- : Channel 6
The "Strum" tab can be used independently of the "Chords" tab. For instance if you have piano chords that you entered into the MIDI editor, you can use the "Strum" functions on them. Just be aware that the terms "down" and "up" refer to the direction you would strum the guitar. So a downstrum plays the lowest strings/notes first. As per the demo PDF, multiple chords can be strummed at once. Just select all the notes you want to strum, and the tool fill figure out which ones belong to each chord. It tells which notes go with each chord by finding overlapping notes, so if you get strange results you don't understand, check to make sure that notes for one chord don't overlap notes from another chord (this is usually only a problem if you are moving notes around outside this tool).

One other thing: there are no buttons specifically for "downstrum" or "upstrum". Clicking one of the strum buttons (1/16, 1/8, 1/4, etc.) multiple times will switch between downstrum and upstrum. If you want to revert to the un-strummed chord, use the "None" button to reset the chord.



Chord definitions (if you want to see them) are in the "ChordDefs.lua" file. They look like this:

Code:
                E = { -- Maj
                    { String = 1,   Fret =  0,  Optional = false, }, -- R
                    { String = 2,   Fret =  0,  Optional = false, }, -- 5
                    { String = 3,   Fret =  1,  Optional = false, }, -- 3
                    { String = 4,   Fret =  2,  Optional = false, }, -- R
                    { String = 5,   Fret =  2,  Optional = false, }, -- 5
                    { String = 6,   Fret =  0,  Optional = false, }, -- R
                },
Some chord definitions contain optional notes. Usually these are notes that are on strings below the root string. You can control whether these optional notes are used with the "Optional Notes" radio buttons. Or you can include the optional notes, and explicitly turn on/off the strings you want with the "Use Strings" check boxes.

Here's an example of a chord with optional notes: D major

Code:
                D = { -- Maj
                    { String = 1,   Fret =  2,  Optional = false, }, -- 3
                    { String = 2,   Fret =  3,  Optional = false, }, -- R
                    { String = 3,   Fret =  2,  Optional = false, }, -- 5
                    { String = 4,   Fret =  0,  Optional = false, }, -- R
                    { String = 5,   Fret =  0,  Optional = true,  }, -- 5
                    { String = 6,   Fret =  2,  Optional = true,  }, -- 3
                },

If you aren't familiar with the moveable E A D G C chord forms, check out Desi Serna's tutorials: http://www.guitar-music-theory.com/caged-chords

Finally, I use the MusicLabs instruments in "MIDI Guitar" mode, in which each string uses a separate MIDI channel. If you are using "MIDI Keyboard" mode where all strings use the same channel (or if you are using a different VST that doesn't use separate channels for each string), you will need to edit the code to set each string to the channel you want. I probably should make this configurable in the GUI, but haven't gotten around to it yet. The code to edit is near the top of the "ChordDefs.lua" file:

Code:
-- Channel (0 = Channel 1), OpenNote (60 = Middle C)

    StringDefs = { -- settings for each guitar string
        { Channel = 0,  OpenNote = 64, }, -- string 1
        { Channel = 1,  OpenNote = 59, }, -- string 2
        { Channel = 2,  OpenNote = 55, }, -- string 3
        { Channel = 3,  OpenNote = 50, }, -- string 4
        { Channel = 4,  OpenNote = 45, }, -- string 5
        { Channel = 5,  OpenNote = 40, }, -- string 6
    },
The "ChordDefs.lua" file will be in the top-level of the "...\Scripts\lunker\MIDI Guitar Chord Tool" directory, where "..." depends on where the Reaper scripts are stored on your system. In my case, it is

C:\Users\a0195807\AppData\Roaming\REAPER\Scripts\l unker\MIDI Guitar Chord Tool

Note that the file uses channel numbers starting with 0, not 1. In the example above, channel numbers 0-5 correspond to what most people would call channels 1-6).
__________________
Best Regards, Ernie "lunker" Lundqvist
BDSM (Bad Dog Studio Musicians)
Windows 10 running on Z390 + i7-8700

Last edited by lunker; 11-28-2018 at 12:55 PM.
lunker is offline   Reply With Quote
Old 05-30-2017, 08:23 AM   #2
X-Raym
Human being with feelings
 
X-Raym's Avatar
 
Join Date: Apr 2013
Location: France
Posts: 9,900
Default

Interesting work !

It would be nice is, as others scripts/extension out there (ReaTab Hero, ReaTabs...) you could have channels sets from lowest to highest notes (channel 0 for E, channel 1 for A etc...).

It may be useful for those who use REAPER a lot with guitar :P

Anyway, thanks for sharing !
X-Raym is offline   Reply With Quote
Old 05-30-2017, 12:19 PM   #3
ashcat_lt
Human being with feelings
 
Join Date: Dec 2012
Posts: 7,293
Default

Quote:
Originally Posted by lunker View Post
He calls them "CAGED" because it makes a word...
He calls it "CAGED" because that's the order that they come in as you work your way up the neck. The fact that it spells an English word is a happy coincidence that makes it easier to remember, but it's actually all about how the chord shapes (and the scale shapes built around them) map up the fretboard and to facilitate connecting and moving between the various positions.
ashcat_lt is offline   Reply With Quote
Old 05-30-2017, 12:43 PM   #4
karbomusic
Human being with feelings
 
karbomusic's Avatar
 
Join Date: May 2009
Posts: 29,269
Default

Quote:
Originally Posted by ashcat_lt View Post
but it's actually all about how the chord shapes (and the scale shapes built around them) map up the fretboard and to facilitate connecting and moving between the various positions.
Yea, someone introduced me to this about 7 years ago. However, I had already learned essentially the same thing using modal shapes; so it was of no use to me because I already learned, knew and used a different method many years earlier.

Nothing wrong with CAGED at all, it's just more where you land first when learning how map all this out. Kudos to the OP on the tool though, I'm sure it will be very useful to many. What I'd be interested in is a version of the tool that would generate the "negative harmony" versions of each chord in the scale. That should be easy since it is a harmonic mirror image of the classic harmonization.
__________________
Music is what feelings sound like.

Last edited by karbomusic; 05-30-2017 at 01:06 PM.
karbomusic is offline   Reply With Quote
Old 05-30-2017, 01:11 PM   #5
lunker
Human being with feelings
 
lunker's Avatar
 
Join Date: Nov 2007
Location: Lucas, TX, USA (via Luleå, Sweden)
Posts: 2,008
Default

Quote:
Originally Posted by X-Raym View Post
It would be nice is, as others scripts/extension out there (ReaTab Hero, ReaTabs...) you could have channels sets from lowest to highest notes (channel 0 for E, channel 1 for A etc...).
You can definitely do that by editing the channel assignments in the "ChordDefs.lua" file (as described above). I think it would be a good idea to add a "Config" tab to allow users to use the GUI to set the channels for each string. Unfortunately, I'm headed to Asia for a month, so it will have to wait a little while..


Quote:
Originally Posted by ashcat_lt View Post
He calls it "CAGED" because that's the order that they come in as you work your way up the neck.
Good point. Thanks.


Quote:
Originally Posted by karbomusic View Post
What I'd be interested in is a version of the tool that would generate the "negative harmony" versions of each chord in the scale. That should be easy since it is a harmonic mirror image of the classic harmonization.
Hmm ... I hadn't heard of "negative harmony" before. I took a look at this link and blew my mind. I can't wait to go home and try this!

And I agree, it would be cool to have a tool to flip each chord for you.
__________________
Best Regards, Ernie "lunker" Lundqvist
BDSM (Bad Dog Studio Musicians)
Windows 10 running on Z390 + i7-8700

Last edited by lunker; 05-30-2017 at 01:17 PM.
lunker is offline   Reply With Quote
Old 05-30-2017, 01:16 PM   #6
karbomusic
Human being with feelings
 
karbomusic's Avatar
 
Join Date: May 2009
Posts: 29,269
Default

Quote:
Originally Posted by lunker View Post
Hmm ... I hadn't heard of "negative harmony" before. In addition to the video, I took a look at this link and blew my mind. I can't wait to go home and try this!
hehe, same thing occurred when I first heard of it. What I like about it is it's appears on the surface to be great at finding interesting substitutions when in a rut and so on. But it's difficult for me to do this on the fly like I can normally do with classic harmonization because everything is sort of backwards.
__________________
Music is what feelings sound like.
karbomusic is offline   Reply With Quote
Old 05-31-2017, 01:17 AM   #7
Bassman1
Human being with feelings
 
Bassman1's Avatar
 
Join Date: Mar 2007
Location: UK
Posts: 472
Default

Hi lunker, great stuff, but can you please help this dummy? Where do I add this in REAPER, and where will be be accessible from once in REAPER?

Thanks and sorry for the dumb questions.
__________________
Bought REAPER V1.5 and still going strong today with V5.
Thanks Justin & Co !
Bassman1 is offline   Reply With Quote
Old 05-31-2017, 03:14 AM   #8
tweezer
Human being with feelings
 
Join Date: Aug 2010
Location: S.E.England
Posts: 329
Default

Quote:
Originally Posted by Bassman1 View Post
Hi lunker,Thanks and sorry for the dumb questions.
I was about to ask the same "dumb question" so I can't help. In the meantime I found this general info that I'm working through. Looks helpful.
http://www.reaper.fm/sdk/reascript/reascript.php
tweezer is offline   Reply With Quote
Old 05-31-2017, 07:57 AM   #9
lunker
Human being with feelings
 
lunker's Avatar
 
Join Date: Nov 2007
Location: Lucas, TX, USA (via Luleå, Sweden)
Posts: 2,008
Default

@Bassman1, @tweezer:

See this post if you don't know how to find the directory where Reaper stores its data files.

Once you know that directory, unzip the package I posted into the "Scripts" directory. I recommend putting it into a sub-directory (perhaps called "lunker"), so that you can keep it separate from any other ReaScripts that you install.

The final directory structure should look something like this:

Code:
  <reaper data dir>/
   |
   `- Scripts/
      |
      `- lunker/
         |
         |- lib/
         |  |
         |  `- lua/
         |     |
         |     `- <files>
         |
         `- MIDI Guitar Chord Tool/
            |
            `- <files>

Then run Reaper and open the dialog box to run actions (on my system the shortcut is "?", but I'm not sure if that is the default or a custom shortcut I assigned). In the ReaScript section, click the "Load" button, navigate to the directory listed above, and select the file "lunker MIDI Guitar Chord Tool.lua". After you've loaded it, run that action. If you like it, give it a custom shortcut or create a toolbar button for it.
__________________
Best Regards, Ernie "lunker" Lundqvist
BDSM (Bad Dog Studio Musicians)
Windows 10 running on Z390 + i7-8700

Last edited by lunker; 05-31-2017 at 08:02 AM.
lunker is offline   Reply With Quote
Old 05-31-2017, 08:10 AM   #10
Bassman1
Human being with feelings
 
Bassman1's Avatar
 
Join Date: Mar 2007
Location: UK
Posts: 472
Default

lunker got it thanks. Will give it a go when I get to main PC.
__________________
Bought REAPER V1.5 and still going strong today with V5.
Thanks Justin & Co !
Bassman1 is offline   Reply With Quote
Old 05-31-2017, 03:39 PM   #11
tweezer
Human being with feelings
 
Join Date: Aug 2010
Location: S.E.England
Posts: 329
Default

Big thanks from me too. I haven't had time to try anything yet but it has been double useful because it has forced me to read up about things I hadn't considered previously. So, double thanks really.
tweezer is offline   Reply With Quote
Old 06-01-2017, 01:52 AM   #12
Bassman1
Human being with feelings
 
Bassman1's Avatar
 
Join Date: Mar 2007
Location: UK
Posts: 472
Default

Is there something similar, or could this script be edited to play 'Piano' chords, with inversion options maybe?

I thought I'd read that there was something along these lines already within REAPER. Or maybe I was just dreaming.
__________________
Bought REAPER V1.5 and still going strong today with V5.
Thanks Justin & Co !
Bassman1 is offline   Reply With Quote
Old 06-01-2017, 07:21 AM   #13
lunker
Human being with feelings
 
lunker's Avatar
 
Join Date: Nov 2007
Location: Lucas, TX, USA (via Luleå, Sweden)
Posts: 2,008
Default

Quote:
Originally Posted by Bassman1 View Post
Is there something similar, or could this script be edited to play 'Piano' chords, with inversion options maybe?
Try this one. It was actually the inspiration for me to create one for guitar chords.
__________________
Best Regards, Ernie "lunker" Lundqvist
BDSM (Bad Dog Studio Musicians)
Windows 10 running on Z390 + i7-8700
lunker is offline   Reply With Quote
Old 06-01-2017, 08:10 AM   #14
Bassman1
Human being with feelings
 
Bassman1's Avatar
 
Join Date: Mar 2007
Location: UK
Posts: 472
Default

Thanks again, I'll take a look.
__________________
Bought REAPER V1.5 and still going strong today with V5.
Thanks Justin & Co !
Bassman1 is offline   Reply With Quote
Old 06-02-2017, 01:17 AM   #15
Ulf3000
Human being with feelings
 
Join Date: May 2016
Posts: 369
Default

Majorly awesome dude ! thanx alot.

will this get developed further ?

chord variations would be nice akin to the free vst plugin "improvisator".
Ulf3000 is offline   Reply With Quote
Old 06-02-2017, 03:27 AM   #16
rcl
Human being with feelings
 
rcl's Avatar
 
Join Date: Mar 2013
Location: Bahia,Brazil
Posts: 661
Default

Thanks lunker,

Works great. Is it possible to add the action to the midi editor section so to add it to the midi piano roll tool bar. Also is there a way to make the window for the guitar tool to stay on top of I quests maybe I could rearrange the windows of the piano roll and the guitar tool so they don't conflict. Again thanks so much for your work on this.
__________________
We didnt jump the fence because the grass was greener. We jumped it because it was a fence.
https://scrubbingmonkeys.bandcamp.com/
rcl is offline   Reply With Quote
Old 06-02-2017, 09:11 AM   #17
lunker
Human being with feelings
 
lunker's Avatar
 
Join Date: Nov 2007
Location: Lucas, TX, USA (via Luleå, Sweden)
Posts: 2,008
Default

Quote:
Originally Posted by Ulf3000 View Post
Majorly awesome dude ! thanx alot.

will this get developed further ?

chord variations would be nice akin to the free vst plugin "improvisator".
Thanks! I am certainly open to considering improvements/enhancements. I took a very brief look at the Zyklus Improvisor, real-time harmonic sequencer (which I think is what you are talking about), and I'm not totally sure I understand what it does. But I admit that I didn't have much time to look at it today. Is it possible to feed the MIDI guitar chords into that VST, and let it do it's improvising thing? Or does it not work that way?

My tool is intended more as an assistant for creating MIDI guitar chords when you aren't familiar with the correct fingering, rather than an improvising tool. But I'm open to ideas.


Quote:
Originally Posted by rcl View Post
Is it possible to add the action to the midi editor section so to add it to the midi piano roll tool bar. Also is there a way to make the window for the guitar tool to stay on top?
Yes to both questions. See this link for information about how to customize Reaper's toolbars and menus. Use the 'pin' button to keep the window on top. [Note: I'm not at my Reaper PC right now, so I can't verify that the 'pin' button is actually there in my tool. I assume it is standard on all Reaper windows, and not something that needs to be programmed into the script. If the 'pin' button isn't showing up for you, let me know.] I have the luxury of using dual monitors, and have the MIDI editor in a separate monitor than the GUI window, so I've never had to consider this problem, but I can certainly see how it would be annoying to have to keep re-focussing back-and-forth between the two windows.
__________________
Best Regards, Ernie "lunker" Lundqvist
BDSM (Bad Dog Studio Musicians)
Windows 10 running on Z390 + i7-8700
lunker is offline   Reply With Quote
Old 06-02-2017, 01:41 PM   #18
rcl
Human being with feelings
 
rcl's Avatar
 
Join Date: Mar 2013
Location: Bahia,Brazil
Posts: 661
Default

Hey Lunker, thanks for the reply. No pin on the gtr tool window. I can add the action to the main tool bar but not the piano roll tool bar. Seems odd but that's the way it is.
__________________
We didnt jump the fence because the grass was greener. We jumped it because it was a fence.
https://scrubbingmonkeys.bandcamp.com/
rcl is offline   Reply With Quote
Old 06-02-2017, 02:17 PM   #19
lunker
Human being with feelings
 
lunker's Avatar
 
Join Date: Nov 2007
Location: Lucas, TX, USA (via Luleå, Sweden)
Posts: 2,008
Default

Quote:
Originally Posted by rcl View Post
I can add the action to the main tool bar but not the piano roll tool bar.
I misunderstood your issue.

I think the problem may be that when you loaded the ReaScript, it was set to load in the "Main" context. Reload the ReaScript in the "MIDI Editor" context (where all the other actions for the MIDI editor are listed), and it should show up as an option for the piano roll toolbar.

I'll look into the 'pin' issue. As mentioned above, I never gave much thought to it, since I don't use it. But I'll look into it.
__________________
Best Regards, Ernie "lunker" Lundqvist
BDSM (Bad Dog Studio Musicians)
Windows 10 running on Z390 + i7-8700
lunker is offline   Reply With Quote
Old 06-03-2017, 04:47 AM   #20
rcl
Human being with feelings
 
rcl's Avatar
 
Join Date: Mar 2013
Location: Bahia,Brazil
Posts: 661
Default

Quote:
Originally Posted by lunker View Post
I misunderstood your issue.

I think the problem may be that when you loaded the ReaScript, it was set to load in the "Main" context. Reload the ReaScript in the "MIDI Editor" context (where all the other actions for the MIDI editor are listed), and it should show up as an option for the piano roll toolbar.

I'll look into the 'pin' issue. As mentioned above, I never gave much thought to it, since I don't use it. But I'll look into it.
Thanks Lunker.
__________________
We didnt jump the fence because the grass was greener. We jumped it because it was a fence.
https://scrubbingmonkeys.bandcamp.com/
rcl is offline   Reply With Quote
Old 06-04-2017, 12:46 PM   #21
rcl
Human being with feelings
 
rcl's Avatar
 
Join Date: Mar 2013
Location: Bahia,Brazil
Posts: 661
Default

Well I was able to get it to load into my piano roll toolbar. What I learned in the process is......before you load a script into the action list be sure to select where you would like it to go. IE main, midi editor etc. I thought that was kind of a filter. As it turns out it's absolute. Scripts that are visible in main can't be loaded into midi for example
__________________
We didnt jump the fence because the grass was greener. We jumped it because it was a fence.
https://scrubbingmonkeys.bandcamp.com/
rcl is offline   Reply With Quote
Old 06-05-2017, 04:26 AM   #22
lunker
Human being with feelings
 
lunker's Avatar
 
Join Date: Nov 2007
Location: Lucas, TX, USA (via Luleå, Sweden)
Posts: 2,008
Default

@rcl : that is correct.

FYI, this particular script requires an open MIDI editor, since it depends on user interaction to select the notes that will be acted on for each button click.

However, with many of my other scripts that act on MIDI data (most of which have not been released for public use yet), I test whether a MIDI editor is open, and if so, use that MIDI item; if no MIDI editor is open, then it uses the selected MIDI item (if a MIDI item is selected). For scripts like that, I load the script into both the "Main" and "MIDI Editor" contexts, so that it will be available as a toolbar button or keyboard shortcut in either context.
__________________
Best Regards, Ernie "lunker" Lundqvist
BDSM (Bad Dog Studio Musicians)
Windows 10 running on Z390 + i7-8700
lunker is offline   Reply With Quote
Old 06-06-2017, 01:48 AM   #23
Ulf3000
Human being with feelings
 
Join Date: May 2016
Posts: 369
Default

no i meant the "improvisator" vst .

but never mind , your addon does something different , but it could be modified though (making another addon) ..

i see your prog reads the start ,end, velocity etc from selected note(s).

that would be my workflow of a "chord" addon , you have the buttons in your addon with all the chords and variations similar to the addon you took inspiration in but instead of just playing the chord it replaces the selected note with its start end and velocity just like your guitar addon here .

short version:
you can choose between all the scales ,
it shows the chords as buttons
on press it replaces selected note with chord in same legth position and velocity

EDIT: ok i hacked it together myself , copied a few lines from your addon to the other addon and now i can convert just simple rythms to chord progression very easy.

but the chord listing is a little unoptimized but ohh well ... (it really itches me right now to rebuild this completely but no time lol )

Last edited by Ulf3000; 06-06-2017 at 12:06 PM.
Ulf3000 is offline   Reply With Quote
Old 08-07-2017, 10:53 AM   #24
etcetera
Human being with feelings
 
Join Date: Aug 2017
Posts: 2
Default errors running script

I'm new here and rel. new to scripting and Lua with Reaper, but this one was interesting. I was able to download and install as described (in the MIDI editor), but I do get erros upon running:
"...IDI Guitar Chord Tool\../lib/lua/lokasenna gui beta8.lua:1022: Function 'dock' requires 1 parameters, 5 passed"

- maybe a separate insatll of Lokasenna's GUI library for Lua is a requirement for this to work?
I did not find out if it's needed nor how to install that one...

Any hints please?

regards
-etcetera
etcetera is offline   Reply With Quote
Old 08-07-2017, 03:39 PM   #25
Lokasenna
Human being with feelings
 
Lokasenna's Avatar
 
Join Date: Sep 2008
Location: Calgary, AB, Canada
Posts: 6,551
Default

What version of Reaper are you using? If it's anything earlier than 5.17, that's probably the issue.
__________________
I'm no longer using Reaper or working on scripts for it. Sorry. :(
Default 5.0 Nitpicky Edition / GUI library for Lua scripts / Theory Helper / Radial Menu / Donate
Lokasenna is offline   Reply With Quote
Old 08-08-2017, 06:08 AM   #26
etcetera
Human being with feelings
 
Join Date: Aug 2017
Posts: 2
Default

Quote:
Originally Posted by Lokasenna View Post
What version of Reaper are you using? If it's anything earlier than 5.17, that's probably the issue.
Ok, I'm still at 5.04
I tend not to upgrade too often, but I guess it's time now then
I'l report back

thx

EDIT: updated to V 5.40, and all works fine
thx again!

Last edited by etcetera; 08-08-2017 at 07:55 AM. Reason: updated
etcetera is offline   Reply With Quote
Old 08-08-2017, 11:10 AM   #27
ivansc
Human being with feelings
 
Join Date: Aug 2007
Location: Near Cambridge UK and Near Questembert, France
Posts: 22,754
Default

Quote:
Originally Posted by karbomusic View Post
Nothing wrong with CAGED at all, it's just more where you land first when learning how map all this out. What I'd be interested in is a version of the tool that would generate the "negative harmony" versions of each chord in the scale. .

I learnt about CAGED from a famous US jazz guitarist about 40 years ago and it changed my view forever.
Just watched a couple of vids on negative harmony and was blown away!

Can't ever see it getting much of a workout on my Americana stuff, but I am definitely going to have a little play with it. Fascinating idea & pretty obvious once you get the essentials.
Don't think I am going to live long enough to b able to substitute without thinking about it though....
__________________
Ici on parles Franglais
ivansc is offline   Reply With Quote
Old 08-08-2017, 11:42 AM   #28
karbomusic
Human being with feelings
 
karbomusic's Avatar
 
Join Date: May 2009
Posts: 29,269
Default

Quote:
Originally Posted by ivansc View Post
I learnt about CAGED from a famous US jazz guitarist about 40 years ago and it changed my view forever.
Yea, I bet it would have hit me the same way but I had already been through modes et al, six ways from Sunday before I ever heard about CAGED - So I had already developed different ways of the same idea.

Quote:
Just watched a couple of vids on negative harmony and was blown away!

Can't ever see it getting much of a workout on my Americana stuff, but I am definitely going to have a little play with it. Fascinating idea & pretty obvious once you get the essentials.
I thought it was super cool too, looks like a great use is breaking out of a rut.

Quote:
Don't think I am going to live long enough to b able to substitute without thinking about it though....
You do not have permission to leave yet!
__________________
Music is what feelings sound like.
karbomusic is offline   Reply With Quote
Old 10-26-2017, 11:01 PM   #29
acebone
Human being with feelings
 
Join Date: Oct 2017
Location: Copenhagen, Denmark
Posts: 229
Default Small strum-glitch

Hi!

Great script - thank you!

However, when I try to strum chords not generated by Midi Guitar Chord Tool - the order of the strumming is fubar.

like:

___=
====
__==
_===

Rather than

___=
__==
_===
====

(see attached screenshot)
Attached Images
File Type: png midi guitar chord tool .png (18.7 KB, 1011 views)
acebone is offline   Reply With Quote
Old 10-27-2017, 08:06 AM   #30
lunker
Human being with feelings
 
lunker's Avatar
 
Join Date: Nov 2007
Location: Lucas, TX, USA (via Luleå, Sweden)
Posts: 2,008
Default

I've had that issue once or twice.

It has to do with the MIDI note events getting out of order, and the program doesn't know which order the notes should be in.

It's an amazing coincidence that I actually started thinking about a better way to handle the problem just this morning!

Unfortunately, I'm not sure there is a "one size fits all" way of sorting the notes that everyone can agree is the "correct" sort order. Some people may say that the correct order would be from lowest note number to highest note number for a down strum, and vice versa for an up strum. I use a VST where each guitar string uses a separate channel (High E = 1, Low E = 6), so I prefer to sort from highest channel to lowest channel for a down strum, and vice versa for an up strum -- that way open notes on any of the strings are in the correct order, regardless of whether those note number are higher or lower than the notes on the adjacent strings.

After thinking about it as I wrote this, maybe I just need to add two separate "Sort Notes" buttons -- one that sorts by note number, and one that sorts by channel number. I'll look into that, but probably not this weekend as I have lots of family things on the calendar.


PS -- While I am at it, I'll also upgrade to the latest version of Lokasenna's GUI library to address some of the things that aren't displaying correctly in this tool.
__________________
Best Regards, Ernie "lunker" Lundqvist
BDSM (Bad Dog Studio Musicians)
Windows 10 running on Z390 + i7-8700

Last edited by lunker; 10-27-2017 at 08:27 AM.
lunker is offline   Reply With Quote
Old 10-27-2017, 10:44 AM   #31
lunker
Human being with feelings
 
lunker's Avatar
 
Join Date: Nov 2007
Location: Lucas, TX, USA (via Luleå, Sweden)
Posts: 2,008
Default

Temporary solution:

If you manually reorder the start times of the MIDI notes, so that they come in the order that you want, it will reset the internal event sorting, and then everything will work correctly again.

Like I said above, I'll address this. After thinking about it some more, it's probably an easier solution than I first thought.
__________________
Best Regards, Ernie "lunker" Lundqvist
BDSM (Bad Dog Studio Musicians)
Windows 10 running on Z390 + i7-8700
lunker is offline   Reply With Quote
Old 10-29-2017, 01:32 AM   #32
acebone
Human being with feelings
 
Join Date: Oct 2017
Location: Copenhagen, Denmark
Posts: 229
Default

Great - I'll be looking forward to that and workin' around in the meantime
acebone is offline   Reply With Quote
Old 11-05-2017, 11:59 PM   #33
acebone
Human being with feelings
 
Join Date: Oct 2017
Location: Copenhagen, Denmark
Posts: 229
Default

Hey Lunker ... Could really use the option to sort notes from bottom to top (and vice versa).

Any progress?

(don't mean to rush you or anything - but I'm doing a guitar-part )
acebone is offline   Reply With Quote
Old 11-06-2017, 04:59 AM   #34
lunker
Human being with feelings
 
lunker's Avatar
 
Join Date: Nov 2007
Location: Lucas, TX, USA (via Luleå, Sweden)
Posts: 2,008
Default

Hi!

I just posted an update to the same stash URL that's in the original post:

https://stash.reaper.fm/v/30836/MIDI...ord%20Tool.zip

I didn't have time to update to Lokasenna's new GUI. There are some big changes in his code that require me to re-think how I did some of my code.

But I did address your issus. It now sorts the notes correctly, regardless of whether they are on the same or different channels.

If you manually adjust the start time of any notes, you can still have the problem where they get out of order. To fix that, select the desired notes, and choose "None" for the strum time. That will align the start/end times of all the notes *and* reset the order of the events correctly, so that the next time you click a strum button the notes will be in the correct order.

Just a reminder. The first time you click a strum button, it will produce a downstrum. Click the button again to get an upstrum. If you have randomness enabled, a third click will give a downstrum with slightly different timing than the first one. etc. Note that randomness is applied to each note, so if you have multiple chords selected, they each get their own random variations (the random timing isn't just copied from chord to chord).

Please let me know if you find any other issues.
__________________
Best Regards, Ernie "lunker" Lundqvist
BDSM (Bad Dog Studio Musicians)
Windows 10 running on Z390 + i7-8700

Last edited by lunker; 11-07-2017 at 08:34 AM.
lunker is offline   Reply With Quote
Old 11-07-2017, 06:51 AM   #35
acebone
Human being with feelings
 
Join Date: Oct 2017
Location: Copenhagen, Denmark
Posts: 229
Default

Great Lunker - Thnx!

Smart idea about the "reset-order" function


Will try it out tonite, promise to give feedback
acebone is offline   Reply With Quote
Old 10-21-2018, 07:09 AM   #36
_Stevie_
Human being with feelings
 
_Stevie_'s Avatar
 
Join Date: Oct 2017
Location: Black Forest
Posts: 5,067
Default

Such a great tool, thanks lunker!
__________________
My Reascripts forum thread | My Reascripts on GitHub
If you like or use my scripts, please support the Ukraine: Ukraine Crisis Relief Fund | DirectRelief | Save The Children | Razom
_Stevie_ is online now   Reply With Quote
Old 11-27-2018, 07:16 PM   #37
Deelanee
Human being with feelings
 
Deelanee's Avatar
 
Join Date: Dec 2016
Location: Quebec, Canada
Posts: 18
Default Super script, but what am I doing wrong?

Hello there Lunker,

This is a really sweet script, but no matter if a chord appears, it only plays one note, not even the root one! What am I doing wrong?
__________________
Deelanee Orchestra
Deelanee is offline   Reply With Quote
Old 11-28-2018, 12:45 PM   #38
lunker
Human being with feelings
 
lunker's Avatar
 
Join Date: Nov 2007
Location: Lucas, TX, USA (via Luleå, Sweden)
Posts: 2,008
Default

Thanks! I'm glad to see this is getting some use.

Just to make sure your expectations are correct, this utility doesn't make any sound. It only generates MIDI notes that can be sent to a MIDI/VST instrument to make sounds. My assumption is that you probably understand that, and just don't have the instrument/utility set up correctly.

By default, this utility generates the MIDI notes on channels 1-6 (using separate channels for each guitar string, so that pitchbend, aftertouch, etc. can be applied to each string independently of the others, just like with a real guitar). My guess is that you might have an instrument that is configured to respond to only a single channel (most likely channel 1, which by default corresponds to the highest guitar string).

There are two solutions:

1) If possible, configure your instrument to respond to all MIDI channels (or at least channels 1-6). Not all MIDI/VST instruments have this capability.

2) If that's not possible, you can configure this utility to use a single channel for all of the guitar strings. To do that, check out the very end of the first post in this thread, where it discusses editing the "ChordDefs.lua" file to specify the MIDI channel(s) to use.

EDIT: Actually, I'll save you the trouble. Here it is:

Quote:
Originally Posted by lunker View Post
Finally, I use the MusicLabs instruments in "MIDI Guitar" mode, in which each string uses a separate MIDI channel. If you are using "MIDI Keyboard" mode where all strings use the same channel (or if you are using a different VST that doesn't use separate channels for each string), you will need to edit the code to set each string to the channel you want. I probably should make this configurable in the GUI, but haven't gotten around to it yet. The code to edit is near the top of the "ChordDefs.lua" file:

Code:
-- Channel (0 = Channel 1), OpenNote (60 = Middle C)

    StringDefs = { -- settings for each guitar string
        { Channel = 0,  OpenNote = 64, }, -- string 1
        { Channel = 1,  OpenNote = 59, }, -- string 2
        { Channel = 2,  OpenNote = 55, }, -- string 3
        { Channel = 3,  OpenNote = 50, }, -- string 4
        { Channel = 4,  OpenNote = 45, }, -- string 5
        { Channel = 5,  OpenNote = 40, }, -- string 6
    },
The "ChordDefs.lua" file will be in the top-level of the "...\Scripts\lunker\MIDI Guitar Chord Tool" directory, where "..." depends on where the Reaper scripts are stored on your system. In my case, it is

C:\Users\a0195807\AppData\Roaming\REAPER\Scripts\l unker\MIDI Guitar Chord Tool

Note that the file uses channel numbers starting with 0, not 1. In the example above, channel numbers 0-5 correspond to what most people would call channels 1-6).
__________________
Best Regards, Ernie "lunker" Lundqvist
BDSM (Bad Dog Studio Musicians)
Windows 10 running on Z390 + i7-8700

Last edited by lunker; 11-28-2018 at 12:54 PM.
lunker is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -7. The time now is 06:28 AM.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.