Nyquist (programming language)

Last updated
Nyquist
Designed by Roger Dannenberg
Developer Roger Dannenberg
Filename extensions .ny
Website www.cs.cmu.edu/afs/cs.cmu.edu/project/music/web/music.software.html
Influenced by
Lisp

Nyquist is a programming language for sound synthesis and analysis based on the Lisp programming language. It is an extension of the XLISP dialect of Lisp, [1] and is named after Harry Nyquist. [2]

With Nyquist, the programmer designs musical instruments by combining functions, and can call upon these instruments and generate a sound just by typing a simple expression. The programmer can combine simple expressions into complex ones to create a whole composition, and can also generate various other kinds of musical and non-musical sounds.[ citation needed ]

The Nyquist interpreter can read and write sound files, MIDI files, and Adagio text-based music score files. On many platforms, it can also produce direct audio output in real time.

The Nyquist programming language can also be used to write plug-in effects for the Audacity digital audio editor. [3]

One notable difference between Nyquist and more traditional MUSIC-N languages is that Nyquist does not segregate synthesis functions (see unit generator) from "scoring" functions. For example Csound is actually two languages, one for creating "orchestras" the other for writing "scores". With Nyquist these two domains are combined.

Nyquist runs under Linux and other Unix environments, Mac OS, and Microsoft Windows.

The Nyquist programming language and interpreter were written by Roger Dannenberg at Carnegie Mellon University, with support from Yamaha Corporation and IBM. [4]

Related Research Articles

<span class="mw-page-title-main">Common Lisp</span> Programming language standard

Common Lisp (CL) is a dialect of the Lisp programming language, published in American National Standards Institute (ANSI) standard document ANSI INCITS 226-1994 (S2018). The Common Lisp HyperSpec, a hyperlinked HTML version, has been derived from the ANSI Common Lisp standard.

<span class="mw-page-title-main">Dylan (programming language)</span> Multi-paradigm programming language

Dylan is a multi-paradigm programming language that includes support for functional and object-oriented programming (OOP), and is dynamic and reflective while providing a programming model designed to support generating efficient machine code, including fine-grained control over dynamic and static behaviors. It was created in the early 1990s by a group led by Apple Computer.

<span class="mw-page-title-main">Lisp (programming language)</span> Programming language family

Lisp is a family of programming languages with a long history and a distinctive, fully parenthesized prefix notation. Originally specified in the late 1950s, it is the second-oldest high-level programming language still in common use, after Fortran. Lisp has changed since its early days, and many dialects have existed over its history. Today, the best-known general-purpose Lisp dialects are Common Lisp, Scheme, Racket, and Clojure.

<span class="mw-page-title-main">MIDI</span> Connection standard for electronic musical instruments

MIDI is a technical standard that describes a communication protocol, digital interface, and electrical connectors that connect a wide variety of electronic musical instruments, computers, and related audio devices for playing, editing, and recording music.

<span class="mw-page-title-main">Scheme (programming language)</span> Dialect of Lisp

Scheme is a dialect of the Lisp family of programming languages. Scheme was created during the 1970s at the MIT Computer Science and Artificial Intelligence Laboratory and released by its developers, Guy L. Steele and Gerald Jay Sussman, via a series of memos now known as the Lambda Papers. It was the first dialect of Lisp to choose lexical scope and the first to require implementations to perform tail-call optimization, giving stronger support for functional programming and associated techniques such as recursive algorithms. It was also one of the first programming languages to support first-class continuations. It had a significant influence on the effort that led to the development of Common Lisp.

<span class="mw-page-title-main">Interpreter (computing)</span> Program that executes source code without a separate compilation step

In computer science, an interpreter is a computer program that directly executes instructions written in a programming or scripting language, without requiring them previously to have been compiled into a machine language program. An interpreter generally uses one of the following strategies for program execution:

  1. Parse the source code and perform its behavior directly;
  2. Translate source code into some efficient intermediate representation or object code and immediately execute that;
  3. Explicitly execute stored precompiled bytecode made by a compiler and matched with the interpreter's virtual machine.

A music sequencer is a device or application software that can record, edit, or play back music, by handling note and performance information in several forms, typically CV/Gate, MIDI, or Open Sound Control, and possibly audio and automation data for digital audio workstations (DAWs) and plug-ins.

Csound is a domain-specific computer programming language for audio programming. It is called Csound because it is written in C, as opposed to some of its predecessors.

A software synthesizer or softsynth is a computer program that generates digital audio, usually for music. Computer software that can create sounds or music is not new, but advances in processing speed now allow softsynths to accomplish the same tasks that previously required the dedicated hardware of a conventional synthesizer. Softsynths may be readily interfaced with other music software such as music sequencers typically in the context of a digital audio workstation. Softsynths are usually less expensive and can be more portable than dedicated hardware.

<span class="mw-page-title-main">Audacity (audio editor)</span> Open-source digital audio editor and recording application

Audacity is a free and open-source digital audio editor and recording application software, available for Windows, macOS, Linux, and other Unix-like operating systems.

<span class="mw-page-title-main">ChucK</span> Audio programming language

ChucK is a concurrent, strongly timed audio programming language for real-time synthesis, composition, and performance, which runs on Linux, Mac OS X, Microsoft Windows, and iOS. It is designed to favor readability and flexibility for the programmer over other considerations such as raw performance. It natively supports deterministic concurrency and multiple, simultaneous, dynamic control rates. Another key feature is the ability to live code; adding, removing, and modifying code on the fly, while the program is running, without stopping or restarting. It has a highly precise timing/concurrency model, allowing for arbitrarily fine granularity. It offers composers and researchers a powerful and flexible programming tool for building and experimenting with complex audio synthesis programs, and real-time interactive control.

MUSIC-N refers to a family of computer music programs and programming languages descended from or influenced by MUSIC, a program written by Max Mathews in 1957 at Bell Labs. MUSIC was the first computer program for generating digital audio waveforms through direct synthesis. It was one of the first programs for making music on a digital computer, and was certainly the first program to gain wide acceptance in the music research community as viable for that task. The world's first computer-controlled music was generated in Australia by programmer Geoff Hill on the CSIRAC computer which was designed and built by Trevor Pearcey and Maston Beard. However, CSIRAC produced sound by sending raw pulses to the speaker, it did not produce standard digital audio with PCM samples, like the MUSIC-series of programs.

Programming is a form of music production and performance using electronic devices and computer software, such as sequencers and workstations or hardware synthesizers, sampler and sequencers, to generate sounds of musical instruments. These musical sounds are created through the use of music coding languages. There are many music coding languages of varying complexity. Music programming is also frequently used in modern pop and rock music from various regions of the world, and sometimes in jazz and contemporary classical music. It gained popularity in the 1950s and has been emerging ever since.

<span class="mw-page-title-main">LMMS</span> Free software digital audio workstation

LMMS is a digital audio workstation application program. It allows music to be produced by arranging samples, synthesizing sounds, entering notes via computer keyboard or mouse or by playing on a MIDI keyboard, and combining the features of trackers and sequencers. It is free and open source software, written in Qt and released under GPL-2.0-or-later.

<span class="mw-page-title-main">Logic Studio</span> 2007–2011 professional music production suite by Apple

Logic Studio is a discontinued professional music production suite by Apple Inc. The first version of Logic Studio was unveiled on September 12, 2007. It claims to be the largest collection of modeled instruments, sampler instruments, effect plug-ins, and audio loops ever put in a single application.

<span class="mw-page-title-main">Impromptu (programming environment)</span>

Impromptu is a Mac OS X programming environment for live coding. Impromptu is built around the Scheme language, which is a member of the Lisp family of languages. The source code of its core has been opened as the Extempore project.

<span class="mw-page-title-main">Audio plug-in</span> Software signal processor or synthesizer module

An audio plug-in, in computer software, is a plug-in that can add or enhance audio-related functions in a computer program. Such functions may include digital signal processing or sound synthesis. Audio plug-ins usually provide their own user interface, which often contains graphical user interface (GUI) widgets that can be used to control and visualise the plug-in's audio parameters.

References

  1. Dannenberg, Roger B. (1997). "Machine Tongues XIX: Nyquist, a Language for Composition and Sound Synthesis". Computer Music Journal. 21 (3): 50–60. doi:10.2307/3681013. ISSN   0148-9267. JSTOR   3681013.
  2. Krapp, Peter (2011). Noise Channels: Glitch and Error in Digital Culture. University of Minnesota Press. p. xiii. ISBN   9781452933191 . Retrieved 18 January 2016.
  3. "Nyquist Plug-ins Reference". Audacity Wiki. Retrieved 5 December 2017.
  4. "Preface". www.cs.cmu.edu. Retrieved 2019-08-30.
19581960196519701975198019851990199520002005201020152020
 LISP 1, 1.5, LISP 2(abandoned)
  Maclisp
  Interlisp
  MDL
  Lisp Machine Lisp
  Scheme  R5RS R6RS R7RS small
  NIL
  ZIL (Zork Implementation Language)
  Franz Lisp
  Common Lisp  ANSI standard
  Le Lisp
  MIT Scheme
  XLISP
  T
  Chez Scheme
  Emacs Lisp
  AutoLISP
  PicoLisp
  Gambit
  EuLisp
  ISLISP
  OpenLisp
  PLT Scheme   Racket
  newLISP
  GNU Guile
  Visual LISP
  Clojure
  Arc
  LFE
  Hy
  Chialisp