C3 Automation Tools (CAT)
Do you ever find yourself not wanting to do reductions because they're tedious and long? Do you skip drums animations because you don't know what to do with them? Do you look at those blindingly polished C3 charts and lust after those perfectly trimmed sustains, spot on lyrics capitalization and superbly positioned animation markers? Well, things are about to get interesting...
We know that some authoring operations are incredibly tedious and time consuming (boy do we know that...), and in some cases prevent authors from cranking out more songs. For this reason we started working on a project that helps both new and experienced authors with these tasks. This project can cut down authoring times by literally hours per song in areas like reductions, animations, and testing. The C3 Automation Tools (CAT) can help you do things like automatic reductions (with chord translation) for all instruments, create animations for all instruments, fix sustain durations that violate RB standards, simplify double kick hits, fix lyrics capitalization, automatically create phrase markers from lyrics, and much much more.
Before you run off to try the program, here's a simple FAQ for the project...
What is it?
It's a collection of commands to automate a number of operations. Some of these commands work "blind" (meaning you don't need to edit anything to achieve the desired effect), and some of them will require attention afterwards but will greatly simplify the task in question.
Some examples of CAT functions (which can be run individually or in large "supersets"):
- One-click reduction from sixteenth notes to eighth notes, eighth notes to quarter notes, etc. for 5-lane instruments
- Automatic, semi-intelligent reduction of gem colors from full GRYBO (Expert/Hard) to the Rock Band specs for Medium and Easy (GRYB or GRY with occasional O and B gems)
- One-click generation of [play]/[idle]/etc. markers for all instruments
- Automatic fixing of sustain lengths on all difficulties as per Rock Band specifications
- Removal of kick gems from a 2x Bass Pedal song to make a "1x Bass" song in a single click
- Automatic addition of #, ^, or $ (talkies and lyric hiders) to selected lyrics
- Automatically remove Magma-breaking MIDI markers from imported Internet MIDIs
- Literally dozens more time-saving functions
Who is it for?
This is for any author of Rock Band custom songs, regardless of their degree of commitment to their songs.
Stop right there! How time saving are we talking about here?
Let's take the Fix Sustains command: in one click everything is trimmed down to proper RBN rules length. No more stubby notes, no more overlapping sustains, etc. Drums animations: the way CAT produces those is better than autoanimations in Magma and account for triplets, two handed rolls, etc. Vocals functions like applying talkies and hiding notes to a group of notes makes these operation one click actions. The auto phrase marker creator basically is two click: one for the phrases, one for the OD. Complex harmonies clearly will take editing for overlapping phrases. Most of the commands are click-and-go. Things like reductions do need work, because reductions are complicated business, but even so the autoreductions provide a one-click solid base.
Does it work right out of the box?
It should. However, keep in mind that these are sophisticated scripts, Reaper programming language is easily breakable and there are countless scenarios for each author working on songs with unique features. Also, we're still working on perfecting a number of features. For that reason, this is still in beta: we are collecting feedback to improve CAT and to make it as stable as possible (see submitting feedback a few paragraphs down.)
How automatic and effective is it?
All the commands do what they're supposed to do, but it's up to the author to use them wisely and not blanket-apply commands to cut corners. The more complex a song is (1/32nd triplets, 1/16th upbeats, syncopated betas, etc.), the more CAT will work as an aid. The less complex the song is, the more CAT will work autonomously. To be clear: do not expect CAT to perfectly do reductions for a 20+ minute Dream Theater song without touching a thing, that's simply impossible, unfortunately. Also, it may be useful to work in reverse...
Working in reverse?
Some commands may actually change more than you need. That doesn't mean they're not the command you want: for example, if a command trims all sustains and there's a few you don't need trimmed, you can apply the command, have 99% of the notes done right, and then go back to fix the few instances that weren't supposed to be changed.
Is this for experienced coders/Reaper users only?
You don't need to know anything about Reaper scripting to use these commands. Some of them, like auto animation markers, auto drums animations, and the auto reduction superset, are actually perfect for people who are NOT yet very familiar with Reaper.
How safe is it?
All commands have been thoroughly tested, we've been working literally on hundreds of songs. Always check the results and always save your project before running CAT commands, especially supersets, because Reaper can sometimes crash if you have open two projects or you just closed a second tab. Also, make sure you donâ€™t deselect a MIDI track between selecting the notes you want to change and actually launching a command. For example, if you want to fix sustains for guitar in a given section, select those notes and immediately launch the command. If you select the notes in the MIDI editor, then click on the main Reaper window and select a different track, even without opening it, the script will apply the changes to the new track instead.
What do I need?
- Reaper 4.x
- Python (2.x) (Python 3.x will sometimes work, but all code has been tailored for 2.x)
- C3 Template: It's essential that tracks are correctly named in Reaper (PART DRUMS, HARM1, EVENTS, etc.). Our template takes care of that. CAT will not work if you change name of the tracks.
- An end event set in the EVENTS track in the proper place. We suggest tempo mapping the song and then immediately placing the end event. Not having an end event in the proper place will make some commands work only on notes before the last tempo change node.
Do I need to change my authoring habits?
No, provided that you:
- Use our templates (See "What do I need?")
- Draw pro marker notes one per note and not one to cover a number of notes (for kick removal commands)
- Slightly change how you author lyrics if you want CAT to automatically generate phrase markers for you (see the manual for more info, you just need to add @ to the beginning of each phrase)
I know how to code, may I be of help?
You can help even if you don't know how to code! We encourage feedback and suggestions, but with the following disclaimer. This tool tries to emulate the natural authoring process, but recreating human decisions with code is very hard. Odds are good that we have considered the thing you want to suggest, tried to implement it, and it didn't work out, so we omitted it or went with something else. For that reason, if you see something you believe can be made better and, this is extremely important, you know enough about authoring and general automation concepts to suggest something in a meaningful way (many skilled people worked on this project, if you think "this command is dumb", chances are you haven't thought it through), please submit your tips.
Who's in charge of this project?
Farottone worked on most of the project with the help of all admins. All technical questions about the project should be directed to him.
CAT WILL break broken chords on keys/pro keys, so please do not run the Fix sustains command on those instruments. Sorry but broken chord are impossibly hard to manage code-wise.
^ READ THIS BEFORE DOING ANYTHING WITH THESE TOOLS
^ OPTIONAL READING
If you encounter a problem with CAT, post in this thread or submit a bug report ALWAYS attaching the RPP file in the state it is when you get the error. Before posting or reporting a bug, check the following common issues:
- Did you install Python correctly? If not, CAT will not load at all
- Are you using Reaper 3.x and Python 2.x? If not, CAT may fail (ask in this thread about options for Reaper 4)
- Does your project have tracks with special characters in their name? If so, CAT will fail
- Did you use the C3 template to create your project? If not, CAT may fail
- Does your project have a tempo map? If not, CAT may fail
- Can you run CARV? If not, you have an issue with Reaper and/or Python, not CAT
- Did the command window close after you launch the command? If so, the command has operated correctly, make sure you understand the advertised effect before submitting a ticket
- Have you downloaded the latest version of CAT?
- Does your Reaper project have a BPM marker at M1.1.00? If not, add one and try again
- Do you have an [end] marker in the EVENTS track and is it in the correct place? If not, commands may fail or work poorly
- Do your project folder or any of your audio tracks have special characters in it? If so, Reaper throws a tantrum, just rename those items
- Does your exported MIDI compile in Magma? Anything breaking Magma will likely break CAT too, so if your authoring is not up to compiling standards, CAT will probably fail.
I (farottone) coded these scripts using CARV for inspiration on how to load MIDI tracks, the rest is a fight with the very lackluster ReaScript documentation and the aweful Python support that Reaper offers. Thanks A TON to pksage and Nemo. pksage cracked in like 20 minutes the text encoding that kept me busy and scratching my head for days. For that reason we can edit any text event, lyrics included. He also did all the screenshots for the docs and a number of other things: he never gets enough credit for all the backend work he does. Nemo helped me every single day when I was trying to make sense of MIDI format, tempo mapping, etc. Also, thanks espher for suggesting a good chunk of vocals commands that now make my fixing sessions a breeze.