Nyquist Basics: The Audacity Nyquist Prompt With SAL
|This page explains how to use the Audacity Nyquist Prompt to test-run Nyquist code snippets using the SAL syntax. For Audacity versions below 1.3.13 (Beta), SAL syntax is not supported in the Nyquist Prompt... command, so you should use LISP syntax as described in Nyquist Basics: The Audacity Nyquist Prompt.
Make sure you are using Audacity 1.3.13 (Beta) or higher.
The Audacity Nyquist prompt appears in Audacity'smenu, which is activated only if an Audacity audio track exists and at least some audio in it is selected.
Load a Sound File
Sound files are imported into Audacity via:
CTRL + SHIFT + Ior the shortcut
If you have no pre-existing sound files to work with, you can create your own mono or stereo tracks via the Audacitymenu.
Create a Mono Track
Click. Leave everything as-is and just click "OK". A mono track will appear in the Audacity window:
Create a Stereo Track
1. Create an empty stereo track. Click.
An empty stereo track will appear in the Audacity window.
2. Now click. Leave everything as-is and just click "OK". The stereo tracks will become filled with the generated sound.
The Nyquist Prompt
Select the track(s) and click CTRL + A on the keyboard.. Effects are not activated until at least a portion of the track(s) have been selected. You can select all tracks by pressing
The Nyquist Prompt appears like this:
The Nyquist Interpreter
In the Nyquist Prompt window, type
into the text field as follows:
When you click OK, you should get a message box displaying the word hello:
The message box disappears when you click "OK".
This, as you have learned, is how you can send messages to the user.
The Nyquist Debugger
After clicking OK in the "hello" message box, go back to, and this time, type
this time leaving off the quotes around "hello":
Important: This time, click "Debug" instead of "OK".
You should first get a window displaying a "Nyquist did not return audio" or a similar message:
After clicking "OK" in the window above, a second window appears, displaying the error messages that Nyquist returned. Notice that there are two parts to the message. The first line says what went wrong. Here, HELLO is interpreted as a variable, but the variable has no value, which is an error. Starting with the second line is a "traceback" which tells where in the program the error occurred. MAIN refers to any top-level command. If you defined a function and the error occurred within the function, this would be indicated in the traceback.
Basic Nyquist Commands
The current Nyquist manual introducing SAL syntax is here: Nyquist 3.02 Reference Manual.
Audacity uses the 's' variable to reference the current audio file/selection. Thus, you can use basic commands such as 'mult' or 'sum' with 's' and the Nyquist prompt will replace the file/selection with the result (or as Audacity calls it, "returned audio").
Applying a DC offset to a signal
Original Signal before command.
Type the following into the Nyquist Prompt (using SAL syntax):
return s + 1
Or type the following equivalent LISP command:
(sum s 1)
The whole signal has now moved up to above zero.
Modulating with a carrier frequency
To multiply a signal with a generated carrier signal, you can use the following commands:
return s * hzosc(19000)
Or the LISP equivalent:
(mult s (hzosc 19000))
The (hzosc 19000) produces 19kHz sine wave carrier.
return s * osc-pulse(19000, 0)
Or the LISP equivalent:
(mult s (osc-pulse 19000 0))
The osc-pulse(19000, 0) produces a 19kHz square wave carrier (note the 0 is the bias or 50/50 duty cycle, -1 to 1 = 0%-100% pulse-width ). Applying the 19kHz square wave carrier obtains this result.
The top and bottoms of the signal can then be clipped using the Hard Limiter option from the effects menu (0dB limit and Wet level 1) if required.
The above examples show how you can use the many Nyquist commands to perform basic signal processing without using scripts.
- Find the zero crossing points
- Then only apply the carrier frequency to those regions above zero.
Thanks to Forum moderators stevethefiddle & kozikowski for their help with Audacity & Nyquist.