This tool is used to set up and manage a Reaper project for the purpose of streamlining the importing, mixing, and exporting of large amounts of sound files. It is primarily used for clean up, pre-mixing before implementation, or when implementation does not provide adequate tooling for mixing and the mix needs to be baked into the sound files themselves.
The MIDIMixingTool is built to allow you to mix any number of sound files by triggering them using a MIDI keyboard. This removes the need to manually import, reposition, and sequence sound files in the project. By triggering everything using MIDI, you can easily simulate the soundscape of gameplay.
Each sound file is given its own track. You can add whatever processing you want per track and therefore per sound file. Note that you can also manually folderize tracks to organize them, BUT the tool only supports one level of folderization for its helper functions. If you want to process multiple tracks with the same processing, use routing to busses instead of folders.
To run the tool in Reaper, go to Actions > Show action list... and find MIDIMixingTool.lua. If the script is now present, you need to add it by selecting New Action > Load Script...
Several tool sections are available on the user interface:
Import: For importing sound files and automatic set up
Export: Helpers for streamlining Export Strategies (see below)
Helpers: General helpers for interacting with the project or making batch changes
MIDI Generation: For creating a Global MIDI Bus and generating MIDI for automatic playback
The Import section allows you to import any number of sound files. Each imported sound file will be assigned to a it's own track with a sampler and a MIDI note for triggering. MIDI is assigned chromatically ascending. The sound file is also added to the track muted for use when exporting later. Do not move these auto-placed media items.
MIDI Range Bottom - The MIDI note to assign that starts the range. Wrapping when the number of imported files exceeds the MIDI range will return to this value.
MIDI Range Top - The highest MIDI note to assign before wrapping back to the bottom.
Auto Arm Import Tracks - Automatically arm new tracks to receive MIDI input.
The buttons provided here are used to assist the Export Strategies (see below) that let you batch export all your files with your mix changes.
Toggle Note Names - Toggles the assigned note names on the tracks. The note names are added as visual aids, but when exporting using the track names they need to be removed so exported files maintain the same file name.
Select Child Tracks - When selecting a folder track, selects all child tracks. Helpful when Exporting With Tails.
Select Child Media Items - When selecting a folder track, selects all child media items. Helpful when Exporting Without Tails.
Arm Child Tracks - When selecting a folder track, arms all child tracks to receive MIDI input.
Disarm Child Tracks - When selecting a folder track, disarms all child tracks so they don't receive MIDI input.
Reassign MIDI Notes - Reassigns the MIDI of selected tracks or child tracks of a folder as if they were being reimported as a set. Note that MIDI assignment obeys folderization. This means unfolderized tracks will be assigned using the same running sequence and each set of folderized tracks will have its own unique running sequence.
Set Selection Obey Note-Offs - Setting obey note-offs on means a sampler will stop playing the sound file when the MIDI key is released. This is especially helpful for long sound files that you don't want to play for the full length every time you trigger them (ie. ambiances).
Set Selection Loop - Setting loop on means a sampler will loop the sound file. This also automatically turns obey note-offs on as well.
Set Selection Max Concurrent Voices - By default, each sampler only allows one instance of the sound file to play and will stop and restart when retriggering the same MIDI note. If you want your sound triggers to be able to overlap, you can set the value to greater than 1.
The MIDI Generation section provides programatic ways of generating MIDI for testing or sharing the current progress of your mix. It also provides an easy way to create a Global MIDI Bus that will broadcast MIDI on one track to all other tracks.
To generate MIDI, create an empty MIDI item first and then select it. Depending on your generation settings, the length of the MIDI item may be considered in the generation (if Timing = Random).
Refresh Global MIDI Bus - If a track named "Global MIDI Bus" does not already exist in the project, one is created. The bus is then automatically configured to send MIDI to all currently existing tracks. If more tracks are added, simply click this button to set up MIDI sends to all tracks again.
Generation Bottom Note - The lowest MIDI note that will be generated.
Generation Top Note - The highest MIDI note that will be generated
Note Order - The vertical order of generated MIDI notes. Random means notes will appear in any order. Sequential means that notes will apear from lowest to highest with respect to time.
Timing - Random means any time within the MIDI item is considered valid and all MIDI will be generated within the boundaries of the MIDI item. Interval means all MIDI notes will be spaced exactly the same distance from each other by the Interval Min value (and the MIDI item will be extended if it is too short). Range means each MIDI note will be spaced at a random distance between the Interval Min and Interval Max from its neighbors.
If the files you want to export are not processed in any way that produces tails (ie. reverb), then you can export the files with your mix applied using these settings:
Select all media items you wish to export and make sure they are unmuted.
In the Render settings:
Source = Selected media items / Via master
File name = $item
Tracks with only mono media to mono files = TRUE (if you don't have processing meant to make mono files stereo, this option lets you keep the Channels setting to stereo and still be able to export mono files in one pass)
Render (export)
If the files you want to export are being processed in a way that produces tails (ie. reverb), then you can export the files with your mix and automatic tail detection using these settings:
Unmute all media items for the tracks you want to export (these were automatically added to the tracks by the MIDIMixingTool when importing)
Select all tracks you wish to export (if you don't want the MIDI notes in the exported file names, use the MIDIMixingTool Export helper to toggle them off).
In the Render settings:
Source = Selected tracks (stems) / Via master / Time Selection
File name = $track
Tracks with only mono media to mono files = TRUE (if you don't have processing meant to make mono files stereo, this option lets you keep the Channels setting to stereo and still be able to export mono files in one pass)
Postprocess... = TRUE (it's on the right side of Resample mode and may be named differently if you have items already selected in it)
Inside Postprocess, Trim trailing silence threshhold (peak) = TRUE (set the dB value to how quiet you want Reaper to detect for trimming the file)
Inside Postprocess, Fade-out = TRUE (set a small value just to make sure the trim will have a guaranteed fade to silence)
Inside Postprocess below Fade-out set Fade-out is inside trimmed content
Next, highlight the time selection that encompasses the beginning of the project (where all the media items should be automatically aligned since importing) to where you estimate the longest tail of all your selected sounds will have dissipated. To help decrease the render time, we set the render settings to Time Selection because Reaper is going to render that span of time for each file and then use our trim settings to trim that render to where the audio signal falls below the trimming threshhold.
Render (export)