Stuck with a SynthEdit project?

Author: Stephen (Page 14 of 20)

The TD range of Synthesizer filters.

These filters are all suitable for use as a Voltage Controlled Filter (VCF) in synthesizers, and as such can have their cutoff and resonance frequencies modulated rapidly.
Notes: It should be taken as read that all these filters have their control voltage internally limited to +10 Volts, and that they operate within the normalizer SynthEdit audio voltage range. Some may have the audio internally clipped so will distort at high input levels.

Ladder Filters.

TD_DiodeLP24_A
Type: 24dB per Octave frequency roll-off diode ladder lowpass filter type A
Notes: A simplified 4 pole diode-ladder lowpass filter with a single symmetrical non-linearity. Partial passband gain-loss compensation. Diode-ladder filters are unbuffered which leads to the cutoff frequency being a product of cutoff amount, input level and resonance.

TD_DiodeLP24_B
Type: 24dB per Octave frequency roll-off diode ladder Lowpass Filter Type B
Notes: A 4 pole diode-ladder lowpass filter, the first pole is an octave higher, with an additional unbuffered high pass filter in the feedback path that partially damps the resonance at low cut-off frequencies.
An extra buffered high pass filter is on the input too. So it is more like a 5 pole + 1 pole filter. The filter cutoff slope is not a constant vs frequency. There are asymmetrical non-linearities, and partial passband gain-loss compensation. Diode-ladder filters are unbuffered which lead to the cutoff frequency being a product of cutoff amount, input level and resonance. Because of the first pole being an octave higher, maximum cutoff is 9.5 Octaves (~9.95kHz) if the sample rate is equal or less than 48kHz, 10.5 octaves (~19.9kHz) otherwise.

TD_DiodeLP24_C (EMS VCS3 Emulation)
Type: 24dB per Octave frequency roll-off diode ladder Lowpass Filter Type C
Notes: A 4 pole diode-ladder lowpass filter inspired by the paper “Efficient polynomial implementation of the EMS VCS3 filter” by Stefano Zambon and Federico Fontana. However it uses ‘Mystan’s Pivot’ method to approximate the non-linearities instead, which in this case are asymmetrical. Full passband gain-loss compensation. Diode-ladder filters are unbuffered which lead to the cutoff frequency being a product of cutoff amount, input level and resonance.

TD_Ladder5out_HP
Type: Linear 4 pole High pass filter with five outputs
Note: This module is useful as the basis for pole-mixing filters.
Note: The filter does not self oscillate.
Traditionally, 4-pole pole-mixing filters only mix the 4 poles.
Two of the poles are inverting – either 1 and 3 or 2 and 4. Some short/set-high/bypass the first pole under some circumstances to get more variations.
With this version, instead of bypassing – all you have to do is move the mixing-coefficients up i.e. hp1 coefficient, hp2 coefficient, hp3 coefficient becomes in-hp4 coefficient, hp1 coefficient, hp2 coefficient.

TD_Ladder5out_LP
Type: Linear 4 pole Lowpass Filter with 5 outputs
Notes: This module is useful as the basis for pole-mixing filters.
Note: The filter does not self oscillate.
Traditionally, 4-pole pole-mixing filters only mix the 4 poles.
Two of the poles are inverting – either 1 and 3 or 2 and 4. Some short/set-high/bypass the first pole under some circumstances to get more variations.
With this version, instead of bypassing – all you have to do is move the mixing-coefficients up i.e. lp1 coefficient, lp2 coefficient, lp3 coefficient becomes in-lp4 coefficient, lp1 coefficient, lp2 coefficient.

TD_LadderHP24_A
Type: 24dB/Octave Transistor-Ladder High pass Filter
Asymmetrical non-linearities. Partial passband gain-loss compensation. Self oscillates.

TD_LadderLP18_A
Type: 18dB per Octave Transistor-Ladder Lowpass Filter
Simplified filter version with a single symmetrical non-linearity. No passband gain-loss compensation. Self oscillates.

TD_LadderLP24_A
Type: 24dB/Octave Transistor-Ladder Lowpass Filter Type A
Simplified version with a single asymmetrical non-linearity. No passband gain-loss compensation (classic behaviour). Self oscillates.

TD_LadderLP24_B
Type: 24dB per Octave Transistor-Ladder Lowpass Filter Type B
Multiple asymmetrical non-linearities. Partial passband gain-loss compensation. Note: The filter does not self-oscillate.

TD_LadderLP24_C
Type: 24dB/Octave Transistor-Ladder Lowpass Filter Type C
This filter has a buffered high pass filter in the feedback path. This prevents self oscillation at very low frequencies and also prevents bass loss at high resonance levels. Asymmetrical non-linearities.

Oberheim X-Pander type filter.

TD_Panda (Inspired by the Oberheim X-Pander filter)
Type: 4pole OTA Inspired Filter
Notes: The filter poles are mixed internally to create 25 different frequency responses. Produces predominantly 3rd harmonic distortion. Self oscillates.
List of Filter frequency responses; LP4, LP3, LP2, LP1, HP4, HP3, HP2, HP1, BP4, BP2, BPS, HP3LP1, HP2LP1, HP1LP3, HP1LP2, HP1BR2, BR2LP2, BR2LP1, BR4, BR2, BRBP2, LP1BR2HP1, LP1PK2, BR2PK2, HPX.

Sallen-Key filters.

TD_SK3P
Type: Buffered 12dB/Octave Lowpass Sallen-Key Filter
Frequency cutoff 12dB per octave slope. The extra pole is in the feedback path and limits resonance at higher frequencies and alters tracking a bit. Self-resonates up to about 3.7kHz. Symmetrical non-linearities.

TD_SK4P
Type: 12dB/Octave Lowpass Sallen-Key Filter
Experimental, has extra poles. Asymmetrical non-linearities.

TD_SK_A
Type:
Multi-Mode Sallen-Key Filter; Low Pass 12dB per Octave, High Pass 6dB per Octave, Band Pass 6dB per Oct.
Buffered. This saves some CPU cycles compared to the Steiner modules. Asymmetrical non-linearity.

Steiner-Parker filters.

TD_Steiner_A
Type: Buffered Steiner-Parker multi-mode filter Type A
A Steiner-Parker filter is simply a multi-input Sallen-Key filter.
Symmetrical non-linearities. Does not self-oscillate. Maximum input is +/- 10 volts. If the sample rate is less than, or equal to 48 kHz, then the maximum cutoff frequency is approximately 14 kHz otherwise it is approximately 19.9kHz.

TD_Steiner_B
Type:
Steiner-Parker Filter Type B
An unbuffered version of a Steiner-Parker filter (the feedback loop is still buffered), which simply is a multi-input Sallen-Key filter.
Asymmetrical non-linearities. Does not self-oscillate. Resonance decreases in higher octaves. Maximum input is +/- 10 volts.
If the the sample rate is less or equal to 48kHz, maximum cutoff frequency is approximately 17.3 kHz otherwise it is approximately 19.9 kHz.

TD_Steiner_C
Type:
Steiner-Parker Filter Type C
A buffered version of a Steiner-Parker filter, which simply is a multi-input Sallen-Key filter. Bright asymmetrical non-linearities. Self-oscillates.
If the sample rate is less or equal to 48kHz, the maximum cutoff frequency is approximately 17.3kHz otherwise it is approximately 19.9kHz.

State-Variable filters.

TD_SV24_A
Type:
Cascaded State Variable Filters Type A; 24dB per Octave Low pass, 24dB per Octave High pass, and 12dB per Octave Band pass.
Induced passband gain-loss to prevent too high levels with high resonance.
This is a non-linear filter but it is not able to self-oscillate.
This module uses less CPU than if two standard SE SV filters were cascaded.

TD_SV24_B
Type:
Cascaded State Variable Filters Type B; 24dB per Octave Low pass, 24dB per Octave High pass, 12dB per Octave Band pass.
Induced passband gain-loss to prevent signal levels becoming too high with high levels of filter resonance.
This is non-linear filter but it is not able to self-oscillate. The resonance level decreases as the filter cutoff frequency increases.
This module uses less CPU than if two standard SE SV filters were cascaded.

TD_SV_C
Type:
State Variable Filter Type C; 12dB per Octave Low pass, 6dB per Octave Band pass.
Experimental State Variable Filter that is modified by adding an extra feedback path around the structure, so it’s not really a true SV filter any more. Resonance decreases at higher frequencies. Asymmetrical non-linearities. Does not self oscillate.

TD_SVmo2
Type: Multiple Output State Variable Filter; 12dB/Octave Low pass, 6dB/Octave Band pass, 12dB/Octave High Pass
The filter outputs can be mixed, combined or otherwise processed to achieve other filter shapes. Non-linear filter.

TD_SVmo2_ST
Type:
Stereo Multiple Output State Variable Filter 12dB/Octave Low pass, 6dB/Octave Band pass, 12dB/Octave High Pass
The filter outputs can be mixed, combined or otherwise processed to achieve other filter shapes. Non-linear filter.

TD_SVxfade
Type: Cross-fading State Variable Filter. Three pre-programmed selectable crossfade sequences.
Select the filter type and cross-fade sequence from;
Low pass /Band Reject /High pass,
Low pass /Peak /High pass,
Low pass /All pass /High pass.
The cross-fade voltage range is from -5 Volts to +5 Volts.

Making a Center return slider in SynthEdit.

This is a handy little prefab, that’s easy to make. It’s useful if you have a slider with the range of -10 V to + 10 V, it can be fiddly finding the 0 V “null point” with the standard slider.

How the center return slider works.

The control works by having a button or other clickable item send a Mouse Down signal to a Spring module, which then sends a reset value of 0 volts to the Patch Memory, and the Image 2 slider control.

We need to make up the structure below inside a container.
When we change the Image2 filename to “vslider_med.png” this will automatically load the instructions for how the control should behave, so leave this property setting as “Auto”. Likewise with the Image2 that has “button.bmp” loaded.
By connecting the Mouse Down plug of Text Entry4 to the PatchMemory Float3 if we click on this text label it will also reset the control to 0 Volts.
You should untick the Text Entry4’s writeable property so that it can’t be edited from the panel (it keeps it’s mouse down control output though).
All we need to do is set the Reset Value for the Spring module to 0, the the prefab is completed ready to save and use
The maximum and Minimum slider values can be set as normal in the Prefab properties panel when in use in SynthEdit.
Note: Do not try and make the slider return to 0 V “on click” by connecting the Mouse Down plug for the slider control… it won’t work like that. As soon as you move the slider it will send a Mouse Down to the Spring, and as soon as you release the control it will snap back to 0 V.

About VST plugins and VST3.

What is a VST?

VST is an abbreviation of Virtual Studio Technology which is an audio plug-in software interface that plugs-in software synthesizers and effects units into digital audio workstations. VST and similar technologies use digital signal processing (DSP) to emulate a traditional hardware recording studio using computer software technology.
Thousands of plugins exist, both paid and free, and many audio applications support VST under license from it’s original creator, Steinberg.

Overview
VST plugins generally run within a digital audio workstation (DAW), to provide additional functionality and instruments, although there are few standalone plugin hosts exist that support VST plugins.
Most VST plugins are either instruments (VSTi) or effects (VSTfx), although other categories do exist: for example spectrum analyzers, and various meters.
VST plugins nearly always provide a custom graphical user interface (GUI) that displays controls similar to physical switches and knobs on audio hardware. Some (often older) plugins rely on the host application for their user interface.

VST Instruments.

VST instruments include software simulation emulations of well-known hardware synthesizers (Moog, ARP, Roland to name a few) and samplers. These often closely emulate the look of the original equipment as well as its sonic characteristics, and behaviour. This lets musicians and recording engineers use virtual versions of devices that otherwise might be almost unobtainable, very expensive and hugely expensive to keep in working condition.

A VST Instrument running in the Reason DAW.

A VST Instrument running in Reason DAW

VST plugins and MIDI
VST instruments receive notes as digital information via MIDI, generate, process and output the results as digital audio.

VST Effects plugins.

Effects plugins are able to receive digital audio and process it, passing it on to their outputs. Some of the effect plugins also accept a MIDI input – for example, MIDI sync to modulate the effect in sync with the tempo.
MIDI messages can control both instrument and effect plugin parameters. Most host applications can route the audio output from one VST to the audio input of another VST (chaining). For example, the output of a VST synthesizer can be sent through a VST reverb effect.

A VST plugin running in Reason DAW.

A VST Effect running in Reason DAW

History of VSTs.

Steinberg released the VST interface specification and Software Development Kit (SDK) in 1996. They released it at the same time as the Steinberg Cubase 3.02 DAW, which included their first VST plugins: Espacial (a reverb effect), Choirus (a chorus effect), a Stereo Echo, and an Auto-Panner.

VST 2.
Steinberg updated the VST interface specification to version 2.0 in 1999. One notable addition was the ability for plugins to receive MIDI data. This supported the introduction of VSTi plugins. VST Instruments could now act as standalone software synthesizers, samplers, or drum machines.
Neon was the first available VST Instrument (which was included with Cubase VST 3.7). It was a 16-voice, 2-oscillator virtual analog synthesizer (Pretty basic compared to some of the VSTi’s being created now).
VST 2.4.
In 2006, the VST interface was updated to version 2.4.
Changes included the ability to process audio with 64-bit precision. A free-software replacement was developed for Linux MultiMedia Studio (LMMS) that would be used later by other free-software projects.

VST 3.0 was introduced in 2008. Changes included:
Audio Inputs for VST Instruments
Multiple MIDI inputs/outputs
Optional Steinberg Kernel Interface (SKI) integration

VST 3.5 was introduced in February 2011.
Changes included:
Note expression, which provides extensive articulation information in individual note events in a polyphonic arrangement. According to Steinberg, this improves support for performance flexibility, and allows a more natural playing feel.
In October 2011, Celemony Software and PreSonus released Audio Random Access (ARA), which is an extension for audio plug-in interfaces, such as VST, allowing for greater integration between the audio plug-ins and DAW software.

VST2 Support officially discontinued.
In September, 2013, Steinberg discontinued maintenance of the VST 2 SDK. In December, Steinberg stopped distributing the V2 SDK. The higher versions of SDK have continued support.

VST 3.6.7 came out in March, 2017.
VST 3.6.7 includes a preview version of VST3 for the Linux software platform, and the VST3 part of the SDK was given a new dual license: “Proprietary Steinberg VST3” or the “Open-source GPLv3”.

Hosting VST’s

VST plugins can be hosted in incompatible environments by using using software a translation layer, or shim. For example, FL Studio only supports its own proprietary plugin architecture, but a native “wrapper” loads VST plugins, among others. FXpansion likewise has a VST to Real Time Audio Suite (RTAS) wrapper that lets VST plugins run in Pro Tools, and a VST-to-Audio Units (AU) wrapper lets VST plugins run in Logic Pro.

Hardware Hosting.
Hardware VST hosts can load specially created versions of VST plugins. These units are portable and usable without a computer, although some of them do require a computer for editing.
Other hardware options include PCI/PCIe cards designed specially for audio processing, which take over audio processing from the computer’s CPU and free up RAM and valuable processor power.
Some hardware hosts accept VSTs and VSTis, and either run Windows-compatible music applications such as Cubase, Live, Pro Tools, Logic etc., or are able to run their own DAW. Other hardware hosts are only VST Hosts, and thus will require a separate DAW to function.
Origin from Arturia is a hardware DSP system that houses several VST software synthesizers in one machine, such as the Jupiter 50/80 from Roland. Using the required software, audio data can also be sent over a network, so the main host runs on one computer, and the VST plugins can run on peripheral machines.

The VST Standard.

The VST plugin standard is the audio plugin standard created by Steinberg to allow any third-party developers to create VST plugins for use within VST host applications. VST requires separate installations for Windows, macOs, and Linux. The short history of software developments for Linux means few developers have as yet targeted the Linux platform.

Presets
VST plugins usually have many controls, and therefore need a method of managing presets (sets of control settings).
Steinberg Cubase VST introduced two file formats for storing presets: an FXP file stores a single preset, while an FXB file stores a whole bank of presets. These formats have since been adopted by many other VST hosts, although Cubase itself switched to a new system of preset management with Cubase 4.0.
Many VST plugins have their own proprietary methods of loading and saving presets, which do not necessarily use the Steinberg FXP/FXB formats.

Typical VSTi Preset menu.

A VSTi Preset menu

Synthedit Skins Part 1

What are “Skins”.

Synthedit Skins are a means of changing the appearance of your control panel view, and defining the behaviour of some of the controls.
From the default dark blue skin:-

The Default Blue Skin

To this one:-

Alternative skin


Skins are a collection of graphics files and text files. These folders and file are at the default path of C:\Users\Public\Documents\SynthEdit Projects once again do not edit or change this, except to add new folders which must always have a unique name. Shown below is the contents of the Default folder.

Important note: Do not change, edit or delete the default skin. Really don’t change it, not ever.

File manager view of the Default kin folder

Add a new folder to the skins directory, the folder name is your new skin’s name. Once again, this folder must have a unique name.

Copy and paste images.
Copy any of the skin bitmaps you want to change to your new directory. Each bitmap has a text file with the same name. It describes the skin. Once you have made your copy then feel free to edit it as you like using a bitmap (paint) editor.

Size matters:
Keep your new skin images the same size as the originals, this will allow you to change the skin without having to re-arrange the controls again. You will almost certainly need to restart SynthEdit to see the changes you have made.

Mask files:
The mask file is optional, it contains transparency information. A simpler way to use transparency is the keyword ‘transparent_pixel x,y’ in the text file. This tells synthedit which pixel contains the ‘transparent’ color.

Fonts:
Font face, size and color are controlled by the file global.txt.

Image options:
Type:-
Slider:- the image has two parts: a background image and a sliding part that moves along a straight path.
Knob/Animated:- An image containing a series of frames arranged in a vertical stack (aka ‘filmstrip’).
Button:- Similar to a knob, but only two frames; on and off.
Bargraph:- the image contains two stacks of ‘lights’ (all-off and all-on). The metadata describes how to animate the lights.

Knob/Animated
frame_size:- the size of each frame of a filmstrip image. in pixels. Applies to buttons, knobs and animated images. Example:- frame_size 32, 32

padding:- The number of extra blank pixels to insert around an image. Used to visually center a knob or button which is asymmetrical. Example; padding 13, 7, 13, 4

handle_rect:- The position of the handle in a slider image. The handle is the part that moves. Example;- handle_rect 4, 41, 28, 55

handle_range:- The range of motion of the handle in a slider image. The handle moves from the top to the bottom of the image. The range is specified in pixels. Example;- handle_range 1, 26

orientation:– vertical or horizontal – the direction of motion of the handle in a slider image. Example;- orientation vertical

segment:- Used for Bargraph images. The vertical position of the first segment, followed which is by the height of each subsequent segment, specified in pixels. Example;- segment 1, 6

segment_count:- for bargraph images. The number of segments in the image in a Bargraph image.

tiled t/f:- indicates that an image should repeat like wallpaper to fill the available space.
Example;- tiled t

mouse_response:- how the image reacts to the mouse.

h – horizontal
v – vertical
c – click
r – rotary
s – stepped

line_end_length:- for panel group images.

transparent_pixel:- deprecated. For bmp images without a mask file, this is the color that is treated as transparent. The color is specified as a pixel position in the image.

mouse_response:
vertical
click
rotary
horizontal
stepped
reverse_vertical

More about skins…
Skins Part 2
Skins Part 3

Skins Part 2

The global.txt file

If you were a new user looking at the default skin for the first time, wondering how to make your own slick professional skin, the first thing you should look at is:
C:\Users\Public\Documents\SynthEdit Projects\skins\default\global.txt
This is where fonts, their sizes, colours, backgrounds, etc. are all defined.
Global.txt is the minimum requirement to have a new skin, here are the contents of the global.txt file as defined for the default skin.

Note: If you are familiar with CSS as used in web page design this will look familiar, it’s basically a cut down version of CSS.

Important Note: Never delete or modify the default skin or its global.txt file. Synthedit looks for these file when loading.
As with every other item in the default skin – that SynthEdit looks for when loading – if there is no definition in the global.txt file, it will refer back to the original default folder. That is why you don’t edit the default, among other reasons (you will get a strange display in structure view unless you really know what you’re doing).

Commenting:
A line prefixed by a semicolon is a comment, anything you put in a comment is not read by SE.
Commenting is useful as you may not remember why you changed a setting in a skin, and what the results of the change are. Comments are a designers best friend. Note: You can also use ‘//’ for commenting.

If you see the 3rd party skins made by experts, they only have a few items in them, you only need to include the objects you want to replace or change.
For example: you could, for example, make a skin called “Alternative Fonts1” and it would just contain global.txt – and your new global.txt need only contain a few references, not all, if you only wanted to change fonts for a few but not all text displays.

Fonts:
Beware of using unusual fonts. You’ll experience a bit of a disappointment seeing one of you projects on someone else’s computer with the wrong font, your fonts have to exist on the host system to display correctly, stick to the window (or MAC) system core fonts and you can’t go wrong.

Small Button and LED:– There is the difference between small button and switch or led. The small button is ‘click’ action -momentary- switch is ‘stepped’ -2step ‘latch’ , and the LED isn’t defined, and therefore is ‘passive’, a slave graphic.

Knob med.png and Knob small.png:- These are ‘type animated‘ with mouse response rotary.
In contrast to the fader used with the standard fader, which is a bitmap with a Mask, why the different method? I could replace the bitmap and mask with a PNG with transparency, as long as I observed positioning and size (making it much easier to make new faders)

Are you really supposed to start using the subcontrols knobs straight off? You don’t of course, you use the stock knob and fader when you’re knocking up an idea – so ideally, it would be nice to re-do those in your new skin, even if you were to use subcontrols.
In fact the quest would ideally be to produce a complete replacement generic skin where you can change the colours easily (for example).
That is quite a bit of work if you want to know what is going on with each different object type. The ‘workmanlike’ approach of just bashing out new graphics, rigorously adhering to default sizes, and maintaining consistency in style, may be the quickest and most effective way to achieve this, ultimately.

Note that there is a full set of parameters for each text category, but that it is not always used in full; so you could add extra parameters like background colour to them.

Colours: For some reason the method of specifying colours is non-standard. Instead of RR GG BB (the usual Red-Green-Blue format) in SynthEdit it’s reversed to BB GG RR!

Default skin global.txt (annotated)

;other skin settings
; EVERYTHING WITH SEMICOLONS IS IGNORED
; Fonts
; www.w3.org/TR/REC-CSS1#font-variant
; font-color – BBGGRR Blue-Green-Red mix, hexadecimal numbers
; background-color SAME (-1 = transparent)
; font-size – Height in pixels
; font-family – Searches available fonts, left to right. Specific font name, or generic…
; ‘serif’ (e.g. Times)
; ‘sans-serif’ (e.g. Helvetica)
; ‘cursive’ (e.g. Zapf-Chancery)
; ‘fantasy’ (e.g. Western)
; ‘monospace’ (e.g. Courier). Doesn’t seem to go smaller than 12 (Mind you too much smaller and it will be difficult to read, need to consider usability)
; Arial, Times New Roman, and Courier New are core fonts to Windows
;
; text-decoration underline (overline, line-through, blink not supported)
; font-style normal |italic (oblique not supported)

; font-weight : normal | bold | light | 100 | 200 | 300 | 400
; | 500 | 600 | 700 | 800 | 900
; following not supported at present: bolder | lighter
; text-align center | left | right
;UP TO THIS POINT, EVERYTHING IS INSTRUCTIONS FOR HOW TO DEFINE FONTS AND DISPLAY THEM
;
;TEXT DISPLAY CATEGORIES FOLLOW:
; >(text on modules title bar, structure view)
FONT_CATEGORY module_title
font-family Arial, “sans-Serif”
font-size 12
font-color #FFFFFF

FONT_CATEGORY panel_group (panel lines title font)
;font-family “System”, “sans-Serif” <THIS IS IGNORED but why 2 options below?
font-family “MS Sans Serif”, “sans-Serif”
font-size 14
font-weight bold
font-color #FFFFFF

FONT_CATEGORY control_label (never sure about this one.. ?default control text?)
;font-family System, “monoSpace”
;font-size 12
font-family “MS Sans Serif”, “sans-Serif”
font-size 14
font-weight bold
font-color #FFFFFF

FONT_CATEGORY control_edit (get confused by this one too..)
;font-family System, Arial, “sans-serif”
;font-size 12
font-family “MS Sans Serif”, “sans-Serif”
font-size 14
font-weight bold
;font-color #000000 – don’t apply to edit boxes

this one is obvious
; this category is for LED Stack item labels and rotary switch labels
FONT_CATEGORY switch_label
font-family Verdana, “monoSpace”
font-size 10
font-color #F5F5F5

FONT_CATEGORY selector_text >this too.
;font-family System, “monoSpace”
;font-size 10
font-family “MS Sans Serif”, “sans-Serif”
font-size 14
font-weight bold
font-color #ff0000

; the writing on container and VST plugin displays
FONT_CATEGORY tty
font-family terminal, monoSpace
font-size 10
font-color #00f000
background-color #000000

; plugs the pins in structure view?
FONT_CATEGORY plug
font-family Arial, “MS Sans Serif”, Verdana
font-size 10
font-color #000000

FONT_CATEGORY “Normal”
font-family “MS Sans Serif”
font-size 12
font-color #000000
background-color #ffffff
text-align center

FONT_CATEGORY “Heading 1”
font-family Arial, Verdana
font-size 28
font-color #fff7f7
text-align center
text-decoration underline
;font-style italic
font-weight 900

FONT_CATEGORY “Heading 2”
text-align center
font-family Arial
font-size 18

FONT_CATEGORY “Heading 3”
text-align center
font-family Arial
font-size 14

FONT_CATEGORY “User 1”
font-family Arial Unicode MS
font-size 14
font-color #464646
background-color #ffffff
text-align left

FONT_CATEGORY “User 2”
font-family Courier

FONT_CATEGORY “User 3”
font-family Fixedsys

More about Skins…
Skins Part 1
Skins Part 3

Skins Part 3

Text Files in the Default skin.

Each of these files relates to a graphic control element, and controls how it is displayed along with how it behaves.

arrow_left.txt and arrow right.txt
type animated
frame_size 22, 22
mouse_response click

Up down selector
Up/Down Selector (aka arrow left/arrow right)

bargraph1.txt
type bargraph
frame_size 28, 60
segment 1, 6
segment_count 9

Peak Meter
Bargraph (AKA Peak Meter).

bender.txt
type animated
frame_size 35, 76
padding 2, 3, 24, 2
mouse_response vertical

Pitch Bender
Pitch bender control (aka bender).

browse.txt
type animated
mouse_response click
frame_size 21,21

Browse for file
Browse for file icon

button.txt
type animated
frame_size 18, 30
mouse_response click

Button
Button

button_sm.txt
type animated
frame_size 20, 20
mouse_response click

Small Button
Small Button

buttonoff.txt
; medium button with light in the off condition
type animated
mouse_response click
frame_size 18,30

Button
Button

drop_down.txt
type animated
frame_size 22, 22
mouse_response click

Drop down symbol

file_button.txt
; ‘FILE’ button on VST controls panel
type animated
mouse_response click
frame_size 40,17

File button (seen on VST panel only)

hslider.txt
type slider
frame_size 51, 25
handle_rect 53, 1, 68, 25
handle_range 8, 33
orientation horizontal

Horizontal Slider
Horizontal Slider

joystick.txt
type animated
frame_size 25, 25
; extra space at: top, bottom, left, right
padding 7, 1, 7, 1

Joystick
Joystick Control

knob_med.txt
type animated
frame_size 32, 32
mouse_response rotary

Knob Medium
Knob

knob_sm.txt
type animated
frame_size 16, 16
mouse_response rotary

Knob small
Knob Small


led.txt
type animated
frame_size 18, 18

LED2
LED2 Indicator.

lines.txt
type lines
frame_size 27, 27 // Size of corners
; line_end_length 5 // length of line end-cap. Defaults to 5.

Panel Group (Lines)
Lines (aka Panel Group)

moog_knob.txt – this is the scale for the knob.
type animated
frame_size 48, 45
padding 13, 7, 13, 4
mouse_response rotary

moog_kob_sm.txt– is just a smaller version of the knob scale shown above.
type animated
frame_size 30, 29
padding 8, 4, 8, 3
mouse_response rotary

shiny_cap.txt – shiny_cap is the insert in the centre of the knob control.
type animated
frame_size 28, 28
padding 18, 19, 18, 19
mouse_response rotary

shiny_cap_sm.txt – shiny_cap_sm is the insert in the centre of the small knob
type animated
frame_size 18, 18
padding 11, 12, 11, 12
mouse_response rotary

switch.txt
; medium vertical slider
type animated
orientation vert
frame_size 25, 26
; padding adds extra space at: top, bottom, left, right
padding 5, 2, 5, 3
mouse_response stepped

Switch
Switch

switch_rotary.txt
type animated
frame_size 40, 40
mouse_response rotary

Rotary Switch
Rotary Switch

v_slider_med.txt
type slider
frame_size 28, 40
handle_rect 4, 41, 28, 55
handle_range 1, 26
orientation vertical

Slider control
Vertical Slider

vu_meter.txt
type animated
frame_size 67, 38

VU Meter
VU Meter


Synthedit Skins Part 1
Skins Part 2

Creating a Voltage Controlled Waveshaper in SynthEdit.

Having some control over the waveshaper (although not over the actual transfer curve in the module) is possible in as far as the depth of the shaping effect, and the polarity of the shaping effect can be voltage controlled using a few stock modules, and one extra from Elena Novaretti’s module packs at www.elenadesign.eu, the ED Range Clipper which limits the amount by which the control voltages can be varied- this is used to prevent the control voltage exceeding the normal range for the waveshaper and causing unpredictable results.
The Intensity (or depth) of the effect can be varied between 0 V (minimum shaping) and 10 V (maximum shaping). This is then fed to the X-Mix module directly to Input B, and through an Inverter2 module to Input A. This allows us to effectively change the polarity of the waveform, which is then added to the Input audio at the final Level Adj module.
Of course you’re not limited to just using the Waveshaper3 module, you could just as easily use the Waveshaper2 module and use a formula for the transfer curve.

Voltage controlled waveshaper diagram

So far this is the best I have been able to come up with, but I’m as always going to keep experimenting so “watch this space” for updates on this technique

DH-Wshape2 Third party waveshaper module.

Hands up all those who love the sound of “Digital” Synthesizers? If you do then one of this module is for you. Especially if you want to be able to control the amount of Waveshaping by using a control voltage.
It’s a “Third Party” module courtesy of RH Modules http://www.rhmodules.nl/downloads/dspgui/
The basics are quite straightforward. The ‘Scope and 1kHz Oscillator modules are included just to show the effect of the DH-Waveshaper. The default for the Shape control voltage is +/- 5 Volts, but this can be increased to +/- 20 Volts to give a wider range of shapes. See the screenshots below…
The only waveforms that aren’t worth putting through the waveshaper are a pulse (you’ll get some wild amplitude changes and some very large spikes on the leading and trailing edges), or noise. Unlike the SynthEdit stock Waveshapers there are no formulae to set up, just a control voltage

The effect of +20 Volts Shape CV
This gives and extreme foldback effect on the positive and negative peaks of the audio input.

Output of the waveshaper with +20V gain CV

The effect of 0Volts Shape CV
Here we get a slight flattening of the sine wave peaks which gives a very subtle distortion, almost like a slightly overdriven valve PA.

Output of the waveshaper with 0V gain CV

The effect of -5 Volts Shape CV
This gives us a “crossover distortion” effect where the audio input doesn’t start to appear at the output a until the audio input has risen slightly above 0 volts.

Output of the waveshaper with -5V gain CV

The effect of -20 Volts Shape CV.
Starts folding back the 0 volts crossover portion of the audio input.

Output of the waveshaper with -20V gain CV

Modulating with an ADSR module.
Just as a basic “bare bones” idea of what’s possible, you could have the waveshaper modulated by an ADSR2 triggered by the keyboard so the peak level of the audio is the most distorted.

Control the waveshaper with an ADSR module

Modulating with an LFO Module.
Or a free running LFO so that the distortion varies slowly (or rapidly) over time

Control the waveshaper with a LFO module

SynthEdit Waveshaper2b

This one is available in both SynthEdit V1.4 and V1.5
However there is a GUI module you can use to display the transfer curve from your formula which is only available in V1.5.

Waveshaper 2B in SynthEdit 1.4

This gives us a text box for entering our formula, with no means of displaying the Transfer Function curve.

Waveshaper2B in SynthEdit 1.4

Waveshaper 2B in SynthEdit 1.5

Whereas in V1.5 we have an additional module Waveshaper 2B GUI, which allows us to display the curve. Now the only real difference between Waveshaper 2 and 2B is that we can have a separate text box for entering our formula which can be resized for longer formulae, and by using a third party Text Entry module (such as the ED or DAM modules) can be customized to give control over font and background colours.

Waveshaper2B in SynthEdit 1.5

So with a little work we can have a demo that shows the input signal, the formula, which can be edited, the resulting curve, and the resulting output waveform.

Waveshaper2B demo in Syn
thEdit 1.5
Panel view of the Waveshaper demo

A SynthEdit Waveshaper Prefab.

This design uses some pre-defined mathematical functions to shape the input waveform. The Formulae for the shaping are all held in a Fixed Values (Text) module from where they can be selected.
These values are sent to a Switch > Text module. From there they are fed to the Waveshaper2B module where the mathematical function is applied to the input waveform. The 1 Pole HP filter is to block any DC component that the Waveshaper might introduce. From there the X-Mix module sets the balance between the unaltered input, and the shaped signal.

Notes:
All the Slider controls are left at their default values.
Formula 12 (Folding) is purely a foldback distortion, the Sin and Cos formulae add some 2nd/3rd/4th harmonics giving a formant like sound to a sine or triangle input.
Using Sqrt (Square Root) formulae can give some quite spiky waveforms.
Formulas used:
1) Sin: 6sin((x+2/PI)+(x+2/PI))
2) Cos: 5cos((x+5/PI)+(x+5/PI)) 3) ASin 2asin((x/PI)+(x/PI))
4) Acos: 2acos((x/PI)+(x/PI)) 5) Sqrt 5 sqrt((x/PI)+(x/PI))
5) Sqrt: 5*sqrt((x/PI)+(x/PI))
6) -Sqrt: -5*sqrt((x/PI)+(x/PI))
7) Sin Cos: 6*sin((x+2/PI)+cos(x+2/PI))
8) Cos Sin: 6*cos((x+2/PI)+sin(x+2/PI))
9) Default: 5*sin(x/PI)
10) 3*Sin: 6*sin((x+2/PI)+(x+2/PI)+(x+2/PI))
11) 4*Sin 6*sin((x+2/PI)+(x+2/PI)+(x+2/PI)+(x+2/PI))
12) Folding: 3 *(abs(-abs(-abs(x+1.25)+2.5)+2.5)-1.25)
Other functions can be used, although some may result in outputs with a very high amplitude, or nothing at all, feel free to experiment.

Structure of the waveshaper prefab

Adding a Butterworth High Pass filter will also greatly reduce any unwanted low frequency “rumbles” which can be introduced.
As you can see in the Frequency Spectrums below the layout with the Butterworth High Pass filter in circuit, a lot of the “noise” below 200Hz is drastically reduced. The filter was set to a cut-off frequency of 200Hz, and the number of filter Poles to 12.

Adding a better high pass filter to the prefab

Unfiltered output:

Filtered output (about 200Hz High-Pass):

« Older posts Newer posts »