SquidKid-deluxe's
Software Synthesizer Explorations

One very simple, though admittedly less than high-quality method, is to simply go to this website, which provides a XY and sweep oscilloscope, along with two signal generators, and is able to create lissajous figures. However, this requires quite a lot of processing power, especially for high resolutions, and is limited in capability. Therefore, if you want higher-quality, lower processing power, faster animations and sound, read on.

First things first, install Ubuntu Studio. To do so, I recommend following this tutorial. The Ubuntu Studio installer handles a lot of software installation, including upgrading your kernel to one capable of real-time audio processing. In step 2, I installed all available packages, which gives you image editors, desktop images, etc., but following the directions will get you going with minimal software installation. Also note, that using the installer is not a one-time process, and you can always go back and install more. I stopped the tutorial in the middle of step 3, where it says:

Next up, let’s test our audio. Go ahead and open Open OBS Studio

because at this point it should be installed and we’ll be testing in our own manner as described below:

JACK sound server running. To quote their website,

JACK is a professional sound server API and pair of daemon implementations to provide real-time, low-latency connections for both audio and MIDI data between applications.

Now open (from your applications menu) Carla. Carla is a fully-featured modular audio plugin host, with support for many audio drivers and plugin formats. In Carla, click on the “Patchbay” tab. You should see some patchbay objects including system:in, system:out, pulse_out, etc. If you do not see anything but a black canvas, try pressing the Home key on your keyboard. If there is still nothing, that means JACK is not running. To fix this, my recommendation is to open qJackCtl (a interface written with Qt for configuring and using JACK) and start the JACK server from there, which gives you error descriptions in the “Messages” window. If there are errors in the window, try searching for them and doing any necessary additional configuration. StackOverflow is very helpful here.

A quick explanation of what just happened to your system’s sound:

Now, to actually create sound to put on an oscilloscope, you must install some sort of software synthesizer. Here, the options diversify. To stick with with UbuntuStudio, LMMS (Linux MultiMedia Studio) has a instrument called TripleOscillator that can create very interesting sounds. For better listening quality and a more realistic experience, I recommend OB-Xd, a software version of the Obenheimer X analog hardware synth. You can download OB-Xd for free here. Some other software synthesizer’s to consider include: Dexed, AMsynth, FluidSynth, and ZynAddSubFX.

Once you have chosen a synth of some sort (or, for that matter, plugged in a hardware synth to you computer’s microphone jack) you can begin to create shapes on an oscilloscope. First, open Carla, and click Add Plugin. Search for scope and click on Simple Scope (Mono). Then click on the gear icon on the rack item for the scope (click on the “rack” tab if you are in the patchbay). This will open the oscilloscope. I obtained best live results by setting the trigger settings to:

Frame Size: 500us
Trigger: Continuous Level: 0.01
Trigger on: Chn 1 Rise Hold [s]: 0.0

Then, open LMMS from your applications menu, and (if not automatically connected) use Carla’s patchbay to connect the output of your synth to both system:playback and Simple Scope (Mono):In. Now, in LMMS, Turn down the master volume to something around 5-10%. After that, click on TripleOscillator in the Song-Editor subwindow. When you click on a key in the bottom of the TripleOscillator window, a organ-like note should be played and should show up on the oscilloscope, looking somewhat like a bumpy hillside.

Now, to actually create patterns on the oscilloscope, begin by turning off the volume levels on the TripleOscillator for OSC2 and OSC3. Now play a note again. The 'scope should show a simple sine wave. Turn the CRS knob on oscillator 2 (OSC2) all the way up (+24 semitones) and click on the square wave for oscillator 1. Turn the volume knob for oscillator 2 up to ~10% (the exact number does not matter), and then play a note. The scope should now show a high frequency sine wave “carried” on a lower frequency square wave. You could also swap the CRS and Volume dials of oscillator 1 and 2 to “carry” a square wave on a sine wave.

If you look closely at the scope, you may notice that the start and end of square waves have small half-wavelets near them. This seems to be a limitation of software synthesis, and is not present in audio from hardware synthesizers. To some extent this artifact of software sythesis can be filtered out with low pass filtration in the envelope tab of the TripleOscillator.

Hopefully this tutorial helps you to visualize software sythnesized sound on an oscilloscope in a manner previously inaccessible. If you have any trouble with the write up or have anything to add feel free to open an issue or make a pull request on the github page here.