Posted on 2 Comments

Poly-Ana Custom Skins

Poly-Ana Custom Skins

Added in Poly-Ana 1.30 Beta 2, you can now make your own Custom GUI Skins!

Until now, the built-in Poly-Ana GUI (graphical user interface) has been rather polarizing. Some people love it; the Admiral certainly built the GUI he likes to use! This GUI was built before any work on the DSP code started — the opposite of how most developers do it. We did this intentionally so that we were forced to use that GUI during developent, which assisted in testing and verifying its usability. It’s not something we stuck on at the last minute and never actually used ourselves. (And we are musicians and do use our own products!) Just the opposite, Poly-Ana’s user interface was carefully thought out and everything it does, including a few non-typical behaviors, is completely intentional and there to enhance workflow. (See the documentation included in the Poly-Ana distributable for more details about and our rationale behind some of Poly-Ana’s unique interface features.)

However, a significantly sized and very vocal group of others absolutely hate the original GUI. (There doesn’t seem to be much mid-ground, it either communicates its intent by invoking the look and feel of classic synths that inspired its design, or causes a furious rage against the misguided evils of skeuomorphism — with no opinion in-between!) For years now we’ve offered the ability to change the background image to anything you like, as well as the ability to change the Mod Source selector dials to dropdown menus (which we’ve now made the default behavior in 1.30 B2). But the fury has raged on, and we have been listening. But to simply take orders from angry non-customers and change the look to meet their demands (and they have been demandswould be doing a disservice to our existing, satisfied customers who love it just the way it is. So for some time now the intent has been to provide a custom GUI system. That work (and it was a lot of work) is now done!

On this page you will find Instructions for creating your own Custom Skin, a FAQ, and our Skin Trade section where we will be sharing any Custom Skins that users send us that we liked. And if we do share your skin, we’ll give you (or anyone else you specify) a complimentary Poly-Ana license or credit of equivalent value for free! Now, we know exactly how much work it is to build a skin for Poly-Ana (which has 212 controls plus a 61 note keyboard) and we don’t want anyone spending all that time making a skin they think we’ll love, only to find out when they submit it to us that we don’t think it’s good enough to share here. (And we are very picky. That’s the “Quality” part of our name!) So please, if you’re embarking on a new skin project and you hope to earn a license for it, contact us early and show us some previews of your work; maybe a mockup or partial mockup of the full GUI. Then we can let you know early on whether we think you’re going in a direction with it that we’ll be interested in sharing, and help guide you towards a look and feel that we can both be proud to share here. As well, we’ll expect skins submitted for licenses to be largely original content, not just a minor tweak of someone else’s skin. (Of course, nothing is stopping you from making any skin you like and sharing them through other means with your friends. It’s only the skins we post on this page that we need to evaluate and approve first.)

Poly-Ana Custom Skins FAQ

Q: What do new skins cost?

A: Just like our program banks, skins are always free! We’re in the business of selling instrument and effects plug-ins, not graphics and sound libraries, which we always share for free as soon as we get our hands on them!

Q: The old GUI didn’t fit on my laptop screen and now this new one is even worse!

A: We know. It doesn’t fit well on our 1366×768 MacBook Air either. A “wide” version of that skin is coming any day now that will fit a lot better on height-limited laptop screens. Please stand by…

Q: Are there custom skins for L’il Poly-Ana, the “Lite” preset player version?

A: No. If you want to use the Custom Skins you’ll need to upgrade to full Poly-Ana. See the Poly-Ana page for details. (As the Beta 2 and 3 updates were mostly for adding the new Skins feature, L’il Poly-Ana is still at 1.30 Beta 1. It will be updated by Beta 4, though it still won’t include the Custom Skins feature.)

Q: I don’t like knobs. Can I make sliders instead?

A: Not at this time. The problem with sliders is they have limited resolution compared to knobs, which have the entire pixel circumference of your screen to use for adjustment. Yes, there can be a fine control mode for sliders (just as there is with Poly-Ana’s knobs when set to Linear Knob Mode) but we never want to force that on the user, it should be a choice which they can select whether they want to use or not from the Options Dialog (opened by clicking on the product name). Still, we’re looking into improving the behavior of the existing slider controls in the GUI code library we use, just as we did with the multiple Knob Modes, and it could be offered at some time in the future. (You actually could make a slider right now, and use it in Linear Knob Mode in a way that would probably seem to make sense. But it would be confusing when in Circular or Circular Relative knob modes. Go ahead and try it if you like, but we won’t share any skins that do that here.)

Q: What about other controls? Can I change the knob’s range angles or get rid of the detents?

A: No. Things like the knob ranges, their detent “sweet spots” that they snap to, and other unique control behaviors are integral parts of the Poly-Ana interface as well as something we don’t want users to have to re-learn when they switch skins. You can change how anything looks, but now how it behaves.

Q: I use drop-down menus. Do I have to implement a knob for the Mod Source dials?

A: Yes. Skins aren’t allowed to limit the capabilities of the product. (Actually, it’s fairly easy right now to push controls off the background so they’re missing, but don’t count on that continuing in future updates.) Might we suggest for the Mod Source dials, a knob that shows the selected value in its center? We’re planning to make some of those soon ourselves.

Q: Can controls overlap?

A: Maybe. Sometimes. Be careful and test thoroughly, no guarantees. (The keyboard controls will have to overlap. The black keys are drawn after the white keys, so they should always appear on top of them. Even so, we’ve still got a few little glitches in how they display to work out. Sometimes black keys are appearing half white. That’s not your skin, that’s our code, and we’re working on improving it.)

Q: My existing knob graphics don’t point in the right direction when I try to use them in a Custom Poly-Ana Skin. Why not?

A: Your existing knob graphics probably don’t go through a full range of 360 degrees. See the instructions below for details on producing knob “filmstrip” graphics for Poly-Ana.

Q: I want to switch rapidly between different skins. How can I?

A: There’s currently no facility for changing the skin once an instance of Poly-Ana has been launched. (It only loads the graphics at instantiation time in order to speed up opening of the editor after that.) But you can easily have many different skins that you switch between, or revert to the built-in skin, just by renaming the folder they’re in. You will need to launch a new instance of Poly-Ana (easiest to just save and reload your host project) to see the changes, however.

Q: Can I change the Tool-Tips text or behavior?

A: No. But you can turn them off entirely in the Options Dialog (click the product name).

Q: I think I found a bug in the Skin system. My skin crashes Poly-Ana!

A: That’s not really a bug. Malformed skins (so to speak) will often crash Poly-Ana, we make no guarantee that it will handle any skin data. We’re working on adding more error checking and reporting but there will probably always be a way to make Poly-Ana crash with a poorly formed Custom Skin. Best when making your own to start with our included one, and make changes slowly rather than all at once. Be very careful not to break the syntax of the XML file, particularly by forgetting to put in closing tags. Now, if one of the skins we include or share here on this page crashes Poly-Ana, please definitely report it to us because that is a bug! Also note that many host programs will not attempt to load a plug-in after it’s crashed once. To reset this, remove the Poly-Ana .dll, .vst or .component file from the folder you installed it in, restart your host, close your host, replace the Poly-Ana file, and restart your host again. (Some hosts also include a feature to “rescan plugins”, which may or may not be faster than the above procedure, depending on how many plug-ins you have installed.)

Instructions for Building Poly-Ana Skins


  • A “skin” folder under your Poly-Ana data folder (same location where the .key file is kept) will override any Poly-AnaBG.png file found in the data folder.
  • All graphics are 32 bit, 4 channel (RGBA) PNG files. Use of transparency effects, including glows and shadows, is allowed and encouraged!
  • All knobs must go through a full 360 degrees, starting at the 6:00 position (down) at the top of the graphic “filmstrip” and advancing clockwise to one step short of the start (6:00) position. The easiest way to manage this is to make your knobs 360 frames, one per degree, going from 0 degrees pointing straight down, to 359 degrees, one degree short of the start position. Yes, that’s a lot of frames but you’re probably (hopefully) not producing them individually by hand, and it makes for very smooth knob motion.
  • Pitch and mod wheels have the bottom of their range at the top position in the graphic (filmstrip).
  • Knob and button control graphics can have a “mouseable area” definied which is a sub-set of their size. (This is to allow effects like shadows and glows to appear outside the area that the mouse will affect the control within.)
  • Overlapping controls are best avoided, though it can work in some cases. (The keyboard is an obvious case where you’ll have to overlap controls. We recommend you make the spaces in the white keys where black keys will go transparent as we expect to soon be adding code to check for this to help improve the functionality of the keyboard controls.) If you try overlapping other controls, TEST, TEST, TEST them, including the MIDI-Learn function. We can’t guarantee it will always work, but it might.
  • 2 and 3 state toggle switches must go left-right, one frame per position, left on top.
  • Light/push-buttons are all 2 state, 2 frame, off on top.
  • Splash screen/Options Dialog and is not customizeable. The area to click in to launch it is, but must be at least 2.5% of the background height and width in size and should coincide with the placement of the company and product name branding on the background.
  • The MIDI Learn box is not customizeable.
  • New in 1.30 Beta 3! The look of the Program Select and Load and Save buttons can now be customized! The previous system of automatically making all the controls from a single (top, left) coordinate is still supported as well. See the comments in the included Poly-AnaSkin.xml file for more details.
  • We will not accept skins for redistribution (and to qualify for winning a free license) without the “Admiral Quality”, “Poly-Ana”, and “analog model polyphonic synthesizer” names included. Your design should use the graphics provided here for “Admiral Quality” and “Poly-Ana”. (You can render “analog model polyphonic synthesizer” however you like.) And, as above, this branding must be at least 2.5% of the height and width of the background and have the Splash Screen hotspot defined around it.
  • The Mod Source selector dials first frame has ENV 1 selected, then moves smoothly (clockwise) through ENV 2, ENV 3, LFO 1, LFO 2, KEYB, VELO, WHEEL, PRESS, EXPR, OSC 1, OSC 2, OSC 3, MMIX 1, MMIX 2, FILT 1, IN-L, IN-R then back to one frame short of the start. Mod Source dials do not respond in a circular-absolute form (they never jump when you first click into them) so you are free to locate the selected item at any position you like (Poly-Ana currently uses the 3:00 position). While they don’t have to look like rotating dials, they should indicate circular control in some way. Note that while the dials seem to “click” into the 18 positions as you rotate the control, this is done internally by Poly-Ana’s code and your animation frames should be evenly spaced as with any normal knob.
  • Mod Source drop-down menus positioned relative to the (top, left) origins of the Mod Source selector dials at an offset you specify.
  • Maximum background size is 409 x 224 (the same size of the Splash screen/Options Dialog which always appears in the top, left origin).
  • L’il Poly-Ana does not currently support skinnability.
  • All controls MUST be included and appear within the background. (They are allowed to go outside tbe background by half the height/width of the control’s graphic.)
  • Tooltips are not customizeable (though they can be turned off by the user in the Options Dialog).
  • The Custom Skins feature is new, in Beta, and experimental for now, and we can’t guarantee correct behavior with any skin content, particularly content we haven’t vetted and distributed ourselves. Please check plug-in behavior with any custom skins removed before submitting any bug reports. (And note that after a crash caused by a bad skin, you may need to re-scan for plug-ins or remove Poly-Ana from your plug-ins folder, restart your host, close your host, replace Poly-Ana, and restart your host, in order to get it to attempt to load Poly-Ana again.)
  • Keyboard light sources can be from the right or left. Black keys are always two frames, up (top) and down. White keys have 8 states, alternating up and down. The other “shadow states” depend on the states of the neighboring keys (to the left or right, depending on the light source definition). The frames go, top to bottom on the “filmstrip” graphic:

This key, Neighboring black key (if applicable), Neighboring white key:
Frame 1: Up, Up, Up
Frame 2: Down, Up, Up
Frame 3: Up, Down, Up
Frame 4: Down, Down, Up
Frame 5: Up, Up, Down
Frame 6: Down, Up, Down
Frame 7: Up, Down, Down
Frame 8: Down, Down, Down


XML file

The Poly-Ana Custom Skin is defined by an XML format file named Poly-AnaSkinl.xml which is located in the skin folder under the same folder your Poly-Ana.key goes in. (On OSX in: /Users/Your_user_name/Library/Application Support/Admiral Quality/Poly-Ana/skin/ On Windows in: \Program Files (x86)\Admiral Quality\Poly-Ana\skin\ — or use the Program Files folder on 32 bit versions of Windows that don’t have a Program Files (x86) folder.)

We won’t describe every line of the XML file here, it should be self-explanatory. We’ve added lots of comments to explain things in the demo skin (included in the Poly-Ana 1.30 Beta distributable).

Image files

All background and control image files must be PNG format, 8 bits per channel, 4 channel (RGBA). Transparency works as do shadow and glow effects, and are much easier to do than building separate images for each control with the background “baked” into them. (Though if that’s how you like to work, you’re free to do that as well.)

Knob images must go a full 360 degrees around, starting at the 6:00 position (pointing straight down) and advancing clockwise until one frame short of the 6:00 position. We recommend making knob “filmstrip” graphics 360 frames tall, one-frame-per-degree, but you can make any number of frames you want. (More than 360 is probably massive overkill. Much less and you can see the steps as the knob advances. We think 360 is perfect, and it also makes a lot of the math work out to convenient and intuitive values as well.)

Note that, unlike most other virtual instruments and effects that travel through 270 degrees, Poly-Ana’s knobs (at least the ones that don’t freewheel through a full 360 degrees) go 300 degrees. You’ll want to take this into account when designing your background images. We did this because real-world potentiometers go through 300 degrees, and we wanted to maximize the control area to provide the finest possible resolution.


A great, free tool for making knob filmstrip graphics is JKnobMan which you can get here:

Here is a JKnobMan project file that will help get you started making Poly-Ana knobs. It sets the correct start angle, number of frames and end angle:

Here is a JKnobMan project file that makes a Poly-Ana Mod Selector knob. All the correct text and angles are filled in for you:

Here’s an online gallery of public domain JKnobMan projects you can use to make many, really slick looking knobs. To make these knobs compatible with Poly-Ana, you need to go through each layer that rotates and change the starting angle to -180 degrees (should point straight down) and the end angle to 360-(360/NumFrames). If you set the number of frames to 360 in the preferences, which is what we use, your end angle will be 179 degrees: Free Knob Gallery

If you’re producing knob graphics from some other method, like 3D software, you may need a utility program to stitch the individual frames together into the tall “filmstrip” format we use. Here’s a good one:

Here is a .pdf file with Poly-Ana’s original panel layout and that also contains our branding which you’ll need to use if you’re making a skin that you want to qualify for sharing here (and earning a free license). Poly-Ana_Panels_v130.pdf

The Skin Trade

Skin to win! Send us your skin and if we like it and post it, you’ll win a Poly-Ana license for you or a friend (or equivalent credit for you).

2015-08-27 And we have another winner! This time, with a little bit of attitude! “Industrial”, by, DavidF! (updated 2015/08/31 — fixes keyboard lighting direction)

2015-08-24 “Moderne”, our second winning Skin submission from famous music software skinner, Limeflavour! This all-original skin is available in two different sizes to fit any screen, and offers 8 choices of background color! Fantastic work, Limeflavour!


980×735: (15/08/25 – Updated to v01a to fix Program Selector not updating when Prev/Next program buttons clicked on OSX only, Windows users who already installed v01 don’t need this update.)

Background: AquamarineBackground: BlueberryBackground: BoringBackground: Lilac (included as default)Background: NightmareBackground: OriginalBackground: SandboxBackground: Strawberry.

1200×635: (15/08/25 – Updated to v01a to fix Program Selector not updating when Prev/Next program buttons clicked on OSX only, Windows users who already installed v01 don’t need this update.)

Background: AquamarineBackground: BlueberryBackground: BoringBackground: Lilac (included as default)Background: NightmareBackground: OriginalBackground: SandboxBackground: Strawberry.

2015-08-06 New! Our first winning Skin submission from Hoverland, “Dusk”! Now updated with cool new controls for the Mod Sources as Dials mode. (Also note that this skin folder contains 4 other folders containing optional backgrounds that you can copy up into the skin folder to enable.) Great work, Hoverland! (updated 2015/10/03)

New! Hoverland has graciously shared his Photoshop document that he used to create this skin with us, as well as the JKnobMan project used to create the “cylindrical” Mod Source control, so now it’s an easy matter to tweak it in any way you’d like! Thanks again, Hoverland!

2015-07-31 New! Our first alternate skin offering, “Wide SEM”. As promised, here’s a wide skin that should better fit in the vertical dimension of your laptop screen. It also changes the look to dark labels on a light background, and loses the “scales” that don’t work well when rendered as dark under the dark knobs. (updated 2015-10-04).
If you want to use this skin as a starting point for your own, the AI file for this new panel layout is here:
Here’s the JKnobMan project for creating the cool new Mod Source knob plus “cylindrical” display:

2015-07-19 Our original demo skin, “Redux”, a re-working of the original Poly-Ana GUI that loses the perspective of the panels and keyboard and the wooden sides, but should otherwise look very familiar to long-time Poly-Ana users.

Poly-Ana 1.31
Poly-Ana 1.31


2 thoughts on “Poly-Ana Custom Skins

  1. Are these skins still compatible with the current version?

    1. Absolutely!

Leave a Reply