AlsaModularSynth — Synthesizer and Effect Processor

AlsaModularSynth (alsamodular) is a digital replica of an analog modular synthesizer. The program has a JACK interface and can load all kinds of LADSPA effect plug-ins. Thus, it can also be used as a versatile effect processor.

Enter ams to start AlsaModularSynth from the command line. The parameter -j activates the JACK mode, provided the JACK engine jackd is running (see Section “The JACK Audio Connection Kit”). The required port connections can be established with QJackConnect. In the JACK mode, PCM modules are automatically converted to JACK modules (and vice versa). Separate ports are generated for each JACK module. AlsaModularSynth only appears in the list of QJackConnect if at least one JACK module exists.

The directory usr/share/doc/packages/alsamodular contains numerous example patches that demonstrate the various possibilities. Detailed documentation is available in the subdirectory html.

Randomly Playing Patches

A quick overview of some of the sound possibilities is provided by the patches that randomly play sounds without a MIDI keyboard or audio input. example_ams_demo.ams generates impressive random music. In example_ams_demo_scope_spectrum.ams, this music can even be visualized with the scope and spectrum viewer modules. Right-click to open the view of these modules. See how the character of the music changes when you change the quantization in the quantizer module (ID 7) from the pentatonic scale to a value such as 1/6 (whole-tone scale).

One of the most legendary (and expensive) analog synthesizer modules is the frequency shifter invented by H. Bode and built by R. A. Moog. This module was recently implemented as a LADSPA plug-in by S. W. Harris and is therefore available for AlsaModularSynth. In example_ams_demo_bode.ams, the effect is applied to the random music. example_bode.ams demonstrates the frequency shifter in the spectrum viewer module. One example by the author of the plug-in is example_bode_wail.ams. Here, realize a feedback by way of the JACK In module in the JACK mode.

example_wind.ams shows that even the sound of wind can be generated with AlsaModularSynth. There are also other example patches, like example_random_* and sequence0*.

AlsaModularSynth as an Effect Processor

Figure 18.16. The Ladspa Browser

The Ladspa Browser

Especially in the JACK mode, AlsaModularSynth can be used as a versatile effect processor. One example for this is example_capture.ams. If you connect an external sound source to your sound card and use alsamixer to specify the correct settings for the capture, the example will work even without JACK. With the Ladspa Browser, started with Module -> Show Ladspa Browser, generate modules for LADSPA effects. Plug-ins should always be created with Create Plugin, unless you use AlsaModularSynth as a polyphonic synthesizer. Create Poly Plugin generates a separate plug-in instance for each part.

Synthesizer Patches

After having used the MIDI patchbay kaconnect to connect AlsaModularSynth with a master keyboard (vkeybd or an external keyboard), you can use the program as a synthesizer. If polyphony is not explicitly activated with the parameter --poly, AlsaModularSynth will be monophonic, just like its classical model. example_basic.ams contains the simplest synthesizer patch. In example_basic_vcf.ams, the sound is modified by a filter. Portamento and resonance filters are added in example_basic_vcf_reverb.ams. In most patches, the pitch bend and modulation wheel are determined by module parameters. To prevent parameter leaps, the movements of these MIDI controllers is only effective when the current parameter value is accepted. As in many analog synthesizers, the envelope modules are single triggered — they are not restarted for legato playback. This enables some interesting phrases.

In example_full_midi.ams, the first sixteen MIDI controller events are linked to module parameters. If you do not have a device that can send these events, use the software MIDI controller box QMidiControl, started with qmidicontrol. When experimenting with this program, open Control Center -> Show Control Center. If Follow Midi is activated here, the most recently moved MIDI controller and the first parameter associated with it are automatically displayed. More information about the Control Center is available in the following section.

Keeping Track with the Control Center

The main purpose of the Control Center is to bind module parameters to MIDI controllers. However, extended parameter control settings, such as the range of sliders, can also be specified here.

Figure 18.17. MIDI Controllers and Module Parameters in the Control Center

MIDI Controllers and Module Parameters in the Control Center

The list to the left displays the MIDI controllers used in a patch. In this tree view, the parameters associated with a controller are shown under the respective controller. As soon as a controller event that does not exist in the list is received via MIDI, it is added to the list. The list to the right shows the modules and their parameters. If you select a parameter here, the respective control appears, enabling modification of the parameter and range limits.

To create a MIDI binding, select a controller in the list to the left and a parameter in the list to the right. Then click Bind. To clear a MIDI binding, simply select the respective parameter in the list to the left under the controller and click Clear Binding. Clear All clears the entire list of MIDI controllers and bindings. With Toggle MIDI Sign, determine whether a parameter should increase or decrease with rising controller values.

The MIDI Out Module

The output of the MIDI events generated by a MIDI Out module is realized by way of the two readable MIDI ports of AlsaModularSynth in the left list of kaconnect. If several MIDI Out modules are used simultaneously, the MIDI events are merged accordingly. As both notation and controller events can be sent, the module can also be used to control all kinds of parameters via control voltage. To do this, the readable MIDI ports must be connected with the writable MIDI port. The example example_midiout_controller.ams shows the change in an envelope with autogenerated controller events. Easily follow the movement of the envelope by opening the configuration dialog of the ENV module (ID 5) with the right mouse button. The option Follow MIDI in the Control Center should be deactivated while this patch is running.

If you connect the readable MIDI ports of AlsaModularSynth with a MIDI sound generator, example_midiout_note.ams plays scales controlled by an LFO. example_midiout_note_velocity.ams shows that the velocity data can also be autogenerated. example_midiout_random.ams generates random music with drums.

Writing WAV Files with the WAV Out Module

Using the WAV Out module, directly record the signals generated or processed by AlsaModularSynth as a WAV file in CD quality. In the configuration dialog of the module, select New File to open a file browser. If the file displayed under File is successfully generated, the buttons under Record are activated and can be used.