Stuck with a SynthEdit project?

Category: Skins

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