vlrFilter Project

Multifunction Audio Filter with Remote Control

Subjects:
   - 3D Positional Audio.
   - Virtual Reality Audio.
   - Fast FFT Convolution.
   - Hearing Loss Corrections.
   - Noise Reduction.
   - Beamforming Microphone Array.
   - Web Audio, WebRTC.

A project of audio communications named vlrPhone is under study and development.
For more information on this project, see at the following addresses:
   - WhmSoft
   - VoIP Apps

vlrPhone uses a high quality audio codec (compression an decompression method), entirely based on FFT (Fast Fourier Transform).
At this stage of the development, from the version 7 of the codecs, the project provides 3 utilities on Windows for testing the audio codecs (named VLC and VLR) and other features:
   - test.exe: reads an input Wave file, encodes the file, decodes the file and creates another output Wave file.
   - fshift.exe: in addition, allows to test the frequency shifts to correct the hearing losses, and the noise reduction.
   - pshift.exe: in addition, allows to test the pitch shifts to correct the hearing losses, the pitch shifts in general, and the noise reduction.

For more information on these utilities, see at the following addresses:
   - Frequency Shifting
   - Pitch Shifting
   - Noise Reduction

The vlrFilter software will resume and complete the features of these utilities, adding a dynamic control of the parameters via a remote control.
The software will be able to be launched without any parameter, or with one or more parameters. The values of the missing parameters will be read in a configuration file if they are in this file, otherwise default values will be taken.
The values of these parameters will be able to be tested and set in real time by the use of a remote control.
Note that to date, these utilities work with the VLC and VLR codecs.
These utilities also support the uncompressed PCM codecs (from the version 7, pcm8, pcm16, pcm32 and pcm48, for the 8, 16, 32 and 48 kHz sampling rates). For treatments, the FFT and inverse FFT transformations are performed on the decoder side. The vlrFilter software will also take into account the uncompressed audio data.

To date, the vlrPhone Project and the utilities use the open source PJSIP library.
For the vlrFilter project, we will use the Chromium library. The Web Audio and the WebRTC interfaces will be available with the choice of this library.
The VLC and VLR codecs will be implemented properly in the Chromium library. All the features listed here for these codecs will be available via command lines, config files or default values.
It will be possible to build custom software with APIS based on HTML5 and Javascript, or based on C/C++, directly from the modified Chromium library.

The software will support the Windows and the Linux (Raspberry PI) operating systems.
Other operating systems (iOS, Android, Mac, Chrome OS, ...) will be considered later.

The input will be mono or stereo, with various possibilities:
   - An uncompressed audio input (microphone or line).
   - An uncompressed Wave file.
   - A compressed audio input (with the VLC and VLR codecs).
   - A compressed Wave file (with the VLC and VLR codecs).

The output will be mono or stereo, with various possibilities:
   - An uncompressed audio output.
   - An uncompressed Wave file.
   - A compressed Wave file (with the VLC and VLR codecs).

The output will be connected to smartphones, to speakers, to hearing aids, to earphones or to headphones via the wires, the bluetooth or the wifi. Refer to the documentation of your system for this implementation.

The sampling rates will be given, in the order, by the input Wave file, or by the VLC or VLR codec, or during the start of the software, or by the global configuration file, or by a default value.

Optionally, the input and the output will support more than two channels (multichannel).
The GPU acceleration will be available through the Chromium library.

An infrared remote control will be supplied with a USB infrared receiver.
A radio remote control will be supplied with a USB radio receiver.
The radio remote control will include sensors (an accelerometer and a gyroscope) to more easily provide the values of certain parameters.
The angles of rotation of the radio remote control will be able to provide the values of the angles (in 3D for example). Similarly, movements up and down will be able to provide the values of the gain and the attenuation.
The LCD screen of the radio remote control will display the current functions and sub-functions as well as the the parameter values.

We will describe below the features that will support the remote controls and the interactions with the vlrFilter software.

You have to choose a function and a number representing a sub-function (keys 0 to 9).

The [+] and [-] keys are used to change the values.
The [++] and [--] keys are used to change the values faster.
The [OK] key validates the choices.
The [Cancel] key cancels all the choices since the last validation.
The [Close] key closes the software.
The [Reset] key resets the values for a function (if you choose a function and if you press [Reset]) or for a sub-function (if you choose a sub-function and if you press [Reset]).
The [V+] and [V-] are used to change the global output volume.
The [i] key shows or hides the configuration information on the computer screen.

The software must dynamically respond to all the remote control commands.


1) [3D]
For the 3D positional audio.
For more information on the 3D positional audio, see at the following address:
   - 3D Positional Audio

   - Key [1]: to change the azimuth (the angle in the horizontal plane). The azimuth varies from -180 to 180 degrees in steps of 5 degrees.
   - Key [2]: to change the elevation (the angle in the vertical plane). The elevation varies from -90 to 90 degrees in steps of 5 degrees.

The 3d audio will be available through the Chromium library.

To best customize these generic HRTF filters, especially in the horizontal plane, we add two parameters controlled by the keys [3] and [4]:
   - The ITD (Interaural Time Difference).
   - The ILD (Interaural Level Difference).

   - Key [3]: to change the value of the ITD (in microseconds) from -10000 to 10000 in steps of 100 (keys [+] or [-]) or 1000 (keys [++] or [--]). The default value for this parameter is 0 microsecond.
   - Key [4]: to change the ILD value (in dB) from -40 to 40 in steps of 0.1 (keys [+] or [-]) or 1 (keys [++] or [--]). The default value of this parameter is 0 dB.

If the sensors on the remote control are enabled, the rotation angles of the remote control will provide the azimuth and elevation values.
The movements will provide the values of the ITD and the ILD (the upward movements for the gain, the downward movements for the attenuation).

2) [Reverb]
For the reverberation effect by the fast FFT convolution.
The effect is applied to a mono or a stereo output.
The name of the Impulse Response (IR) file is given when the software starts or is read in a global configuration file.
The format (stereo Wave file) and the conditions to be met for this file are the same as for the 3D positional audio.
The keys [1] and [2] are used to control the additional gains or attenuations to apply to the output channels.

After choosing a sub-function, the parameter values can be given by the vertical movements of the sensors.


3) [IR360]
To select the multichannel surround effect by the fast FFT convolution.
The number of input channels and the number of output channels are given when the software starts or are read in a global configuration file.
The name of the Impulse Response (IR) file is given when the software starts or is read in a global configuration file.
The format (multichannel Wave file) and the conditions to be met for this file are the same as for the 3D positional audio.
The keys [1], [2], etc..., are used to control the additional gains or attenuations to apply to the output channels.

Note that when using the multichannel files compressed with the VLC and VLR codecs, there is no need to make FFT before performing the fast convolution.
There is no theoretical limit to the number of the channels. The actual limit is imposed by the hardware and the device drivers.
The sampling rate is 44 kHz or 48 kHz, the software working internally at 48 kHz.

This feature is available in option.

After choosing a sub-function, the parameter values can be given by the vertical movements of the sensors.


4) [Multi]
To select the multichannel only, without the fast FFT convolution.
The number of input channels and the number of output channels are given when the software starts or are read in a global configuration file.
The keys [1], [2], [3], ..., are used to control the additional gains or attenuations to apply to the output channels.

The [Multi] option can be used to apply a simple but efficient algorithm to a beamforming microphone array.
To activate this algorithm instead of a simple multichannel audio, you must use The subfunctions * and #:
* [1], [2], [3], ... to give the additional gains or attenuations to apply to the magnitudes.
# [1], [2], [3], ... to give the additional shifts to apply to the phases.
An intermediate output channel will be created, all output channels will have the same content than this intermediate channel.
See ILD and ITD sections for examples of value.

Notes:
Our codec can efficiently encode data from the beamforming microphone arrays, with or without pre-processing on the transmitter side (compression), and with the possibility of rapid processing on the receiver side (decompression).
The quality of the desired result (noise reduction, spatial filtering, ...) depends on the number of microphones and the most efficient algorithms use FFT.
For more information on the beamforming, see at the following address:
Beamforming

There is no theoretical limit to the number of the channels. The actual limit is imposed by the hardware and the device drivers.
The sampling rate is 44 kHz or 48 kHz, the software working internally at 48 kHz.

This feature is available in option.

After choosing a sub-function, the parameter values can be given by the vertical movements of the sensors (gain and attenuation, positive or negative phase shifts).


5) [EQ7]
For the 7-band graphic equalizer or the audiometry, left output or left ear, and right output or right ear.
The 7 standard frequencies are controlled by the keys [1] to [7].
A FIR filter is automatically generated and applied to the audio output.
The 7 standard frequencies are:
   - 125 Hz, 250 Hz, 500 Hz, 1000 Hz, 2000 Hz, 4000 Hz and 8000 Hz.

After choosing a sub-function, the parameter values can be given by the vertical movements of the sensors.


6) [EQ10]
For the 10-band graphic equalizer, left output or left ear, and right output or right ear.
The 10 standard frequencies are controlled by the keys [0] to [9].
A FIR filter is automatically generated and applied to the audio output.
The 10 standard frequencies are:
   - 32 Hz, 63 Hz, 125 Hz, 250 Hz, 500 Hz, 1000 Hz, 2000 Hz, 4000 Hz, 8000 Hz and 16000 Hz.

After choosing a sub-function, the parameter values can be given by the vertical movements of the sensors.


7) [F-Sh]
For the frequency shifting.
For more information on the frequency shifting, see at the following address:
   - Frequency Shifting

   - Key [1]: to set the value of the compression ratio between 1 and 100, in steps of 1 (Keys [+] or [-]) or 10 (keys [++] or [--]). The default value of the compression ratio is 1 (no frequency shifting).
   - Key [2]: to set the value of the compression threshold (in Hz), in steps of 10 or 100. The default value of the compression threshold is 1500 Hz.
   - Key [3]: to set the value of the shift offset (in Hz), in steps of 10 or 100. The default value of the shift offset is 0 Hz.
   - Key [4]: to set the value of the width for the composition (in Hz), in steps of 10 or 100. The default value of the width is 0 Hz (no composition).

The output assumes a single channel.
In the case of an input with several channels, one can assume that there is a beamforming microphone array and apply a specific algorithm to this output, before applying the methods of this section. Just enter the following values:
* [1], [2], [3], ... to give the additional gains or attenuations to apply to the magnitudes.
# [1], [2], [3], ... to give the additional shifts to apply to the phases.
See the [Multi] section.
The multichannel is available in option.

After choosing a sub-function, the parameter values can be given by the vertical movements of the sensors (gain and attenuation, positive or negative phase shifts).


8) [P-Sh]
For the pitch shifting.
For more information on the pitch shifting, see at the following address:
   - Pitch Shifting

   - Key [1]: to set the value of the shift ratio between -100 and 100, in steps of 1 (Keys [+] or [-]) or 10 (keys [++] or [--]). The default value of the shift ratio is 0 (no pitch shifting).
   - Key [2]: to set the value of the shift threshold (in Hz), in steps of 10 or 100. The default value of the shift threshold is 1500 Hz.
   - Key [3]: to set the value of the shift offset (in Hz), in steps of 10 or 100. The default value of the shift offset is 0 Hz.
   - Key [4]: to set the value of the width for the composition (in Hz), in steps of 10 or 100. The default value of the width is 0 Hz (no composition).

The output assumes a single channel.
In the case of an input with several channels, one can assume that there is a beamforming microphone array and apply a specific algorithm to this output, before applying the methods of this section. Just enter the following values:
* [1], [2], [3], ... to give the additional gains or attenuations to apply to the magnitudes.
# [1], [2], [3], ... to give the additional shifts to apply to the phases.
See the [Multi] section.
The multichannel is available in option.

After choosing a sub-function, the parameter values can be given by the vertical movements of the sensors (gain and attenuation, positive or negative phase shifts).


9) [G-Sh]
Special case of the pitch shift with shift threshold = 0 Hz, shift offset = 0 Hz and no composition.
This effect corresponds to a guitar pitch shifting effect.

   - Key [1]: to set the value of the shift ratio between -100 and 100, in steps of 1 (Keys [+] or [-]) or 10 (keys [++] or [--]).

The output assumes a single channel.
In the case of an input with several channels, one can assume that there is a beamforming microphone array and apply a specific algorithm to this output, before applying the methods of this section. Just enter the following values:
* [1], [2], [3], ... to give the additional gains or attenuations to apply to the magnitudes.
# [1], [2], [3], ... to give the additional shifts to apply to the phases.
See the [Multi] section.
The multichannel is available in option.

After choosing a sub-function, the parameter values can be given by the vertical movements of the sensors (gain and attenuation, positive or negative phase shifts).


10) [Noise]
For the noise reduction.
For more information on the noise reduction, see at the following address:
   - Noise Reduction

   - Key [1]: to set the value of the foreground floor (in dB) between -180 and 0, in steps of 1 (Keys [+] or [-]) or 10 (keys [++] or [--]). The default value of the foreground floor is -80 dB.
   - Key [2]: to set the value of the voiced level (in dB) between -180 and 0, in steps of 1 or 10. The default value of the voiced level is -40 dB.
   - Key [3]: to set the value of the energy ratio between 0 and 1000, in steps of 0.1 or 10. The default value of the energy ratio is 1.
   - Key [4]: to set the value of the noise gain or of the noise attenuation (in dB), between -180 and 180, in steps of 1 or 10. The default value of this parameter is 0 dB (no gain or attenuation).

The output assumes a single channel.
In the case of an input with several channels, one can assume that there is a beamforming microphone array and apply a specific algorithm to this output, before applying the methods of this section. Just enter the following values:
* [1], [2], [3], ... to give the additional gains or attenuations to apply to the magnitudes.
# [1], [2], [3], ... to give the additional shifts to apply to the phases.
See the [Multi] section.
The multichannel is available in option.

After choosing a sub-function, the parameter values can be given by the vertical movements of the sensors (gain and attenuation, positive or negative phase shifts).


11) [i1],[i2],[i3],[i4]
To display the information on the sponsors, from the level 1 to the level 4, on the computer screen.


Infrared remote control and receiver.

Radio remote control with sensors (accelerometer and gyroscope), and receiver.

Risks

The risks associated with this project are minimal, most of the features already exist. The multimedia remote controls are widely used today (XBMC Media Center, Windows Media Center, ...). We offer just a remote control adapted to our project.
There are some interesting features to develop or to finish. A slight delay is not excluded.


Rewards

This project cannot succeed without the support of interested users and sponsors.
The first funds raised will serve to complete the coding and to launch the manufacture of the remote controls and the receivers.

After the development of this crowdfunding, the vlrFilter project will continue.
Additions will be free for those who wish and who will have chosen the options.
It is planned to include in particular:
- The physiological signals.
More Information
- The sonification of the non-audio signals.
More Information
- The empirical consideration of irregular beamforming microphone arrays.
More Information


1) Software I
vlrFilter, basic version
For Windows and Linux (Raspberry PI)
September 30, 2017
5 euros

2) Software II
vlrFilter, basic version and options
For Windows and Linux (Raspberry PI)
December 31, 2017
50 euros

3) Infrared remote control and receiver
September 30, 2017
50 euros
Shipping:
USA, Canada, France: 15 euros
UE: 20 euros
Other countries: 25 euros
+vlrFilter, basic version and options

4) Radio remote control and receiver
December 31, 2017
100 euros
Shipping:
USA, Canada, France: 15 euros
UE: 20 euros
Other countries: 25 euros
+vlrFilter, basic version and options

5) Sponsor I
September 30, 2017
Name and URL of a sponsor's website.
The list of these sponsors is visible with the key [i1] on the computer screen.
Name and link in a page linked to the software web page, in the Sponsors I section.
100 euros
+vlrFilter, basic version and options
+ Infrared remote control and receiver and free shipping

6) Sponsor II
September 30, 2017
Name, logo and URL of a sponsor's website.
The list of these sponsors is visible with the key [i2] on the computer screen.
Name, logo and link in a page linked to the software web page, in the Sponsors II section.
250 euros
+vlrFilter, basic version and options
+ Infrared remote control and receiver and free shipping
+ Radio remote control and receiver and free shipping

7) Sponsor III
September 30, 2017
Name, logo and URL of a sponsor's website.
The list of these sponsors is visible with the key [i3] on the computer screen.
Name, logo and link in a page linked to the software web page, in the Sponsors III section.
500 euros
+vlrFilter, basic version and options
+ Infrared remote control and receiver and free shipping
+ Radio remote control and receiver and free shipping

8) Sponsor IV
September 30, 2017
Name, logo and URL of a sponsor's website.
The list of these sponsors is visible with the key [i4] on the computer screen.
Name, logo and link in a page linked to the software web page, in the Sponsors IV section.
1000 euros
+vlrFilter, basic version and options
+ Infrared remote control and receiver and free shipping
+ Radio remote control and receiver and free shipping



Infographics