Give Me 3 Synths, Part 3
In this final installment to the series I'll double your reading pleasure by presenting two new Linux softsynths. Such a deal, two reviews for the price of one!
When I wrote my article on the LinuxSampler Project I noted the distinction between a performance sampler and a studio sampler. It occurs to me now that the same distinction should be made with regards to synthesizers. The synthesizers profiled in this review are best considered as performance synths, so let's see what makes the difference.
Perhaps the most significant difference is the lack of patch save/load mechanisms and the non-keyboard orientation. Performance synths assume few or no particular initial conditions, and it is perhaps best to think of them as typical musical instruments (i.e. the performer is expected to play an integral part in the creation of timbre/tone-color). They are designed for realtime use in which the player programs the synthesis settings as a matter of course and often radically. Performance synthesizers are especially well-suited for improvisatory and exploratory musics, though of course they are not limited to any specific forms or styles.
Performance synthesizers also recall the hoary days of the giant modular synths, when players programmed their instruments in vivo, on the gig and even during the piece. Given the complexity of the synths of the day, patch saving was a distant dream. Methods were devised that would assist the player to recall his favorite sounds and settings, but true save/load mechanisms had to wait until the advent of the more portable and easily programmable synthesizers of the 70s and 80s
In contrast, a studio synth could be called a preset synthesizer. This type of machine is usually shipped with a common keyboard interface and a set of prebuilt sounds ready for immediate use, which is a godsend for players who need sounds immediately and want user-friendly interactivity. Unfortunately, since preset synths also remove the necessity of programming the machine most users simply employ the default sounds without ever delving deeper into the machine's synthesis method.
The synths profiled here have returned to Ye Olden Ways, minus the need for a dedicated mover's van to carry a pile of hardware from one place to another. They require significant interaction from the player, else they make little or no sound at all, and their unique user interfaces may require an open-mind towards new ways of programming and playing a synthesizer.
Synth Of Noise
The Synth Of Noise (Figure 1) falls squarely into the class of music machines designed for experimental and improvisational sound design. Justin Smith, the synth's creator, has written that the Synth Of Noise was inspired by the works of Iannis Xenakis and Merzbow, composers known for their use of noises and other typically "unmusical" sounds. Indeed, the Synth Of Noise thrives in such sound-worlds.
The synthesizer modulates realtime audio streams with processes controlled by user-defined control curves (Figure 2). Each curve includes a set of knobs for base frequency, frequency range, and amplitude. Synth Of Noise provides two input ports, but since it is a JACK-enabled application you can freely route any number of sources to either or both inputs. Four output ports can be similarly routed to your system's audio output ports, to the inputs of other JACK synthesizers and/or audio processors, or even back into the Synth Of Noise itself.
Pre-built binaries are not yet available, so you'll have to compile the Synth Of Noise yourself if you want to play with it. Fortunately its dependencies are few and typical (FLTK and JACK are critical components), and the build procedure is a simple make run at the source's top level. No installation is required, just enter ./synth in the source directory to run it (after starting JACK, of course). Licensing is undecided at this time.
After starting the Synth Of Noise you need to route some audio into it, a trivial task with a utility such as QJackCtl or Patchage. Route the output to your selected destinations, and you're ready to stand tall in the worlds of glitch, noise, and industrial sounds. It's worth mentioning that the Synth Of Noise accepts any kind of audio input, so you can experiment with recorded sounds, audio from another synthesizer, live sounds from non-musical sources, or any other audio source. However, bear in mind that this synthesizer is designed for realtime performance and processing, there are no patch save/load mechanisms and no file import/export functions. On an instrument such as Synth Of Noise programming and playing the synth are the same activity.
Documentation is non-existent at this time. Like I said, this software is definitely targeted to experimental and non-linear sound design, and a high degree of user involvement is required. Fortunately, you can get a much better idea of the synth's capabilities by watching and listening to the excellent Synth Of Noise demo on YouTube. I urge readers to check out the video, it is truly worth any number of words about this synth and its special characteristics.
Justin has plans for future incarnations of his synth. Some of the improvements we can expect will include further documentation, the possibility of the Synth Of Noise becoming a DSSI or LV2 plugin, and additional functions for the waveform and control editors. Justin has also indicated that he may add frequency and phase modulation inputs to give the Synth Of Noise more capabilities as a waveshaping synthesizer.
Like the Synth Of Noise, the design for Psychosynth has a predecessor, in this case the unique Reactable. In fact, the relationship is close enough to warrant this descriptive quotation from the Reactable Web site:
The Reactable is a collaborative electronic music instrument with a tabletop tangible multi-touch interface. Several simultaneous performers share complete control over the instrument by moving and rotating physical objects on a luminous round table surface. By moving and relating these objects, representing components of a classic modular synthesizer, users can create complex and dynamic sonic topologies, with generators, filters and modulators, in a kind of tangible modular synthesizer or graspable flow-controlled programming language.
What Reactable does with hardware Psychosynth wants to do in software. Psychosynth emulates Reactable's physical interface with some clever 3D graphics programming, and thanks to some equally clever network programming it's possible to collaborate over the wires in realtime multiplayer performances.
It's unlikely that Psychosynth has reached your Linux distribution's package repositories, so fire up your compiler and get ready to build. Psychosynth has a rich set of dependencies, fully described in its Web site's installation guide, but most of them should be available from your distribution's repos. Psychosynth is an OpenGL-based application, so you will also need a video card with hardware-accelerated 3D capabilities.
Users on the Linux Audio Users mail-list reported that the following environment variables required definition before running the source's configure script :
export SOUNDTOUCH_CFLAGS=-I/usr/include export SOUNDTOUCH_LIBS="-L/usr/lib -lSoundTouch" export LIBLO_CFLAGS=-I/usr/include export LIBLO_LIBS="-L/usr/lib -llo"
These definitions work for my system, so set them to what works for your system. I also had to update my Vorbis library package to libvorbis-1.2.0 to enable Psychosynth's loop player.
After making these adjustments a simple make; make install put the program in place and I was ready to begin my explorations into Psychosynth. I entered psynth3d at the command prompt, and within a few moments I beheld the vision seen in Figure 3. Psychosynth defaults to ALSA for its audio capability (ALSA, JACK, and OSS are supported), but I prefer to use JACK. No problem, I clicked on the Settings icon, reset the audio preferences in the Settings dialog (Figure 4), restarted Psychosynth, and I was ready to route its output to wherever I wished. I didn't plan on doing anything drastic, so I simply opted to connect to the normal ALSA PCM outputs.
It's very easy to learn how to operate Psychosynth. First, select an object to place on the virtual table-top. If it's a generator it will automatically connect to the audio output ports and immediately begin sounding (click the center black circle or any of its connecting wires to stop or restart the sound). Filters and modulators can then be added to the signal path (along wth other generators, of course) to create a complex network of audio synthesis components. The current component collection includes a variety of generator and control waveforms, six filter types, echo and delay effects, audio and control mixers, sequencing modules, and a sample player. True to its Reactable roots, Psychosynth is essentially a subtractive synthesizer, so you'll probably get the most immediately satisfying results by chaining components in the expected fashion, i.e. starting with a combination of generator + filter. You can then add modulators, sequencers, and effects to any point in the signal chain, though of course some combinations will work (sound) better than others.
Item parameters can be edited by selecting a component and pressing the e key on your keyboard. The Properties dialog will open (Figure 5) and you can then alter various aspects of the selected components. Multiple Properties dialogs can be opened, but alas, dynamic control of parameters is not yet possible.
Figure X shows off Psychosynth running a simple patch. A sequencer (square wave) feeds into a control wave (another square) whose output is then routed into a sine wave one generator. The generator's signal is then passed through a low-pass filter. You can hear the results of this patch as recorded by Psychosynth's integrated recorder. In lieu of patch saving/loading this utility is a thoughtful addition. However, the recorder's default output is in 44.1 kHz 24-bit AU format, so you may need to employ a format conversion utility (such as sndfile-convert or SoX) if your software doesn't support the default format.
In this short profile I haven't the space to describe other unique features of Psychosynth, including its network performance capabilities (similar to the mesh networking of the OLPC XO), the component control system, and the unique capabilities of the OpenGL GUI. You'll just have to check it out for yourself. Alas, documentation is sparse, but the program itself provides some valuable help via the Info icon. An even more helpful Psychosynth demo video is available on YouTube, I highly recommend it if you'd like to get a good idea of how Psychosynth looks and sounds in action. As a matter of fact, there are three Psychosynth demonstration videos on YouTube, just enter Psychosynth as a search term and you'll find them. Check out the videos, read the Info help file, and you'll be ready to roll your own synthesis networks with Psychosynth.
This article concludes our tour of some of the recent (and not-so-recent) software synthesizers for Linux. I hope you've enjoyed the presentations, and I especially hope you've been inspired to check out the synths for yourself. Feel free to leave a comment or two, and definitely let us know if you create some new noises that the world needs to hear.
Similis sum folio de quo ludunt venti.
|September 2015 Issue of Linux Journal: HOW-TOs||Sep 01, 2015|
|September 2015 Video Preview||Sep 01, 2015|
|Using tshark to Watch and Inspect Network Traffic||Aug 31, 2015|
|Where's That Pesky Hidden Word?||Aug 28, 2015|
|A Project to Guarantee Better Security for Open-Source Projects||Aug 27, 2015|
|Concerning Containers' Connections: on Docker Networking||Aug 26, 2015|
- Optimization in GCC
- Using tshark to Watch and Inspect Network Traffic
- September 2015 Issue of Linux Journal: HOW-TOs
- Problems with Ubuntu's Software Center and How Canonical Plans to Fix Them
- Concerning Containers' Connections: on Docker Networking
- A Project to Guarantee Better Security for Open-Source Projects
- Where's That Pesky Hidden Word?
- Firefox Security Exploit Targets Linux Users and Web Developers
- My Network Go-Bag
- Doing Astronomy with Python