Editing the Default 5 Theme

The default theme for REAPER 5 has been designed to be more easily edited by you, the user. I have done this by controlling some sections of the theme's complex underlying WALTER script using a system of macros that I call 'Flow'.

Flow responds to the most common requests that I hear from users - to be able to decide the order in which interface elements are hidden when a panel is shrunk, and the size of elements - without learning WALTER. With Flow, you can do just that merely by changing a few clearly labelled numbers in a text file.

Please follow me as I show you how to edit the Flow of REAPER's most complex panel : the Track Control Panel, or 'TCP'.


Step 1 : Open the rtconfig.txt file

Everything we need is in a text file called 'rtconfig.txt'. Here's how to find and open it:

DETAILS IF YOU'RE INTERESTED : The theme comes as a '.ReaperThemeZip' file, which is nothing more than a standard .zip' file with a fancy file extension. We've changed it back to zip so we can get at its tasty innards. We've ignored the .ReaperTheme file (which controls the non-WALTER elements of the theme) and images, to get to the rtconfig.txt.


Step 2 : Find the default TCP layout

When you create a track in REAPER, the TCP is the panel that appears to the left and, unless you've changed it, the default layout is the one you get. And that's what we're going to edit.

At first glance the rtconfig is big and full of meaningless guff. Relax; its simple things repeated over and over and much of it needn't concern you. Use the search function of your text editor to find this line:

#>---------------------------- TRACK CONTROL PANELS -----------------------------------

Below that you'll see a section marked 'USER : mess with these:' ...these are the flow settings. We're going to mess with them.


Step 3 : Change the order and try it out

The first chunk of settings you'll see is this:

; order of controls (1-15)
def order_recarm    1
def order_label     2
def order_volume    3
def order_io        4
def order_pan_width 5
def order_mute      6
def order_solo      7
def order_fx        8
def order_fxbyp     9
def order_phase     10
def order_env       11
def order_recmode   12
def order_recmon    13
def order_fxin      14
def order_recinput  15

This is the order that the various parts of the interface appear in. Flow arranges the elements from the top left in numerical order, and moves them to the next line if there's not enough room when you resize the panel, like this:

In this layout, the IO button (that launches the routing window) is element 4, and the pan/width controls are element 5. Lets swap them by simply swapping their numbers:

def order_io        5
def order_pan_width 4

Save the text file and return to REAPER. Nothing will have changed, the IO button will still be in front of the pan control, because we need to tell REAPER to refresh the theme. Easiest way to do this is to swap to another theme, and then back again. Ctrl-Alt-PageUp then Ctrl-Alt-PAgeDown will do that. See it now? Great. You now know how to make changes to the Flow and check them in REAPER. Before you take a moment to re-order all the elements to how you'd like them, however, lets change some other things...


Step 4 : Change the width of an element

If you change the width of an element, the flow will adjust accordingly, like this:

Lets play with that. Skip over this section for now, it just sets the base Flow sizes:

set pad               [4 4]                 ; the padding between elements [x y]
set n_border          [8 8]                 ; nominal border around all elements
set e_size            [0 0 19 19]           ; the base element size [0 0 height width]

...to find this section:

;             element          w   h   pad glu sf
variance      order_recarm     0   0   0   0   0
variance      order_label      90  0   -4  0   0.1
variance      order_volume     0   0   -3  0   0
variance      order_io         5   0   0   0   0
variance      order_pan_width  23  0   0   0   0
variance      order_mute       0   0   0   0   0
variance      order_solo       0   0   -5  1   0
variance      order_fx         -3  0   0   0   0
variance      order_fxbyp      -7  0   -4  1   0
variance      order_phase      -4  0   0   0   0
variance      order_env        23  0   0   0   0
variance      order_recmode    16  0   0   0   0
variance      order_recmon     0   0   0   1   0
variance      order_fxin       -1  0   0   0   0
variance      order_recinput   90  0   -4  1   0

Flow always assumes that every element is a square. This section is where you tell it how much each element varies from that basic square. The first column of numbers is the variance in width, and because the theme is NOT made up of lots of squares, you'll notice I've already set some of them.

Most of the elements will only look 'correct' at the size I've set them, because they are images, but three are designed to work at varying widths : the track label, the volume control and the record input selector. Lets change the width of the track name, and just for giggles lets make it really stupid so we can really see the difference:

variance      order_label      200  0   -4  0   0.1

Now do as before : save the text file, refresh the theme in REAPER, admire the results. Then, perhaps, change the width to something a little more sensible!

EXTRA DETAILS IF YOU'RE INTERESTED : You'll notice that rather than being a fixed width, the label stretches a bit as you resize the width of the panel. This is because of the setting in the last column 'sf', which is the 'stretch factor'. Have a play with that value (between 0 and 1) if you want, or don't want, some stretching to happen.

The second column 'h' is where you can set the variance in element height. But don't; I haven't set the theme images to look good at anything other than their standard height.


Step 5 : Glue an element to the previous element

Flow always swaps an element to the next line if there isn't room for it. However, if you like you can 'glue' two elements so that they line-swap together, like this:

If you set this value to '1' on the second of the two elements, you'll get the glue behaviour.


Step 6 : Change the spacing

Flow always puts the same horizontal padding (or 'gap') in front of every element. In the third column of numbers you can vary this. Positive numbers make it bigger (in pixels) than the standard, negative numbers make it smaller, like this:


Step 7 : Other Stuff

set min_width      [196]
layout will break if panel width is less than 2 element's width. Use this to stop before that happens...

set f_align        [2]
line all the elements up, rather than staggering with the folder hierarchy ([0] no, [1] yes, [2] V4 style 2nd element stretch)

set show_vals      [0]
show value readouts for volume, pan and width

set use_area       [0]
multiply the stretch factor by the number of visible rows, to make use of the additional area ([0] no, [1] yes)

set popup_fader    [0]
draw a big fader if size permits

These Flow settings have their own descriptions. Mess with the values if you wish.


Oops! No! Undo!

Has it all gone wrong? Regret your terrible edits? Well, remember that we didn't delete the '.ReaperTheme.Zip' file. Just delete everything you extracted from it (the .ReaperTheme file and its associated folder, and that folder's content) and rename it back to '.ReaperThemeZip'.