VT C++ Framework Homepage

What is VT C++ Framework?

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...)

Supported Compilers

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.

Operating System and Frameworks

Currently Supported OS'es

Planned/Possible OS Support

Frameworks Integration


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.

VT C++ Framework Contents

Important: not all of the listed modules are published at the moment.

Portability And Crossplatform Tools


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:

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...)

"NIH-syndrome" Containers And Abstractions

vt_arrays, vt_vectors

(...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.

Debugging and Logging Tools





Math functions and constants mostly used in DSP.

Sound and 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...)

Sound/Musical Plug-in Development

vt_parameters, vt_paramstorage

(...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.

Music and MIDI


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.

File Formats


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.

Single Instruction Multiple Data (SIMD) Acceleration Module


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.

Third-Party Library Wrappers


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.



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.


Qt Widgets


Abandoned/Obsolete Parts


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.

Closed-Source Modules

Not disclosed at the moment.