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'.
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.
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.
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...
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.
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.
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:
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.
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'.
Done.