During last month, I worked as a third-party developer for Mike Peaslee @Soundiron, a company which creates top quality Virtual Instruments and Sounds Packs. Their libraries have been used on a lot of well-known movies, including block busters like Avatar and Transformers and video games, for companies like Valve Blizzard… (You can read more about Soundiron clients in the Timespace.com 2012 interview Creating libraries, winning awards, and the future of Soundiron in the words of co-founder Mike Peaslee).
Editing and processing sounds is Soundiron full time job, and when you see they have some libraries with more than 12 000 audio files, like their Elysium Harp, it is easy to understand that any way to automate parts of the workflow is welcome in order to avoid repetitive time-consuming tasks.
With its scripting possibilities, REAPER is one of their DAW of choice for sound editing. Mike needed someone to take care of some scripts ideas he had. And that’s why he contacted me 😛
During one months of dev, I coded various scripts, one with GUI, other with simple user inputs, or some with none of that, for very different tasks, some simple, some very complex. I will surely publicly release most of them, in various premium packs (in didn’t make my mind yet about it but I will soon).
Here is the list:
- Envelope-based take pitch corrector – A bit like auto-tune but right on pitch envelopes
- Trim selected items right edge – units are seconds, milliseconds, grid unit, samples, frames
- Filter selected items by length — Edit: Released!
- Insert text items on track above selected items or at cursor position — Edit: Released!
- Filter selected items by max peaks or average RMS or integrated loudness — Edit: Released!
- Interpolate max peak val or average RMS or integrated loudness from first to last selected items — Edit: Released!
- Match selected items max peak or average RMS or integrated loudness to item under mouse or first selected item — Edit: Released!
- Convert selected items pitch envelope points to playrate envelope points
- Rename selected items with patterns – This one is a very advanced renamer with arbitrary number of “counters” and order of patterns. — EDIT: Released!
- Set selected items fade-in fade-out length (advanced) – multi units and various special options.
- Determine scales and notes stats for selected MIDI items – Very advanced one. — Edit: Released!
- Color selected active takes or tracks according to scale in their name or notes — Edit: Released!
- Set selected items position and order – An all in one purpose scripts with Order like Rotate, Shuffle, Mix, Invert, and other nice stuff.
The most complicated script was the Determine scales and notes stats for selected MIDI items. For that, I have to make a lot of research, reading parts of scientific thesis research about different pitch detection algorithms and their possible modifications, in order to find which one will works the best in a sample editing workflow, trying to see which were actually popular in the industry, inspecting various open source library code to see how/ there were transcribed into code, and integrating a solution for REAPER.
I will surely wrote technical details about it in a later article (or product page).
It was very challenging, and I learned a lot of things while doing these scripts and only one script request is still on hold (a really complex audio processing stuff); all the others went successful. Mike was very supportive and we maintained a nice collaboration flow thanks to a Trello board which was handy to handle parallel development of multiple scripts at the same time, and proposing different integration possibility based on Mike’s team needs and feedbacks.
Many thanks to Mike for this very nice fulfilling contract!
I leave the end work for Mike:
You’ve done fantastic work and these tools are already proving to be a big help for us! Thank you for being so fast, thorough and proactive! As the need arises for new tools, we’ll definitely be reaching out to you again. 🙂
PS: Also, many thanks to nofish who brings Loudness SWS API functions for this project for me, cfillion for providing Reapack, and for eugen2777 for its great scripts!