Добавьте белый шум в цепь в Audacity

Мне нужно добавить белый шум с постоянным уровнем дБ в пакетах звуковых файлов, используя Audacity. Плагин "Создать шум" - это, по сути, то, что я ищу, но его нельзя использовать для добавления шума к файлам в цепочке, поскольку он перезаписывает каждый файл, а не добавляет к нему белый шум. Есть плагин Effect 'Add Noise', который также очень близок к тому, что мне нужно, но белый шум добавляется как процент от общего шума в каждом файле, а не добавляется с постоянным уровнем дБ в каждом файле.

Я пытаюсь отредактировать код для плагина "Add Noise" с помощью "Nyquist Prompt", чтобы изменить настройку уровня шума с процента на дБ, но затрудняюсь понять, каким должен быть новый код. Я думаю, что 2 строки, которые мне нужно изменить, это строки 9 и 13, но, опять же, я не совсем уверен. Плагин "Добавить шум" появился на форуме Audacity.

;nyquist plug-in
;version 3
;type process
;categories "http://lv2plug.in/ns/lv2core#GeneratorPlugin"
;name "Add Noise ..."
;action "Adding Selected Noise ..."
;info "by 'Steve Daulton.\nReleased under GPL V2."

;control mix "Noise mix (%)" real "" 20 0 100
;control type "Type of Noise" choice "White,Pink,Crackle,Wind" 0


(setf mix (/ mix 100))

;;; Wind noise by Robert J. H. 
(defun wind (gust speed)
  (defmacro contour (scale offset min-wind max-wind)
    `(sum ,offset 
       (mult ,scale 
         (s-abs (reson (noise) ,min-wind ,max-wind 1)))))
  (mult 2
    (contour 300 0.7 gust speed)
        (sim (reson (noise) 593 80 2)
             (reson (noise) (contour 300000 300 gust speed) 200 2))))

;;; pink noise
(defun pink ()
  (setf params (list '(25600 -4 2.0) '(12800 -3 2.0) '(6400 -2 2.0) '(3200 -1 2.0)
    '(1600 0 2.0) '(800 1 2.0) '(400 2 2.0) '(200 3 2.0) '(100 4 2.0)
    '(50 5 2.0) '(25 6 2.0) '(12.5 7 2.0)))
    (force-srate *sound-srate*
      (sound-srate-abs 96000
        (progn
          (setf colour-noise (noise))
          (dotimes (i (length params))
            (setf colour-noise 
              (eq-band colour-noise
                (first (nth i params))
                (second (nth i params))
                (third (nth i params)))))
          (lowpass2 colour-noise 25600 0.5)))))

;;; crackle
(defun crackle (density)
  (defun clicks ()
    (let ((mynoise (mult 1.33 (lp (noise) 1000)))
          (density (max 
                     (- 0.9 density)
                     0.1)))
      (clip
        (mult (/ (- 1 density))
          (diff (s-max mynoise density) density))
        1.0)))
  (sum (clicks) (mult -1 (clicks))))

;;; mix two mono sounds
(defun mono-mix (snd1 snd2 mix)
  (sim (mult (- 1 mix) snd1)
    (mult mix snd2)))

;; select the type of noise
(setf my-noise 
  (case type
    (0 (noise))
    (1 (pink))
    (2 (crackle 0.4))
    (t (let ((gustiness 0.2)
             (wind-speed 0.2))
         (wind gustiness wind-speed)))))

; stereo mix sound and noise
(multichan-expand #'mono-mix s my-noise mix)

1 ответ

Стив (администратор сайта Audacity Forum) отредактировал код для меня. Строки 9, 13 и 58 должны были быть изменены. Вот мой пост на форуме Audacity.

;nyquist plug-in
;version 3
;type process
;categories "http://lv2plug.in/ns/lv2core#GeneratorPlugin"
;name "Add Noise ..."
;action "Adding Selected Noise ..."
;info "by 'Steve Daulton.\nReleased under GPL V2."

;control level "Noise level (0 to 1)" real "" 0.5 0 1
;control type "Type of Noise" choice "White,Pink,Crackle,Wind" 0


(setf mix level)

;;; Wind noise by Robert J. H. 
(defun wind (gust speed)
  (defmacro contour (scale offset min-wind max-wind)
    `(sum ,offset 
       (mult ,scale 
         (s-abs (reson (noise) ,min-wind ,max-wind 1)))))
  (mult 2
    (contour 300 0.7 gust speed)
        (sim (reson (noise) 593 80 2)
             (reson (noise) (contour 300000 300 gust speed) 200 2))))

;;; pink noise
(defun pink ()
  (setf params (list '(25600 -4 2.0) '(12800 -3 2.0) '(6400 -2 2.0) '(3200 -1 2.0)
    '(1600 0 2.0) '(800 1 2.0) '(400 2 2.0) '(200 3 2.0) '(100 4 2.0)
    '(50 5 2.0) '(25 6 2.0) '(12.5 7 2.0)))
    (force-srate *sound-srate*
      (sound-srate-abs 96000
        (progn
          (setf colour-noise (noise))
          (dotimes (i (length params))
            (setf colour-noise 
              (eq-band colour-noise
                (first (nth i params))
                (second (nth i params))
                (third (nth i params)))))
          (lowpass2 colour-noise 25600 0.5)))))

;;; crackle
(defun crackle (density)
  (defun clicks ()
    (let ((mynoise (mult 1.33 (lp (noise) 1000)))
          (density (max 
                     (- 0.9 density)
                     0.1)))
      (clip
        (mult (/ (- 1 density))
          (diff (s-max mynoise density) density))
        1.0)))
  (sum (clicks) (mult -1 (clicks))))

;;; mix two mono sounds
(defun mono-mix (snd1 snd2 mix)
  (sim snd1
    (mult mix snd2)))

;; select the type of noise
(setf my-noise 
  (case type
    (0 (noise))
    (1 (pink))
    (2 (crackle 0.4))
    (t (let ((gustiness 0.2)
             (wind-speed 0.2))
         (wind gustiness wind-speed)))))

; stereo mix sound and noise
(multichan-expand #'mono-mix s my-noise mix)`
Другие вопросы по тегам