Last updated:

Better Subtitling with SWS v2.6.0 and Custom EEL Scripts

X-Raym Reaper GitHub
This articles is dedicated to REAPER v4 and is, since August 2015 v5 release, considered as obsolete. For a more modern workflow please refer to this article :

REAPER v5, Text Items and Scripts: Subtitling, Faster Than Ever! / ExtremRaym

Until now, subtitling with REAPER, with the help of the famous community-made SWS extensions, could leave you some doubts. It was both extremely efficient for defining timecodes, and frustrating because some basic functions were missing. Worst, certain things were a bit buggy, and we also have to use external softwares.

Forget all of this, REAPER just came in a new era.

Sure, we have to keep in mind that REAPER is a software dedicated to sound treatment, not subtitling, the idea is not to make advanced text related tasks on your subtitles. However, as you could already noticed in the precedent article, REAPER, with the SWS extensions , is able to make our subtitling life easier, with a great comfort.

Content

SWS 2.6.0 #0

The SWS extensions v2.6.0 #0 have a bug fixed, and functions enhancements… that I initiated !

Fixed new lines added in subtitles when saving the project

Since subtitling became available for REAPER, there was a small bug that occurred on every projects with subtitles we saved. Yes, all of them ! And it just has been fixed !

The problem was : a line was inserted on every subtitle. The kind of thing that could broke every subtitling workflows.

So, I report the problem and fortunately, it has been corrected (thanks to the person who did it !). You can now make your subtitles as nothing happened.

Import SubRip file: name regions with subtitles content

The big advantage of open source projects such as the SWS extensions, is that if you want to add or modify a function, you just have to code it, and propose it ! One of the thing I wanted to modify was the way the regions were named when we imported a subtitles file. Remember, I wanted the regions to be named with the dialog lines.

Well, it was not easy, I had to learn the C++ basis for the occasion. I never had coded at such low level, it required a lot of work, even for tiny things such as finding how to add a function in the project ! The good news was that I found what function I wanted to modify among the thousands of the files… there was hope.

Fortunately, two friends of mine accepted to help me on that. Without them, I would have been completely lost.

First there was Matthieu, who helped me to understand how the file was structured, and who put some code to allow the modification of the function.

Then, it is up to Lorine, who succeeded to format the subtitles into region names !

And then, it worked ! The regions were well named after importing a SRT file.

Once again, thanks both of you for this little success !

Sadly, we were not credited on the changelog for that, I guess the function has been rewritten to match the project technical constrain (not a lot of persons are explicitly credited in the changelog anyway). It is not bad, we have encourage the SWS masters to work on that, and they did it well !

Added “Wrap text” option in the context menu

This is a small option, that you can access via right clicking on the note windows, which will allow you to break the lines of text that are too long for the windows. Nice ! EDIT : it seems broken for now. Be patient !

Custom EEL Scripts

There is an other and simpler solution to add actions into REAPER. We can write a script, which could be directly interpreted into REAPER, in order to make some customs functions. Scripts cannot replace extensions for complex tasks, but for small actions, it is perfect. And the available scripting languages for REAPER are far more easier to read than C++ !

In order to know more about ReaScripts, you can have a look to this article : Learn ReaScript for REAPER.

It is spk77 who showed me the way, when we elaborated actions about REAPER Scripts : Take Properties Randomization / ExtremRaym. It inspired me, and I decided to learn EEL. I had some actions ideas that could really help during a subtitling workflow. And it works, because the feature requests I made about that… became reality ! 🙂 (I had also noticed some other non intuitive behavior, but they can be overcome with this actions).

The scripts are available on my GitHub account and will be updated if necessary. For simplicity, I advice you to download my whole folder, rather than downloading file after file. Go, it’s free!

[Download not found]

To load a script in REAPER, open the action window and click on ReaScript => Load.

Below, I will show you custom actions I wrote about subtitling. You can find more infos about some scripts on the REAPER forum (links are provided).

Functions – console debug messages

This script is used by the other scripts in order to display messages in the REAPER console, in order to debug the scripts or for display informations. It doesn’t add any action into REAPER, but it is indispensable.

console
Infos in the console.

Forum REAPER Thread : EEL : Console debug messages

Add italic markup to current region name

This action wraps a region name between markups that will make it displayed in italic in a video player. I have to admit, this is not my more advanced script, but well, I had to started small !

addItalicToRegions
Italic text is often use for the narrator voice.

Add musical notes to current region name

This action wraps the current region name bewteen two musical notes. It is often use for people who can’t hear, to symbolize that music is playing in the scene.

addMusicalNotesToRegions
Two small notes on the region name.

Create regions from selected takes and from track name

This is an overpowered version of SWS:Created regions from selected items (name by active take), with color management from the track or the take, and the possibility to add the track name as prefix to the region name.

There is two user inputs to allow different behaviors within one single action.

Forum REAPER Thread : EEL : Create regions from selected takes and from track name

Create subtitles from regions names

This script is for the upcoming REAPER v5. It allows us to create automatically regions subtitles from regions. Before that, it would needed a Macros software. But, we had to edit the project file in source mode to make it works, because there is no other way, at this point, to have the right formating for regions subtitles with the current functions in the API. I made a video to explain how to do it.

EDIT (17/02/2015): I just made v4 friendly version of this. You can find it here: X-Raym_Create subtitles from regions names – console version.eel at master

Forum REAPER Thread : EEL: Create subtitles from regions names

Merge consecutive regions as dialog lines

Merge two adjacents regions and format the resulting name as dialog lines.

merge regions dialog
Instructions are displayed in the console.

Forum REAPER Thread : EEL : Merge consecutive regions as dialog lines

Merge consecutive regions with same name

This action will allow you to merge regions with same name. You will have to execute it several times, until the console tell you it is over. You can edit the script if you want to change the threshold which defines what is consecutive.

mergeConsecutiveRegionSameName
Used with the action that creates regions from items, it can really help.

Forum REAPER Thread : EEL : Merge overlapping regions with same name

Merge overlapping regions with same name

This is basically the same action as the one above but with no threshold.

Forum REAPER Thread : EEL : Merge overlapping regions with same name

Merge region under cursor and the next one_v2

merge region two by two
This is how to edit threshold.

Forum REAPER Thread : EEL : Merge region under cursor and the next one

Snap all regions to grid

This script could help you a lot to have professional timecoded subtitles if you sync it with frame rate chosen accordingly to your video frame rate.

snapRegionsToGrid
This action could be very useful with regions generated from objects.

Forum REAPER Thread : EEL : Snap regions to grid

Split region under cursor

This action let you split a region in two.

splitRegions
Split the current region with the edit cursor !

Forum REAPER Thread : EEL : Split regions under cursor

Conclusion

As you can see, all this actions and scripts will be very useful in our subtitling workflow !

You will see in an other articles how to subtitle an entire piece without transcript, but only with elements inside your project !

If you have any suggestion, bug report, feature request, or if you just want to say thank you, don’t hesitate, every participation is welcomed !