BrahmaVolver

Contents

1. Introduction

This is a piece of software that converts an A-format four channel recording taken with a Brahma recorder in

2. How I can use it

There are some simple steps to follow:
  1. Select the input mode on the left; if your four channel recording belongs from a Brahma digital recorder, your tracks should have been stored in two stereo files
  2. Set input files to convert; you can type directly the file(s) name(s) (press Enter after each name!), use the file browsing button, or drag files on the Input files box fields. You should provide two stereo files, the first containing Front-Left-Up/Front-Right-Down, and the second containing Back-Left-Down/Back-Right-Up channels of the A-Format.
  3. Select the output type on the upper right corner: B-format or 5.1
  4. Optionally you can setup the conversion process using the controls contained in the Process Controls boxes.
  5. Select the number of output files.
  6. Press Convolve button in the bottom right corner.

3. How it looks to me

The application layout has been designed with the input/output flux in mind: it begins at the top of the window and ends at the bottom with the Convolve button.

There is also a status bar that informs you about:

  1. the current state of the program
  2. the working sample frequency in Hz (when the filter is loaded)
  3. the filter length in samples (when the filter is loaded).

From the menu File you can Reset all the fields (recommended before every calculations) and quit the program.

4. How it works

BrahmaVolver is a four channel filtering tool: this means that it takes as input a vector which elements are the four recorded tracks and gives out another four elements vector which elements are the processed tracks.

With the filters provided you can convert A-Format recorded tracks to B-Format or 5.1.

Using some math, if x is the input vector, and h the 4 x 4 filtering matrix, the processed output y is given by:



The big issue is the computational effort requested by a convolution operation, for this reason, filtering is usually implemented in the frequency domain, where convolution become a simple product. If X, H and Y are the Fourier transforms of, respectively, input vector, filtering matrix and output vector, we have:


or, expanding the notation,

4.1 The filtering matrix

The filtering matrixes that come with the software are suitable for an A to B format conversion, but if you want to do some others elaborations, you can substitute it.

When Convolve button is pressed, BrahmaVolver searches for the file 'FilterMatrix_xxxxx.wav' in the filters subdirectory, where xxxxx is the sampling frequency in Hz detected from input files; if the filter file doesn't exist, no calculation can have place.

The format of the filtering matrix is simply a four track WAV file where the tracks are the rows of the matrix and the columns are appended one after the other

Important: each item must have the same length!

4.2 The 5.1 conversion

This step is just a math manipulation of the B-format converted tracks: this means that two calculations will have place for this conversion.

By default the Effect channel (Lfe) is empty: optionally you can fill it with lower frequencies (< 120 Hz) checking the Low Freq in Lfe box, obtaining a sort of subwoofer channel.

4.3 Double buffering

In order to manage correctly - hopefully - whatever you want input file size, a double buffering technique has been implemented; if the input files length is less than I/O buffer, it will be readed one time and processed. But, if the length exceeds the I/O buffer size, the processing will follow these steps:

  1. Read a I/O buffer size file chunk
  2. Process the readed chunk and store the results in another buffer of the same length
  3. Write the results buffer on the output file(s).
  4. Restart from step 1. until the end of input files.
It is possible to set the four channel I/O buffer size using the corresponding list box.

Note: This implementation of double buffering technique has a side effect: because the result datas are written at the end of the processing loop, it isn't possible to make an autoranging routine, so there is the concrete possibility of data clipping! A simple method to avoid it is the specification of a negative gain for B-format conversion (and 5.1 too...), that for this reason its default value is -3.0 dB.

Both the Autorange checkboxes are intended to make a better fit of the processed file, so it will be re-opened then post-processed with an autorange routine, but, obviously, if there are clipped datas, they will remain.