Audacity: Darmowy edytor dźwięku i oprogramowanie do nagrywania

Lista z ogłoszeniami

Tworzenie wtyczek Nyquist

  1. Wprowadzenie do programowania w Nyquist i Lisp
  2. Programowanie w Nyquist
  3. Tworzenie wtyczek Nyquist

Tworzenie wtyczki do Audacity przy użyciu Nyquist jest tak proste, jak stworzenie pliku tekstowego z rozszerzeniem ".ny" z odrobiną kodu Nyquist, dodając kilka komentarzy na temat rodzaju wtyczki, oraz skopiowanie pliku do folderu plug-ins Audacity. Oto przykład prostej wtyczki:

  ;nyquist plug-in
  ;version 1
  ;type process
  ;name "Fade In"
  ;action "Fading In..."
  (mult (ramp) s)

The first line of a Nyquist plug-in must be exactly as in the example above, and the second line must indicate a version number. Version 2 and 3 plug-ins support more widgets, but version 3 plug-ins are not supported in Audacity 1.3.3 or earlier. The next line is the type of plug-in, which is discussed below. Then comes the name of the plug-in, which is what is displayed in the menu bar, and then the "action", which is what Audacity displays while it is busy processing the plug-in. There are other optional lines that may follow. Any line that does not begin with a semicolon (;) is assumed to contain Nyquist code and will be executed.

Audacity wspiera trzy rodzaje wtyczek, które mogą być napisane w Nyquist:

  ;type generate
  ;type process
  ;type analyze

Odpowiadają one trzem menu, które zawierają wtyczki: Generuj, Efekt oraz Analizuj. Wtyczki Generuj mają za zadanie generować nowy dźwięk od podstaw, wtyczki Efekt ("process") modyfikują istniejący dźwięk, a wtyczki Analizuj przetwarzają dźwięk bez modyfikowania go (choć mogą dodawać etykiety).

Dla wtyczek Efekt i Analizuj, Audacity ustawia środowisko Nyquist tak, że dźwięk jaki użytkownik zaznaczył jest w zmiennej s. Wszystkie wyrażenia we wtyczce są wykonywane w kolejności, a wartość zwrotna ostatniego wyrażenia jest zamieniana w zaznaczenie w Audacity. Jeśli ostatnie wyrażenie nie zwróci żadnego dźwięku, Audacity zwraca błąd.

Okna Parametru

Audacity posiada limitowane wsparcie dla wtyczek, które posiadają okno pytające użytkownika o parametry. Oto przykład wtyczki, która otwiera okno:

  ;nyquist plug-in
  ;version 1
  ;type process
  ;name "Delay..."
  ;action "Performing Delay Effect..."
  ;info "Demo effect for Nyquist by Roger Dannenberg.\nThis effect 
     creates a fixed number of echos."  ; (should be all on one line)
  ;control decay "Decay amount" int "dB" 6 0 24
  ;control delay "Delay time" real "seconds" 0.5 0.0 5.0
  ;control count "Number of echos" int "times" 5 1 30

  (defun delays (s decay delay count)
    (if (= count 0) (cue s)
	   (sim (cue s)
        (loud decay (at delay (delays s decay delay (- count 1)))))))
  (stretch-abs 1 (delays s (- 0 decay) delay count))

Jeśli Audacity znajdzie choć jedną linię "kontrolną", otworzy okno, w które użytkownik będzie miał wpisać pewne parametry dla wtyczki. Każdy parametr posiada pole tekstowe oraz suwak, gdy użytkownik wpisze wartość, wartość końcowa zostanie zapisana w zmiennej Nyquist z nazwą, która zostanie określona w lini "kontrolnej". Oto jak wygląda okno dla efektu Opóźnienie w Audacity na Linux-ie:

Wtyczki Nyquist

Zauważ, że linijka "info" jest wyświetlona u góry okna oraz, że "\n" tworzy nową linijkę. Parametry linijki "control" wpływają na wygląd oraz ograniczenia parametru. Każda linijka "control" musi poisadać dokładnie 8 elementów, w kolejności:

  1. Słowo "control"
  2. Nazwa kontrolki - to nazwa zmiennej Nyquist, która zostanie ustalona, gdy użytkownik zmieni wartości.
  3. Etykieta na lewo od kontrolki
  4. Rodzaj wartości: albo int(całkowita) albo real.
  5. Etykieta na lewo od wartości (zazwyczaj wartości jak "Hz" lub "dB").
  6. Domyślna/początkowa wartość parametru
  7. Minimalna wartość parametru
  8. Maksymalna wartość parametru

Zwracanie etykiet

Zamiast zwracać dźwięk, wtyczka Nyquist może zwrócić listę etykiet. Lista etykiet jest po prostu listą par czas/etykieta, an przykład:

  ((0.0 "start") (30.0 "middle") (60.0 "end"))

Gdy wtyczka zwraca listę w takiej formie, Audacity stworzy nową ścieżkę i doda etykiety w tych pozycjach. Ten rodzaj wtyczek jest zazwyczaj rodzaju "analiza".

Nowe! Począwszy od wersji Audacity 1.3.1, teraz można zwrócić zarówno czas początku jak i końca, tak:

  ((0.0 25.0 "start") (30.0 45.0 "middle") (60.0 75.0 "end"))

Zauważ,że etykiety mogą się przeplatać w Audacity 1.3; koniec jednej może być po początku następnej.

Przenoszenie klipów pomiędzy ścieżkami

Nyquist reprezentuje ścieżki stereo jako szyk dźwięków (nie jako listę). Wiele funkcji Nyquist pracuje automatycznie z tym szykiem, lecz nie z każdym, więc czasami będziesz zmuszony do rozłożenia szyku stereo. Oto kilka użytecznych funkcji:

(arrayp s)zwraca prawdę jeśli s jest szykiem
(aref s 0)jest pierwszym elementem w szyku s - lewy kanał
(aref s 1)jest drugim elementem w szyku s - prawy kanał
(setf s (make-array 2))tworzy s w nowy szyk o długości 2
(setf (aref s 0) left)tworzy left pierwszy element w szyku s
(setf (aref s 1) right)tworzy right drugi element w szyku s

Jeśli wejście twojej wtyczki Nyquist jest w stereo, lecz wyjście jest tylko w jednym kanale (mono), Audacity automatycznie skopiuje do obydwóch kanałów.

Gdzie iść stąd

Audacity posiada kilka wtyczek, które można wypróbować lub zmodyfikować. Najlepszym sposobem nauczenia się Nyquist jest próbowanie. Jeśli masz problemy z debugowaniem, rozważ pobranie osobnej wersji Nyquist (zobacz link w Części 1).

Jeśli masz problemy z działaniem Nyquist, skontaktuj się z nami.

If you are working on Nyquist plug-in effects and would like to share them with others, or if you would like to discuss how to achieve certain effects in Nyquist, please post on the Nyquist board of the Audacity Forum or join the audacity-nyquist mailing list.

Don't forget to consult the full Nyquist 2.37 Reference Manual for more details of Lisp and Nyquist.