Contents
- Introduction
- Compilation
- System Architecture
- Development
1. Introduction
What is Virtual Sound? Currently it is just a loose collection of functions that might be useful in a sound synthesis application.
Why bother? VSound offers a clean collection of routines that are not bound to any kind of system - the aim is to make these routines as general as possible.
What is new? Nothing much right now, though I expect There is not much new right now in VSound, but as soon as the basic sound processing stuff is in there, work will begin in using linear functions and neural networks for prediction and modelling of sounds. What good is that, you might ask? Well, let us suppose you have a short, clean sample of a saxophone and you want to use it to make music with. However it is not much use applying standard DSP techniques... but the sound of the sax can be captured using a neural network and certain control inputs in the network can be used to change the characteristics of the saxophone sound.
Another feature that will be provided is the possibility to connect effects together recursively - some simple higher-level functions will be added to auto-magically create certain types of effects chains for producing particular kinds of sounds.
But all this is not very good for the user. There is no system for actually manipulating effect chains - no back-end to speak of and no front-end at all, unless you count the example VSound.c main as a front-end.
2. Compilation
The Makefile should work as it is, but check the variables BINDIR, VSOUND_DIR, LIBS_DIR and OBJS_DIR if you want things to be placed in different directories.
(> make clean)
> make depend
> make
> make VSound
The last step just compiles the example main, which is a small demonstration of the vibrating string class. See the Usage section of the example for more details.
3. System Architecture
Sample-handling is divided into two layers of abstraction:
The first layer is dealing with single-channel samples represented in floating point. All the basic effects in psr.c operate on samples of this type only. None of the basic effect functions ever copy samples.
The second layer can handle multiple-channel time-stamped samples. There are wrapper functions in the higher layer that operate on samples of this type. Functions here may copy samples before performing operations on them.
You should look at the architecture figure docs/architecture.eps to get a better idea of this.
4. Development
Certainly, VSound cannot stand on its own ground as an audio application. It occupies a very niche space and there already are other tools that are quite flexible. Well, developers of these tools could, if they find VSound interesting adapt the source to their own project, or contact me so that they can help.
I have tried to put as many comments in the code as possible. Look at the VSound example for use.
Please look at the project's home page at http://vsound.sourceforge.net if you are interested in aiding in the development of VSound or if you would like help in porting some of VSound's features into your own project.
