The "HVFormant" is an Virtual Analog Synth, The analog working principles of this subtracktive synthesiser are simulated by an computer. Although it is verry difficult if not impossible to simulate the real warmth and liveness of an true analog synth the computer can add functionality that is almost impossible to realise in the electronic analog world. The computer sience involded in making a computer simulated synthesiser is called Digital Signal Processing or DSP and involves a lot of mathmatis. I'ts not the goal of this document to explain everything about Digital Signal Processing it's more to give you a global understanding of how the earlier explained analog principles are implemented on a computer.
Sample rate and bit depth
Everybody know's that a CD player runs at 44.1 kHz, 16 bits. It means that a CD player reads 44100 numbers of 16 bits (32768 combinations) per second. These numbers are deliverd to a so called DA (digital to analog) convertor where they are transfered into an analog volt signal that can be listned to trough headphones or speakers. The numbers are called samples and the rate at which they are read, the sampling rate. The Bit depth of the CD player is 16 bits.
The DA, Digital to Analog covertor in your computer is part of your soundcard. It can handle different sample rates and bit depths. Modern soundcards offen use 24 bits (the acuracy of the DA convertor) and a selection of sample rates e.g. 44.1kHz, 48Khz, 96Khz. Within the "HVFormant" all calculation are done at sampling rate with an bit depth of 32. If you increase the sample rate of your soundcard from 48 to 96kHz computer power needed to perform al the calculations is doubled!!
Floating point numbers
The "HVFormant" works with 32 bit depth numbers in two different formats. The signed integer format represents a number between 2147483648 and 2147483648 and is used for the normal computer work. For the Digital Signal Processing this number is not suitable because it can not represent fractional numbers needed in the mathmatics. The DSP part uses floating point numbers. Floating point number can be verry small and accurate e.g. 3.141592653 or verry big e.g. 567756277.6 the point can float within the number.
The VCO in the digital domain
The base frequency of an analog VCO is determined by its controll voltage (CV), 1 volt per octave. Within the digital version the frequency is determined by a floating point number between 0 and 1. If a sampling rate of 44kHz is used the frequency of the oscillator can range form 0 to 22kHz, 1 being half sampling rate. The resulting wave form has an amplitude between 1 and +1. With an Sampling rate of 44Khz the "HVFormant" can calculate a maximum of 44000 samples or in this case waveform amplitudes per second. If we use frequency = 1, 22kHz, the maximum and want to generate a sinus waveform, you can see that only 2 different values can be generated these wil be 1 and 1 being a square wave of 22kHz. This is of cause not correct and illustrates the problem with computers. With a computer we can only simulate or aproximate the analog domain. Luckily the human ear can not hear frequency's higher than +/ 20khz and since the ground frequency of a 22kHz square wave is a sinus of 22kHz, we can (almost) not hear the difference.
