ModSynth
Welcome to ModSynth! This guide assumes you have a basic understanding of synthesizers and are familiar with the components that normally make up synthesizers, such as oscillators, filters and envelopes. (If you don't, there are plenty of good guides on the internet and videos on YouTube.) Understanding other modular synthesizers might also be useful but isn't necessary -- you can learn about modular synthesizers while playing with ModSynth.
Note: This guide applies to both the free ModSynth and full version ModSynth. Those features only in the full version of ModSynth are prefixed with a (+).
If you can't find what you need in this documentation please email me at [email protected]. Also, if you find a problem or desire an enhancement, you can open an issue at https://github.com/owingsbj/ModSynth/issues.
Playing Instruments
To play an instrument you just need to select it from the Instrument selector at the top. You can use the on-screen keyboard, or connect a MIDI keyboard using a USB-MIDI connector appropriate for your device.
To change controls in the synthesizer, press one of the modules in the graph of the synthesizer. The controls for that module will appear on the right. You can then move sliders or make other changes to controls.
One special module, the Output module, has no controls but instead displays an oscilloscope which will graph the output sound signal. This can be useful to see the sound being generated to understand how the waveform of the sound changes. It is also just fun to look at.
There are several built-in instruments you can immediately play:
- Basic -- the most simplest playable synthesizer Very electronic sound, like what might be in an old Atari generation game.
- Classic -- a synthesizer simulating a three oscillator classic analog synth.
- Echo -- a synthesizer using a delay to add lots of echo.
- Formant -- uses two bandpass filters to simulate vocal sounds
- Ring -- a bell-like sound. Adjust the oscillators to create other ringing sounds.
- FreqMod -- a two-operation frequency modulation (FM) synthesizer using separate oscillators, envelopes and amps.
- PadSynth -- a synthesizer using the pad module to control pitch and filter cutoff, with lots of echo for eerie sounds!
- Wind -- a filtered-noise synthesizer simulating the whistling wind.
- PulseMod -- a pulse-width modulation (PWM) synthesizer.
- Scratcher -- another synthesizer using the pad module, this time with velocity turned on. To make sound, move your finger quickly across the pad.
- Sequence -- a sequence of four notes built by adding a sequencer to the Classic synthesizer.
- ~FullVersionPreview -- a teaser for what is possible with the full version. This instrument has a single LFO driving four different sequencer-synthesizers, showing what is possible for generative music.
- (+) Strings+ -- two MultiOsc oscillator modules combined to create a super-smooth string chorus.
- (+) OP6+ -- a six operator FM synthesizer, chorusing two stacks of three. Add more operators or rewire these to build your favorite FM algorithm.
- (+) MelodyBox+ -- showing use of the melody module.
- (+) PCMLooper+ -- a simple PCM synthesizer for playing a WAV file, with filtering, vibrato and envelope.
- (+) PCMPlayer+ -- similar to PCMLooper+, but for playing soundfont files.
- (+) Crush+ -- an example of adding some distortion using the Crusher module.
- (+) Arpeggio+ -- an example of using the Arpeggiator module.
- (+) Chant+ -- an example of using the Unison module to provide five chorused voices with independent variance in each voice.
- (+) Chimes+ -- showing the random setting on the Sequencer module to create a wind chime-like effect.
- (+) Spectral+ -- an example of using the Spectral Filter module.
- (+) Funct+ -- an example of using function modules. This example creates an instrument that repeats the notes on each harmonic.
- (+) Glider+ -- an example of the Glide module.
- (+) SampleHold+ -- an example of using the SampleHold module.
Saving Instruments
If you want to save the current adjustments of the synthesizer, press Save. Give the instrument a new name if you want to save it as a new instrument. Or, use the same name to change an existing instrument. Then, press OK.
To delete a saved instrument, press Delete and confirm.
Note: You cannot delete the built-in instruments.
Export and Import of Instruments
It is possible to export and import instruments to/from ModSynth. To do this, use a File app and navigate to the files folder of the ModSynth app. This is usually at /Android/data/com.gallantrealm.modsynth/files. You will find all of your saved instruments there and you can copy instruments to and from this folder to export and import them.
(+) Recording
The full version of ModSynth provides a recording capability. To open the recorder, press the Record button. This will replace the instrument selector with buttons to start, stop, replay and save a recording. Press Start to start recording and then being playing. Press Stop to finish recording. You can use Replay to listen to the recording. If you would like to re-record, press Start again and re-record. When your recording sounds good, press Save to save it to a WAV file. (Files are saved to /sdcard/Music/ModSynth folder.) When finished with the recorder, press Done to return to the instrument selector.
MIDI
ModSynth supports playing with most MIDI keyboards. To do so, however, your device must support USB OTG connection. Most devices do, but some popular devices do not, including many of the Kindle Fire tablets. If you have problems with connecting a MIDI keyboard or don't know if your device supports USB OTG, feel free to email me and I'll try to help.
Beyond supporting the pressing of keys on the MIDI keyboard, ModSynth also supports the mapping of controllers (CC's) on the MIDI keyboard to controls in instruments. To do this, long-press on the label of the control. A MIDI dialog will appear. The particular controller number to map to the ModSynth control can be selected with this dialog, as well as selecting a subrange of the controls values to be varied with the MIDI controller. For convenience, the control number of the MIDI controller will be selected if you turn the knob of the control while the MIDI dialog is open.
It is possible to map multiple controls on a ModSynth instrument to a single MIDI controller. When the MIDI controller is changed all of the ModSynth control values will change accordingly.
MIDI change program is also supported to change instruments. This is done using a naming convention. Name the instrument with the number of the program followed by a blank. For example, an instrument named "3 MyInstrument" would be selected when a MIDI change program is received for program 3. (Remember, since MIDI programs are number 0 to 127, program 3 corresponds to MIDI number 2.)
New for Version 7: ModSynth supports the MIDI service API, which allows other apps to control ModSynth. You can now use a different app and have it "play" ModSynth. (The other app would need to support the Android MIDI API.)
Settings
Pressing the gear icon in the upper right will show the settings dialog. These settings are common across all instruments and are saved across uses of ModSynth:
- Language: select the language to use in the app.
- Controls: position of the controls, either to the right or to the left of the synthesizer graph.
- Keyboard size: you can choose the number of keys on the on-screen keyboard.
- Background: several images can be chosen for the background of the synthesizer. (Sorry, you can't use your own image at this time.)
- MIDI channel: by default, ModSynth will respond to any MIDI channel. You can select a particular channel if you have multiple MIDI synthesizers and want to control them with a single controller.
- MIDI support, Use Android MIDI: when checked, Android MIDI support will be used for MIDI if available. This is checked by default. If you find that ModSynth is not recognizing your MIDI controller, you can uncheck this to use a direct USB implementation that avoids Android's MIDI support and is more lenient at detecting devices as MIDI controllers.
- Sample rate: the sample rate determines how often the synthesizer calculates a new value for the output sound. By default this is at the highest possible rate for your device, which gives the best sound fidelity. You should reduce this value if you hear glitching or "stuttering" of the sound, or to extend battery life. However, lower rates can lead to worse sound quality, and, in rare cases, funny distortions at higher note frequencies.
- Buffers: defines the number of sound buffers that used by the sound generator. Less buffers can reduce latency but increase chances of dropouts. More buffers can eliminate dropouts but increase latency. Adjust the buffers if either dropouts or latency are a problem.
- Tuning cents: the base frequency can be adjusted (in cents) to match other instruments using this setting.
- Graph, color icons: when checked, icons in the module graph will change color to reflect the signal on the output of the module. The color will be green for positive output values, red for negative, and yellow for quickly changing values (such as the output of an oscillator). The brightness of the color reflects the level of the output.
Note: Using color icons has an impact on performance and might cause additional glitching. For this reason the option is off by default.
Building Synthesizers
To start building a new synthesizer, select an existing synth and press the Edit button in the lower-left of the synthesizer graph. The screen will fill with only the graph of the synthesizer.
To add a new module, press Add Module. A list of the modules available will display. Click the desired module and it will be added -- most likely at an inconvenient location. You can drag the module with your finger to move it to a good location.
Most modules have their inputs on the left and bottom and outputs on the right. To link modules, start with the output module. Press on the location of the output and drag your finger. You should see a line from the output to your finger as you drag. Release when your finger is at the input location of the destination module. (It may take some practice to get it down. If you can't learn how to do it, comment and we'll try to improve it.)
To delete a link, start with the destination input and drag the link. It should "pull" the link from the input destination. If you release the link should be removed.
To remove a module completely, press Delete Module and confirm the delete. The module and any links to and from it will be deleted.
When you are done building the synthesizer, press Done.
The Modules
Here's a reference to all the modules in ModSynth. First are free-version modules, followed the additional modules available in the full version prefixed with (+). You can find more detailed specifications of each of the control ranges at ModSynth Control Specifications.
Keyboard
The keyboard represents the keyboard on the screen or a USB-MIDI connected keyboard.
Note: There can only be one keyboard module in an instrument.
Settings on the keyboard module:
- The number of voices. The first two settings use one voice in traditional monophonic or legato synthesizer behavior. The other settings choose more than one voice. More than one voice allows polyphonic play with multiple keys playing simultaneously. You can have up to 3 simultaneous voices. (+) With the full version of ModSynth, you can have up to 10 simultaneous voices.
- Octave controls which octave(s) the on-screen keyboard will play.
- (+) Tuning controls how the notes on the keyboard are tuned.
- Portamento controls sliding of the frequency between notes when playing. This sounds best using monophonic (1 voice).
There are two outputs of this module:
- (top-right) the pitch of the note played.
- (bottom-right) the gate, or signal that a note is being pressed.
Pad
Pad is another input device. It displays a rectangular area where you can move your finger around to control two different values, such as pitch and volume, either with or without the keyboard. This can create theremin-like sounds or provide additional control along with the keyboard.
There are several settings on the pad module (accessible by pressing the >> button on the upper right):
- Voices -- controls the number of voices used. More than one voice will allow multiple fingers to be pressed on the pad to play multiple notes.
- X Range -- the minimum and maximum value of the x dimension's output. Each unit of range is equivalent to one semitone if the value is used to control pitch.
- Y Range -- the minimum and maximum value of the y dimension's range. A one-unit change is equivalent to one semitone when the value is used to control pitch.
- X Type -- the behavior of the x dimension. This can be Continuous, Chromatic, Major, or Velocity. Continuous provides a smooth change of the value as your finger is slid across the pad. Chromatic will change the value so if the pad output is connected to pitch it will change in increments of a semitone. Major will change the value so it follows a major scale, with 7 values for each octave. Velocity adjusts the amount of the value based on how fast you move your finger on the pad (useful for turntable "scratching" simulations).
- Y Type -- the behavior of the y dimension.
There are three outputs of this module:
- (top-right) the value of the x dimension.
- (middle-right) the value of the y dimension.
- (bottom-right) the gate, which is signaled when a finger is pressing on the pad. If the x or y type is set to chromatic or major, the gate will retrigger every time a line is passed on the pad. This provides a strumming or glissando effect.
Sequencer
The sequencer module can either replace or assist the keyboard to play a sequence of notes. These can be repeated (looped) or played through once when a keyboard press is received.
The sequencer allows a sequence of up to a sixteen notes and rests to be played. The rate is determined by an input. The note for each step in the sequence is specified with a slider. A button at the bottom of each slider turns on or off the step to make it a rest. The slider can be moved in semitone increments, with the center (zero) not changing the pitch and up or down adjusting the incoming pitch in semitones.
Other controls on the sequencer:
- Voices -- the number of voices used in the sequencer. More than one voice allows slow release notes to overlap.
- Length -- the number of steps used for the sequence.
- Loop -- if checked, the sequence repeats (indefinitely or until the gate input releases).
- (+) Random -- plays the steps in a random order.
- Trigger -- if checked, the sequence will immediately start at the beginning of the sequence when a signal is received on the gate input, even if the sequence is still playing.
Sequencer has three inputs:
- (top-left) the base pitch of the sequence. The sequencer's notes will be relative to this pitch. This is usually connected to the keyboard, but it can come from anything, including a noisy oscillator.
Important: Only the first note played on a polyphonic input is used to set the base pitch of the sequence. Other notes are ignored. You should use only a single voice on the keyboard (monophonic) if it is used as the base pitch of a sequencer. - (bottom-left) the gate that will begin the sequence. This normally comes from the keyboard.
- (bottom) the clock signal. This should be connected to an low-frequency oscillator (LFO) module. The sequencer will play a new note of the sequence each time the clock signal cycles (moves from a value less than zero to a value greater than zero).
The sequencer has two outputs:
- (top-right) The pitch of the current note being played by the sequencer.
- (bottom-right) The gate out. This is cycled once per note played by the sequencer. It is usually connected to envelope modules.
Oscillator
The oscillator is the sound-generator of the synthesizer. It creates a tone. The "brightness" or harmonics in the tone depend on the wave type selected:
- Square wave -- this is a computer-game sounding tone that can also (with filtering) sound like some reed instruments.
- Sawtooth wave -- this is a harsher sound similar to a brass instrument or a violin at high frequencies.
- Sine wave -- this is a pure tone, similar to a flute or whistle.
- Triangle wave -- this is nearly pure, with some overtones.
- Pulse wave -- this has a similar sound to sawtooth, but somewhat less harsh.
- (+) Harmonics -- provides individual control over harmonics. This is great for organ sounds or for additive synthesis. When selected, a >> button will appear to the right. Clicking this button displays a list of sliders that can be used to adjust the tone's harmonics individually.
The following controls are provided on Oscillator:
- Wave Form -- selects one of the wave types listed above.
- Octave -- selects the base octave. In the center (5) will play in the octave of the keyboard. Values above or below will translate the pitch by octaves up or down.
- Pitch -- this control will adjust the pitch of the oscillator in semitones. The pitch can be raised up to 12 semitones.
- Detune -- allows for tuning adjustment in cents (1/100 of a semitone). This can vary from -50 to 50, with the center at 0.
- (+) Noise -- an amount of randomness added to the pitch. At its largest setting the pitch will randomly vary plus and minus an octave. Low settings allow the pitch to vary by small, unperceivable amounts that can be useful when chorusing oscillators or for making the oscillator sound more natural.
- Modulation -- controls the amount of modulation performed by the modulation input.
There are two (+three) inputs to the oscillator:
- (left) the base pitch. This usually comes from the keyboard.
- (bottom) the phase modulation of the base frequency. This can be connected to a second oscillator to create frequency modulation (FM) synth sounds. When the waveform is pulse, this modulation controls the width of the pulse for pulse modulation sounds.
- (+) (top) a reset input. When the value of this input changes from negative or zero to positive, the oscillator is restarted in it's wave. This is especially useful for low-frequency oscillators, used to modulate other modules, to restart the modulation wave when a new note is triggered.
- (right) the sound being created by the oscillator.
Tips:
- An oscillator will work without an input for the base frequency. This is useful for setting up a low-frequency oscillator (LFO), although the LFO module is better suited for this purpose.
- An oscillator's output can be connected to the modulation input to create a pure white noise (see the Wind example).
- The modulation input is phase modulation, which means the change in frequency will seem less the higher in pitch the oscillation becomes. It is not appropriate to use for vibrato effects. For vibrato, you should mixer and mix an LFO signal into the base pitch.
LFO
The LFO (Low Frequency Oscillator) is a special oscillator module tailored to provide vibrato, tremelo or other modulations. Although the Oscillator can be used for modulation, the LFO provides features specifically for this purpose. There are several controls on the LFO:
- Wave Form -- this is similar to waveform on the oscillator, with some differences. The selections are square, sawtooth, reverse-sawtooth, triangle, sine, and custom (+). When custom is selected, a >> button is shown that can be pressed (full-version only) to display an editor that allows the waveform to be arbitrarily drawn.
- Rate-- adjusts the frequency of the oscillator. The range is from 0.1hz to 10.0hz.
- (+) Random -- varies the frequency randomly.
- (+) Fade-In -- allows the LFO to slowly fade in on key press. (This control only appears when a gate signal is connected to the LFO reset input.)
- Positive -- if checked, the LFO signal varies from 0-1 rather than from -1 to 1. A positive signal is good for modulating amplitudes. Non-positive is good for modulating pitch or filter cutoff.
- Pulse -- if checked, the LFO will only perform one oscillation every time the gate input is received.
- MIDI -- if checked, the LFO rate is synchronized relative to the MIDI clock at 120bpm. This means if the MIDI clock is different than 120bpm, the LFO rate will speed up or slow down relative to the MIDI clock.
- (left) a gate signal, which will reset the oscillator when it's value moves positive.
- (right) the output of the LFO oscillator, ranging from -1 to 1 (if positive not checked) or 0 to 1 (if positive is checked).
Filter
The filter module changes a sound by selectively changing the volume of higher or lower frequencies in the sound. The amount of the volume change as well as the frequency at which the volume change can be adjusted with the resonance and cutoff sliders.
The type of filter is selectable:
- Low pass -- lets low frequencies go through but filters high frequencies
- High pass -- lets high frequencies go through and filters low frequencies
- Band pass -- lets a small range of frequencies through, filtering all else
- Notch -- opposite of band pass, removing a small range of frequencies
- Resonance -- a measure of how effective the filter is at removing the filtered frequencies.
- Cutoff -- the center frequency for where filtering is occuring. Filtering will occur above and/or below this frequency depending on the type of filter.
- Modulation -- controls how much the modulation input value changes the filter cutoff.
- (left) the sound to be filtered.
- (bottom) modulation of the cutoff frequency, allowing 'wah-wah" type effects
- (right) the sound after it has been filtered.
Amp
The amp allows for amplification, overdrive, and some tone adjustment of a sound. Amplification is usually modulated in the amp by connecting an envelope module (see below). There are these controls on the Amp:
- Volume -- Adjusts the overall volume through the amp.
- Tone -- Changes the balance of high frequencies to low frequencies.
- Overdrive -- Increases the volume such that it will more easily go beyond the range of the amp and clip.
- Soft Clip -- Smoothly limits the signal level before it reaches the clipping point so that the clipping is not as harsh sounding. This simulates a tube amplifier.
The amp has two inputs:
- (left) the sound to be amplified.
- (bottom) modulation of the volume. This is usually connected to an envelope module to adjust the volume over time.
- (right) the sound after it has been amplified.
Envelope
The envelope module is used to create a varying value that adjusts in value over time, typically according to a note pressed and released on the keyboard. There are four (+six) adjustments:
- (+) Delay -- the time (up to 1 second) that the attack will be delayed after receiving a key press.
- Attack -- how fast the value increases when a key is pressed.
- (+) Hold -- a period of time, up to 1 second, that the envelope maximum will be held after the attack completes before decay or release begins.
- Decay -- how fast the value decreases after it hits max and the key is still pressed.
- Sustain -- the value sustained (after decay) while the key is pressed.
- Release -- how fast the value returns to zero after the key is release.
- (+) Slope -- defines if the style of value change for attack, decay and release:
- LINEAR changes the value in a uniform manner.
- ASYMPTOTIC adjusts the value such that it changes more slowly when reaching the target. This is good for controlling the volume of piano or guitar-like instruments. - (+) Velocity -- when checked, the velocity of the keyboard is reflected in the amplitude of the envelope. The onscreen keyboard allows velocity adjustment based on where you press the key -- higher up is higher velocity. A MIDI keyboard with velocity can also be used.
- (left) the key press signal. This usually comes from the keyboard but can come from other sources as well, such as an oscillator.
- (right) the value of the envelope. This usually is sent to the modulation of an amp, filter or even an oscillator.
Mixer
The mixer module will combine up to three sounds or signals to form another. It can be used to blend the sound from different oscillators, or combine a low-frequency oscillator's output with an envelope's output to to modulate an oscillator, filter or amp.
The mixer has a mix function setting that determines how the two values are mixed:
- Add -- combines the values through addition
- Subtract -- subtracts the second and third values from the first
- Multiply -- multiplies the values. This gives a ring modulation.
- Max -- takes the largest value of the inputs
- Min -- takes the smaller value of the inputs
- Level 1 -- the amount of the first input.
- Level 2 -- the amount of the second input.
- Level 3 -- the amount of the third input.
- (+) Bias -- a fixed amount added to the third signal.
- Modulation -- amount in which the modulator input affects the mixing.
The mixer has four inputs:
- (upper left) the first input sound or signal.
- (middle left) the second sound or signal.
- (lower left) the third sound or signal.
- (bottom) a balance modulator, which allows the balance to be controlled by another module for dynamic mixing effects.
- (right) the combined sound or signal.
Modulation on the mixer works to change the amount of the three signals. A more positive modulation value will increase the first signal's amount in the mix and decrease the third signal's amount. A negative modulation value will increase the third signal's amount and decrease the first signal's amount. The second signal is not affected by the modulation.
Delay
The delay module will delay a sound or signal, up to 1 second. It can be used for echo and reverb effects, or to delay an envelope signal.
There are several controls on delay:
- Delay amount -- a mix of the amount of delay signal and original (pass-through) signal. All the way to the left is no delay mixed in. All the way to the right is all delay with no original signal.
- Delay time -- the time of the delay. All the way to the right would be 1 second of delay.
- Feedback -- the amount of feedback. This is delay signal that is fed back into the delay to form an echo.
The delay has two inputs:
- (left) the sound or signal to be delayed.
- (bottom) an optional modulation of the time of the delay. This can be used for flanging or warping effects.
- (right) the sound or signal after it has been delayed.
Output
The last module of any instrument is output. This module sends the sound to the speakers or headphones. Also, when selected, the output module displays the sound in a visualizer scope on the right side. The visualizations available:
- Oscilloscope -- displays the sound in a classic oscilloscope view, with a green line graph going from left to right.
- Flower -- displays the sound in a polar graph that can form flower or burst shapes.
Note: There is always only one output module. You cannot delete this module.
The output module has an auto-limiting capability. When the sound level would normally overdrive and cause clipping, the output module will reduce the volume. This can distort the sound, especially on slow decays or slow tremolos. To let you know when auto-limiting is happening, the speaker symbol on the output module will change color -- first yellow, then orange, then red -- as the amount of overdrive and auto-limiting increases. For the best sound quality, you should try not to overdrive the output.
There are three inputs:
- (left-top) the left channel signal.
- (left-bottom) the right channel signal
- (bottom) an optional scope signal. If an input is not connected here the two channels are summed and used for the scope.
(+) MultiOsc
MultiOsc is a multiple oscillator module. It is the equivalent of five oscillator modules and mixers to combine the outputs equally. It is very useful for quickly building rich, chorused sounds.
All inputs and outputs of MultiOsc are the same as the oscillator module. However, an additional control is provided to define the chorus width, or difference in the frequencies of each of the five oscillators.
(+) Unison
Unison will use multiple voices to create an advanced chorus effect. It acts as if there were multiple synthesizers playing the same note. It can produces a similar effect as MultiOsc, but by using multiple voices the pitch, filtering, or other effects can be independently controlled to provide a more natural sounding chorus. This comes at an expense however -- by using multiple voices the polyphony of the keyboard for chords is reduced.
The controls on Unison:
- Voices -- this is the number of voices that are chorused together.
- Polyphony -- this is the number of simultaneous notes played by the keyboard. It should match the Voices setting on the Keyboard, Pad or Sequencer module that feeds into the Unison module.
- Width -- this is the spread of the pitch between the different voices.
There are two inputs:
- The input pitch. This should come from a Keyboard, Pad, or Sequencer module.
- The input gate. This should come from a Keyboard, Pad, or Sequencer module.
- The output pitch.
- The output gate.
- The suggested balance, which is relative to the spread of the voice. This can be fed to the Pan control to provide voices that spread across the left and right stereo channels.
(+) PCM
The PCM module allows a sampled sound to be played. The sounds pitch can be adjusted and modified similar to the oscillator module. The sound can either play once or be looped and play repeatedly.
The controls on the PCM module allow:
- Sample -- a button to select the WAV or SoundFont (SF2) file to play. Touch the button and you'll be prompted first with the app to use for selecting the file. After selecting the app, you can use it to navigate to the file and select it.
- Loop -- a checkbox. If checked, the sample will play repeatedly (forever).
- Octave, Pitch, Detune -- just like on Oscillator, these can be used to change the natural frequency of the sampled sound.
- (left) the base pitch. This normally would come from the keyboard. For WAV file, a C4 note would play the sample at its natural frequency. For SoundFont files, the pitch will choose the appropriate sample as defined within the SoundFont.
- (bottom) an optional gate. This would normally come from the keyboard and would start the playing of the sample when a key is pressed. If the sound is a continuous looping sound then this input isn't needed.
- (right) the sound sample, played at the frequency adjusted according to the pitch input and controls.
Notes:
- WAV and SoundFont files can be very large and may fail to load due to too little memory on your device. If this happens, or if other problems occur with large files, you'll need to use a smaller file.
- SoundFont files can hold multiple instruments and samples for the same note. Currently, ModSynth will only choose the first sample found in the SoundFont file for a particular note.
- SoundFont files can have settings that would normally control other aspects of a synthesizer such as envelope, filtering, vibrato and reverb effects. These settings are ignored by ModSynth.
(+) SpectralFilter
The spectral filter module is a bank of 25 band-pass filters, each covering a small part of the frequency spectrum. With a grid displayed in the controls of the module, individual band-pass filters can be turned on or off over the range of modulation. This allows the module to perform a wide variety of filtering effects.
Since the spectral filter simulates 25 other filters, it will add quite a bit of overhead to the instrument. You may need to reduce the sample rate (see the settings) if glitching is heard when using the spectral filter.
The controls on spectralfilter:
- A 25x25 grid controlling each filter (in the y dimension) over different modulation amounts (the x dimension). On the right of this grid you will see several buttons:
- >> -- displays the other controls
- pencil -- turns on cells when you press the grid
- eraser -- turns off cells when you press the grid
When playing, the currently used column of the grid will be highlighted in red. - Resonance -- this controls the resonance of each bandpass filter. A setting of 25 is usually best when range is at maximum, in order to cover the frequency range completely without much overlap. You may want to increase the resonance if you reduce the range.
- Range -- this controls is the range of frequencies covered by the filters. At 100, the range is about 4 octaves (covering about 16 harmonics).
- Modulation -- this controls the modulation range. Typically you would leave this at 100 so that the modulation signal will utilize the entire x dimension on the grid.
- (upper left) the sound to be filtered.
- (lower left) the base pitch of the filtering range.
- (bottom) the modulation signal.
- (right) the sound after it has been filtered.
(+) Crusher
The crusher module ads digital distortion by simulating a reduced number of bits or a lower sampling rate for the digital signal. It takes the input signal, reduces the sampling rate and then "steps" it, rounding it to distinct levels. The rate and number of levels are adjustable.
The controls on crusher:
- Rate -- this adjusts the rate reduction. Higher values simulate a slower sampling rate.
- Level -- reduces the number of distinct levels. Higher values reduce the number of levels. At very high levels, the sample has only two levels (a binary sample).
- Modulation -- controls how much the modulation input value changes the rate or level setting. A checkbox also follows the modulation value which chooses if rate or level is adjusted.
- (left) the sound to be distorted.
- (bottom) modulation signal.
- (right) the sound after it has been "crushed".
(+) Glide
The glide module is similar to the envelope module in some ways, though it is meant to control pitch changes. It can be used to provide a portamento onto the pitch output of the sequencer or melody modules. There are three controls:
- Up -- controls the rate of upward change in the signal.
- Down -- controls the rate of downward change in the signal.
- Audio -- this is a checkbox. When checked, the glide module can be used to smooth audio frequency signals, such as from the oscillator module. This can remove quick square-wave like changes in the audio, reducing higher harmonics in signals such as from the crusher module.
- (left) the input signal
- (bottom) a gate signal, which can be used to "reset" the glide so that it will immediately reflect the input signal level in the output.
- (right) the output signal.
(+) SampleHold
The samplehold module will sample the incoming signal whenever a gate signal occurs and will emit that sample on the output. It can be used to provide semi-randomness and other distortion effects to an oscillator or LFO.
The module has no controls.
There are two inputs:
- (left) the input signal
- (bottom) a gate signal, which will cause the samplehold module to "capture" the input signal.
- (right) the output signal. This will have the value of the input signal at the time last capture.
(+) Divider
The divider module will divide an LFO or other low-frequency oscillation into a lower frequency. This is usually used to reduce the rate of the LFO to drive different sequencers.
The controls on the divider module allow the divisor to or as well as the phase and duty.
(+) Function
The Function module allows an algebraic expression to be used to define the function of the module. The expression can contain popular operators as well as some functions.
Here are the functions and operators supported:
- Functions; sin(), cos(), round(), sqrt(), abs() and signum(): for sine, cosine, rounding, square-root, absolute value and signum. (Sine and cosine take radians / 100).
- Arithmetic operators: +, -, *, / and %, for add, subtract, multiply, divide and modulo (remainder).
- Comparison operators: ==, !=, <, <=, >, >= for comparison of two values. For these, a result of 1 is used for true, and 0 for false.
- Logical operators: &, |, ! for and, or and not.
- Conditional operator: <expression1> ? <expression2> : <expression3>. This works as in C++ and Java. If expression1 is non-zero, expression 2 is chosen, else expression 3 is chosen.
Some single letter variables can be used in the function and are defined as follows:
- x, y, z as well as m and n are used for the inputs to the module.
- a, b and c can be used for the values of the three sliders on the module (where each slider is from 0 to 1 in value).
- t can be used for time in seconds from the start of the app.
- u and v can be used for the time in seconds from the last trigger sent to m and n. (A trigger occurs when the input value moves from negative or zero to positive. A gate signal is like this.)
If you enter an expression with invalid syntax, will appear as red and will not evaluate. If an expression yields an invalid number (such as divide-by-zero) the expression does not change the output value.
Note: After changing expression you should press "Enter" (the line return key) to have the expression validated.
Warning: The function module is quite powerful and can simulate other modules, such as mixers, amps, filters and oscillators. However, since the function entered is interpreted, it will perform slower than the equivalent dedicated module. This means it will be easier using function modules to reach the limits of what's capable on your device, leading to dropouts.
(+) Operator
This module implements a complete FM synthesis operator. Internally, it can be thought of as having a sine-wave oscillator, an amplifier, and an envelope module. Having these combined into a single module makes it easier to build complex FM synthesizers using many operators.
The controls on the Operator module are in three groups:
- Oscillator controls for octave, pitch and detune
- Feedback controls the amount of oscillator output fed back in as modulation. Increasing feedback changes the waveform of the oscillator from a sin wave to more of a sawtooth wave (and beyond) all the way up to complete noise.
- Envelope delay, attack, hold, decay, sustain, release
- Minimum and maximum output levels
- Selector for linear or asymptotic envelope behavior
- Checkbox to enable velocity sensitivity.
- (top) the pitch, usually connected to the keyboard.
- (left) three modulation inputs. These are usually connected to other Operators or left disconnected. They are summed together to form the phase modulation for the sine-wave oscillator. (If more modulation inputs are needed, mixers can be used in front of these inputs.)
- (bottom) the gate, or key press signal, usually also connected to the keyboard.
- (right) the output of the Operator's oscillator after being shaped by the FMOP's envelope.
(+) Melody
Melody is an advanced sequencer that allows a sequence of notes to be programmed in a piano-roll fashion. Clicking on the roll in an empty area will add a note. Clicking on an existing note will select it. Dragging a note will move it. A toolbar on the right allows the selected note to be adjusted in length and velocity, or to be deleted.
Pressing the ">>" button will show additional controls:
- Voices -- the number of voices to use in playing the melody.
- Loop -- if checked, the melody repeats (indefinitely or until the gate input releases).
- Trigger -- if checked, the melody will immediately start at the beginning of the sequence when a signal is received on the gate input, even if the melody is still playing.
- Load MIDI File -- use this to select a MIDI file to load into the melody sequence. Loading a MIDI file will replace all existing notes in the melody with those from the MIDI file. The notes can then be editing if desired.
Melody has three inputs:
- (top-left) the base pitch of the melody. The melody's notes will be relative to this pitch. Note that only one voice is used from this input to set the base pitch. (Other voices are used to play the melody, including overlapping notes or chords.)
- (bottom-left) the gate that will begin the melody.
- (bottom) the clock signal. This should be connected to an low-frequency oscillator. The measure will move 1/16th on each clock cycle (each time the clock moves from a value less than or each to zero to a value greater than zero).
Melody has two outputs:
- (top-right) The pitch of the current note being played by the melody.
- (bottom-right) The gate out. This is cycled once per note played. It is usually connected to envelope modules.
(+) Arpeggiator
Similar to the sequencer, the arpeggiator module will play a sequence of notes, either one time or repeatedly. The notes played however are those that you play on the keyboard. This can give a strumming or melodical effect on chords.
The controls on the arpeggiator:
- Type -- the type of arpeggiation. This can be up (from lowest note to highest), down (from highest to lowest), up-down, or down-up.
- Repeat -- repeats the arpeggiation over and over again as long as the keys are pressed.
(+) Pan
The pan module allows the dynamic rebalancing of a voice across left and right stereo channels. This module would usually be used near the output module, with the two outputs of this module feeding into the left and right stereo inputs of the output module.
There are two inputs:
- (left) The input sound.
- (bottom) a balance signal, which allows dynamic changing of the panning from left to right.
- (top-right) The left output channel.
- (bottom-right) The right output channel.
(+) Compressor
The compressor module takes all voices and combines them together into a single voice. It then performs a limiting on the range of the combined voice. The limiting can either be instantaneous (which acts like an overdrive) or reactive based on the volume of the signal over a period of time.
There are three controls on the compressor:
- Amount -- this controls the amount of limiting of range that is performed. Higher values will make soft notes louder and harder notes quieter.
- Delay -- this controls how reactive the limiting is to the change in volume of the sound. Set this to zero and the compressor acts as an overdrive, clipping the waveform causing distortion. More than zero will cause a period of time before a quiet sound is made louder. This can give a slower decay to sounds making them sound fuller and have more presence.
- Gain -- this can be used to adjust the volume out of the compressor.
(+) Reverb
The reverb module utilizes multiple delays in stereo for simulating the reverberation of room acoustics. There are several controls:
- Amount -- this controls the mix of reverberated sound to the original. All the way to the left is only original. All the way to the right is only reverberation.
- Depth -- this controls the delay time for the longest reverberated sound. Far to the right simulates a larger room, and to the left a smaller room.
- Tone -- this adjusts the tone of the reverberated sound. Typically room acoustics will naturally reduce the volume of higher frequencies and this control will help to simulate that. Far to the left will have the greatest effect.
- (top-left) the left channel of sound to have reverberation applied.
- (bottom-left) the right channel of sound to have reverberation applied.
- (top-right) the left channel of sound with reverberation
- (bottom-right) the right channel of sound with reverberation