ReaTab Hero: Side-Scrolling Tab Viewer Script for MIDI Items in REAPER

Introduction

Have you already tried to play guitar, bass, or any similar instrument from a REAPER MIDI composition? Then you probably found the integrated MIDI Editor and the new Notation Editor a bit difficult to read for this kind of task: contrary to piano where one note is associated to one key, a single note can be played at different places on your instrument neck, which make the translation from these notation systems not that straightforward.
Don’t worry anymore, I have a solution for you.

Background

I had a complex composition I wanted to share to a friend so he can play the bass. His part was already programmed in MIDI, but transposing MIDI notation to fingers placement on a bass neck is not that handy. He needed something more optimized for his instrument, something he was used to: a simple tab view.

REAPER (since 5.20), offer a notation editor, but a lot of people are not that good for reading scores. A tab-like view fit guitarists special needs better because you have the string/frets associated to notes.

As Guitar Pro is a excellent software for displaying tabs, I exported the track to MIDI, and imported to Guitar Pro. That was terrible.

Several problems:

  • Guitar Pro need precisely quantized Notes, you can’t export a humanized MIDI performance, or free tempo compositions.
  • Guitar Pro have troubles handling “incomplete measure” (like 15/16) and note below sixteenth notes (which happen a lot in certain music genres).
  • Guitar Pro import MIDI tracks as Piano per default. There is no easy way to change this setting or a track instrument. You have to copy paste all notes from the piano track, create a new score, paste them in it.

Other notation editors can be more solid with MIDI import, but fundamental issues with this process are still there:

  • As your tab and your projects are not synced, if you make a change in your REAPER project, you will have to export/import your MIDI again
  • If you do that, you will lose all customization you made in your tabs (like string transposition)
  • You don’t have the real sound of your project in tab editors
  • You can’t really simply have free tempo kind of tab.

Reciprocally, having a tab viewer integrated to a DAW offer this three major advantages:

  • Instant sync with the project, no export/import needed
  • Ability to have the sound of the project
  • Less softwares features to learn/buy

That was it. Inspired by games like Guitar Hero and RockSmith, I decided to make my own MIDI Tab Viewer REAPER Script. It will not aim to replace a proper tab editor/viewer (which can do print oriented stuffs for example), but it could do just what I wanted: displaying MIDI notes in a side-scrolling window which would allow me to share/learn my compositions more easily, in sync with my projects.

And now, let me introduce you to my most advanced ReaScript so far: ReaTab Hero!

Simple arpeggios displayed in ReaTab Hero.
Simple arpeggios displayed in ReaTab Hero.

Concept

Notes are sampled from non-muted MIDI notes of all MIDI items of a track that has been define as source (by a simple click on the Strings panel).

Because it is more performance oriented than composition oriented, you don’t need to quantize your notes and align them to the grid. You can even compose in free tempo!

String notes are defined by their MIDI channels: channel 1 is first string, channel 2 is second string etc…

Notes are displayed as trapeziums (almost rectangles) according to their length and according to their relative position from the cursor position, based on the look ahead time after it. This allows you to see the notes coming without having to bother about what is already passed.

You can customize your instrument (strings number, strings tonality, cases number) and the tab display (color schemes, look ahead time and mod etc) by entering the settings panel by pressing a any keyboard with the script window in focus. To toggle back, press another key.

I added a lot of features to make it customizable and user friendly. You will find the list below!

Features

  • Customizable Instrument (for Guitar, Bass, Banjo, Ukulele…)
    • Customizable strings number from 4 to 9
    • Customizable cases number
    • Customizable tuning (individual or all strings tonality offset buttons)
  • Multiple Color Schemes
    • Strings Mod: arbitrary vivid colors (like Guitar Hero or RockSmith)
    • Tonality Mod: the closer a note is to an other, the more their tint will be similar
    • Intervals Mod: the more consonant an interval is, the more tint of its notes will be close (based on MyColorMusic principles)
  • Customizable look-ahead
    • Duration
    • Type (time in seconds or measures)
  • Customizable notes opacity mod (fixed or based on MIDI velocity)
  • Vertical Grid according to look ahead time and mod.
    • Possibility to hide the the grid
    • Grid based on Time
    • Grid based on Measures
    • Grid based on Beats
  • Instrument Presets Management
    • Create Presets
    • Load Presets
    • Delete Presets
    • Ability to save/restore presets for each tracks
  • Instant preview of first selected track MIDI notes
  • Loop mod (if you activate Loop and if the cursor is before or inside the loop section, then the next notes displayed are the notes of the loop. No more disturbing cursor back jump!
  • Muted MIDI notes excluded from visualization, but not muted items (useful for practicing). Also, MIDI notes or part of notes outside item boundaries are not displayed.
  • Selected notes have white background and colored fret number
  • Note display can be based on frets or note name
  • Vertical bar display for Item Edges and Tempo Markers
  • Online Help button
  • On screen instructions if no track selected at script start
  • Open Source (nice if you want to modify some deep variables, like background color for example).
  • Auto-Update with ReaPack.
  • Flexible Interface (from small screens to big ones)
  • CPU friendly (less than 1% on my test machine, in Live mod, on a regular Guitar track).
    • Refresh Mod “Live” for instant preview of notes modifications.
    • Refresh Mod “Frozen” prevent refresh of notes modifications, but save CPU (can be useful on low-end computers overcharged — more than 30 000 events — MIDI files)
  • Multiple instances can be launched at the same time
Settings panel, and all different buttons settings.
Settings panel, and all different buttons settings.

Demos

The following video s a simple overview of the main features of ReaTab Hero, with a tab for the song Beelzeboss by Tenacious D, from the soundtrack of The Pick of Destiny Movie Picture (copyright by SME – due to copyright, this video maybe not avaible in your country. You can check the second video if this is the case).

A second simple overview, with a personal composition, Asymmetrical Brain Damage:

Detailed tutorial on how to set up a tab from an already existing song Guitar Pro tab:

Tips

  • I strongly advice you to map the two actions Set selected event to one channel higher/lower to a keyboard shortcut to make edition easier.
  • Also, using the Color notes/CC by channel as a toolbar button can be great!
  • Use the X-Raym_Offset selected MIDI notes channel according to their chords.lua included in this script pack to offset strings (MIDI channel) associated to selected notes, according to their position in a chord. It supports strummed chords. Demo:
    Define string notes according to note position in chord.
  • Use my Select/Unselect note at the same pitch of mouse cursor script can be helpful.
  • Set one editor per project if you want the MIDI Editor to display/edit notes of all items on one track no matter which one is in focus.
  • If you want to make an existing song ReaTab friendly, but you don’t have the MIDI:
    • Import your audio into REAPER.
    • Import or Create a MIDI file into REAPER (From Guitar Pro, you can export your tab to MIDI)
    • Snap the first recognizable beat of a song to the grid, and sync the midi item to it.
    • Adjust tempo from this starting point. If the MIDI fits the song well and if the song was composed on the grid, it can fast to do, but if you work from a MIDI that doesn’t fit the song and if your song have different tempo and time signature variations, it will need some extra efforts (adding/adjusting different tempo markers, splitting the item etc…).
    • Adjust string notes.
  • Due to how Measures look ahead time mod work, if you have complex tempo map (time signatures variations…), use Time mod.
  • You can modify the Master Playrate of REAPER to practice your sound slower. You can also put a virtual instrument (a synth or even better, a virtual guitar as track FX so that you don’t have “slow-downed” sound effects.
  • Because REAPER supports video, you can even put a video synced with your sound, like someone performing the song with a guitar, or lyrics etc… very convenient for practicing!

Warnings

  • This scripts pack required to be a minimum cumfy with REAPER: MIDI editing basics, setting an action to a toolbar or a keyboard shortcut, filtering the action list… If you are a beginner, I advice you to read this article in order to get your hands over it and to access some resources to continue your learning.
  • The script doesn’t do any live input signal analysis (audio or MIDI), it cannot recognize what you are playing directly. It is just a tab viewer.
  • The script doesn’t work with looped items. Consider splitting your items loop into several items. You can use my Convert selected looped items into independent items script. It is shared for free in my script pack.
  • No display for advanced guitar play techniques like bends, vibrato, harmonics… Only notes. I didn’t find a satisfying solution to encode such infos from MIDI notes properties, and what I needed is mostly finger position. But this may change in the future.
  • Resizing script window on MacOS can make it flicker. This is a REAPER related issue. But once the size is set, it is all good.
  • Going from Guitar Pro (or other music notation software) to REAPER while preserving the string notes is not possible at this time. Indeed, only MusicXML format can do that, and MusicXML is not currently supported in REAPER. This may change in the future, as announced on the Cockos forum. So what you have to do is to export to MIDI, and then redefine the string manually. According to the song, this may be a matter of seconds, with some selection actions and the X-Raym_Offset selected MIDI notes channel according to their chords.lua script (from this pack), or it could be a lot harder.
  • If you export your MIDI track from REAPER to external notation editor, your note string assignation may not be recognized, if your software importer don’t convert MIDI notes channel to a certain string. ReaTab is designed to work for REAPER projects, inside REAPER.
  • ReaTab hero doesn’t replace a usual Tab Display. We now have a notation editor in REAPER, but a Tab viewer would still be very appreciated. Also, usual Tabs display can be printed, which is obviously not the case with this type of visualization.

Controls

Strings Panel

  • Left Click on the interface: define first selected track as source
  • Right Click on the interface: define go to settings panel
  • Space Play/Stop
  • Enter Play/Pause
  • n Toggle notes naming

Settings Panel

  • Left Click / Right Click primary or secondary actions of a button.
  • Left Click / Right Click on the info display: go back to Strings panel.

All Panels

  • Escape: exit the script
  • CTRL + Space: Play
  • Any other Key Toggle panel

Product Content

By purchasing this product, you will get:

  • The ReaTab Hero scripts files
  • A script to unselect all MIDI notes of selected items, right from the arrange view (X-Raym_Unselect all MIDI notes of selected items.lua)
  • 3 scripts for create common chords from the bottom MIDI note while offseting their MIDI channel (aka, while assigning them on different string):
    • X-Raym_Duplicate selected notes as fifth and octave triads offseting channels.lua
    • X-Raym_Duplicate selected notes as fifth offseting channels.lua
    • X-Raym_Duplicate selected notes as fourth offseting channels.lua
    • X-Raym_Offset selected MIDI notes channel according to their chords.lua
  • A script to set all MIDI notes of selected items to channel 1 right from the arrange view (X-Raym_Set all MIDI notes of selected items to channel 1.lua), very useful is you import MIDI from another app, that may export every instruments on different MIDI channels (like Guitar Pro)
  • 20 Instrument Presets (Bass, Guitar, Mandolin, Banjo, Ukulele)…
  • A demo project
  • 1 year free update

This script uses the following ReaScript Libraries shared for free by other members of the REAPER community. These will be provided with the main script:

  • eugen2777 simple GUI class, for the buttons, moded for this script
  • spk77 table to presets, for the presets management

Many thanks to eugen2777 and spk77 for these! Also, thanks to mpl and heda for some very useful code snippets, and cfillion for ReaPack!

Installation

After purchase, installation instructions will be provided here and on the dedicated Purchase Confirmation page. License are valid lifetime. You will be able to enjoy updates and new scripts added to the pack.

Links

  1. Cockos Forum Thread: ReaTab Hero: Side-Scrolling Tab Viewer ReaScript
  2. Cockos French Forum Thread: ReaTab Hero : Tablatures en défilement hozitontal
  3. AudioFanzine French Forum Thread: Tutoriel : ReaTab Hero : Tablatures en défilement hozitontal – Audiofanzine

Changelog

Expand Changelog

Discounts and Affiliation

Social Sharing

By telling your friends how interesting you find this product with one of the sharing buttons below, you will get an instant discount of 3€!

Limited Offer: next 20 clients will get 10€ discount by clicking on one of the sharing buttons above! 🙂
14 places left!

Bloggers and Tutorial Makers

I want to make this product affordable for everyone, and thanks contributors as much as I can afford.

That's why, if you create an article or a video tutorial about this scripts pack on your website or video platform distribution after your purchase, I invite you to contact me, to tell me about your contribution.
I could then propose you to become an Affiliate. This way you could have a personal link to share with your community. At the beginning of each month, for each purchase made from this link, you will earn 10% of the product price! This means that if 10 persons purchase this pack thanks to you, it is as if you get it for free!

Plus, your tutorial will be linked or even embedded on this page, to promote your work!

(this affiliate program is pretty recent, I am writing a page for the details of my offer but don't hesitate to contact me if you are interested).

Notes

By buying this product, you are supporting my free scripting. Thanks!

Purchase

  • You are an individual and will use it for your personnal use, an educational or non-profit organization, or a compagny with less than 20 000$/years revenue.

  • You don't fit the individual license criteria.

Add to Cart
  • Great article! I’m the bass player mentioned in this article and I’m really impressed by the Reatab interface. I’m not an expert in audio software ( Actually I’m much more on Guitar Pro ) and I must admit that with this plugin I could train myself to a composition that I didn’t know and directly in Reaper project. I was very nervous about this new way to work with Extremraym, but in the end I love it!

  • Many thanks you, dude 🙂

    I’m so glad you enjoy it, from the firsts beta versions to the official release,
    and that we now have have a tool that will make our collaborative projects easier than ever !
    (Fun fact: the unusual 6 strings bass factory presets has been made especially for Yann :P)