This repository contains source code associated with EAD Bus Utility. This utility is developed for Windows operating systems.
A public release of EAD Bus Utility is hosted via Zenodo The associated paper will be linked here upon publication.
This toolset allows manual input of content type metadata, gain control over content type groups across a Reaper session, and automatic classification of content type metadata using ML methods.
Contained in this repository is:
- EAD Bus Utlity audio plugins source code.
- EAD Bus Utility Reaper extension source code.
- EAD Bus Utlity Pre-processing source code.
Additionally, EAD Bus Utility uses an executable which is created from a lightly modified copy of the python speech/music/fx previously developed by the BBC.
The audio plugin interface for EAD Bus Utility consists of two audio plugins:
- EAD Bus Control
- EAD Bus Client
These audio plugins were created using the JUCE framework.
This plugin acts as a metadata server for instances of EAD Bus Client. GUI allows gain control over audio content type groups (dialogue, soundtrack, fx), providing -48 dB of trim and flooring to -inf dB for each group. GUI also allows loading of the JSON generated by the EAD Classify Reaper extension, which assigns generated content type metadata across EAD Bus Client instances.
Only one instance of EAD Bus Control should exist in a single Reaper session. EAD Bus Control is currently hard-coded to listen on port 7211 for communication with instances of EAD Bus Client. This port should therefore be free. EAD Bus Control is transparent in terms of audio processing (handling only metadata)
This plugin acts as the client module instance for EAD Bus Control. An instance of this plugin should exist on each track containing an audio object/bed. The plugin should be placed as an insert on the channel strip.
GUI allows manual input of content type.
The plugin applies gains associated with the assigned content type group. The plugin inherits I/O size from the channel width of the host DAW.
EAD Bus Client instances will automatically bind to and listen on a free port in the range 7010-7210 to communicate with EAD Bus Control.
The Reaper extension for EAD Bus Utility was created using the Lua ReaScript API and consists of:
- EAD Classify Reaper extension, which integrates automated content type classification utlity for the EAD Bus Utility audio plugins.
- EAD Reaper Helpers: A mini-lib of helper functions associated with EAD Bus Utility.
- csv.lua, for csv file handling, sourced directly from Geoff Leyland's csv-lua module
- json.lua, for json file handling, sourced directly from the RXI Lua JSON lib
The pre-processing python script provides conversion from arbitrary wavs exported from Reaper to mono 22.5kHz wav files as specified for VGGish input. This provides an alternative to manual format conversion with SOX as recommended in the BBC Classifier python script repo. In deployment of the EAD Bus Utility this python script is deployed as an executable using pyinstaller, and is called from the EAD Classify Reaper extension.
The automated classification python script is a lightly modified verison of the python speech/music/fx previously developed by the BBC. In deployment of the EAD Bus Utility this python script is deployed as an executable using pyinstaller, and is called from the EAD Classify Reaper extension with reference to supplementary files defining the relevant VGGish model.
Note that the VGGish links provided in the BBC classifier are now depricated. The updated links are currently: https://raw.githubusercontent.com/tensorflow/models/master/research/audioset/vggish/vggish_input.py https://raw.githubusercontent.com/tensorflow/models/master/research/audioset/vggish//mel_features.py https://raw.githubusercontent.com/tensorflow/models/master/research/audioset/vggish//vggish_params.py