Vellocet VS1 Manual Vellocet Virtual Synth One VS-1 manual version: a10-2-0 Vellocet http://vellocet.ii.net 21 Kanimbla Road +61 8 9380 2279 (SKoT McDonald) Nedlands +61 8 9383 2642 (Andrew Simper) Australia 6009 vs1@vellocet.ii.net This manual is a work in progress - please be patient with it! Last update: Nov 22 1999 ,----. / \ | | | OO__/ | | *``_/ | \ / \ / VS1 `----' Gerbil powered audio synthesis
VS1 (c) copyright 1999 - 2000
All rights reserved.
Vellocet Music
This manual may be freely distributed in a completely unchanged form.
|
Appendices A Glossary
|
Start...
1.1 Requirements * A Pentium class machine (or above) running Windows 95 or 98. * Either a MIDI keyboard connected to the computer or a MIDI sequencer. * A sound card. * At least 64 Mb of RAM. 128 Mb recommended. CPU: VS1 is getting hungrier and hungrier as the feature list grows - we will optimize code once the form of the synthesis engine settles down, but for the moment a Pentium 133 is probably the bare minimum. Development is primarily done on a Cel366 at the moment, which provides about 20 simple voices (no filters, no LFOs, single layer, single oscillator). Memory: VS1 has a lot of lookup tables in memory, and will happily allocate itself at least 17Mb when it starts up. It also stores all sample data in memory as well, to allow rapid changes in playback position. Windows needs about 20Mb to itself to stay happy, meaning total memory of at least 64Mb is heavily recommended. The Vellocet attitude to memory is to use as much as we need - we will not optimize memory usage at the expense of performance. And in these days of 100's Mb, who will blame us? (October 1999:) Well, memory prices have just tripled for some reason (Cartel action?), so there goes our philosophy. :( 1.2 Installation Unzip the VS1 archive file in a clean directory. Double click on the VS1.exe file to run VS1 for the first time. If you are a registered alpha tester, your version of the synth will ask for your name and serial number - you should have received an email from vellocet with both. If you have the demo version, you will simply see a splash screen. Click on 'OK' to proceed. The synth now looks for various data files, such as a bank settings file and an options file. If it cannot find them, it reports that the file wasn't found, and that it will create one when you exit VS1. This is perfectly normal. You should now be faced with the main window of VS1. Before you can use VS1, you must set the MIDI and audio ports that it will use. 1.3 Setting up audio Click on the Audio button. The Audio options editor should appear. Select an audio port. Note the buffer size and number settings - if your audio output stutters, you may need to increase the buffer size. If you have many applications running, then more buffers are sometimes needed. The latency (time-lag) introduced by increasing the number and size of your audio buffers is shown in the 'Latency' box. Some audio cards have better direct-X drivers than their 'normal' windows multimedia drivers, such as the SbLive and many consumer cards. If you have such a card, try using the direct-X audio output mode. When you are finished, click on 'Apply', then click on 'OK'. 1.4 Setting up MIDI Click on the MIDI button. The MIDI options editor should now appear. Select a MIDI In port corresponding to your input device. Click on 'OK'. 1.5 Activating the synth Finally, activate the synthesis engine by pressing the 'Power' button. VS1 should shudder into life (literally). If you press a key on your music keyboard, you should now hear the default patch setting - a rather boring sine-wave sound. Click on the 'Edit' button. Here you can start manipulating VS1's synthesis parameters for the current patch... the subject of the rest of this manual.
Components:
+-+-------------------------------------------------------------------------+-+
| | +--------------------+ +--+ +-----+ +-----+ +-----+ Power | |
| | Patch | 1 | |2 | | 5 | | 7 | | 9 | +---+ | |
| | | | +--+ +-----+ +-----+ +-----+ | | | |
| | | |[3]MIDI| 6 | | 8 | | 10 | |11 | | |
| | VS1 +--------------------+[4]Lim +-----+ +-----+ +-----+ +---+ | |
+-+-------------------------------------------------------------------------+-+
[1] Information window
Displays the current part, and the name and number of the patch currently
loaded. When you send a program change message to VS1 on the MIDI channel
corresponding to the current part, you should see the patch name and
number change (if the patch bank has been initialised - see Global options)
[2] Current part selector
Allows the user to change which of the 16 parts is currently selected for
editing.
[3] MIDI indictor light
Flashes whenever a MIDI message is received on the currently selected
MIDI-In port. (See MIDI Options button)
[4] Limiter indicator light
Flashes whenever the synthesizer's limiter is activated by output levels
that are too high. (See 'Limiter' in the glossary)
[5] Edit button
Brings up the patch editor for the currently selected part.
[6] Global options button
Brings up the Global options editor. This editor allows the user to
define a Patch bank, set various VS1 options, and activate various VS1
state monitoring windows.
[7] MIDI options button
Brings up the MIDI options editor. The user MUST select a MIDI-In port
before VS1 will respond to any MIDI messages sent by either a sequencer or
a MIDI input device (eg, a musical keyboard attached to your computer).
Various other MIDI options are set in this dialog as well, like MIDI
synchronization settings.
[8] Audio options button
Brings up the Audio options editor. The user MUST select an Audio-Out
port before VS1's responses to MIDI messages can be heard.
[9] About button
Brings up the About window, filled with cheery details about Vellocet,
how to contact us, the version number, release date, etc.
[10] Quit button
The death-to-VS1 button. By pressing this, you save your current patch
bank and system settings, but any unsaved patch edits are lost.
[11] Power button
Activates/deactivates the synth engine.
3.1 Overview [3.1] VS1 synthesis stages: 3.2 Generation 3.3 Effects processing 3.4 Mixing 3.2 GENERATION [3.2] Unit generators available: Sine Square Triangle Saw (up) Saw (down) Rectified Sine Quarter Sine Pulse Width Modulation (PWM) Compensated Pulse Width Modulation (CPWM) Exponential (up) Exponential (down) Wave There are 5 generation modes available at the moment: 3.2.1 Simple Generator (coming) 3.2.2 Generator with one FM modulator (coming) 3.2.3 Generator with two FM modulators (coming) 3.2.4 Generator with ring modulation (coming) 3.2.5 Granular synthesis What is Granular synthesis? When granular synthesis mode is selected, VS-1 plays only a small loop of the loaded wavefile; this loop is termed the grain. The grain may be moved up and down the length of the sample independantly of the sample playback rate, which allows the user to time stretch samples without a corresponding pitch shift. This is useful for getting drum loops sampled at say, 120 BPM to play back at 140 without sounding like something from a Chipmunks record. At extremely slow grain speeds, the instantaneous timbre of the sound can be heard for much greater lengths of time, and makes for fine atmospheric pads. It is possible to actually halt the grain's motion, or move the grain backwards in time (all whilst the grain loop plays away at its normal rate). Background: This is a particularly down-and-dirty method of performing granular synthesis. More elegant sounding solutions involve modelling the instantaneous spectrum of the grain (with a Fast Fourier Transform, say), and using that for resynthesis to avoid the stuttering or metallic sound VS-1 produces. Vellocet's opinion is that CPU's have better things to do, and we like the way the sound gets mangled! In later versions, FFT based synthesis will appear. Setting up granular synthesis: To use the granular synthesis mode, you must firstly have the tone generator's waveform set to WAVE, which requires you to load a wavefile first. Once that is done, you can change the layer synthesis method to Granular. A button labelled 'GrainOpts' is enabled. This activates the Granular Synthesis Options Dialog, where you can set the ranges for grain size and grain movement speeds. The actual rate at which the sample data within a grain loop is played is still determined by the key you press, but the sample playback time is determined by how quickly the grain loop moves along the sample data. 3.3 EFFECTS PROCESSING (coming) 3.3.1 Delay The delay effect options dialog has only a few controls, the function of which should be fairly obvious: 1) Active - turns the delay effect on or off. 2) PingPong - bounces the delayed signal back and forth between the hard left and hard right pan positions 3) Volume - how loud the delay effect is 4) Feedback - the strength of successive delays as a proportion of the previous delay. 5) Delay time - the time (in milliseconds) between successive delays. 3.3.2 VST plugin effects (more coming) BJ and Blue Line plugins don't work at the moment - there is something different about them we are yet to figure out - it is looking like uninitialised variables within the plugins themselves, which is something we can't fix. :( In the near future, you will be able to chain effects together, and specify signal paths between effects - rather like my trusty Alesis Quadraverb2. 3.4 MIXING [3.4] A mixer controlling the levels of each part can be activated from within the Global dialog. Note these levels are independent of the Patch Layer levels, and are applied after all generation and effects have been processed. Coming soon: Pan position controls, part VU meters. 3.4.1 The Limiter After VS1 has mixed the output from all audio channels, the mix is passed through a limiter, which is designed to prevent clipping. Any values outside the output range of an audio device are scaled down to be inside the range again. Scaling starts at about 87 percent of full output, and at first is very, very mild. As the input level increases beyond this, the magnitude of the scaling increases disproportionately, so that you should never be able to exceed your audio device's limits. This produces a faily soft, warm distortion, and shouldn't be overly noticeable. If you want to guarantee that your sounds aren't affected my the limiter, turn down the level of the patch slightly. Whenever the limiter detects the synth engine output has exceeded safe levels. the yellow limit lamp on the VS1 main panel will light up.
The synthesis parameters are values you can alter in real-time via LFOs or MIDI continuous controller messages. Parameters will not always affect the sound generated - if you change a parameter which is not being used by the current synthesis mode for that part, then no changes will result. For example, changing the grain speed when your patch is a ring-modulated sound will have no affect, since grain speed is only used in granular synthesis mode. PART PAN Always active PART LEVEL Always active MOD n DEPTH Active when modulator n is enabled MOD n RATE Active when modulator n is enabled MOD n RATE DEPTH Active when modulator n is enabled LFO n RATE Active when LFO n is enabled LFO n DEPTH Active when LFO n is enabled GRAIN SPEED Active when the synthesis mode is set to Granular. Affects the rate at which the grain position is changed. Does not affect the playback rate of the sound data within the grain. GRAIN SIZE Active when the synthesis mode is set to Granular. Adjusts the size of the grain loop. GRAIN POSITION Active when the synthesis mode is set to Granular. Sets the location of the grain loop. GRAIN START MODE Active when the synthesis mode is set to Granular. Boolean switch determining initial grain position per note. Default starting mode (0) sets the grain position to the beginning of the sample; when grain start mode is (1), all notes start from the current grain position at the time the grain start mode was changed to (1). Sort of a grain position hold function. DELAY TIME Active when the delay module of the patch is enabled. Changes the digital delay time from 1-1000ms. DELAY FEEDBACK Active when the delay module of the patch is enabled. Adjusts the degree of feedback in the delay module from 0% to 100%. DELAY LEVEL Active when the delay module of the patch is enabled. Adjusts the volume level of the delay effect. FILTER FREQUENCY Active when the filter module of the patch is enabled. Changes the cutoff frequency of the high or low pass filters, or the center frequency of the bandpass filter. FILTER RESONANCE Active when the filter module of the patch is enabled. Changes the amount of resonance at the critical frequency of the filter. High settings result in ringing, electronic-sounding filters. Low settings have a more natural sound. HOLD MODE Always active Boolean that provides the standard MIDI hold function, which when active (MIDI controller value >= 64) suspends Note-Off messages from killing active voices until released (controller value &lessthan 64). Linked to the MIDI Hold Pedal Controller by default. Many more to be documented... patience.
Designing a Patch - more coming!
Open the current part's patch editor by clicking on the EDIT button in the main
VS1 window.
A VS1 patch is composed of a number of layers, each of which acts almost as an
independent synthesizer. Therefore creating a multi-layered patch can be a bit
like creating four patches that just happen to receive the same MIDI messages.
The rest of this chapter focuses primarily on the creation of just one layer
within a patch.
5.1 Choosing a synthesis mode
In the bottom right hand corner of the Patch editor is a picture representing
the current synthesis mode. By clicking on the picture with the left mouse
button, you can change the synthesis mode for this patch. Notice how various
controls within the editor activate and disable according to which mode you
have selected.
1) Simple generator - G in a blue circle
2) Generator with one FM modulator - G in a blue cirle connected by a line to
a dark green box with an M in it.
3) Generator with two FM modulators - as above, but with 2 green boxes
4) Ring modulator - an olive box with an R in it
5) Granular synthesis - a sheaf of wheat
NOTE: If you try to select the Granular synthesis method without having a wave
file loaded first, VS1 automatically skips bak to Simple Generator mode. There
is a warning dialog option in the Global Options Dialog if you would like to be
reminded of this.
5.2 Choosing a generator
The top left corner of the Editor has a combo box with names like sin, saw, square
and so on - these are the basic wave shapes you may perform synthesis with:
1) Sine - Sine wave
2) Tri - Triangular wave
3) Square - Square wave
4) RectSin - Rectified sine wave, ie the absolute value of a sine function.
4) Saw (up) -
5) Saw (down) -
6) Quart Sq - Quarter square wave - halfway point for a PWM (see below), composed
of a quarter cycle 'up' phase, and a three-quarter cycle 'down'
phase.
7) Exp (up) - Exponential up
8) Exp (down) - Exponential down
9) PWM - Pulse Width Modulation - basically a square wave, but with the
added feature that you can assign an LFO or CC to control the
relative width of the 'up' phase versus the 'down' phase of the
wave.
10) CPWM - Compensated Pulse Width Modulation - like a normal PWM, but the
integral of a CPWM is zero - meaning the thinner phase of the wave
has a greater amplitude, and the wider phase a reduced amplitude.
This difference is mainly of use for LFOs, when you want the LFOed
parameter to stay centered.
11) Wave - User supplied wave data - ie a .WAV file. (Other formats soon)
5.3 Adding effects
5.4 Linking MIDI controllers to synthesis parameters
Open the Controller Map dialog in the Patch Editor by clicking on the button
labelled 'Controllers'. You will see two lists. The left list shows all the
MIDI controller messages, and in brackets, their current message assignment.
The right box shows all the mappable synthesizer parameters. To link a controller
to a parameter, simply click on the controller you want, and then click on the
synth parameter it should control.
Remember not all synthesizer parameters are active - it is no use mapping a
controller to grain position if you aren't using the granular synthesis mode.
5.5 Linking LFOs to synthesis parameters
Very similar to the controller maps: click on the LFO you want, then click the
synthesis parameter it should control. The amount and rate knobs control how
much the LFOs affect a parameter, and at what frequency. The rates vary between
0 and 20 Hz logarithmically.
You must then specify which of the layers the LFO will affect by clicking on the
associated layer light.
5.5.1 MIDI-synched LFOs
If you want to synchronize an LFO to incoming MIDI clock messages, then click
on the 'Sync' button. This then enables a text box labelled 'clocks'. The
number of clocks you enter determines the time taken for the LFO to go through
one cycle. The MIDI standard defines a crochet (one beat) to be 24 MIDI clocks,
so if you wanted an LFO to go through the values zero to one in a linear fashion
every 4/4 bar, you would specify a SAW-UP LFO wave pattern, with a MIDI-synced
cycle time of 96 clocks (4 x 24). This could be used, say, to synchronise the
playback position of a drum-loop sample played in granular-synthesis mode loop
so that it was always in time with your song, even when you change the tempo!
Very useful, we think...
5.6 The Envelope Editor
The graphical envelope editors are currently used for Amplitude, Pitch and
Filter Frequency. Click on any of the three envelope editor button in the Patch
Editor to start editing an envelope. You will see a jagged red line connecting
small blue boxes. The white boxes mark the position of envelope control points,
which can be moved with the mouse whilst holding down the left mouse button.
SHIFT + left mouse button darg = Control points only move vertically.
CTRL + left mouse button drag = Control points only move horizontally.
The red line indicates the overall shape of the envelope. New control points
can be created by double clicking with the left mouse button. Control points
can be removed by single clicks of the right mouse button. Note: The second last
control point has a special function: its value is held constant until a MIDI
note-off message is received. The envelope then starts moving to the final
control point. Amplitude envelopes should always have a final value of zero to
prevent popping and clicks!
Loops may be defined by activating the loop control. Part of the envelope now
appears in yellow, bounded by left and right margin lines. The start point
may be selected by using the '+' and '-' buttons marked 'Loop start'. The loop
ends at the Release start point.
5.7 The Wave Mapper
If you want a realistic wavetable patch, or a drumkit, you want to be able
to map several wave files to different parts of your keyboard. This is what
the wave mapper is here to help you do.
To load a wavefile: left double-click on one of the available wave-file
slots listed on the left side of the main display.
To delete a wavefile: right click on one of the loaded wave-files.
To set a key range for a wave: Hold the left mouse button down and
drag the mouse along the keyboard graphic at the top of the window, or use
the upper and lower value boxes to specify the highest and
lowest keys in the range you want. A red line will appear on the main display
indicating the keyboard range.
If the line appears grey, that means you have set the upper boundary BELOW
the lower boundary - hopefully this is only a temporary situation whilst
you are moving both boundaries! No mapping will occur if the range boundaries
are left in this invalid state, and hence no sound will be heard when you
press a key.
To set a loop range for a wave: Hold the left mouse button down and
drag along the waveform graphic, or use the loop start/stop value boxes to
set the loop boundary positions.
The pitch of every wave may be changed independently.
Loop: toggles looping mode on/off. The wave display indicates the
loop start and end points with a vertical
BiDir: toggles bi-directional looping mode on/off.
Auto key div: (Automatic keyboard range based sample division)
This is a (hopefully) nifty function that alters the
playback start position of your wave based on which key in the wave's
range you press. For example, if you have mapped a one-bar 4/4 drumloop
over 16 keys, each key will now start playback at one of the 1/16th note
positions. We thought this was handy, and much quicker, and less messy,
than having to use another program to chop it up for you.
The wave display will indicate the division points with light grey vertical
lines.
Pitch invar: stands for Pitch Invariant. All keys play back the
wave at the same rate. The Auto Key Div function activates Pitch invariance
automatically.
6.1 Designing a bank of patches (coming) 6.2 Setting default directories (coming) 6.3 Other global options (coming) 6.4 Output volume
[To be added to lots!]
| A | Amplitude | How loud a sound is (see level), or the magnitude of a function. |
| B | ||
| C | CC | MIDI Continuous Controller |
| D | ||
| E | Envelope | A value in the range [0,1] that changes with time, continuously describing a contour specified by a number of control points. Each control point has a value, and a time required to reach that value. Typically envelopes are used to impose a temporal struture on a parameter, such as Amplitude. |
| F | ||
| G | ||
| H | ||
| I | ||
| J | ||
| K | ||
| L | LFO | Low Frequency Oscillator - a slowly changing, time-dependent value often used to change parameters such as the pitch of a layer, providing enough change in your patch to keep the listener interested in your sound. |
| M | ||
| N | ||
| O | ||
| P | Part Patch |
The input from each MIDI channel is
linked to one of 16 parts within VS1. Each Part is a
mini-synthesizer, with its own patch settings. A collection of settings describing an instrument. VS1's patches are made up of 4 Layers, each of which is a separate synthesis module, but linked to the one patch to create richer and more interesting timbres. |
| Q | ||
| R | ||
| S | ||
| T | Timbre | The 'colour' of the sound. A more complicated concept than the mere spectral composition, since timbre encompasses spectral changes with time. |
| U | Unit Generator | |
| V | Voice | The smallest unit of synthesis - when starting a note, VS1 creates new voices, one for each Layer in the current Patch. A voice is thus the real-time implementation of a Layer. When the note ends, its associated voices are removed from the generation table. |
| W | ||
| X | ||
| Y | ||
| Z |
End.
AUDIO PROBLEMS
Problem: The output is jerky or stuttering
Cause 1: VS1 can't get the processing power it needs.
- Close any other applications that might be using a lot of the CPU.
- Increase the size of VS1's audio buffers and/or the number of audio
buffers (Try size first)
- Decrease the complexity of your patches
- Decrease the number of parts you are simultaneously running.
- Don't move the mouse so much (We've noticed some mice chew up almost
all the CPU power power available when moved!)
- Buy a grander and more expensive computer! (sigh, it never ends...)
Cause 2: Sound card drivers of questionable quality.
- You might need to use Direct-X mode
- Increase VS1's audio buffer size.
Cause 3: Other applications competing for CPU time
- Increase the number of audio buffers to give VS1 more time to
generate sound. This will also increase the latency of VS1, so
you will need to adjust the MIDI delay in your sequencer, if
possible, to maintain synchronisation.
Cause 4: DirectX has incorrectly reported the buffer play position.
- Sometimes DX can send sound buffer updates out of order when the CPU is
overloaded, leading to all kinds of crunchy sounds ever after. To reset
your direct-X device, simply turn the synthesizer's power button off and
on, and you should have smooth output again.
C.1 Knob Left mouse button behaviour: Knob value is changed according to the VECTOR location of the mouse, ie after clicking and holding down the left mouse button, as the mouse moves about the screen the notch remains pointed at the mouse Right mouse button behaviour: Knob value is changed according to the vertical, or Y, position of the mouse. Mouse wheel behaviour: Forward spin movement increases the knob value, backward spin decreases the value. This behaviour is only active if the control has the current input focus. To give the knob input focus, simply click on it with the left mouse button The Left/Right mouse behaviour may be swapped by going to the Global settings dialog and clicking on the checkbox labelled 'Swap knob behaviour' Appearance: As you change the knob from the minimum to the maximum setting, the central colour spot will change smoothly from blue through green to red. This is to help the user quickly assess the state of many knobs at a glance, rather than having to look carefully for notch graphics. If the knob is disabled, the center colour is gray. C.2 ValueBox Left mouse button behaviour: Clicking and dragging up or down changes the value at a rate proportional to tyhe vertical distance from the control. (coarse) Right mouse button behaviour: Clicking and dragging up or down changes the value in a manner similar to a slider. (fine) Mouse wheel behaviour: None yet. Left mouse double click behaviour: An edit box appears, allowing you to type in a value using the keyboard. Appearance: A dark green box with bright blue/green numerals. If disabled, the box is dark gray with light gray numerals. C.3 CheckBox Left mouse button behaviour: Clicking changes the value on/off. Right mouse button behaviour: None Mouse wheel behaviour: None Appearance: A virtual LED - bright red if 'ON', dark red if 'OFF'. If disabled, the lamp appears dark gray. C.4 Dialog Window Left mouse button behaviour: Holding the button down and dragging the mouse will drag the window araound the screen. If the dialog window detects another dialog window closely above it when you stop dragging, it will form a group with that window. Dragging the top window in a group drags all grouped windows around the screen, allowing you to rapidly organise your VS1 workspace. Right mouse button behaviour: Clicking on the title bar will minimize the window to a small floating titlebar. Some windows have hidden features found by clicking with the right mouse button... :) ///////////////////////////////////////////////////////////////////////////////