Stereo Tracks Tutorial
This tutorial provides a brief introduction to using stereo tracks in Nyquist programming.
If a sound from an Audacity stereo track was given to Nyquist, the *TRACK* variable contains an array of sounds. Because all Nyquist "snd-..." low-level functions only can process mono signals, to use such a function, the *TRACK* array first must be split into single mono signals and afterwards be re-combined into an array before it is given back to Audacity.
In Sal, one could write:
Or in LISP, one could write:
(arrayp *track*) - tests if '*track*' is an array
(vector ... ) - re-combines the two mono signals into a stereo signal. A "vector" is an one-dimensional array
(aref *track* 0) - the left stereo channel [the 0-th slot of the array]
(aref *track* 1) - the right stereo channel [the 1-st slot of the array]
Important: The Nyquist interface within Audacity can handle a maximum of two channels simultaneously [Audacity stereo tracks]. If in Audacity more than one audio track were selected, each of the selected tracks will be given sequentially, one after the other, with a maximum of two channels simultaneously [stereo] to Nyquist for processing. It is not possible with Nyquist in Audacity e.g. to copy audio signals from one Audacity track into another track.
multichan-expand
In the "nyquist.lsp" file in the Audacity "nyquist" sub-directory, there is a function "multichan-expand" defined, which simplifies the handling of multi-channel sounds [e.g. stereo tracks]:
(multichan-expand function &rest arguments)
So the "arrayp" constuct from above can also be written:
This may look a bit more cryptic at first, but it can help to avoid long-winded audio processing functions.
Last updated