[Alpha Release]Reaffer:Guitar/Bass MIDI editor based on Ample Sound riffer
UPDATE:
As I promised here's a very very rough working version. Please treat it as something to play with rather than any kind of useful software. Also please use it in a test project!
Please bear with me if you see code that pokes eyes. Lua beginner here ��
Link to GitHub repo and installation instructions down below.
So what is it?
In its simplest form, it's just a MIDI editor tailored for guitar/bass. Instead of a piano roll, it uses a tablature-like fretboard representation but includes note duration too. While not a full-featured MIDI editor, it adds guitar/bass specific features like clamping the notes to their string range, displaying fret position, setting the string count, etc.
What it aims to be is a companion for guitar VSTs, with the ability to set plugin-specific articulations. This is not implemented at all yet, I still need to think of a good way to do it, since not all VSTs have the same articulations, nor do they treat them the same way.
The end result is just a generated MIDI item, created at the edit cursor on the selected track.
The plan is to stick to what Ample Sound's riffer does, for the most part, while changing/adding little things here and there.
Notable things not implemented/half-working/buggy
When reducing measure-count notes can end-up outside of the range too.
No string tuning ability.
No articulations. Generated MIDI just exports notes.
Installation and Use
Download the repo from here:
Navigate to Reaper's script path. On Windows it should be C:\Users\<YourUserName>\AppData\Roaming\REAPER\Scr ipts
Preferably, create a folder in there and extract the downloaded files.
In Reaper: Actions->Show action list...->New action...->Load Reascript..
and find Reaffer.lua in the folder you have extracted the files. Click run.
If you want to audition inserted notes, add a VST on a track (doesn't have to be guitar-specific), record-arm the track, ans set the Input to MIDI (VMK or All MIDI Inputs)
Hover the (?) icon for quick help on shortcuts and usage.
It's an unfinished theme I'm working on.
I borrowed a few icons from this theme: https://forum.cockos.com/showthread.php?t=214041
but other than that I started from scratch, so it's only the tcp for now.
I initially made a mod of the aforementioned theme just to learn about WALTER, but it didn't turn-up good, so I decided to make my own minimal theme.
Other than the tcp it's unusable at this state, so when I finish it I'll post it in the themes forum.
Looks awesome! How did you make those icons in ImGui?
Thank you very much!
Since ReaImGui doesn't currently support Image loading/rendering, these are just an icon-font. So I just used fontello.com to generate a custom icon-font and then loaded it with standard ImGui functions.
Thank you very much!
Since ReaImGui doesn't currently support Image loading/rendering, these are just an icon-font. So I just used fontello.com to generate a custom icon-font and then loaded it with standard ImGui functions.
It took me a while to stop fighting the language and switch to 1-based indices. I don't know why Lua creators chose this but it's certainly a headache when you're not used to it.
So I just implemented note-entry with dragging left/right to set duration, and up/down to set pitch. Still tons of things to do but it's a start.
Thanks! I'm trying to have a rough working version soon. It seems it'll need more work than I expected but I'm hoping to pull it off.
Also, @X-Raym, I now realize that you're the one behind tons and tons of scripts and tutorials that I've followed. I didn't connect the dots at first when I saw your username, but now that I do, thank you for all the hard work!
Seems amazing!
Maybe I can finally stop writing bass parts in guitar pro 5 after all these years XD
In an ideal world, we would be able to add/activate custom keyswitches
with buttons down below in that free space or maybe a menu with right click
maybe save them as presets ? (ezbass keyswitch preset, ample sound preset, submission audio preset. etc...)
Thanks!
You're almost on my mind. My plan is to add an articulation "lane" below the strings, and then have a dropdown-box where you can select articulation presets for some known VSTs.
Then you could add notes in that lane, and their "allowed" pitches would correspond to articulations of the selected preset. And of course you would be able to set their duration and velocity.
I may have to add a button with which you could add more lanes, because it's possible to have more than one articulation at the same time (eg: Sustain + Downstroke noise).
I'm not sure yet if this is a realistic plan, or If I'm missing something, so I'm open to ideas.
Updated first post with a video of the progress.
Implemented multiple selection and editing of notes. It works for the most part but needs polishing.
With left mouse drag, you can set the pitch and duration, and with right mouse drag, the velocity.
Selection of existing notes can be done with Select/Move/Draw tools, so that the user doesn't have to switch tool all the time.
Also added the ability to change which property is displayed over notes.
EDIT: Forgot to mention that you can audition notes when you insert or select them
Any chance you could clone the Strummer portion of ample sound?
Quote:
Originally Posted by immortalx
Thanks!
You're almost on my mind. My plan is to add an articulation "lane" below the strings, and then have a dropdown-box where you can select articulation presets for some known VSTs.
Then you could add notes in that lane, and their "allowed" pitches would correspond to articulations of the selected preset. And of course you would be able to set their duration and velocity.
I may have to add a button with which you could add more lanes, because it's possible to have more than one articulation at the same time (eg: Sustain + Downstroke noise).
I'm not sure yet if this is a realistic plan, or If I'm missing something, so I'm open to ideas.
Looks very cool, thanks for sharing.
In case you want another challenge, what I would like to have as a general musical concept: How to add feeling to those notes, by drawing lines, using a pen on a graphics tablet, which would denote the loudness / volume, so you could say play those few notes getting calmer, or the opposite, play those a bit louder and staccato (adding circles on top of the notes). As a summary, for a beginning there could be 3 types of drawings in the category list:
1. linear line, going up (play louder)
2. linear line, going down (play calmer)
3. circle above note (play staccato)
But not sure if you can add a "drawing area" via lua, in Reaper, under your tool. I think that would be cool.
Looks very cool, thanks for sharing.
In case you want another challenge, what I would like to have as a general musical concept: How to add feeling to those notes, by drawing lines, using a pen on a graphics tablet, which would denote the loudness / volume, so you could say play those few notes getting calmer, or the opposite, play those a bit louder and staccato (adding circles on top of the notes). As a summary, for a beginning there could be 3 types of drawings in the category list:
1. linear line, going up (play louder)
2. linear line, going down (play calmer)
3. circle above note (play staccato)
But not sure if you can add a "drawing area" via lua, in Reaper, under your tool. I think that would be cool.
You have some nice ideas there. For this project though I'm trying to stick to what the original program does, for the most part, and only changing small bits & pieces.
But what you suggest seems very cool.
also the option to display FRET number then pitch at the same time would be amazing
(you already have the reverse option for pitch THEN fret number)
Could we delete using a key+click? (example alt) instead of having to select the eraser every time
Thanks. I'll add an option to enable/disable audition.
Also yes, the fret/pitch order can be reversed. I'll add an option for that.
I'll have to think a way to add options like these in a popup or something, because it already starts to get cluttered.
As for the modifier+click question, right now it works like this on the selected notes:
Whatever tool you have active (except the eraser),
Left_click + drag horizontally sets the duration.
Left_click + drag vertically sets the pitch.
Right_click + drag vertically sets the velocity.
Right_click + SHIFT + drag vertically sets the off-velocity.
I'm sure there will be lots of bugs as I barely did any tests.
I'll focus on polishing things up and then start implementing articulations.
I'd appreciate some feedback on how to do that.
Thanks for sharing it, looking amazing.
Not sure if I missed something when I tried running it but got this below error
...io\AppData\Roaming\REAPER\Scripts\Reaffer-main\Input.lua:4: attempt to call a nil value (field 'ImGui_Key_ModCtrl')
Thank you.
Unfortunately, I can't reproduce that on my end (using latest Reaper on Windows 11).
Chances are, you have an older version of ReaImGui. Try updating it by going to Extensions->ReaPack->Synchronize packages.
This is an awesome tool to actually write logically and intuitively for the guitar.
Does Reaffer support MIDI channels? Channel 1 = String 1, Channel 2 = String 2 and so on?
This is an awesome tool to actually write logically and intuitively for the guitar.
Does Reaffer support MIDI channels? Channel 1 = String 1, Channel 2 = String 2 and so on?
I'm terribly sorry for the late reply but I didn't get a forum notification for your question.
Sorry, for the time being it outputs notes only on channel 1.
I was planning of having a setting to output each string's notes to a different channel, but due to lack of motivation I haven't worked on it since my last post.
I posted this for somone and I checked if it even works.
So this program doesn't work with updated 0.8.6.1 ReaImGui, it works with 0.7 version.
Giving me error:
Code:
App.lua:107: attempt to call a nil value (field 'ImGui_AttachFont')
on Windows 11.
__________________ Love is patient and kind; love does not envy or boast; it is not arrogant or rude.
It does not insist on its own way; it is not irritable or resentful;
it does not rejoice at wrongdoing, but rejoices with the truth. Corinthians 13:4-6
I think I got the octave numbers right, but in Reaper they might be offset by one, don't know for sure.
Thanks for considering!
The tuning might be best to be adjustable since somebody else might like to use a different tuning.
I just updated it with a 10 string. Please re-download and tell me If I got the tuning as you wanted.
You're right, tuning should be customizable but I didn't consider it at the time I initially wrote it.
I also fixed the plugin complaining about the modifier keys. That means you need the latest ReaImGui version for it to work.