VT C++ Framework Homepage

What is VT C++ Framework?

VT Framework is a collection of C++ stuff for:

Author

At the moment, the framework is 100% written by me, Sergey A. Galin. The contact information can be found here.

History

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

Licensing

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

vt_portable

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_exceptions

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.

vt_messageboxes

(...To write a lot...)

vt_threading

Cross-platform threads and critical sections (thread locks). Windows version directly uses Win32 API, *NIX version is based on POSIX threads (pthreads) library.

vt_fileutils

A collection of functions to work with files and directories and obtain various system directory paths.

vt_localization

(...To write a lot...)

"NIH-syndrome" Containers And Abstractions

vt_arrays, vt_vectors

(...To write a lot...)

vt_string

(...To write a lot...)

Note: VT::CString is compatible with STL and Qt containers.

vt_file

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

vt_assert

vt_log

Math

vt_audiomath

Math functions and constants mostly used in DSP.

Sound and DSP

vt_audiotypes

Audio frame template and functions to convert various sample and channel formats and resampling.

vt_rawaudio

In-memory audio with PCM WAV and raw import/export and position pointer.

vt_firs

Functions to calculate Finite Impulse Response filters and misc windowing functions. Includes low-pass, high-pass, arbitrary frequency response filter; combining and inverting filters.

vt_fir_polyphase

An array of FIR filters with varying phase.

vt_fir_pools

Shared FIR filters. Currently includes "singletones" for polyphase low-pass Sinc filters (which are used most frequently).

vt_iirs

Definition of Infinite Impulse Response (IIR) filter classes and calculations of some common IIR filters: low-pass, high-pass, notch, selective.

vt_buffers

VT::CVector-based circular buffers used for convolution (mainly for SIMD-accelerated Sinc interpolation).

vt_resampling

This module provides a number of resampling algorithms including nearest neighbour, linear interpolation and Sinc interpolation (SIMD-accelerated).

vt_rtaudiospeedchanger

Resampling or changing sound playback speed on-the-fly (for real-time applications).

vt_dithering

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.

vt_meter

(...To write a lot...)

Sound/Musical Plug-in Development

vt_parameters, vt_paramstorage

(...To write a lot...)

vt_vst

(...To write a lot...)

vt_vstaddons

(...To write a lot...)

vt_vstguiaddons

Some additional components for VST GUI.

vt_eqgraphic

Contains a calculator used in logarithmic equalizer UI.

Music and MIDI

vt_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

vt_riff

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

vt_inifile

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.

vt_csv

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

vt_simd

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.

vt_cpu

Microprocessor (CPU) identification.

LibVTSIMD

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

vt_crypto

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.

http://www.cryptopp.com

vt_base64

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/

vt_zlib

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.

http://www.zlib.net/

vt_mp3encode

LAME mp3 Encoder wrapper.

LAME is freely available under BSD-style license (mp3 encoding part).

http://lame.sourceforge.net/

vt_mp3decode

libmpg123 wrapper.

The libmpg123 library is freely available under BSD-style license.

http://www.mpg123.de/

Qt Widgets

(TO ADD)

Abandoned/Obsolete Parts

vt_resourceloaders

Intended to be a collection of classes which hold resources like icons and bitmaps in memory and share them between different consumers.

vt_debug

Old set of macros for log-based debugging. Abandoned long ago.

Closed-Source Modules

Not disclosed at the moment.

Downloads