Giter Club home page Giter Club logo

bbcat-dsp's Introduction

Purpose

bbcat-dsp is a general purpose DSP library which forms the basis of the Audio Toolbox software and is also integrated into IP Studio

Dependencies

bbcat-base - [email protected]:aplibs/bbcat-base.git
jsoncpp - https://github.com/open-source-parsers/jsoncpp

Files

autogen.sh - simple autotools script
configure.ac - configure configuration for autotools
CMakeLists.txt - CMake configuration
COPYING - information on copying this library
debian/ - Debian control and version information
doxygen.am - Doxygen automake file
doxygen.cfg - Doxygen configuration
m4 - folder for autotools
Makefile.am - makefile for automake
README - this file
src/ - source folder containing C/C++ source and header files

src/2DConvolution.h                     | 2D convolution template

src/BiQuad.cpp                          | Biquad filter implementation
src/BiQuad.h                            |

src/BiQuadBlock.cpp                     | Block processing using biquad filters
src/BiQuadBlock.h                       |

src/BlockConvolver.cpp                  | Single-channel partitioned convolution
src/BlockConvolver.h                    |

src/CMakeLists.txt						| CMake configuration for source files

src/Convolver.cpp                       | Multi-channel parallelized convolution using BlockConvolver
src/Convolver.h                         |

src/FFT.cpp                             | FFT abstraction base
src/FFT.h                               |

src/FFT_FFTW.cpp                        | FFTW implementation

src/FFT_kiss.cpp                        | KISS FFT implementation

src/FilterManager.cpp                   | Manager class for biquad filters
src/FilterManager.h                     |

src/FractionalSample.cpp                | Fractional delay line for floating point samples
src/FractionalSample.h

src/genconversions.php                  | PHP script to GENERATE SoundFormatRawConverisons.cpp

src/Histogram.h							| Histogram template class

src/Interpolator.h                      | Simple interpolation class

src/ITU1770MultiChannelLoudness.cpp     | ITU 1770 loudness calculator
src/ITU1770MultiChannelLoudness.h       |

src/simd_utils.cpp                      | SIMD utils for FFT and convolution
src/simd_utils.h                        |

src/Makefile.am                         | Makefile for automake

src/RingBuffer.h                        | Ring buffer template

src/RunningAverage.h                    | Running average template

src/SOFA.cpp                            | SOFA file support via the netcdf-bbc libraries
src/SOFA.h                              |

src/SoundDelayBuffer.cpp                | Delay/ring audio buffer 
src/SoundDelayBuffer.h                  |

src/SoundFormatConversions.cpp          | Sound sample format conversion/transfer routines
src/SoundFormatConversions.h            |

src/SoundFormatRawConversions.cpp       | AUTO-GENERATED (by genconversions.php) implementation of efficient sound format conversions
src/SoundFormatRawConversions.h         | (.h file not auto-generated)

src/SoundMixing.cpp                     | Sound summing functions
src/SoundMixing.h                       |

src/register.cpp						| Registration function (see below)

--------------------------------------------------------------------------------
Initialising the Library (IMPORTANT!)

Compilers are clever and try to remove unused code whilst linking applications.
However, sometimes they are too clever and remove some code that *appears* not
to be used but is.  Uses of the SelfRegisteringParametricObject class may
particularly suffer from this as it appears as though nothing is using the
code.

To stop this, each library includes a register.cpp file which explicitly calls a
set of initilisation and registration functions. This file also calls the
registration functions of any libraries it is dependant upon.

For this to work, any application *must* call the registration function of most
dependant library it uses.

For example, for an application using only this library:
#include <bbcat-dsp/register.h>

using namespace bbcat;

int main(int argc, char *argv[])
{
  // ensure libraries are set up
  bbcat_register_bbcat_dsp();
}

register.cpp is included in repo but will be updated by the script
bbcat-common/findregisterfunctions.sh if autotools is used.  The CMake process
is also capable of autogenerating this file if the original in the source
directory does not exist.

--------------------------------------------------------------------------------
Building on Windows (Visual Studio)

Follow the installation instructions for bbcat-base (https://github.com/bbcrd/bbcat-base)

Use git-bash to change to the directory where the libraries are to be cloned to

Clone source code, if necessary:
git clone [email protected]:bbcrd/bbcat-dsp.git

cd bbcat-dsp
mkdir build
cd build
cmake -G "Visual Studio 14 2015 Win64" .. && cmake --build . --target INSTALL --config Release
(or whatever version of Visual Studio you are using)

Notes on Windows builds

As there is no standardised directories for cmake files, libraries, etc. the build *assumes* that:
1. Library includes, libs and shared files will be stored in c:\local\bbcat
2. CMake configuration files will be stored in c:\local\cmake
--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Building on Mac and Linux

There are two build mechanisms supported: autotools and cmake

autotools:
./autogen.sh && configure && make && sudo make install

cmake:
mkdir build ; cd build ; cmake .. && make && sudo make install
--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Building without cmake or autotools

Using the libraries with other build environments is possible, simply throw the
files into the build environment BUT certain defines must be set to enable
features.

bbcat-dsp uses the following defines:
ENABLE_JSON=1 		 - enables json support
OLD_JSON_CPP  		 - define if old version of jsoncpp (version 0.6.0, for example) used
_FILE_OFFSET_BITS=64 - enable 64-bit file operations
INSTALL_PREFIX=...   - locations of installation (e.g. /usr/local, c:/local, etc)
USE_PTHREADS         - define if using pthreads rather than std::thread
--------------------------------------------------------------------------------

bbcat-dsp's People

Contributors

richarddaybbc avatar

Watchers

James Cloos avatar Erwan Douaille avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.