VT Framework is a collection of C++ stuff for:
At the moment, the framework is 100% written by me, Sergey A. Galin. The contact information can be found here.
The set started as a collection of thoughts pieces of home-grown code I wrote before 2006. ...
(...To write a lot...)
I test and use the code with MS Visual Studio 2005 and GCC 3.x, 4.x. It was also used in Borland C++ Builder some time ago but I'm not sure that the compatibility was not broken since then. By the way, there's no warranty whatsoever that all code in a certain snapshot can be successfully compiled using a certain C++ compiler but due to the nature of the library any incompatibilites should be easy to fix.
VT
includes a number Qt-specific controls
and other classes, preliminary support for localizing LC()
messages via
Qt's translations system, support of signals in some VT
classes (which is
enabled by QT_CORE_LIB
macro) and "transparent"
QString
<=> VT::CString
conversion.VT::CString
is compatible with STL containers.
VT::CException
is based on std::exception
. That's all for now.VT
enables some Boost-based stuff if USE_BOOST
macro is defined. At the moment all of these are internal improvements only.VT C++ Framework, Copyright© Sergey A. Galin, 2005-2009
Most of the published modules are provided under terms of Boost Software License 1.0.
Some other modules are available under LGPL 3.0.
Please see the source code files for more information.
Important: not all of the listed modules are published at the moment.
This is "root" part of the framework. It defines all configuration
macros and basic data types and includes all headers required for that.
It contains macros for C library functions (which are named
differently in GCC and MSC and in MSC differently in UNICODE
and Multi-Byte builds).
It also contains definitions of
char
<=> VTCHAR
conversion
functions, some C string functions which are badly implemented in certain
run-times and portable access to program's command line arguments.
VT::CException
and its descendants. Unlike other VT
classes, this class is always inherited from STL's std::exception
so the exceptions can always be caught as std::exception
.
It solves the following shortcomings of std::exception
:
std::exception
in some compilers).VTCHAR
string.char
or as VTCHAR
string
regardless of how it was set (via char
or
VTCHAR
string).The file also contains definitions of some VT::CException
descendants for throwing in standard error situations.
(...To write a lot...)
Cross-platform threads and critical sections (thread locks). Windows version directly uses Win32 API, *NIX version is based on POSIX threads (pthreads) library.
A collection of functions to work with files and directories and obtain various system directory paths.
(...To write a lot...)
(...To write a lot...)
(...To write a lot...)
Note: VT::CString
is compatible with STL and Qt containers.
File and directory abstraction. Includes implementations for
disk files (C I/O based), in-memory files and disk directories.
All VT
code which uses file I/O does that through this
abstraction layer.
Math functions and constants mostly used in DSP.
Audio frame template and functions to convert various sample and channel formats and resampling.
In-memory audio with PCM WAV and raw import/export and position pointer.
Functions to calculate Finite Impulse Response filters and misc windowing functions. Includes low-pass, high-pass, arbitrary frequency response filter; combining and inverting filters.
An array of FIR filters with varying phase.
Shared FIR filters. Currently includes "singletones" for polyphase low-pass Sinc filters (which are used most frequently).
Definition of Infinite Impulse Response (IIR) filter classes and calculations of some common IIR filters: low-pass, high-pass, notch, selective.
VT::CVector
-based circular buffers used for convolution
(mainly for SIMD-accelerated Sinc interpolation).
This module provides a number of resampling algorithms including nearest neighbour, linear interpolation and Sinc interpolation (SIMD-accelerated).
Resampling or changing sound playback speed on-the-fly (for real-time applications).
This module implements Triangular Dithering and Noise Shaping. Dithering is basically an algorithm which eliminates audible artifacts when converting sound from high-resolution sampling format to low resolution. For instance from 32-bit float to 16-bit integer. It is a must have for any application which does floating-point sound calculations and outputs integer samples to sound files and/or sound card.
(...To write a lot...)
(...To write a lot...)
(...To write a lot...)
(...To write a lot...)
Some additional components for VST GUI.
Contains a calculator used in logarithmic equalizer UI.
Has two namespaces: VT::MIDI
and VT::Notes
containing all types, constants and functions we ever needed for MIDI messages,
GM (General MIDI) and GM2 and musical notes.
A library for reading and writing RIFF format files. RIFF is a container format popularized by Microsoft. It is used in WAV, AVI and many other file formats. The library contains a number of "high-level" RIFF-parsing structures like: WAV file chunks, ACID file information (reverse-engineered), markers...
A class for reading and writing "INI" files. It is fully cross-platform and supports UTF-8 encoding which makes INI files movable between operating systems.
A simple CSV (comma-separated values) file parser. CSV is a great format to import spreadsheets created in Excel or OpenOffice.org Calc into your program.
A set of specialized templates which implement SSE / SSE2 accelerated operations over arrays of data, providing increase of program performance from 1.3x to 6x times (3x typically, for 32-bit floats) using specific features available in modern microprocessors. It is currently oriented to floating-point based DSP processing; integer functions can be added later if will ever become necessary.
This module has a separate readme file which is to be added here later.
Microprocessor (CPU) identification.
A project to build static or dynamic library from vt_simd, to use it with compilers which don't support SIMD.
A wrapper for Crypto++ library with support for easy hashing and encryption using most popular algorithms like SHA1 and AES.
The Crypto++ library is freely available under BSD-style license.
A library to convert binary data into ASCII text (BASE64-encoding) and vice versa. It is at the moment a b64 library wrapper.
The b64 library is freely available under BSD-style license.
http://sourceforge.net/projects/base64/
zlib is a popular open compression format. The wrapper greatly simplifies in-memory compressing and decompressing of data.
The zlib library is freely available under BSD-style license.
LAME mp3 Encoder wrapper.
LAME is freely available under BSD-style license (mp3 encoding part).
libmpg123 wrapper.
The libmpg123 library is freely available under BSD-style license.
(TO ADD)
Intended to be a collection of classes which hold resources like icons and bitmaps in memory and share them between different consumers.
Old set of macros for log-based debugging. Abandoned long ago.
Not disclosed at the moment.