This document is essential reading for everyone who is going to work with MSoundFactory at a more professional level, mainly designing devices (also known as instruments). Development plans will be presented, so that you know what to expect for the future of the plugin. The aim is of course to create in a way an ultimate instrument. Below there are requirements and recommendations for devices made in MSoundFactory; these are specified in order to streamline the workflow of both the user and of the sound creator.
Our goal is to make life easy for the third party sound designers, who need quick development, reasonable reselling conditions, easy deployment and simple workflow for target users. MSoundFactory is available in 3 flavours:
- MSoundFactoryPlayer - free, third party instruments, currently just one factory instrument, no Edit screen
- MSoundFactoryLE - not available yet, third party instruments, all factory instruments, no Edit screen
- MSoundFactory - full version, third party instruments, all factory instruments, Edit screen
Installing MSoundFactory provides a full version trial, which can be activate using a full licence or LE licence. It switches to MSoundFactoryPlayer when the trial expires.
The licence model for third parties is as advantageous as it can be: no royalties and no cost for the end user with MSoundFactoryPlayer. It may seem crazy for us to provide such an instrument for free for third parties, but we simply bet on the users purchasing the full version of MSoundFactrory or any of our software for that matter. And third parties can use it to sell their instruments easily with no cost for them or for the target user. There will be a dedicated MSoundFactory installer to be provided for third parties, currently please just instruct your customers to install MSoundFactory via the universal installer on our download page.
MSoundFactory also allows the customers to trial the third party instruments (unless the designer specifically forbids that). We believe that the inability to try an instrument before purchase is a major limitation that lowers the sales for most Kontakt instruments for example. Some sounds designers do offer a selection of instruments from their libraries for just such a purpose. To make that happen, MSoundFactory provides an internal licencing system that the third party designers can use (for free) to generate serial keys to provide to their customers.
Feel free to contact us via firstname.lastname@example.org with feedback and ideas.
The MSoundFactory Edit screen closely resembles its signal flow. The first tab (Globals) contains various options and the per-voice global envelope. This particular envelope is actually very important, because it is used even if you don't control any parameters with it. It's the volume envelope that is applied to each voice and when this envelope ends, the voice ends.
Each voice is generated in the way defined in the second tab, the Generator. It's a modular system, where you can put any number of modules, such as oscillators, filters, effects etc. Many of the parameters can be modulated by the per-voice modulation system (see below). The processing needs to be performed separately for each voice being played, therefore if there is something that you wish to do with effects, it's better, in terms of CPU usage, to do that in the FX tab. The Generator has 6 separate output streams and the modules can be routed to any of them.
When all voices currently being played are rendered in each processing session and the global ADSRs are applied, there are 6 outputs for each voice. The voices are mixed by mixing each of these 6 output streams separately and these are sent in parallel into the 6 inputs of the FX, which is therefore processing all voices simultaneously. The 6 separate outputs are actually very useful, because these let you process various parts of the mixed signal with different effects. Effects logically cannot use per-voice modulation, since they are processing the mixed signals. The output of the effects is mixed and sent to your DAW. There is also a 6-out edition of MSoundFactory, making the 6 output streams from the FX section available in your DAW.
We tend to provide preset systems for everything, which is great workflow-wise, but can lead to some confusion. In MSoundFactory on the Easy screen there are 3 of these systems:
Instruments are categorized on the left side of the Easy screen of MSoundFactory. Currently one can browse the instruments using the folder structure filtered using the categorizer with various flags such as genre or timbre. It turns out there's nearly an infinite number of genres, so creating categories for everything would be pointless. Currently there's quite an exhaustive set, but stuff like EDM is generalized under a single flag. Most sounds are useful for many genres anyway. If you create something really specific, you can mark it say #techno in the device name or description and the search will work with that too (it doesn't now, but...).
Each instrument may have their own presets (the third bullet-point above), which however only store the easy screen controls, so you need to finish your instrument first, then make presets for it. If you make presets and then change the instrument afterwards, it's possible that your presets won't sound the same way.
It is essential to understand, that in MSoundFactory there are 2 different modulation engines. First there are the classic modulators that you may know from other MeldaProduction plugins. However you cannot combine them and they are global, hence the values would be set for all voices. Therefore MSoundFactory makes use of a second system - per-voice modulators. These are available only for the Generator parameters but not for all of them. Parameters that can be so modulated have a modulation button next to them, onto which you can drag & drop the modulation sources’ arrows. Or you can click the button and work with the per-voice modulation matrix directly. The possibilities of this modulation system are vast, it is preferred to using the global modulators, and it lets you modulate parameters by LFOs, ADSRs, randomizers, MIDI controllers, MIDI notes etc.
When designing your instruments, we recommend simply using the global presets available via the Presets button in the plugin title. When you are finished with it, it has all controls you want, these all work properly and the instrument sounds as you'd like it to sound, save the final instrument using the Export device in the Designer menu in the title. This is available only on the Edit screen. There you also need to set all the proper categories, information about the instrument and yourself. It will save the instrument as mInstrument file into the device repository, which you can open by clicking Open device folder in Explorer/Finder in the Designer menu.
Each instrument should also have its own Instrument presets, which are available via the Instrument presets button in its title. We recommend including the Default preset first, just a matter of convenience, maybe named Default so that it always appears at the top of the browser list. The number of presets and structure is then up to you. Some instruments, such as acoustic pianos, may have just a few of them. Others may benefit from having hundreds. The presets are stored next to the mInstrument and are installed.
NOTE: When you change the instrument itself, it will change the way the presets sound. If you do need to change them, at least try to keep the Multiparameter numbers the same in your instrument.
First, create a so-called product featuring instruments, samples and presets using Create product in the Designer menu. Users will then simply use the Install product feature. You can make both devices and products commercial by specifying a password, which can then be used to create any number of serial keys using Create serial keys in the Designer menu.
The following set of rules/recommendations is presented to make the lives of both the user and of the sound designer easier. The idea is to let sound designers start with a predefined template and build the actual sound on it. The template contains a full set of effects and a full GUI, so the designer can create the actual sound using the Generator tab with everything else ready to go. After that he can decide which parts of the original template to keep and which to trash.
The global MSoundFactory presets contain a folder named "Sound design templates" and there's a preset in there named "Main template", which should serve as THE template to be used for instrument creation in most cases. It is the same as in the basic Supersaw device, but the generator parts have been removed, so it is the ideal way to start building your own sounds.
Before you start designing any sounds, please check following resources:
Video tutorials about multiparameters and easy screen GUIs
Video tutorials about modulators
It is now time to get to the actual rules and recommendations. Please use the Supersaw instrument to see how it works in practice.
The following recommendations are designed to make the customers' lives easy, since learning a new instrument always requires some time. If your instrument follows the recommendations, please enable the "Full GUI" flag in the categorizer system when saving your device. If you want to ignore these recommendations and do "whatever you want", feel free to do that, but do not check the "Full GUI" flag. That categorization will help users who are looking only for those standard instruments which contain everything they should have.
When you select Export device, besides the categorization and instrument name and folder you can also define the information about yourself and the device. Information about yourself is optional of course, but please always include some description of the device (more likely the expected sound; the actual way the sound is generated will not be so important in most cases) and information about the default MIDI controllers.
Most of the users using your instruments will make use of the Easy screen. On that screen the global Random button in the plugin title randomizes all those Multiparameters (MPs) which haven't specifically been disabled from being randomized. By default the Globals tab is not randomized, since it doesn't make much sense. But often randomizing certain controls leads to unsatisfactory extreme variations, so it may be useful to disable other MPs as well. In the default template randomization of the enabling of most effects is disabled for this exact reason.
The Super-saw instrument, while not being really creative, serves as a guideline for GUI and user-experience. Please try to make your devices look & work in a similar fashion. That way the user won't be too "surprised", when opening them for the first time, hence it will be easier for him / her to start using them. This basically means "keep intact as much of the template as you can". Once you start moving things around, it's often hard to make things tidy again and you may easily lose perspective.
Plase note that even if you don't fully agree on the template layout, it is still worth keeping it the way it is. Many people cooperated to create this default concept, so it is likely it works quite well for the majority of the users. When designing your instruments please also use the default Neon style, that way you can make sure it will look good for the majority of users.
These are the typical problems in some devices to avoid:
The Global tab should contain all the options that the users would use to make the instrument easy to use with their MIDI controller, plus some general options. The users would simply set the parameters they need to be set in some way (e.g. velocity response is often different, pitch bend range is relevant for MPE...) and lock them. What they don't lock will default to whatever the instrument designer chooses. Make sure the MP numbers stay intact, this is essential to make the "Locks" work properly. To make sure you didn't move the MPs, you can certainly check manually, but you can also use the Process template feature in MP manager using this template. It will automatically fix positions and visuals for all the standard controls in the Globals tab.
MPE (MIDI polyphonice expression, 3D MIDI controllers) is an important part of the market, so we should embrace that. Supporting it is actually very simple - providing some modulation for timbre (MIDI CC #74) and pressure (which is relevant for non-MPE MIDI keyboards too). Pitch bend is handled automatically. Please note the "Use timbre" and "Use pressure" controls on the global section, which would control how much effect these controllers have. This may be a little complication for the sound design, but it would help the users if their response to these 3D controllers is too strong. Here are some basic MPE performance MIDI files for those of you, who don't have a luxury of an MPE device.
MPE support doesn't make much sense for some instruments such as drums, so it's not mandatory, but I'd say it's highly recommended to make everything MPE compliant if it makes sense. Do not forget to set the MPE feature flag in the categorizer if your instrument supports it.
Main controllers provide a solid abstraction for any MIDI controller out there. When a user opens your instrument, it's worth making them "do something". Assuming the user sets up the main controllers properly, he / she could open your instrument and right there the faders/knobs on his MIDI keyboard controller would access important controls on the Easy screen. Which ones? That's up to you of course. I'd recommend specifying at least 4, ideally 8 main controllers. To map a Multiparameter to a MIDI controller, you can do that manually from MIDI settings, or just Ctrl+Alt + right click on a control on the easy screen and select Attach MIDI controller, then select one of the main controllers, which are listed on the right-hand side of the menu.
The Generator tab is where the users should be controlling the sound properties of each instrument. You may name it differently, for instance if you are making a piano, you can just call the tab "Piano". You can even make multiple tabs if your instrument is especially complex. Conversely, if the set of controls & effects would be very small, both generator and effects could be in the same tab. In most cases there would be 3 tabs - Generator (possibly renamed), Effects and Globals. While the contents of the Globals tab will be more or less the same for all instruments, Generator and Effects tabs are pretty much entirely up to you.
The idea is that instrument designers would start with the template, do their magic and may or may not keep the existing effects, add more... It would be beneficial to keep the reverb & delay MP numbers identical. That way people could lock the parameters when browsing instruments, or map them to a MIDI controller for example, hence being able to enable/disable reverb on any instrument for example.
A critical question here is, how many controls should an instrument have on the Easy screen, how complex should it be? What most synths do is a bit basic - they have presets with some settings, maybe a few macros for some obvious stuff like filter frequency. But if you want to do something with the sound, you basically need to learn the entire synth, otherwise you are just randomly turning knobs hoping for the best. Plus you don't know the particular preset at all, which makes things even worse... On the other side of the spectrum are the synths themselves - there the end users face the same problem - to do anything with it, you need to learn it, all of it pretty much.
So... we recommend "the best of both worlds" approach. The super saw is a nice example - it's simple, but you can do a lot to it. It's a sound, that can be modified in various ways. More than in traditional synths, where you can do pretty much nothing, and less than in the entire instrument, where it is too complex.
In any case there's really no point doing an instrument "a synth with 3 oscillators and 2 filters". People want to be using sounds, not synths/samplers. And that's what we want to do - stop thinking about "how that sound has been made", and start with "that sound and what I can do to it". You probably won't be able to do too much to a concert piano, but things may be very different with some ambient texture for example.
Each MP can have "information" about itself, which is then included as help and available via F1/ctrl+H and via "?" buttons in each panel. While rate of a tremolo is pretty much self-explanatory, hence also the default template doesn't have information about effects filled, most parameters on the generator and globals page would probably benefit from being documented at least a little bit. We included documentation for all parameters in Globals tab in the template.
Our help system uses some simplified HTML language and all you'll probably need are these two tags <name>, which should be used in the beginning and contain the name of the MP, and <p> as newline (no need for ending tag). You can also use <b> as bold and <i> as italic. Then there is <value> if you are documenting a selector with a few named values and <reference> if you are talking about a different control. There are many more tags, but we wouldn't recommend using them. And here's a (perhaps a bit complex) example:
<name>Character</name> controls the shape of the filter, which processes the output of the wavetable.
<p><value>Low-pass</value> uses a traditional low-pass filter, which removes frequencies above <reference>Frequency</reference> parameter.
<p><value>Band-pass</value> keeps only frequencies around <reference>Frequency</reference> parameter and removes everything else.