MSoundFactory plans & device requirements
This document is essential 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 from 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, which are specified in order to streamline the workflow of both the user and of the sound creator.
Licencing plans for third party instruments
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. In any case, first there will be a full MSoundFactory licence, which will come with everything that the designers need to create their third party instruments, to export them as an archive for the users to download, and to create some sort of licencing mechanism to generate serial keys for copy protection. The price is not settled yet.Currently this is the planned licence model for 3rd parties, who want to sell their instruments: No royalties for the third parties and a completely free version MSoundFactoryPlayer, which would allow access only to 3rd party instruments and some default 1-3 sounds, no edit screen. It would serve us to make the instrument widespread and 3rd parties can use it to easily sell their instruments with no cost for them nor the target user. It would probably contain some kind of banner asking for upgrading, similar to our free plugins. Then there would be MSoundFactoryLE, priced at say 99 EUR, just to make it a no brainer. So:
- MSoundFactoryPlayer - free, 3rd party instruments, 3 factory instruments, no edit screen
- MSoundFactoryLE - say 99 EUR, 3rd party instruments, all factory instruments, no edit screen
- MSoundFactory - more expensive, 3rd party instruments, all factory instruments, edit screen
We also want the users to be able to trial the 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. Some sounds designers do offer a selection of instruments from their libraries for just such a purpose.
Feel free to contact us via firstname.lastname@example.org with feedback or other ideas.
MSoundFactory is a modular environment, so we can freely add new modules for various methods of sampling and synthesis. Here's a list of what is planned. When it will be implemented depends on the development time and priorities of course. Feel free to post other ideas to us at email@example.com .
- Virtual keyboard in the bottom, collapsible
- MIDI filtering for modules, most likely based on custom expressions
- Optimal microtuning - detuning each note in a chord for optimal alignment of harmonics
- Custom GUIs, based on images, lower priority
- Instrument browser hash-tag search
- Global instrument preset browser, which would allow access not just to the devices, but their own presets, all in one place
- Per-voice equalizer
- Sampler & Multi-sampler (current samplers are for percussion only)
- Spectral synthesizer, most likely image based
- Granular synthesizer
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. Currently there is no 6-out version, but it wouldn't be a problem to create one, if it would be beneficial.
MSoundFactory presets & instruments
We tend to provide preset systems for everything, which is great workflow-wise, but can lead to a 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, A-H presets and potentially a few more globals.
- Instruments (a'ka 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. And they can have their own presets... see 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 (hence MPs).
- Instrument presets - these are presets for each instrument, the button is in the title 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 MPs the instrument provides (or even the order/numbers), the 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, 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, 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. The problem with them is that 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 they let you modulate parameters by LFOs, ADSRs, randomizers, MIDI controllers, MIDI notes etc.
Instruments, saving them, deployment
When designing your instruments, we'd 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 Save device button in the title 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 following path:
Mac: HOME/Library/Application support/MeldaProduction
You can install the instrument on the user's machine by simply placing the file to the same location. In the future there will be a way to make the plugin install it automatically from some archive, which will also contain other resources such as samples.
Each instrument should also has its own Instrument presets, which are available via the Presets button in its title. We'd recommend including the Default preset first, just a matter of convenience. 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 the exact same way, just by placing the file to proper location.
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 MP numbers in your instrument.
Instrument requirements and recommendations
The following set of rules/recommendations is presented to make the lives of both the user and 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 click the Save device button, 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 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 to orient in them. This basically means "keep as much of the template intact". Once you start moving things around, it's often hard to make things tidy again and you may easily loose perspective. 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 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 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 put too many controls on the same row, or the names/unites are too long. On 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 bigger. In such cases it may be better to replace such units with pure percents, or use MP in banks mode to create some shorter names.
- Chaotic GUI. There needs to be 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 inside about how the instrument works. Options with lower relevance are in the bottom. 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. 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. Despite the engine doesn't allow you to change the fonts per-se, you can set the panel types for each group of MPs, which in effect controls the fonts in the titles. If you use too many of them, the GUI will visually become cluttered. Remember, sometimes less is more. Colors can have similar effect - if you device looks like a rainbow, it will be impossible to look at it for many people.
- 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 (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.
Additionally ROLI Seaboard makes use of MIDI controllers CC #107, #109 and #111 and an XY pad producing CC #113 and #114, so it may be a good idea to map these controllers to some controls on the Easy screen of your instrument as well.
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. Do not forget to set the MPE feature flag in the categorizer if your instrument supports it.
Recommendation #3: Use modulation wheel, expression and sustain pedals
These are pretty standard controllers, so it may be a good idea to map these controllers to some controls on the Easy screen of your instrument as well. Sustain pedal is usually used for sustain, but for organs for example, where the sustain is often not used, it may control another parameter, the rotary speed for example.
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 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'd 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 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. 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.