MSoundFactory plans & device requirements
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.
MSoundFactory licencing and editions
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
- 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.
Information about MSoundFactory
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.
MSoundFactory presets & instruments
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:
- Global presets in the plugin title - are mostly useful when designing your own sounds etc. These contain all settings of the instrument, except for the global oversampling, the A-H presets and potentially a few more globals.
- Instruments (aka devices) in the categorizer on the left - these are THE instruments. These are actually the same as the global presets, but they also contain the info about the categorization (the Instrument’s genre, timbre, articulation etc.). And they can have their own presets... see the next item. The idea here is that these instruments are the ones that are deployed to the end user's computer. An example may be a Steinway Piano. It's not just a sound, it's an instrument, which you can shape in various ways using the parameters provided on the Easy screen (and so the Multiparameters).
- Instrument presets - these are presets for each instrument, the button is located in the title bar of the instrument panel. Think of the Steinway Piano instrument. It can be dark, bright, dull, open, reverberated... And that's what these presets are for. It's important to understand that these presets ONLY contain parameters of the Easy screen controls, the internal constitution of the instrument itself is not stored in them (as opposed to the global presets & instruments). This makes them very efficient, but they work ONLY if the instrument doesn't change its parameters. You can actually change the instrument structure, but once you change the Multiparameters the instrument provides (or even the order/numbers), these presets won't work properly anymore.
MSoundFactory instrument categorization
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.
Dual modulation system in MSoundFactory
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.
Installing instruments on customer computers
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.
Instrument requirements and recommendations
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.
Requirement #1: If you do not want to follow the recommendations, do not set the "Full GUI" flag
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.
Requirement #2: Include information about your device
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.
Requirement #3: Make sure that the randomization works properly
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 GUI is too wide, immediately or after uncollapsing some panels. This may be because you have put too many controls on the same row, or the names/units are too long. One typical example is the oscillator shape - it can look like "54% sine, 46% sine squared" for example. That's a very long text and the engine will make sure it fits the GUI, by making the GUI wider. In such cases it may be better to replace such units with pure percentages, or use a MP in Banks mode to create some shorter names.
- Chaotic GUI. There needs to be some logic in the layout of your instrument. If you open an instrument, where there are various panels with various meanings in seemingly random order, you probably won't be able to understand it and use it well. The Super-saw is a good example of a well working structure - there are 3 oscillators on top, the middle is the biggest one pointing towards the fact that it's the most important one. The layout indicates that these are in parallel giving you a clear insight into how the instrument works. Options with lower relevance are in the bottom of the GUI. This is a simple instrument of course, so your situation may be more complex, but it's always a good idea to think hard about the layout.
- Upper-case names. One important thing to realize is that the default upper-case letters in some controls such as knobs are actually optional - these depend on the style and Settings / Style / Upper-case option. It is recommended to disable this option and use the default Neon style, to make sure you can actually see the proper names. In practice the names are never upper-case and most likely follow the typical "first letter upper-case, the rest of them lower-case unless there are names" rule.
- Too many different fonts and colors. Even though the engine doesn't allow you to change the fonts per-se, you can set the panel types for each group of MP, which in effect controls the fonts in the titles. If you use too many different panel types, the GUI will visually become cluttered. Remember, sometimes less is more. Colors can have similar effect - if your device looks like a rainbow, many people will find it impossible to look at it.
- Too complex GUI. You can exploit currently 256 MPs, that lets you create very very complex GUIs. But most people actually seek simplicity, so having too many options may not be a good choice. If you do, make sure you provide many instrument presets and make the GUI especially tidy, collapsing/hiding whatever is not needed all the time.
Recommendation #1: Every device should contain the Global tab, which would be (nearly) identical
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.
Recommendation #2: Every device should be MPE compliant unless it really doesn't make sense
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.
Recommendation #3: Attach some MIDI Main controllers to some of your device controls
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.
Recommendation #4: Globals tab and Effects tab should be separated, there are no rules about Generator tab
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.
Recommendation #5: Effects tab in the template contains a full set of effects, that doesn't mean that they all need to be used
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.
Recommendation #6: The instruments should be medium complex, just enough for the end users to play with the sound
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.
Recommendation #7: Include help for most controls, at least the "not obvious" ones
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.