List Info

Thread: Re: Processing individual samples




Re: Processing individual samples
country flaguser name
Germany
2008-02-08 22:30:31
> 
> Hi all,
> 
> I've been toying with Audacity sources for a while. For
effects, C is
> fast (good) but needs to be compiled and linked in
Audacity (bad, not
> distributable). Ok, let's do it in Nyquist - I'm a
total newbie in
> Lisp but beginning to grasp a few concepts. What I want
will be slow,
> in fact I'm pretty sure it will take a looooong time to
execute, but
> this is not a real issue to me.
> 
> I'm looking for a way to alter individual samples based
on a given
> algorithm. In fact, I'd like to know if there's a
canonical way to do
> it, something like a standard loop where I could insert
whatever math
> function(s) I need. I suppose snd-fetch could be
involved, as well as
> snd-from-array, all within the loop. Is it the right
direction? Am I
> missing something?
> 
> Thanks in advance for your feedback and suggestions. 
> -- 
> Jean

-----------------------------

Because I know that the DSP example in the Nyquist manual is
not-so-easy
to understand, I have written a basic sceleton of an
Audacity Nyquist
DSP effect plugin. In the middle of the code there is a
line:

(* 0.5 current-sample)

which ist the [rather simple] DSP function executed. So the
plugin will
return the Audacity track with half of the original volume.
Just simply
replace this line from above with your own functions.

The plugin code is mainly based on the DSP example in the
Nyquist manual.

Maybe also important to know: Nyquist handles samples as
floats, where
in Nyquist the range is not limited to -1.0 to 1.0, but only
by the float
format of your machine and/or OS. But nevertheless be
careful, when the
Nyquist sound gets returned to Audacity, all samples will
get clipped to
a range of -1.0 to 1.0 again [by Audacity, not by Nyquist].

If your mailbox scrambles the indentation of the code [like
mine does],
look at the file in the attachment.

Links to all other Nyquist docs can be found in the Audacity
Users Wiki:

http://audacityteam.org/wiki/index.php?tit
le=Nyquist_Audio_Programming

-----------------------------

;nyquist plug-in
;version 1
;type process
;name "DSP Effect..."
;action "Performing DSP Effect..."
;control dummy "" int "" 0 0 0

;; the dummy slider above is only to open a effect window
;; where you can press the "Debug" button in case
of trouble.

;; Just write TWO semicolons at the beginning of the
"control"
;; line if you want to disable the effect window
temporarily.

;; define a dsp class
;;
(setf dsp-class (send class :new '(copy-of-sound)))

;; initial function of dsp class
;;
(send dsp-class :answer :isnew '(sound)
  '((setf copy-of-sound (snd-copy sound))))

;; method to be executed with every call to dsp-class
;;
(send dsp-class :answer :next '()
  '((let ((current-sample (snd-fetch copy-of-sound)))
     ;; "cond" checks for end-of-samples
condition
     (cond (current-sample
            ;;
            ;; replace the following line with your own
function(s)
            ;;
            (* 0.5 current-sample)
  )))))

;; define a dsp function for mono signals
;;
(defun dsp (sound)
  (let (obj)
    (setf obj (send dsp-class :new sound))
    (snd-fromobject (snd-t0 sound) (snd-srate sound) obj)))

;; add automatic handling of mono/stereo tracks. Processes
both stereo
;; channels one after the other. To process both channels
simultaneously
;; or whole blocks of samples the object code above needs to
be rewritten.
;;
(if (arrayp s)
  (vector
    (dsp (aref s 0))
    (dsp (aref s 1)))
  (dsp s))

-----------------------------

have fun,

- edgar



-- 
The author of this email does not necessarily endorse the
following advertisements, which are the sole responsibility
of the advertiser:

________________________________________________________
Bis 50 MB Dateianhänge? Kein Problem!
http://www.digitaledienste.web.de/freemail/club/lp/?lp=7



------------------------------------------------------------
-------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Audacity-nyquist mailing list
Audacity-nyquistlists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/audaci
ty-nyquist

  
Re: Processing individual samples
user name
2008-02-09 06:58:32
Le 09/02/2008 ā 05:30, edgar-rftweb.de écrivait :

> Because I know that the DSP example in the Nyquist
manual is not-so-easy
> to understand, I have written a basic sceleton of an
Audacity Nyquist
> DSP effect plugin. In the middle of the code there is a
line:
> 
> (* 0.5 current-sample)
> 
> which ist the [rather simple] DSP function executed. So
the plugin will
> return the Audacity track with half of the original
volume. Just simply
> replace this line from above with your own functions.
> 
> The plugin code is mainly based on the DSP example in
the Nyquist manual.

Thanks a lot! This is what I was looking for, and more. 

I was beginning to cycle through the usual "try
something / fail / what
do all these messages mean / try something else"
routine when your code
enlightened me. I think it could appear on your Nyquist
Audio Programming 
page, which I see as a future reference cookbook.

> Maybe also important to know: Nyquist handles samples
as floats, where
> in Nyquist the range is not limited to -1.0 to 1.0, but
only by the float
> format of your machine and/or OS. But nevertheless be
careful, when the
> Nyquist sound gets returned to Audacity, all samples
will get clipped to
> a range of -1.0 to 1.0 again [by Audacity, not by
Nyquist].

Same for the effects C code. Anyway I'm mostly interested in
functions 
whose properties are

- f(0)=0 
- f(1)=1
- continuous
- differentiable
- derivative > 0, between 0 and 1

> have fun,

Thanks again,
-- 
Jean

------------------------------------------------------------
-------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Audacity-nyquist mailing list
Audacity-nyquistlists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/audaci
ty-nyquist

[1-2]

about | contact  Other archives ( Real Estate discussion Medical topics )