Edward Williamson May 3, 9:12am -- security flaws

nyquist plugins in Audacity slower on Linux than Windows:
On Linux, Nyquist plug-ins are much slower than on Win XP.
Details here: http://audacity.238276.n2.nabble.com/Nyquist-in-Audacity-is-much-slower-on-Linux-than-on-Windows-XP-td7556262.html

Playback from Nyquist in Audacity on Linux is unpredictable and often
fails. I think there may be a couple of issues here. One is that
Nyquist is not using PulseAudio, so if Pulse is accessing the sound
card then playback fails. There also appears to be a problem with
SND-SET-LATENCY not working correctly (as described here:
http://bugzilla.audacityteam.org/show_bug.cgi?id=570). In standalone
Nyquist I get the error "could not open audio output" when attempting
to play audio.

Possibly more to do with Audacity, but (vector (aref s 0)(aref s 0))
does not work correctly:
http://bugzilla.audacityteam.org/show_bug.cgi?id=425

Most of the other "top bugs" are more to do with the Audacity than
Nyquist itself, though there is an issue that s-add-to does not work
with stereo sounds.

portaudio diffs:

portaudio.h
src/hostapi/coreaudio/pa_mac_core.c
src/os/win/pa_win_wdmks_utils.c


diff -r ./include/portaudio.h ../nyquist/portaudio/include/portaudio.h
51a52,53
>     
> #include <stdint.h>
661c663,664
< typedef unsigned long PaStreamCallbackFlags;
---
> /* RBD changed type to uint32_t */
> typedef uint32_t PaStreamCallbackFlags;


========================

diff -r ./src/hostapi/coreaudio/pa_mac_core.c ../nyquist/portaudio/src/hostapi/c
oreaudio/pa_mac_core.c
632c632
<     memset(deviceInfo, 0, sizeof(deviceInfo));
---
>     memset(deviceInfo, 0, sizeof(PaDeviceInfo));
=========================

diff -r ./src/os/win/pa_win_wdmks_utils.c ../nyquist/portaudio/src/os/win/pa_win_wdmks_utils.c
57a58,62
> #ifndef PA_WDMKS_NO_KSGUID_LIB 
> #define PA_WDMKS_NO_KSGUID_LIB 
> #endif /* Disable ksguid.lib  (Zeyu) Jan.8.2013 */
> 
> 
===========================



build directories for all the libraries are quite random


ny with optimized code 1,264,608 bytes
ny without optimized code 1,149,760

ny without optimized tran code: 1240000 bytes
-rw-r--r--  1 rbd  rbd  105430 Jul 22 19:45 resonvv.c
-rw-r--r--  1 rbd  rbd   55972 Jul 22 19:45 aresonvv.c
-rw-r--r--  1 rbd  rbd   28434 Jul 22 19:45 eqbandvvv.c
-rw-r--r--  1 rbd  rbd   24172 Jul 22 19:45 alpassvv.c
-rw-r--r--  1 rbd  rbd   21308 Jul 22 19:45 tapv.c
-rw-r--r--  1 rbd  rbd   20462 Jul 22 19:45 tapf.c
-rw-r--r--  1 rbd  rbd   20432 Jul 22 19:45 siosc.c
-rw-r--r--  1 rbd  rbd   19431 Jul 22 19:45 fmfbv.c
-rw-r--r--  1 rbd  rbd   18466 Jul 22 19:45 aresonvc.c
-rw-r--r--  1 rbd  rbd   18449 Jul 22 19:45 resoncv.c
-rw-r--r--  1 rbd  rbd   18409 Jul 22 19:45 resonvc.c
-rw-r--r--  1 rbd  rbd   17215 Jul 22 19:45 buzz.c
-rw-r--r--  1 rbd  rbd   16767 Jul 22 19:45 aresoncv.c
-rw-r--r--  1 rbd  rbd   16388 Jul 22 19:45 sampler.c
-rw-r--r--  1 rbd  rbd   15991 Jul 22 19:45 tonev.c
-rw-r--r--  1 rbd  rbd   15804 Jul 22 19:45 atonev.c
-rw-r--r--  1 rbd  rbd   15701 Jul 22 19:45 fmosc.c
-rw-r--r--  1 rbd  rbd   14901 Jul 22 19:45 instrsaxfreq.c
-rw-r--r--  1 rbd  rbd   13688 Jul 22 19:45 instrsaxall.c
-rw-r--r--  1 rbd  rbd   13542 Jul 22 19:45 upsample.c
-rw-r--r--  1 rbd  rbd   13416 Jul 22 19:45 alpassvc.c
-rw-r--r--  1 rbd  rbd   12197 Jul 22 19:45 gate.c
-rw-r--r--  1 rbd  rbd   10527 Jul 22 19:45 instrclarall.c
-rw-r--r--  1 rbd  rbd   10243 Jul 22 19:45 instrfluteall.c
-rw-r--r--  1 rbd  rbd   10113 Jul 22 19:45 follow.c
-rw-r--r--  1 rbd  rbd   10104 Jul 22 19:45 instrbowedfreq.c
-rw-r--r--  1 rbd  rbd   10076 Jul 22 19:45 instrclarfreq.c
-rw-r--r--  1 rbd  rbd   10065 Jul 22 19:45 biquadfilt.c
-rw-r--r--  1 rbd  rbd   10030 Jul 22 19:45 instrflutefreq.c
-rw-r--r--  1 rbd  rbd    9962 Jul 22 19:45 alpasscv.c
-rw-r--r--  1 rbd  rbd    9914 Jul 22 19:45 chase.c
-rw-r--r--  1 rbd  rbd    9824 Jul 22 19:45 reson.c
-rw-r--r--  1 rbd  rbd    9545 Jul 22 19:45 lpreson.c
-rw-r--r--  1 rbd  rbd    9529 Jul 22 19:45 delaycv.c
-rw-r--r--  1 rbd  rbd    9453 Jul 22 19:45 oneshot.c
-rw-r--r--  1 rbd  rbd    9386 Jul 22 19:45 ifft.c
-rw-r--r--  1 rbd  rbd    9355 Jul 22 19:45 partial.c
-rw-r--r--  1 rbd  rbd    9199 Jul 22 19:45 atone.c
-rw-r--r--  1 rbd  rbd    9172 Jul 22 19:45 stkchorus.c
-rw-r--r--  1 rbd  rbd    9161 Jul 22 19:45 stkpitshift.c
-rw-r--r--  1 rbd  rbd    8999 Jul 22 19:45 stkrev.c
-rw-r--r--  1 rbd  rbd    8706 Jul 22 19:45 clip.c
-rw-r--r--  1 rbd  rbd    8658 Jul 22 19:45 offset.c
-rw-r--r--  1 rbd  rbd    8092 Jul 22 19:45 allpoles.c
-rw-r--r--  1 rbd  rbd    7545 Jul 22 19:45 pluck.c
-rw-r--r--  1 rbd  rbd    7489 Jul 22 19:45 instrsax.c
-rw-r--r--  1 rbd  rbd    7118 Jul 22 19:45 prod.c
-rw-r--r--  1 rbd  rbd    7087 Jul 22 19:45 shape.c
-rw-r--r--  1 rbd  rbd    7032 Jul 22 19:45 areson.c
-rw-r--r--  1 rbd  rbd    7004 Jul 22 19:45 coterm.c
-rw-r--r--  1 rbd  rbd    6950 Jul 22 19:45 amosc.c
-rw-r--r--  1 rbd  rbd    6889 Jul 22 19:45 maxv.c
-rw-r--r--  1 rbd  rbd    6269 Jul 22 19:45 integrate.c
-rw-r--r--  1 rbd  rbd    6052 Jul 22 19:45 tone.c
-rw-r--r--  1 rbd  rbd    6023 Jul 22 19:45 slope.c
-rw-r--r--  1 rbd  rbd    5840 Jul 22 19:45 alpass.c
-rw-r--r--  1 rbd  rbd    5837 Jul 22 19:45 quantize.c
-rw-r--r--  1 rbd  rbd    5748 Jul 22 19:45 scale.c
-rw-r--r--  1 rbd  rbd    5734 Jul 22 19:45 delaycc.c
-rw-r--r--  1 rbd  rbd    5728 Jul 22 19:45 sqrt.c
-rw-r--r--  1 rbd  rbd    5727 Jul 22 19:45 instrbanded.c
-rw-r--r--  1 rbd  rbd    5694 Jul 22 19:45 abs.c
-rw-r--r--  1 rbd  rbd    5649 Jul 22 19:45 log.c
-rw-r--r--  1 rbd  rbd    5622 Jul 22 19:45 recip.c
-rw-r--r--  1 rbd  rbd    5545 Jul 22 19:45 instrclar.c
-rw-r--r--  1 rbd  rbd    5541 Jul 22 19:45 instrbow.c
-rw-r--r--  1 rbd  rbd    5502 Jul 22 19:45 exp.c
-rw-r--r--  1 rbd  rbd    5500 Jul 22 19:45 congen.c
-rw-r--r--  1 rbd  rbd    5475 Jul 22 19:45 instrflute.c
-rw-r--r--  1 rbd  rbd    5220 Jul 22 19:45 fromarraystream.c
-rw-r--r--  1 rbd  rbd    4932 Jul 22 19:45 pwl.c
-rw-r--r--  1 rbd  rbd    3895 Jul 22 19:45 fmfb.c
-rw-r--r--  1 rbd  rbd    3703 Jul 22 19:45 osc.c
-rw-r--r--  1 rbd  rbd    3486 Jul 22 19:45 fromobject.c
-rw-r--r--  1 rbd  rbd    3285 Jul 22 19:45 instrmandolin.c
-rw-r--r--  1 rbd  rbd    3242 Jul 22 19:45 sine.c
-rw-r--r--  1 rbd  rbd    3176 Jul 22 19:45 instrmodalbar.c
-rw-r--r--  1 rbd  rbd    3012 Jul 22 19:45 instrsitar.c
-rw-r--r--  1 rbd  rbd    2726 Jul 22 19:45 const.c
-rw-r--r--  1 rbd  rbd    2639 Jul 22 19:45 white.c

ny with optimized tran code: 
-rw-r--r--  1 rbd  rbd  235380 Jul 30 15:00 alpassvv.c DONE
-rw-r--r--  1 rbd  rbd  105430 Jul 30 15:00 resonvv.c DONE
-rw-r--r--  1 rbd  rbd   60517 Jul 30 15:00 instrsaxfreq.c DONE
-rw-r--r--  1 rbd  rbd   55972 Jul 30 15:00 aresonvv.c DONE
-rw-r--r--  1 rbd  rbd   44324 Jul 30 15:00 alpassvc.c DONE
-rw-r--r--  1 rbd  rbd   39646 Jul 30 15:00 instrsaxall.c DONE
-rw-r--r--  1 rbd  rbd   31126 Jul 30 15:00 alpasscv.c DONE
-rw-r--r--  1 rbd  rbd   29447 Jul 30 15:00 delaycv.c DONE
-rw-r--r--  1 rbd  rbd   28434 Jul 30 15:00 eqbandvvv.c DONE
-rw-r--r--  1 rbd  rbd   27360 Jul 30 15:00 instrclarall.c DONE
-rw-r--r--  1 rbd  rbd   26601 Jul 30 15:00 instrfluteall.c DONE
-rw-r--r--  1 rbd  rbd   23451 Jul 30 15:00 lpreson.c DONE
-rw-r--r--  1 rbd  rbd   23416 Jul 30 15:00 maxv.c DONE
-rw-r--r--  1 rbd  rbd   22871 Jul 30 15:00 coterm.c DONE
-rw-r--r--  1 rbd  rbd   21308 Jul 30 15:00 tapv.c DONE
-rw-r--r--  1 rbd  rbd   20462 Jul 30 15:00 tapf.c DONE
-rw-r--r--  1 rbd  rbd   20432 Jul 30 15:00 siosc.c DONE
-rw-r--r--  1 rbd  rbd   19805 Jul 30 15:00 instrbowedfreq.c DONE
-rw-r--r--  1 rbd  rbd   19585 Jul 30 15:00 instrclarfreq.c DONE
-rw-r--r--  1 rbd  rbd   19567 Jul 30 15:00 instrflutefreq.c DONE
-rw-r--r--  1 rbd  rbd   19431 Jul 30 15:00 fmfbv.c DONE
-rw-r--r--  1 rbd  rbd   19366 Jul 30 15:00 allpoles.c DONE
-rw-r--r--  1 rbd  rbd   18466 Jul 30 15:00 aresonvc.c DONE
-rw-r--r--  1 rbd  rbd   18449 Jul 30 15:00 resoncv.c DONE
-rw-r--r--  1 rbd  rbd   18409 Jul 30 15:00 resonvc.c DONE
-rw-r--r--  1 rbd  rbd   17215 Jul 30 15:00 buzz.c DONE
-rw-r--r--  1 rbd  rbd   17160 Jul 30 15:00 partial.c DONE
-rw-r--r--  1 rbd  rbd   16767 Jul 30 15:00 aresoncv.c DONE
-rw-r--r--  1 rbd  rbd   16558 Jul 30 15:00 stkpitshift.c  DONE
-rw-r--r--  1 rbd  rbd   16545 Jul 30 15:00 stkchorus.c DONE
-rw-r--r--  1 rbd  rbd   16388 Jul 30 15:00 sampler.c DONE
-rw-r--r--  1 rbd  rbd   16336 Jul 30 15:00 stkrev.c DONE
-rw-r--r--  1 rbd  rbd   15991 Jul 30 15:00 tonev.c DONE
-rw-r--r--  1 rbd  rbd   15804 Jul 30 15:00 atonev.c DONE
-rw-r--r--  1 rbd  rbd   15771 Jul 30 15:00 amosc.c DONE
-rw-r--r--  1 rbd  rbd   15701 Jul 30 15:00 fmosc.c DONE
-rw-r--r--  1 rbd  rbd   15116 Jul 30 15:00 prod.c DONE
-rw-r--r--  1 rbd  rbd   13790 Jul 30 15:00 instrsax.c DONE
-rw-r--r--  1 rbd  rbd   13542 Jul 30 15:00 upsample.c DONE
-rw-r--r--  1 rbd  rbd   12644 Jul 30 15:00 instrbanded.c DONE
-rw-r--r--  1 rbd  rbd   12374 Jul 30 15:00 instrbow.c DONE
-rw-r--r--  1 rbd  rbd   12200 Jul 30 15:00 instrclar.c DONE
-rw-r--r--  1 rbd  rbd   12197 Jul 30 15:00 gate.c DONE
-rw-r--r--  1 rbd  rbd   12138 Jul 30 15:00 instrflute.c DONE
-rw-r--r--  1 rbd  rbd   10113 Jul 30 15:00 follow.c DONE
-rw-r--r--  1 rbd  rbd   10065 Jul 30 15:00 biquadfilt.c DONE
-rw-r--r--  1 rbd  rbd    9914 Jul 30 15:00 chase.c DONE
-rw-r--r--  1 rbd  rbd    9824 Jul 30 15:00 reson.c DONE
-rw-r--r--  1 rbd  rbd    9453 Jul 30 15:00 oneshot.c DONE
-rw-r--r--  1 rbd  rbd    9386 Jul 30 15:00 ifft.c DONE
-rw-r--r--  1 rbd  rbd    9199 Jul 30 15:00 atone.c DONE
-rw-r--r--  1 rbd  rbd    8706 Jul 30 15:00 clip.c DONE
-rw-r--r--  1 rbd  rbd    8658 Jul 30 15:00 offset.c DONE
-rw-r--r--  1 rbd  rbd    7545 Jul 30 15:00 pluck.c DONE
-rw-r--r--  1 rbd  rbd    7087 Jul 30 15:00 shape.c DONE
-rw-r--r--  1 rbd  rbd    7032 Jul 30 15:00 areson.c DONE
-rw-r--r--  1 rbd  rbd    6269 Jul 30 15:00 integrate.c DONE
-rw-r--r--  1 rbd  rbd    6052 Jul 30 15:00 tone.c DONE
-rw-r--r--  1 rbd  rbd    6023 Jul 30 15:00 slope.c DONE
-rw-r--r--  1 rbd  rbd    5840 Jul 30 15:00 alpass.c DONE
-rw-r--r--  1 rbd  rbd    5837 Jul 30 15:00 quantize.c DONE
-rw-r--r--  1 rbd  rbd    5748 Jul 30 15:00 scale.c DONE
-rw-r--r--  1 rbd  rbd    5734 Jul 30 15:00 delaycc.c DONE
-rw-r--r--  1 rbd  rbd    5728 Jul 30 15:00 sqrt.c DONE
-rw-r--r--  1 rbd  rbd    5694 Jul 30 15:00 abs.c DONE 
-rw-r--r--  1 rbd  rbd    5649 Jul 30 15:00 log.c DONE 
-rw-r--r--  1 rbd  rbd    5622 Jul 30 15:00 recip.c DONE 
-rw-r--r--  1 rbd  rbd    5502 Jul 30 15:00 exp.c DONE 
-rw-r--r--  1 rbd  rbd    5500 Jul 30 15:00 congen.c DONE 
-rw-r--r--  1 rbd  rbd    5220 Jul 30 15:00 fromarraystream.c DONE 
-rw-r--r--  1 rbd  rbd    4932 Jul 30 15:00 pwl.c DONE 
-rw-r--r--  1 rbd  rbd    3895 Jul 30 15:00 fmfb.c DONE 
-rw-r--r--  1 rbd  rbd    3703 Jul 30 15:00 osc.c DONE 
-rw-r--r--  1 rbd  rbd    3486 Jul 30 15:00 fromobject.c DONE 
-rw-r--r--  1 rbd  rbd    3285 Jul 30 15:00 instrmandolin.c DONE 
-rw-r--r--  1 rbd  rbd    3242 Jul 30 15:00 sine.c DONE 
-rw-r--r--  1 rbd  rbd    3176 Jul 30 15:00 instrmodalbar.c DONE 
-rw-r--r--  1 rbd  rbd    3012 Jul 30 15:00 instrsitar.c DONE 
-rw-r--r--  1 rbd  rbd    2726 Jul 30 15:00 const.c DONE 
-rw-r--r--  1 rbd  rbd    2639 Jul 30 15:00 white.c DONE 



default sound file directory seems to be install directory -- bad idea
on Windows 7

preferences does not properly handle "\" in "set default sound file
directory" under Windows

Check if drums in browser tells you where to get and how/where to install.

Nyquist should exit on (EXIT) without waiting for a return -- test on windows. Works on Mac.

indentation is wrong after:
(let ((var value) -- FIXED, but check
(let (foo -- FIXED

typing (top<return> should not insert the return (when autoparens is on and 
parens are balanced) -- FIXED

====

check if this is still so: s-plot differs betweein Linux and Windows

======
Results from ICM2006 class:

integrate asung's ide code - DONE
integrate and improve prahava's browser - COULD USE MORE WORK
write up plight's drum machine for demo section
      look into open source drum machine software --
       maybe share file format?
integrate dfontain's upic code -- IN C, NEEDS WORK
integrate sliders from kmsun_bgoodric:
      Needs: more compact slider layout, 
             editable range values, 
	     support for continuous control, 
	     elimination of the text echoing in the console window
streamline find/replace
execute selected code
select expression when you double-click paren
cyearly's envelope editor
      plan for integration with score editor
dmakuck's graphic EQ editor and interface
      need to design strategy for saving data/code
integrate jgrafton's GUS reader
turn tgovani bird songs into demo

Here's how envelopes should work:
	When the user opens a .pwl file, the envelope editor reads it.
	Using the envelope editor, envelopes are edited, loaded into nyquist,
		and saved.
	The user can also open the file as text (from within the env editor).
	IDE should prevent both from being open at same time.

=====

Debian command line script to invoke nyquist omits parameters

=====

Typo: space after pluck in manual.


There are some minor bugs that I have found:


1. The function snd-lpanal is not recognized by Nyquist.

   I have fixed that in my own compiled version of Nyquist by means of MSVC 6.0 adding "by hand" some code.


3. There is a mistake in the name of gaussian distribution: the name in the manual is gauss-dist while the name in the source code is gaussian-dist.

 

 

If I found any problem more I will comunicate it to you.

 

Finally, sorry for my very basic english. I can not express the nuances as I would do in spanish.

 

 

  Best regards,

  

     Pedro J. Morales.

   

 

 

 

This is the code that I have added to include snd-lpanal.

 

 

 

/// SOURCE CODE FOR sndfnint.c

 

 

 

#include "lpanal.h"

 

/* xlc_snd_lpanal -- interface to C routine snd_lpanal */

/**/

LVAL xlc_snd_lpanal(void)

{

            LVAL arg1 = xlgetarg();

    long arg2 = getfixnum(xlgafixnum());

            LVAL result;

 

            xllastarg();

            result = snd_lpanal(arg1,arg2);

            return (result);

}

 

/// SOURCE CODE FOR  sndfintptrs.h

 

 

  { "SND-LPANAL", S, xlc_snd_lpanal},

 

    

/// SOURCE CODE FOR sndfintdefs.h

 

extern LVAL xlc_snd_lpanal(void);  

 

 
================================

Check echoenabled in documentation -- maybe the preceding @index command is messing up the indentation.

===========================

Roger 

I found a minor bug in full-name-p in system.lps   The function does not
test for the UNIX file separator /   This causes s-save to only work
with filenames relative to *sf-default-dir* 

--Steve

=====================

test  (SCORE-BEGIN) and (SCORE-END) 
implement score manipulation routines in xm.lsp (see manual)
document, implement workspaces


======

big test of markov analysis for xm.lsp
    for order 1 and order 2

========

(dotimes (i 10) (print (next (make-copier (make-cycle '(a b c)) :repeat 2) t)))
prints nil period after 2 repeats

==========
See cmsip hierarchy.lsp -- fix sustain
It appears that sustain is not correctly implemented
Check every use of get-duration, document get-duration
correctly after fixing the code.

=========

SourceForge credits on web site
Create SourceForge project web page
Put releases on SourceForge
Create Nyquist mailing list on Sourceforge

==========

Integrate new debian changes. -DONE

==========

macosxproject/nyquistproject.pbproj/project.pbxproj is not on cvs -DONE

===========

detect newline problems, e.g. a stray ^M at end of file seems to cause read error, but
the char does not show up in most editors including jnyqide. -- tested under Win32, but not Linux


=================
Documentation for Adagio should go somewhere. It's mentioned in the nyquist 
manual, but there's no reference or URL for CMT. -DONE

=================

Thanks for the prompt response.
it may help if I give you the preference file (OS9) that I created for 
v 2.29 that caused(?) the error message:

PREF File in OS9 prefs folder:
> XLISPPATH=Macintosh HD:Users:robwilkinson:SUBJECT
> index:PROJECTS:Nyquist/Audacity Plugins:nyquist.229:runtime

Resulting error message: XLISP version 2.0, Copyright (c) 1986, by 
David Betz
> CMU MIDI Toolkit, Copyright (c) 1993,1994, by Roger B. Dannenberg 
> Macintosh interface by Brian Kendig, Erik A. Dahl, and Dominic 
> Mazzoni.
> error: file name too long - NIL

Regards
Rob



No matter what I do to the file name by altering the preferences file I get the same message.
I thought it might have something to do with the extended(>32) filename length in OSX but even very short 
names do not work.
Otherwise 2.29 works fine.

2) Version 2.30 unpacked ok but there was no file named Nyquist and no icon. Could not persuade it to run. 
Altho very late at night I tried to invoke "ny" using Terminal and remember getting the above error message. 
Could not repeat the experience tho'.

I downloaded Nyquist to experiment with making a Declipper Effect for Audacity.
In the learning process I found that none of the Nyquist effects actually work in Audacity. 
In particular the lp and hp effects. Wrote a simple clipper effect & it did not work either. 
Is this of interest to you?

Finally have you any suggestions which Nyquist functions I should focus on to find flat topped 
peaks in a sound file.
ie to find 3 or more adjacent identical samples not just test for equality to +/- maximum value. 
The maths for splining in sine or parabolic cap are straight forward if I can extract the flat 
section and the 3 samples that precede and follow it.

I'm a semi-retired EE not experienced in Lisp or C


Regards
Rob Wilkinson.
================================================================



fix, test seqmidi to take note, ctrl, prgm, etc.
-----

multiseq.c assumes all signals have same sample rate.  I think this could
be fixed merely by saving an array of sample rates so that zero signals
of the proper rate could be generated later.  Also be sure to free the
array of sample rates when the multiseq struct is freed.

bvg================


Each chapter requires:

* Programming Instructions (this is done)
* Programming Tips (this need more work)
* Programming Misconceptions (this you do at times)
* Conceptual overview
    1. details for particular cases
    2. generalization of the particular cases
    3. summary notes for each chapter
The idea of a user manual in addition to a documentation manual
for nyquist is in order.

Something with more step by step instructions. You may not have a graphic 
interface but the manual could have a more graphic approach to nyquist.

The issue of analysis/resynthesis within nyquist is not spelled out. Since 
the technique of analysis/resynthesis was such a force in the creation of 
Nyquist you could think of gearing your presentation of Nyquist in those 
terms within a User's Manual for Nyquist.  The point of which is to give a better presentation of 
Nyquist as a tool for analysis/resynthesis rather than a theory on 
analysis/resynthesis.

An example of the problem with the manual is evident in the \
like of treatment of say recorded samples (soundfiles and sound synthesis):

1. mono
2. stereo
3. mixing

There is the additional question of using a soundfile to go between one of 
these 3 cases.  All of this would fill a section on Multichannels.  
There are sets of terminology which could be listed at the start of each 
chapter which could be organized in some kind of concept graph.  \

Warping
Behavior
Abstract Behavior:
    * Parameterization of Behaviors
    * Flexibility of Parameterization \
Transformation
Transformation Environment

These ideas are very dense and need more development within a user's manual.
In part the matter of warping in nyquist and time-warping Practices could 
also be discussed (discrete and continuous).

================

