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:
alsamixer
or QasMixer (a Qt version of alsamixer)
pulse_in
and pulse_out
. These are “hooks” into PulseAudio from JACK, and allow you to send and receive audio from PulseAudio. Most audio software packages (e.g. VLC media player, Audacity,
Rosegarden, etc.) can work easily with either JACK, ALSA, or PulseAudio.
pulse_out
to system:playback
via Carla’s patchbay. This should be automatically done by Ubuntu Studio Controls, but might have been accidentally disconnected.
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.