boing vsti
bo.wed str.ing waveguide model
by xoxos
(rurik leffanta)
www.xoxos.net
www.atomictraveller.com
contents:
acknowledgement
introduction
retention of harmonics
about tuned delays
use
model parameters
modulation parameters
notes and links
acknowledgement:
development was greatly assisted by information presented by julius o. smith III at his center for computer research in music and acoustics website at stanford university. i believe this same technology was licensed to korg for the production of the prophecy and z1 synthesizers.
please note i am not krog or yahama or starfond. i believe equal representation in society requires equal means of expression, but i don't have the knowledge or resources to equal these developers at this time.
julius, thank you!
boing was created at the request of tolga uz.
introduction:
boing is a simple waveguide model of a bowed string. waveguide synthesis uses delays and other signal processing techniques arranged to emulate the paths of vibration within physical instruments.

there are three sections: the string, which changes length in accordance with the played pitch, the bridge, and the body of the instrument, which i call the resonator.
each waveguide consists of two delays: one to model vibrations travelling in each direction. since the string is divided at the junction of bow and string, boing uses eight delays in total. note that the resonator paths return to the center and are thus twice the length to avoid using ten delays.
the bow-string junction compares the motion of the bow and the motion of the vibrating string and uses the friederlander-keller transform to create vibrations travelling away from the bow.

when the difference between the two velocities isn't too different, the bow and string are considered to be 'sticking together,' and the bow drags the string. at a greater differential, they slip and there is less transference of force from the bow to the string.
i believe a simplified version of this transform is more commonly used. here you get the real thing! :)
that's basically all it is.. the delays have feedback and low pass filtering controls, and i have added the simple bridge and resonator paths to add some tonal flexibility.
although this is a very simple schematic, real acoustic instruments are generally shaped to emphasise these basic paths of transmission, and other products similarly employ them.
retention of harmonics:
the most significant performance feature of the digital delay vs. a physical instrument is the retention of energy. boing is a much simpler system than a real bowed string. using a high feedback setting can pleasingly emphasize tonal characteristics, but is unrealistic when parameters are changed.
high bowing velocity, force and other settings can create harmonic 'folds' in the output waveform, resulting in the higher harmonics reminiscent of similar performance with an acoustic instrument. damping/energy dispersion in the waveguide model is achieved by filtering and as a function of delay interpolation, which naturally 'smooths' the waveform.
when bowing force is decreased in a real bowed instrument, energy rapidly dissipates. the dispersion in boing does not eliminate high harmonics from the fundamental delay cycle as rapidly due to the simplified system.
this means that it is difficult to play a note with boing that decreases in energy realistically. automating feedback and low pass settings may help.

left: low velocity
right: high velocity - same fundamental cycle has multiple peaks
about tuned delays:
a common issue with tuned delays occurs when the pitch (delay length) is changed. this is heard as a ping or click at the beginning of the new note that is more discernible at transitions to lower pitches.

a solution when sequencing the vsti is to use two instances and alternate the notes between them. this technique is commonly used internally in waveguide modeling, and of course results in twice the cpu at note transitions.
another solution for developers is to use two read pointers for the delay buffers, one at the old pitch and one at the new. a short crossfade is then employed.
since boing uses 4 interpolated delays for the string/pitch, this would result in twice as many interpolation calculations and pointers, which again significantly increases cpu. since cpu use is still an issue for many vsti users, i have left it up to the user to use the first method if required.
another possible solution is to modulate feedback and damping settings during significant pitch transitions.
use:
patches will sound different at different host sample rates. the size of the resonator and bridge will need to be adjusted.. this saves cpu :)
it is most important to realise that boing is not a violin inside your computer. it is a simple series of computations. for best results, play it like a series of computations.
both real and virtual instruments present the user with a system that requires a range of performance adjustments to produce the desired tone. of course, they are significantly different systems.
i cannot promise that boing will meet all your bowed string expectations. understanding how it functions should help you to get the most out of boing.
a real bowed string will produce a note with the slightest agitation, however when the applied 'force' is too low in boing, it produces a sound like the bow bouncing off the string.
i tapped the circuit for as many tone-modifying parameters as usefully possible. when one parameter is adjusted, the others generally fall into a different useful range. it is necessary to carefully explore the combined effect of the parameter settings before they are adjusted during a performance. many combinations will not produce a signal.
my suggestion is to first find the lowest 'force' setting that will produce a note across the entire range of notes you intend to play.
hth!
model parameters:
bow velocity, force, position, grip:
these should be self-explanatory. these parameters work in conjunction, and create different effects. low position setting is towards the bridge and usually sounds like a smaller instrument. grip can be thought of as rosin amount.
string impedance:
impedance is the force of the string to remain in place.. a lower setting models a thinner, more flexible or lighter string.
bridge length:
again, this is a mathematical abstraction. fwiw, the highest setting would indicate a bridge a couple of feet high.
resonator length, ratio:
the highest setting is probably about a dozen feet long at 44.1kHz host rate. length sets the length of the resonator from the bridge to the instrument base, ratio sets the length of the upper section as a ratio of the lower, from 1/2 to 2 times. transference between the two delays uses a kelly-lochbaum scattering junction. both delays are tapped at two points to create a fuller signal.
feed, lpf:
these are standard feedback and low pass filters applied to the delay paths. notation is as follows:
s - string
br - bridge
r - resonator (instrument body)
amp hpf, body, global:
all output is summed and passed through a 6db high pass filter module created by chris kerry.
note that if bridge feed is set at zero, there is no transmission into the body!
it is not always desirable to set global amplification above zero. this applies the waveguide string output directly to the output. because the model begins oscillation at a certain threshold (mentioned above) if you wish to play a note with a soft attack, set the global setting to low level and assign an envelope to amplification. this is demonstrated in the presets.
poly:
legato, mono, polyphonic (6 voice) output.
glide:
portamento. read the section 'about tuned delays' above - low settings can help to smooth transitions between notes without being noticeable.
oct:
-1, 0, or +1 octave.
modulation parameters:
you can probably skip this section.
two assignable modulators are available, which include internal routings (eg. key track) as well as external controllers. the first includes cc#80 and the second cc#81.. these selections are in the upper range of cc numbers for hosts that use 64 and below for other functions. 'inv' means invert.
the lfo (again developed by chris kerry) uses either a sine or noise waveform. the noise waveform is useful for 'organic' modulation in the lower rate settings.
note! vibrato is applied to string low pass filter cutoff, not pitch. pitch calculations are very cpu intensive in boing!
the envelopes are again standard. v> indicates velocity assignable to rate and envelope amount. increased velocity lowers envelope rate.
the graphic envelope was developed by chris kerry (see below.) i have selected some features of the 5 stage envelope for use here.
the best way to familiarise yourself with the graphic envelope is to use it :) your host may not display the envelope readout until you start your host. it will communicate all functions of the envelope.
sustain selects which stage to hold once it is reached until the key is released. each stage has a height and a time coefficient. the shape buttons page through various contours.
a global rate setting provides facile modulation of everall envelope speed without adjusting each stage.
notes and links:
boing is named similarly to pling (PL-ucked str-ING,) which is perhaps the more onomonopoetic.
BOING would not have happened without:
(1) jeff mcclintock, creator of synthedit
synthedit is a modular environment that changed the world by facilitating vst publishing. time has proven synthedit vst to be competitive with 'hard-coded' vst. thanks for understanding that people are articulate and creative regardless of their economy.
you can download synthedit and share your synthesizers and effects with the world for free.
http://www.synthedit.com
(2) chris kerry
chris develops modules for use with synthedit. these modules are generally coded in asm, which means they are fast! try the pitchshifter vst i have on my website for an example of the quality. after jeff, he is the best thing that ever happened to audio freeware.
at the present time, his modules are commercially available.
http://www.chriskerry.f9.co.uk
(3) freeware devs
people have told me that free vst will not change the world. shows what they know. synergists, contributors, philanthropists. thank you for understanding what music means, thank you for understanding what economic iniquity implies. thank you for your vision and direction.
tolga informs me that dev is turkish for giant.
(4) tolga uz aka tuz
the voice of the dolphin.
(5) jdg
"it's just a website."
(6) kvr, kvrists and freeware users
(7) me
this isn't about music.
(8) the residents of ala moana park
and of course, julius o. smith 3