# Nyquist Demos and Examples in Extensions

Roger B. Dannenberg & many contributors

The Nyquist IDE supports Extensions, which can be managed with the Window : Manage Extension menu item. Here is a list of some of the extensions.

arpeggiator
  describes and implements functions to create arpeggio effects.
atonal
  Jorge Sastre contributed this code to generate atonal melodies. It uses simple methods, but is quite effective and has been used in a number of compositions for both acoustic instruments and electronics.
bandfx
  describes how to use the bandfx library in Nyquist. Multiple band effects split the input into frequency bands and apply different effects (e.g. different delays) to each band.
cellautomata by Ann Lewis
  uses cellular automata to generate scores in Nyquist.
clipsoften
  contains code to reduce the harshness where clipping occurs.
compress
  implements a dynamics compressor for noisy speech audio.
convolve
  illustrates how to use convolution in Nyquist.
distortion
  describes how to use the Nyquist `shape` function to achieve distortion.
dtmf
  implements a DTMF tone generator (DTMF are the "touch tones" sent by phones to dial numbers).
ext-template1
  is an example of a Nyquist extension using documentation in HTML.
ext-template2
  is an example of a Nyquist extension where documentation is in source code.
fft
  describes how to use FFT functions in Nyquist to perform spectral processing (uses Lisp syntax, see also fftsal.)
fftsal
  describes how to use FFT functions in Nyquist to perform spectral processing (uses SAL syntax, see also fft.)
fm-voices-chowning
  re-implements FM-synthesis-based voices created by computer music pioneer John Chowning.
gran
  implements granular synthesis functions.
intro
  The introductory chapter of the Nyquist Reference Manual presents a number of small examples. These are consolidated into both `examples.sal` and `examples.lsp` files that you can load and run in Nyquist.
labels
  implements code to read and write Audacity label files.
lpc
  is a tutorial on how to use LPC functions, especially useful for voice modelling and cross-synthesis.
mateos by Daniel Mateos
  has a number of examples currently in Lisp syntax, but they can be loaded and called from SAL programs. (For an example, the Phase Vocoder Tutorial described below uses `mateos/organ.lsp`.) The directory `mateos/` contains <a `bell.lsp`, `gong.lsp`, `organ.lsp` and `tuba.lsp`.
pmorales by Pedro Morales
  contains the following programs:
  `pjmg.lsp` - Some helper functions: randi1, randi2, randh1, rndh2
  Simple Synthesis
  `A4.lsp` - Waveform + Envelope, Modulating the envelope with noise
  `A5.lsp` - Waveform + Envelope, Modulating the frequency
  `A6.lsp` - Waveform + Envelope, Modulating the frequency, 2
  Additive Synthesis
  `b1.lsp` - Gong-like sounds
  `b2.lsp` - Risset's Spectral Analysis of a Chord
  `b3.lsp` - Risset Bell
  `b4.lsp` - Continuous pitch control by LFO
  `b7.lsp` - Risset Tibetan
  `b8.lsp` - Risset Drum
  `b9.lsp` - Risset Endless Glissando
  `c1.lsp` - Random Signals
  `partial.lsp` - Bell
  Subtractive Synthesis
  `buzz.lsp` - Buzz with Formant Filters
  Karplus Strong Synthesis
  `d1.lsp` - Simple KARPLUS-STRONG
  `ks.lsp` - Karplus-Strong Algorithm
  FM Synthesis
  `e2.lsp` - Chowning Dynamic Spectral Evolution
  Physical Modeling
  `phm.lsp` - Flute Physical Modelling
midi
  describes how to read and write Standard MIDI Files, how to generate MIDI data for sequencers, MIDI players, and music notation programs, and how to use Nyquist to synthesize a MIDI file.
moog
  implements a mini-moog (analog synthesizer) emulator.
plight by Phil Light
  contains drum samples and drum machine software.
pvoc
  shows how to use the phase vocoder in Nyquist.
regression
  implements linear regression functions.
reverse
  implements functions to reverse sounds and sound files.
rhythm
  provides examples that use noise pulses and FM, along with transposition and repetition to explore various rhythmic effects.
sdl
  offers a compact score language, SDL, which can be used as a shorthand to generate Nyquist scores.
shepard
  is a Lisp source file that produces Shepard tones. See comments in the code for explanations and documentation. There is also a `shepard/shepard.ny` Shepard tone plug-in for Audacity.
sliders
  illustrate the use of sliders to create interactive controls for sounds and compositions in Nyquist. Read the comments in the `sliders/slider-demos.sal` source code and find full documentation in the Nyquist Reference Manual.
spatial
  implements Dolby surround encoding functions.
stk
  plays the various STK instruments that have been ported to Nyquist. This file is just Lisp code, but it should be fairly simple to read enough of the code to understand the function names and parameters, and some SAL expressions are added in comments as guide. (Reminder `(bowed g4 (bow-env d))` in Lisp means `bowed(g4, bow-env(d))` in SAL, i.e. the first element of each list is the function and the remaining elements are parameters.)
voice
  gives source code and examples for a source-filter model of the singing voice. Please read the comments in either the `voice/voice-synthesis.sal` version or the `voice/voice-synthesis.lsp` version.
vosim
  gives source code and examples of the VOSIM synthesis technique. Please read comments in the code.
warble
  explains how to create some "analog" electronic synthesizer sounds using FM and AM.
wind
  presents some code to create wind sounds.