Unit Generators and V.I.s Patches are configurations of V.I.s Both Patches & Virtual Instruments can be broken down into separate components called Unit Generators
Unit Generators Have input parameters Have at least one output Perform a function: °modification of a signal °combination of signals
ATTACK TIME DECAY TIME AMP DUR FREQ 1FREQ 2AMP MULTIPLIER
Oscillators AMPFREQ PHASE
Oscillators Can be driven by an algorithm in real time Computers have, until recently, been too slow to deal with this whilst providing the user with the capabilities they require So most virtual oscillators use a waveform that is pre-stored in a wavetable
Wavetables The value of many uniformly placed points on one cycle of a waveform are calculated These points are stored in a wavetable
Wavetables A pictorial representation of a wavetable; really it’s just a table of numbers
Wavetables The oscillator will retrieve values from the wavetable to produce the wave The position we are at along the wave is known as the phase
Phase The phase of the wave is it’s position in the wave cycle Normally measured in degrees (0 ) or radians Here it is measured in sample points Phase (Φ) of 0 is the first sample
Phase So if the wavetable has 512 sample points And the phase is 180 What sample point are we at?
Phase of 180
Periodic Waves We only store one cycle of the wave because the wave is ‘periodic’ This means it repeats forever
Wrap Around So if we talk about a given phase Φ 1 Φ 1 = 515 The sample point (Φ) we are looking for in our wavetable is: Φ = Φ 1 – 512 = 3
Digital Waves & Sampling Frequency Sound waves held digitally are cut up into small pieces (or samples) The number of samples they are cut into affects the smoothness of the wave CD sampling frequency = 44,100 samps/sec
Wave Playback Playing back the wave in the wavetable will produce a sound of a particular frequency Before the wave is played back it must be calculated and then stored The number of samples used to store each second of the waveform is known as the sampling frequency, f s
Wave Playback When the wave is played back it is played back at the same sampling frequency, f s It is possible to figure out the frequency of the wave stored by performing a calculation
Calculating the Frequency of the Wave Held in the Wavetable f s / N = f 0 samples per second / samples per cycle = cycles per second (seconds/samples) / (cycles/samples) = (seconds/cycles)
f s / N = f 0 44,100/512 = Hz Calculating the Frequency of the Wave Held in the Wavetable
Sampling Increment (S.I.) We don’t just want 86.13Hz We want any frequency we want So we use a Sampling Increment
Sampling Increment (S.I.) The sampling increment is the amount added to the current phase location before the next sample is retrieved and played back By altering the S.I. we can use the wavetable to create waves of different frequencies
Sampling Increment (S.I.) Playing back the wave at 86.13Hz means playing it back as it is This means adding 1 to each phase location before retrieving the next sample and playing it back This happens 44,100 times a second, and produces cycles each second (because there are 512 samples per cycle)
Sampling Increment (S.I.) f s / N * S.I. = f 0 44,100 / 512 * 1 = Hz
Increasing Playback Frequency Increasing the S.I. decreases the number of samples played back So the speed of the wave playback is increased, as is the frequency of the wave produced
S.I. = 2 f s / N * S.I. = f 0 44,100 / 512 * 2 = Hz
Rearrange the Equation f s / N * S.I. = f 0 S.I. = N * f 0 / f s
Playback Wave at 250 Hz S.I. = N * f 0 / f s S.I. = 512 * 250 / 44,100 = 2.902
Table Look-Up Noise We only have 512 samples in our wavetable The points we have samples for may not line up with the points at which we wish to obtain samples The S.I. is but (going from 0) we only have samples at 2 & 3
Dealing With Real Numbers The samples we want to grab don’t exist! Options: °truncate: becomes 2 °round: becomes 3 °or interpolate...
Interpolation is used as the S.I. so take a value at the initial phase (say 3) add to the initial phase = to get the place to take the next value add to this to get the place to take the next value = and so on
Interpolation we don’t have values at these points so we calculate estimated values using the nearest samples (this is interpolation) * * 0.7, or 90.2% of % of =
Interpolation Occurs for every sampling increment, so 44,100 times per second Uses a LOT of processing power The interpolation process still requires us to round numbers up or down, and so still produces error
Table Look-Up Noise So rounding is required whatever, and that produces error This error is known as table look-up noise This error affects signal to noise ratio (S.N.R.)
S.N.R. Affects the ratio achievable between quiet and loud sounds. Dodge (1997): Ignoring the quantisation noise contributed by data converters a 512 entry table would produce tones no worse than 43, 49, and 96 dB SNR for truncation, rounding and interpolation respectively. And a 1024 entry table would produce tones no worse than 109 dB SNR for an interpolating oscillator.”
A Sine Wave time, t 0T/2T3T/ v(t)
A Sawtooth Wave 0T2T time, t v(t)
A Square Wave 0T/2T3T/ time, t v(t)
A Triangle Wave 0T2T time, t v(t)