MichaelBenjamin ·
this is actually more of a nebula than a concrete tutorial and should be seen as beginners advice, but i will try to give you some general points based on personal assumptions which could point you into the right direction.
first, download and try out all the plugins you can get(this may take a while). meanwhile, make yourself comfortable with the dsp function blocks you usually got: oscillators modulators shapers delays filters
then learn about the ways how to combine them to build proven systems. read about audio dsp, the more you learn and understand, the better.
now i would suggest, you start to experiment (in reality you started to experiment from the beginning, but lets just assume an idiotic ideal case). synthmaker is an excellent environment for dsp experiments because you can hear the change done almost instantly (code module needs an instruction update and double floats to make it really excel) maybe you find something and you think "wow that sounds good" then keep it, listen one day later, and if it still sounds good, try to improve it. maybe the core of an concept emerges now.
now take your breath, and say out loud, in one clear sentence: "i will build a plugin that can (your concept here, with as few words as possible)" if you dont know what to say here, or it takes more than 10 seconds to explain, you probably need to go back to the experimenting stage.
now comes a very complicated part. to form a final plugin out of an initial concept you need to adjust the surroundings. its the process of deciding what oscillator (code, wavetable, wav rom) which kind of modulators are feasible, what fx, and how do you present them on the interface, what numbers are variables, and which ones should be modulated and how. this can take some time, some adjusting, some tryouts. - between steps, always ask yourself: does this add to the value, or does it substract from the value, either by overcomplicating the interface or a too small impact to the sound, if it does not definately add, let it out. after your code runs and works (always test and adjust, use your ears), merge, optimize, rebuild it from scratch.
here are some mandatory rules for virtual synthesizers: - dont wash your sound with the usual delay+chorus+reverb, instead try to build a sound that sounds good without standard fx (everything sounds awesome with delay chorus and reverb, listen at karaoke bars) - another thing about the usual fx delay chorus reverb: these are better applied submix based, so if someone uses your synth and records it along with, for example a guitar line, he may decide that he wants to apply the same room impression to both, routes them to a submix in the host, and then uses his preferred standard for this - so: unless your fx is not unique and special, let it out - if your synth sounds bad now, go back to the code;) - do not do simple distortion and standard saturation aswell, this is similar to overcompressed bad digital recordings - if possible, saturate and distort gently, and mix it with the original source - doing good distortion in digital is quite hard and should be taken great care of - always use a midipitch to volume scale (there is one in the analog kit) basically make upper keys lower in volume - otherwise it will sound very bad and unbalanced. adjust as appropriate. play it. listen. change.
now comes another complicated part: the interface synthmaker gives you great customisation options to the interface design, so you better use its possibilities a bad interface is a major downer to even the technically most interesting plugin think of the interface like its the incarnation of your virtual concept into reality. its like a bridge to the virtual, if it contains holes, nobody will cross it. so when you got one huge optimized asm block inside, the task is: - like code module merging, merge logical adjacent interface parameters, reducing their overall amount. - be descriptive, so that anyone understands what a parameter does at first sight - learn to use colours and size to give visual priority - do not display numbers, when not especially necessary (most of the time a number readout is not needed and just adds to visual clutter- afterall musicians while in the process of making music are not much interested in math) - take your space - today most resolutions are higher than 1024x768 and a tiny interface that feels cramped is not nice to use - refrain from skinning, instead take the time and make one functional and visually pleasing interface, skinning only waters down the impression of visual character - use readable fonts, rendered to images, so you dont need to install font files - stay simple, dont build a huge monster with 5000 parameters (sm isnt made for this) - instead try to build something small, custom, specialized, unique - if possible, have all parameters at one page with direct access (no multipages and hidden submenus) - as for general interface concepts, my personal preference is still the rotationary png knob. its quick and easy and everyone understands it directly. - if possible give visual feedback about the internal state of important parameters - in general, optimize the interface, like you optimized the code: merge and simplify.
more general: - do not use any default sm stuff for your synth besides midi_to_poly and the combiner instead, use sm to build your own stuff, it may take some time, but this automatically adds "character"
so now, if you follow all these points;) and if your initial concept was something which no other plugin in the world could do better, you should have a quite usable plugin for yourself and the others.