This is a collection of tips that have been discovered by Scott, RJH and Lucky since they've been making RPL files for the community. These files provide presets in Reaper's native format, which is often more accessible than the custom preset browsers currently found in plug-ins and software instruments. The idea behind providing an RPL file is that one person can do the initial grunt-work of hacking their way through the inaccessible preset browser of the plug-in or instrument, and re-save the factory presets in a more accessible format so that everyone in the community can benefit from those. *rjh, are there possible cases where FXB, FXP or VPreset would be beneficial? */ Typical tricks for that initial scavenge are to use OCR, sometimes trigger presets via MIDI program changes, or procure a spot of sighted assistance to click through the inaccessible bits. *rjh, we might elaborate on various procedure and possible tools for that later on. */ Follow these 3 steps to adopt what has become our in-house style for community resources: 1. "Virgin" Preset The first thing we do when starting a new RPL is save a preset with the plug-in in its default state. We call this first preset "0 Default Settings", explicitly Starting the preset name with 0 so that users can always return to default settings in a single keystroke, even with Reaper's strict first letter navigation in its Presets combo box. *rjh, I have some libraries that start with a 0 folder, e.g. UJam that put often introductory or duplicated presets from other folders into this one. They could be newly numbered but it wouldn't mirror the original structure. */ 2. Traversing and Saving Presets Now use whichever method you've found to start stepping through the presets of the plug-in in chronological order, resaving each one using the "Save preset" option found in the context menu when you hit the "Preset menu" button in Reaper's FX window. Note that RPL format doesn't support folders, so here are some tips on how we tend to create the ilusion of those in the community resources. Often, plug-ins will provide an easy way to reference the folder structure being presented in its inaccessible preset browser somewhere in a supporting directory, such as Documents\Vendor\Plug-in\Presets to take a commonly used path. If such a reference is available, then we add dummy place-holder presets in situ as we're resaving. To do that, we hit 0 in the Presets combo box to reset the plug-in to its default state, then re-save those settings with a new preset name that reflects the folder, prepending a number or symbol to provide easy first letter navigation. Examples: "1 Rooms (FOLDER)" for a main category "- Small Rooms (SUBFOLDER)" for a sub category. *rjh, it would be more natural to numerate subfolders with e.g. 1.1. If all subfolders have a minus sign in front, you will eventually leave the main folder without noticing it, i.e. you land in the subfolder below folder 2 and alike. */ Note: the reason we typically reset to default state for each of these dummy navigation presets is so that users can jump through our fake folder structure quickly to their desired place in the list of presets we're providing without the plug-in updating settings on the fly. This step is only necessary because scrolling Reaper's Presets combo box from the keyboard is kinda messed up and can be laggy with resource intensive plug-ins. *rjh, changing presets can be time intensive, hence Scott's proposal. I prefer the folder to be the same preset as the first entry so that I have a preview of what to expect in the folder while playback is running. Reaper version 6.37+ allows for saving only knob (that is parameter) positions (to be enabled in preferences). this might in some cases be worthwhile to investigate, especially for plug-ins that produce those very large presets, that are sometimes more than 10 times the size of the original presets. 3. Publishing Once all presets have been resaved in Reaper's native format, export the RPL file using the "Export preset library (.rpl)" option, which is found in the context menu when you hit the "Preset Menu" button in the FX window. Place the resulting file into the community Dropbox in a relevant place, update the News.txt file in the root of the Dropbox, and maybe put a shout out on one of the community channels for good measure. If you don't have edit privs for the Dropbox yet but you do have something to contribute, email scottchesworth@gmail.com. From here on in, we're going to provide some tips on editing an RPL file manually. This is useful when you can't or don't want to save fake categories in situ and would prefer to insert them afterward. Note that it's a fragile format, so you'll need to be careful to preserve indentation while editing the code. Please make time to test any RPL files that you've edited by hand before uploading them into the community. A buggy RPL can take the entire DAW down, and nobody likes a crash mid-flow, yo. Ok, here come the tricks: A: Open the exported RPL file in a code editor. Scott and RJH like NotePad++, but any clean editor will do). B: Move to the second line of the file. You'll find that this is the start of the preset you saved with the plug-in in its default state all the way back in the previous set of tips (before you embarked upon this heady mission to reorganize by-hand, you crazy diamond). The code will look something like this: Again, note the level of indentation matches the start of the preset. C: Now for some trickery specific to Notepad++, with humongous thanks going to RJH for these productivity tips. RJH writes: We now fold the text so that the data is hidden and we can deal with only too lines per preset. - Change the language from normal to e.g. Python so that the indentation works as block layer. - Press alt+2 to collapse to the second layer. It should look like this: Now, you can select the presets more easily and move them around, duplicate entries and rename them (to create a category header). Other useful commands for reorganizing the presets in Notepad++: Shift+Up/Down to select lines Control+L to delete lines Control+D to duplicate the selection Control+Shift+Up/Down to move the selection around Alt+Shift+2 will expand the layer again. Don't forget to switch back to normal text and to save under a new name. And lastly, some tips on where Reaper stores presets, in case you need to hose what you've got for testing changes: In your Reaper resource path, go to the Presets folder. IN there, you'll find an ini file for each VST or VST3 plug-in, prepended by the plug-in type and a Dash symbol. Deleting or renaming the ini file pertaining to the plug-in you're working on then restarting Reaper to flush its cache will get you back to a clean ground zero for that plug-in. * rjh, needs no restart. Renaming to *ini.old might be safer */ Last update: 6th Oct 2021 by Scott and Robert (rjh) Appendix for nerds The three apparitions of a preset: I have as an example a preset file from UJAM chosen: 1. The original "C:\ProgramData\uJAM\VD-BRUTE\Presets\00 Introduction\Andman And The Flea.patch" which is initially (almost) human readable Its size is 2.93 KB Start quote {"dsp_settings":[{"index":0,"key":"amount","value":0.38333338499069214},{"index":1,"key":"character","value":0.8,"valueName":" Bounce"},{"index":2,"key":"crash","value":0.5000152587890625},{"index":3,"key":"feel","value":0.5},{"index":4,"key":"hihat","v (Ellipsis) alue":0.375},{"inde"key":"swing","value":0},{"index":50,"key":"toms","value":0.6458485722541809},{"index":51,"key":"volume"," End quote In other words, it is in JSON format. 2. The Reaper Preset Library (*.rpl) Size: 6.95 KB (7,119 bytes) (If inn preferences/compatability, "Disable saving full plug-in state" is checkd, the size goes slightly down to 5.83 KB) The content looks like this: Start quote > End of quote Now, the obscure code inbetween t<> can be translated back with e.g. the help of the NVDA Python console. import base64 data =b' code comes here' base64.decodebytes(data) The result looks like this: Start Quote b'RBDV\xee^\xed\xfe\x00\x00\x00\x00\x12\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x04\x00\x0 (ellipsis) \x10\x00{"general_program_information":{"category":"Presets","a uthor":" ","bank":"Factory","name":"Andman And The Flea","is_edited":true},"dsp_settings":[{"index":0,"key":"amount","value":0.38333338499069214},{"index":1,"key":"character","v (skipping some lines) Flea"},{"index":75,"key":"swing","value":0},{"index":76,"key":"toms","value":0.6458485722541809},{"index":77,"key":"volume","v alue":0.631147563457489}],"additionalState":{"midiAssignments":[{"cc":7,"path":"Scripts/1/Volume"}]},"stateInfos":{"numStyles" :31},"uiStates":{}}\x00Ampman and the flee V1\x00\x10\x00\x00\x00' End Quote Reaper added some additional info, such as the time stamp. 3. The Plugin initialisation file (*.ini) Size: 9.89 KB (10,135 bytes) It looks like this: Start quote [General] NbPresets=1 [Preset0] Data=52424456EE5EEDFE0000000012000000010000000000000002000000000000000400000000000000080000000000000010000000000000002000000 (skipping a lot of lines) 010000000DD Len=5024 Name=Ampman and the flee V1 End quote It is basically the same data but now written in hex digits, that is, the '\x00' is translated to 00. To get the readable form back, you would use the binascii module from Python. I hope this demystifies things a bit. /rjh/