Nyquist kun Audacity softwaro

fonto: http://audacity.sourceforge.net/help/nyquist

  1. Enkonduko al Lisp kaj Nyquist (Program-lingvoj)
  2. Programado en Nyquist
  3. Krei Nyquist Plug-ins

Komencante kun la versio 1.1.1, Audacity Permesas uzi la Nyquist programlingvo verki vian propran plug-in efektoj por Audacity. Kontraste VST kaj LADSPA plug-ins, Nyquist-plug-ins povas esti skribita uzanta ordinaran tekstoredaktilo kaj ne bezonas esti kompilita.

Nyquist estis skribita de Roger B. Dannenberg kaj estis destinita al esti uzita kiel kompleta programlingvo por audia sintezo kaj analizo, kun apogo por MIDI, audia registrado kaj reprodukto, enarkivigi de eniro kaj eliro, objektema programado, profilo, kontrolu sur eraroj kaj pli. Audacity uzas nur Nyquist-subara funciadoj, Permesante vi preni simplajn Nyquist-funkciojn kaj uzi ĝin procesi audiajn datumojn. Audacity ne inkluzivas ajnan subtenon por elpurigi Nyquist-kodon, tial se vi provas skribi komplika plug-in, vi eble trovos pli facile por ricevi la plenan version de Nyquist-Disvolvo kaj tie, tiam ĝi igu Audacity plug-in. Nyquist estas havebla de la Carnegie Mellon Komputila Muzika Projekto:

Nyquist ambos apogas la Lisp-sintakso kaj pli kutima sintakso nomata SAL. Audacity-versioj antaŭ 1.3.8 nur subtenon Lisp, sed la nuna Audacity 2.0 serio elportas ambos Lisp kaj SAL. Skribi plug-ins por uzi kun Audacity, elektu la Taŭga Nyquist-Manlibro por via versio de Audacity kaj preferis sintakson:

Notu ke vi ne bezonas elŝuti Nyquist por skribi simplan plug-ins uzi kun Audacity. Ĉiuj bazaj instrukcioj vi bezonas labori kun Lisp kaj la Manlibro estas sub 2:37. Se vi volus esplori SAL tiel, kaj por la lasta Nyquist-trajtoj en Audacity, vidu Nyquist Dokumentaro en la Vikipedio .

Lisp

Nyquist estas bazita sur Lisp. Se vi programis en Lisp antaŭe, vi povas ekperimenti tiu sekcio aŭ iri rekte al la sekva paĝo. Alie, jen ege mallonga enkonduko al Lisp:

En Lisp (kaj do Nyquist), ĉio estas S-Esprimo, kiu estas nur listo de slipoj (vortoj) apartigitaj per spaceto kaj enmetitaj en krampojn. La nomo de la funkcio estas ĉiam la unua signo en S-Esprimo, kaj ĉiuj el la aliaj partoj reprezentas argumentojn por ĉi tiu funkcio. Jen simpla ekzemplo:

   (SETF areo (* 3.14159 (expt radiuso 2)))

Ni detruos cxi tiun ekzemplon. La plej ekstera S-esprimo havas tri membroj. La unua, setf , estas la nomo de la funkcio (tio signifas aro-kampo). setf uzas por atribui valoron al variablo. (Estas aliaj similaj funkcioj, kiel set kaj setq , sed setf estas la plej potenca, do ĝi estas la ni uzos en niaj ekzemploj.) Post setf venas area , Kiu estas la nomo de la variablo nin tuj starigis . Poste venas la valoro atribui al tiu variablo, en ĉi tiu kazo Kiu estas alia S-esprimo.

Lisp ne havas neniun specialan operatoroj por Math funkcioj – ili estas ĉiuj funkcioj kiel ĉio alia, uzante prefikso skribmaniero, kie la nomo de la funkcio (aŭ operatoro) venas antaŭ lia argumentoj. Do anstataŭ 3 * 7 estas la produkto de 3 kaj 7, en Lisp vi skribus (* 3 7). En Nyquist, la expt (eksponento) funkcio levas lia unua argumento al la povo de la dua argumento. Tial (* 3.14159 (expt radius 2)) signifas 3.14159 fojoj la kvadrato de radius , aŭ la formulo por la areo de cirklo.

Anstataŭ tajpi en ĉi plenan esprimon ĉiufoje, ni difini funkcio por la areo de la cirklo, por ke ni povas nomi ĉiufoje ni bezonas tion:

   (Defun circleArea (radiuso) (* 3.14159 (expt radiuso 2)))
  

La defun funkcio estas uzata por difini nova funkcio. La unua argumento estas la nomo de la funkcio, en ĉi tiu kazo circlearea . La dua argumento estas listo de argumentoj por la funkcio al esti difinita – tiu ĉi estas unu el la malmultaj kazoj kie vi havas S-esprimo kiu ne Interpretita kiel funkcio nomita. Fine la lasta esprimo estas la valoro de la funkcio. Nun se ni volas komputi la areo de cirklo de radiuso r , ni nur bezonas kalkuli:

   (SETF areo (circleArea r))

An S-esprimo estas nur prezento de listo. Lisp uzas lertaj por Represent simple pri ĉio (la nomo venas de LISP Listo Processing lingvo), do ĝi estas utila al scii kiel manipuli lertaj. Ni komencu per asignanta listo de nombroj al variablo. Vi ne povas sufiĉe de tio:

   (SETF mylist (1 2 3 4 5)) <- eraro!
  

La kialo ĉi ne funkcias Ĉu tio Nyquist sekcioj Ĉiufoje kiam S-esprimo, ĝi provas Komputi ĝin al la funkcio krom se vi rakontos ĝin Alie. Ekde tie estas neniu funkcio nomita “1” kiu prenas argumentoj (2 3 4 5) , ĉi generos eraron. Sincere Lisp Kiu volas trakti unu S-esprimo laŭvorte, kaj ne al Komputi ĝin al la funkcio, vi citas ĝin. En Nyquist, vi povas citi listo metante sola citilo antaux gxi, kiel jene:

   (SETF mylist \ '(1 2 3 4 5))
  

_Nyquist_ Ankaŭ Provizas list funkcio Tio Vi povas uzi por konstrui lertaj – tio estas utila se iu el la elementoj de la listo estas funkcioj:

   (SETF mylist (listo 1 2 3 4 (sqrt 25)))

Al preni aĵojn off de la listo, vi povas uzi la first kaj rest funkcioj. (Tradicie, ĉi tiuj estis nomata car kaj cdr , respektive, sed first kaj rest estas multe pli facile memori. Ambaŭ aroj de nomoj estas apogita en Nyquist.) La rezulto de (first mylist) estas 1, kaj la eliro de (rest mylist) estas la listo (2 3 4 5) . Do la dua ero de la listo estas (first (rest mylist)) .

Lisp funkcio referenco

Jen listo de iuj el la bazaj lisp funkcioj vi eble bezonos. Por kompleta listo de Lisp / Nyquist funkcioj, vidu la _Nyquist_ versio 2:37 Reference Manual .

Noto: Simboloj en _Nyquist_ (kiel variablo nomojn kaj funkcio nomoj) ne inkluzivas uskladon. Ili konvertis al Majusklaj Interne.

Math funkcioj

(+ ab) Krome
(- ab) subtraho
(* ab) multipliko
(/ ab) divido
(truncate ab) rondigi malsupren al entjero (etaĝo)
(float ab) entjera al glitpunkta, glitkoma
(rem abc ...) resta
(min abc ...) minimuma
(max abc ...) maksimuma
(abs a) absoluta valoro
(random n) hazarda entjero inter 1 kaj n-1
(sin ab) sinuso
(cos ab) kosinuso
(tan ab) tangento
(expt ab) eksponento (a al la potenco de b)
(sqrt ab) kvadrata radiko
(< ab) la testo estas malpli ol b
(<= ab) la testo estas malpli ol aŭ egala al b
(> ab) la testo estas pli granda ol b
(>= ab) la testo estas pli granda ol aŭ egala al b
(= ab) testo por egaleco
(/= ab) Testo por malegaleco

Listo funkcioj

(first l) unua ero en listo (aŭto)
(rest l) resto de la listo (cdr)
(reverse l) inversigi la listo
(list ab ...) konstrui la listo
(append l1 l2) aldonas du listoj
(length l) longeco de la listo
(maplist function l) apliki funkcion al ĉiu ero en la listo

Kontroli

(if expr expr1 expr2) se expr estas vera, taksas expr1, expr2 taksas Alie
Advertisements

About josberto

Mi ŝatas traduki librojn pri matematiko kaj komputilaj teknologio. Mi esperas ke miaj tradukadoj estus utila kaj agrabla por vi.
This entry was posted in Uncategorized. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s