nyquist-users Mailing List for Nyquist (Page 3)
Nyquist is a language for sound synthesis and music composition.
Brought to you by:
rbd
You can subscribe to this list here.
2005 |
Jan
|
Feb
|
Mar
(5) |
Apr
|
May
|
Jun
(4) |
Jul
|
Aug
(3) |
Sep
(3) |
Oct
|
Nov
|
Dec
(1) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2006 |
Jan
(5) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2008 |
Jan
(12) |
Feb
(1) |
Mar
(1) |
Apr
(9) |
May
|
Jun
(2) |
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2009 |
Jan
(2) |
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
|
Jul
(3) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2010 |
Jan
|
Feb
(3) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(21) |
Nov
(6) |
Dec
(9) |
2011 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
|
2013 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Wesley T. M. <wes...@ju...> - 2008-06-06 21:27:24
|
I had an .alg file that was producing non-compilable C code, even though the translator had no errors. I searched through the .lsp files in /tran/ and figured it out. If your .alg file uses STATE variable names that are substrings of other STATE variable names, the code that appends _reg to the name (fixup-substitutions in writesusp.lsp) may double-process some variables, resulting in non-compilable C code. E.g. I had the STATE variables "phase" and "iphase". In the inner loop of the translated .c file, "phase" became "phase_reg" but "iphase" became "iphase_reg_reg". I picked a totally different variable name and now it's fine. No need for a fix, just wanted to share the workaround. ____________________________________________________________ Fabulous Spa Getaway! Enter for your chance to WIN great beauty prizes everyday! http://thirdpartyoffers.juno.com/TGL2131/fc/JKFkuJNzuPlXQUq7UgjmTlhQchFAHGjoxcrMXTg162KRUWLKmSKu2X/ |
From: Roger D. <rb...@cs...> - 2008-04-29 21:35:09
|
> Any other solutions welcome. Well, I guess fixing the bugs would be a good idea :-) I didn't know this didn't work. I'll put it on my list and fix it. Actually, there's a large patch switching Nyquist to libsndfile, so the sound file write code has already been redone. Maybe this will work when I can release it. -Roger |
From: Wesley T. M. <wes...@ju...> - 2008-04-29 14:54:58
|
I'm having a problem keeping pitch stable with fmosc, and was wondering where the algorithm came from. Here are some SAL code examples. When I do something like this: set env = pwl(2.0, 500.0, 2.001) set mod1 = osc(c3, 2.0) * env set carrier = fmosc(c3, mod1) play carrier ...the resulting pitch is stable. However, if I add another layer of modulation: set env = pwl(2.0, 500.0, 2.001) set mod1 = osc(c3, 2.0) * env set mod2 = fmosc(c3, mod1) * env set carrier = fmosc(c3, mod2) play carrier ...the pitch sweeps all over the place. (Actually, there is no clearly perceived pitch.) I'm 99.9% sure DX7's and other Yamaha FM synths don't do this for stacked modulators. I suppose I could pull out my DX7-II and double check. Wes Morrison _____________________________________________________________ Protect your investment. Click here to find the homeowner insurance policy that you need. http://thirdpartyoffers.juno.com/TGL2111/fc/Ioyw6iifSn60Riy7jlHaWg59SYW7Eb2c5cBGVM2X4yKxaUM8doFvCD/?count=1234567890 |
From: <edg...@we...> - 2008-04-29 10:27:23
|
> For the particular problem of saving samples to a file, I think it would > be simpler and an order of magnitude faster to call snd-save. Several problems: with "s-save" [and also tried "snd-save" directly] all samples smaller or bigger than the range from -1.0 to +1.0 get clipped to -1.0 or +1.0. This could be circumvented by scaling the sound down by a certain factor, write it into a 32-bit float sound file and scale it in the graphical viewer to the original value (the floating point rounding error is ridiculous small compared to the graphical pixel rounding error). I had tried this the way you suggested: > ... you can specify a float format with no headers, which should > be equivalent to explicitly writing each sample to a binary file. The problem is: (s-save ... :mode snd-head-mode-float :bits 32) (s-save ... :format snd-head-none :mode snd-head-mode-float :bits 32) all ":format ..." variations of ":mode snd-head-mode-float" together with ":bits 32" on Linux write pure nonsense files. E.g. with "snd-head-none" I get a file where only the first half of the sound file is filled with nonsense data while the second half of the file is always padded with 0.0. On Windows XP Pro, with "s-save ... :mode snd-head-mode-float :bits 32" Nyquist 3.01 (console version) just simply crashes. So, I'm sorry but the only reliable way to write floating point samples on ALL systems (or at least on Win/Linux/Mac) seems to be "write-float". Any other solutions welcome. - edgar P.S. I only got the mail sent to me directly, but not the copy from the nyquist-users list, so in case of doubt: edgar-rft [at] web [dot] de -- The author of this email does not necessarily endorse the following advertisements, which are the sole responsibility of the advertiser: _______________________________________________________________________ EINE FÜR ALLE: die kostenlose WEB.DE-Plattform für Freunde und Deine Homepage mit eigenem Namen. Jetzt starten! http://unddu.de/?kid=kid@mf2 |
From: Roger D. <rb...@cs...> - 2008-04-28 21:35:04
|
I think changing snd-fetch-array to tell how many samples were actually read from the signal before the termination time is not a bad idea. For the particular problem of saving samples to a file, I think it would be simpler and an order of magnitude faster to call snd-save. If you want, you can specify a float format with no headers, which should be equivalent to explicitly writing each sample to a binary file. -Roger |
From: <edg...@we...> - 2008-04-27 21:37:32
|
Hi nyquist-users list, Here a suggestion for the "snd-fetch-array" function. The modified "samples.c" code can be found at the end of this mail. A way to read the number of "valid" samples from "sound-fetch-array" Preface: I'm just trying to write an external zoomable waveform display to watch Nyquist *control* waveforms like envelopes and modulator sounds. Because these waveforms can have the full floating point range and are usually beyond the -1.0 to +1.0 sound sample limit, I'm using Nyquist binary streams to write the samples into binary floating point files like this simplified version: ;; ctrl-sound = the *control* sound to write into the binary file ;; block-size = number of samples to read into the sample-array ;; (binary-stream (open-binary "binary-file.dat" :direction :output)) (let (sample-array) ;; snd-fetch-array returns NIL if out of samples (while (setq sample-array (snd-fetch-array ctrl-sound block-size block-size)) ;; write all samples from the current array into the binary file (dotimes (sample-index block-size) (write-float (aref sample-array sample-index) binary-stream)))) (close binary-stream) This works with reasonable speed (MUCH faster than a "sound-fetch" loop) and reasonable memory allocation but has one significant problem. If "snd-fetch-array" runs out of samples in the last block, it pads the missing samples with "zero" samples (silence) in the sample-array. This makes sense with audible sounds but not with *control* sounds. Because Nyquist *control* sounds often are far away from zero, usually with a rather big DC offset (vertical shift), a few zero samples at the end are messing up everything. Therefore a suggestion: If I modify the "snd_fetch_array" C function in "nyqsrc/samples.c", line 208 in Nyquist 3.01, so that at the beginning the Nyquist *RSLT* variable first is set to NIL and then, but only if "snd_fetch_array" runs out of samples, is set to the "fillptr" value as a Nyquist FIXNUM, I can detect wether a padding has occured by testing *RSLT* for non-NIL and in case a padding HAS occurred, read the number of "valid" samples out of the value of FIXNUM the *RSLT* variable. Example: > (snd-fetch-array (osc 60) 6 6) #(0 0.0372667 0.0744815 0.111593 0.148549 0.185299) > *rslt* NIL ; meaning all samples are valid > (snd-fetch-array (osc 60 0.0001) 6 6) #(0 0.0372667 0.0744815 0.111593 0 0) ; the last two 0's are padded > *rslt* 4 ; meaning only the first 4 samples are valid Now I can write in the last block, where *rslt* is non-NIL, only the really existent samples from the array into the binary file. Things I am not sure about: If I test the *rslt* variable just after Nyquist has started, it has a FLONUM value of 0.0 and not NIL, so I don't know wether setting this variable to NIL has nasty side-effects like unwanted garbage collection or anything else (it would also be possible to set it to 0.0 instead of NIL but testing on the LISP side would be more complicated). It follows the modified "snd_fetch_array" function from "nyqsrc/samples.c". I also could send a patch if that's easier to apply, but first would appreciate some comments wether my modifications make sense concerning the use of the *rslt* variable in the Nyquist system in general. The two additional lines are marked with: /* added by EDGAR */ file: "nyqsrc/samples.c", line 208 in Nyquist 3.01 --- beginning of code --- LVAL snd_fetch_array(sound_type s, long len, long step) { long i, maxlen, skip, fillptr; float *samples; LVAL result; setvalue(xlenter("*RSLT*"), NULL); /* added by EDGAR */ if (len < 1) xlfail("len < 1"); if (!s->extra) { /* this is the first call, so fix up s */ s->extra = (long *) malloc(sizeof(long) * (len + OFFSET)); s->extra[0] = sizeof(long) * (len + OFFSET); s->CNT = s->INDEX = s->FILLCNT = 0; s->TERMCNT = -1; maxlen = len; } else { maxlen = (s->extra[0] / sizeof(long)) - OFFSET; if (maxlen < 1) xlfail("sound in use by another iterator"); if (maxlen < len) xlfail("len grew"); } samples = (float *) &(s->extra[OFFSET]); /* step 1: refill buffer with samples */ fillptr = s->FILLCNT; while (fillptr < maxlen) { if (s->INDEX == s->CNT) { sound_get_next(s, &(s->CNT)); if (s->SAMPLES == zero_block->samples) { /* the following line was added by EDGAR */ setvalue(xlenter("*RSLT*"), cvfixnum(fillptr)); if (s->TERMCNT < 0) s->TERMCNT = fillptr; } s->INDEX = 0; } samples[fillptr++] = s->SAMPLES[s->INDEX++] * s->scale; } s->FILLCNT = fillptr; /* it is important to test here AFTER filling the buffer, because * if fillptr WAS 0 when we hit the zero_block, then filling the * buffer will set TERMCNT to 0. */ if (s->TERMCNT == 0) return NULL; /* logical stop time is ignored by this code -- to fix this, * you would need a way to return the logical stop time to * the caller. */ /* step 2: construct an array and return it */ xlsave1(result); result = newvector(len); for (i = 0; i < len; i++) { setelement(result, i, cvflonum(samples[i])); } /* step 3: shift samples by step */ if (step < 0) xlfail("step < 0"); s->FILLCNT -= step; if (s->FILLCNT < 0) s->FILLCNT = 0; for (i = 0; i < s->FILLCNT; i++) { samples[i] = samples[i + step]; } if (s->TERMCNT >= 0) { s->TERMCNT -= step; if (s->TERMCNT < 0) s->TERMCNT = 0; } /* step 4: advance in sound to next sample we need * (only does work if step > size of buffer) */ skip = step - maxlen; while (skip > 0) { long remaining = s->CNT - s->INDEX; if (remaining >= skip) { s->INDEX += skip; skip = 0; } else { skip -= remaining; sound_get_next(s, &(s->CNT)); s->INDEX = 0; } } /* restore the stack */ xlpop(); return result; } /* snd_fetch_array */ --- end of code --- I just have read the nyquist-users list mailing list archive and it seems as if I still don't get copies from the mails on the list. In case of doubt write to: edgar-rft [at] web [dot] de Thanks in advance, - edgar -- The author of this email does not necessarily endorse the following advertisements, which are the sole responsibility of the advertiser: _______________________________________________________________________ Jetzt neu! Schützen Sie Ihren PC mit McAfee und WEB.DE. 30 Tage kostenlos testen. http://www.pc-sicherheit.web.de/startseite/?mc=022220 |
From: Wesley T. M. <wes...@ju...> - 2008-04-18 12:59:48
|
> Since you are adding to the state, it could be > that there's simply a syntax error that's hiding > the NAME or INNER-LOOP part. Hmm... "syntax error"..."hiding"... Upon a fresh look this morning, the problem turned out to be an extra parenthesis. Ouch. Thanks _____________________________________________________________ Best Commodity Trading Platforms. Click Now! http://thirdpartyoffers.juno.com/TGL2111/fc/Ioyw6iiejMGSsE6CWTc5KHWafbHesxPPuoYorzRcBpuVSm7Dw8jBMf/ |
From: Roger D. <rb...@cs...> - 2008-04-17 20:10:39
|
I found the following in translate.lsp. If this is the code issuing the error message, it means your new .alg file is missing a name or an inner-loop slot. Since you are adding to the state, it could be that there's simply a syntax error that's hiding the NAME or INNER-LOOP part. If this seems to check out, you can send me your .alg file and I'll take a look. Your idea to modify something that exists is the right way to get started. -Roger ------------ ;; the quoted list that follows 'slot' is the list of required ;; parameters. If any parameter is missing, this will cause an ;; error (dolist (slot '(name inner-loop)) ; other necessarily non-nil slots go here (cond ((null (get-slot alg slot)) (error "missing slot")))) |
From: Wesley T. M. <wes...@ju...> - 2008-04-17 03:23:39
|
I am trying to modify an existing .alg file and having a problem adding STATE variables. I get an error saying "missing slot". I have not been able to find documentation on how this is supposed to work. I've also discovered that adding ARGUMENTS sometimes requires other things to be added, and am looking for the rules for that as well. _____________________________________________________________ Take a perfect family vacation to Orlando. Click Here. http://thirdpartyoffers.juno.com/TGL2111/fc/Ioyw6iifkfprJAuXVVIReKhePAPMOtNT1xpu2yZOXPcClfkvJotXYP/ |
From: Wesley T. M. <wes...@ju...> - 2008-04-04 13:13:44
|
If I do this: ; 1 cycle set feedback = 1.01 play fmfb(hz-to-step(1.0), feedback, 1.0) ...there is a "bump" in the middle of the wave, which when zoomed in, appears to be "ringing" at 1/2 of *sound-srate*, that is, sample x is too high, sample x+1 is too low, sample x+2 is too high, sample x+3 is too low, etc. no matter what *sound-srate* has been set to. This distortion is present in small amounts all throughout the wave, even with low values for feedback index. You just have to zoom in close enough to see it. Am I doing something wrong, or is this a bug in fmfb? I've tried various sample and control rates, even rebuilding *sine-table*, which fmfb does not appear to use. Wes Morrison _____________________________________________________________ Turn your passion into a profession. Click here to find a film school near you. http://thirdpartyoffers.juno.com/TGL2111/fc/REAK6ZpPAOa4Uh8RVYfypZ8JgkCb8knrlcdRqVddfDZqnOaXGuVNzt/ |
From: Roger D. <rb...@cs...> - 2008-03-14 13:05:56
|
The School of Music at Carnegie Mellon University is pleased to announce a Computer Music Workshop, to be held June 1-7, 2008 at Carnegie Mellon in Pittsburgh, Pennsylvania. The Computer Music Workshop offers musicians, composers, educators, and students practical experience learning about Sound Synthesis and Algorithmic Composition using Nyquist and Audacity software. Nyquist is an advanced sound and music programming environment, and Audacity is a powerful, extensible audio editor. Hands-on, interactive sessions will ensure individual attention and plenty of time for learning and discussion. A certificate will be given to all students who complete the workshop. Students will learn: - basic concepts of digital audio and sound synthesis, - how to create instruments and effects in Nyquist, - how to customize Audacity with new plugins, and - algorithmic composition concepts using Nyquist. (Instructors will be prepared to address special topics of interest, so please let us know, and we will try to accommodate your requests.) Who should attend? Anyone with a passion for music and familiarity with computers, e.g. comfortable using an editor, email, and working with files, is encouraged to register. Those with more advanced programming and/or music synthesis experience are also welcome and will have the opportunity to learn about advanced concepts in Nyquist directly from its creator. We expect a mixed group of composers, performers, scientists, engineers, and especially those who do not fit neatly into categories! Workshop presenters include: - Dr. Roger B. Dannenberg, designer of the Nyquist system and co-designer of the Audacity audio editor (and trumpet player), - Dr. Richard M. Stern, specializing in signal processing, psychoacoustics (and harpsichordist), - Dr. Tom Cortina, computer scientist, educator, and computer music programmer, - Dr. Noel Zahler, computer music researcher, composer, guitarist, and School of Music Head. The cost is $675 covering the workshop and some group activities. Housing is available but not included. For additional information, registration, housing and travel information, (and early registration discount!) see http://music.web.cmu.edu/cmw. |
From: Roger D. <rb...@cs...> - 2008-02-07 15:02:51
|
Steven wrote: > Roger I have run across odd behavior while rendering Adagio scores. > The two files below set up a simple Adagio score and then realize it > using one of the Phil Light drum samples. It works as expected as long > as the tempo is below ~195. Increase the tempo and/or shorten note > durations and Nyquist aborts complaining about recursive sounds Sorry I couldn't look at this sooner -- I loaded up your examples and they work fine for me. I cranked the tempo up to 1000 bpm and added many more sixteenth notes, and that works too. I'm running Nyquist v3.01 on Mac OS X, but I'd be surprised if this were OS-dependent. ------------------------------- ANOTHER TOPIC: I *was* able to replicate edgar's problem running jNyqIDE on Windows 2000. I'm pretty sure this was working not too many versions back, and I'm really surprised, but I supposed there is something different about pipes or threads or stdio between win2K and winXP. I plan to track this down, but it's not a high priority. |
From: <edg...@we...> - 2008-01-27 17:04:51
|
Nyquist 3.01: The source code link on the CMU page is dead (January 26, 2008). At the moment it seems as if I can only send messages to the Nyquist Users list but do not receive the replies. I've just subscribed a second time, maybe this time it will work? In case of doubt: If you have further questions write directly to: edgar-rft[at]web[dot]de ------------ Ubuntu 7.10 ------------ With Nyquist 3.01 CVS (January 26, 2008) on Ubuntu 7.10 still the same game: chmod: runtime/system.lsp: new permissions are r-xrwxrwx, not r-xr-xr-x make: *** [runtime/system.lsp] Error 1 Then I type: bash$ chmod runtime/system.lsp a-w bash$ make The good news: Java now compiles successfully from the beginning. No further problems noticed yet with Nyquist 3.0 and 3.01 on Ubuntu 7.10, but have not really intensively played with SAL (still using Lisp). ---------------------------- Windows 2000 Service Pack 4 ---------------------------- Still cannot use the the JavaIDE. For testing purpose I had installed the newest Java version and tested on two computers, but the Nyquist JavaIDE window still freezes on both machines with Windows 2000. C:\>java -version java version "1.6.0_03" Java(TM) SE Runtime Environment (build 1.6.0_03-b05) Java HotSpot(TM) Client VM (build 1.6.0_03-b05, mixed mode, sharing) -------------------------------------------------- Windows shell output after starting the Java IDE: -------------------------------------------------- E:\Programme\Nyquist>java -jar jnyqide/jNyqIDE.jar Windows 2000 added jScrollPane jnyqide.CodePane[,0,0,0x0,invalid,layout=javax.swing.ScrollPan eLayout$UIResource,alignmentX=0.0,alignmentY=0.0,border=javax.swing.plaf.basic.B asicBorders$FieldBorder@198dfaf,flags=16777544,maximumSize=,minimumSize=,preferr edSize=java.awt.Dimension[width=400,height=200],columnHeader=,horizontalScrollBa r=javax.swing.JScrollPane$ScrollBar[,0,0,0x0,invalid,layout=com.sun.java.swing.p laf.windows.WindowsScrollBarUI,alignmentX=0.0,alignmentY=0.0,border=,flags=41946 32,maximumSize=,minimumSize=,preferredSize=,blockIncrement=10,orientation=HORIZO NTAL,unitIncrement=1],horizontalScrollBarPolicy=HORIZONTAL_SCROLLBAR_ALWAYS,lowe rLeft=,lowerRight=,rowHeader=,upperLeft=,upperRight=,verticalScrollBar=javax.swi ng.JScrollPane$ScrollBar[,0,0,0x0,invalid,layout=com.sun.java.swing.plaf.windows .WindowsScrollBarUI,alignmentX=0.0,alignmentY=0.0,border=,flags=4194632,maximumS ize=,minimumSize=,preferredSize=,blockIncrement=10,orientation=VERTICAL,unitIncr ement=1],verticalScrollBarPolicy=VERTICAL_SCROLLBAR_ALWAYS,viewport=javax.swing. JViewport[,0,0,0x0,invalid,layout=javax.swing.ViewportLayout,alignmentX=0.0,alig nmentY=0.0,border=,flags=25165832,maximumSize=,minimumSize=,preferredSize=,isVie wSizeSet=false,lastPaintPosition=,scrollUnderway=false],viewportBorder=] to pane l could not find NyquistWords.txt, trying jnyqide/NyquistWords.txt renderGraph soundBrowser file is E:\Programme\Nyquist/lib/instruments.txt XLISPPATH=E:\Programme\Nyquist/lib/;E:\Programme\Nyquist/runtime/; IGNORE= envp has SystemRoot=C:/windows no ./ny found, trying ./nyquist myProcess: java.lang.ProcessImpl@1172e08jDesktop size: java.awt.Dimension[width= 0,height=0] initial frame height 800 screen height 1024 finall frame height 800 desktop size is actually java.awt.Dimension[width=792,height=588] jListOutputFrame.setSize 530 352 java.awt.Dimension[width=792,height=588] Painting... renderGraph calling AxisLayout minLabel 0.0 spacing 0.1 numLines 11minLabel -1.0 spacing 1.0 numLines 3sendInput: ;; transferring preference data from jNyqIDE to Nyquist (false) sendInput: (progn (false) sendInput: (set-sound-srate 44100) (false) sendInput: (set-control-srate 2205) (false) sendInput: (autonorm-on) (false) sendInput: (sound-on) (false) sendInput: (setf *tracenable* nil) (false) sendInput: (setf *gc-flag* t) (false) sendInput: (setf *sal-compiler-debug* nil) (false) sendInput: (setf *sal-traceback* t) (false) sendInput: (setf *sal-secondary-prompt* nil) (false) ------------------------------- Nyquist JavaIDE Output window: ------------------------------- XLISP version 2.0, Copyright (c) 1986, by David Betz CMU MIDI Toolkit, Copyright (c) 1993,1994, by Roger B. Dannenberg; loading "E:\Programme\Nyquist\runtime\init.lsp" Set *default-sf-dir* to c:\tmp in fileio.lsp AutoNorm feature is on. ;; transferring preference data from jNyqIDE to Nyquist (progn (set-sound-srate 44100) (set-control-srate 2205) (autonorm-on) (sound-on) (setf *tracenable* nil) (setf *gc-flag* t) (setf *sal-compiler-debug* nil) (setf *sal-traceback* t) (setf *sal-secondary-prompt* nil) ---------------------------------------------------------------------------- Now, if I type (+ 1 1) into the input field in the upper left corner of the JavaIDE and press RETURN, the Windows shell prints: ---------------------------------------------------------------------------- cut newline: newlinePos 7 pos 8 sendInput: (+ 1 1) (false) ----------------------------------------------------------------------- Directly afterwards the Java window freezes and doesn't even react if I click the it's 'close' button. The only way to exit the JavaIDE then is to close the Windows shell, where the JavaIDE had been started from. ------------------------------------------------------------------------ Also some good news: if I start the nyquist.exe from the command line there are no more complaints any longer about missing file or wrong directory names now. Thanks anyway, - edgar -- The author of this email does not necessarily endorse the following advertisements, which are the sole responsibility of the advertiser: _______________________________________ GRATIS: Movie-FLAT. Jetzt freischalten! http://freemail.web.de/club/maxdome.htm |
From: Steven J. <pl...@gm...> - 2008-01-26 21:35:13
|
Roger I have run across odd behavior while rendering Adagio scores. The two files below set up a simple Adagio score and then realize it using one of the Phil Light drum samples. It works as expected as long as the tempo is below ~195. Increase the tempo and/or shorten note durations and Nyquist aborts complaining about recursive sounds. Further the effect seems to be accumulative. If you comment out the third 1/16th note the first two render fine. Likewise, if you replace the initial 1/16th notes with longer durations you can squeeze out more notes before the problem appears. I have a suspicion this is somehow related to the samples being stretched or time-shifted as a function of tempo/duration. --Steven P.S. So far I have failed to take your advice and try SCORE-READ-SMF instead. :) *** start test.gio !tempo 200 t0 v1 c4 s c4 s c4 s * Comment out this line and problem "goes away" * c4 s * c5 s * c4 s *** end test.gio ;; start test.lsp (setf *gio-file* "/home/sj/src/ny2/test.gio") (setf *test-file* "/home/sj/Samples/DrumKits/plight/snare-3.wav") (defun adagio->seq (filename) (let ((seq (seq-create)) (fobj (open filename))) (if fobj (progn (seq-read seq fobj) (close fobj) seq) nil))) (setf *seq* (adagio->seq *gio-file*)) (if (null *seq*) (error (format nil "Could not open Adagio file: ~S" *file*))) (defun debug-note (&rest args) (aref (s-read *test-file*) 0)) (setq *result* (seq-midi *seq* (note (chan pitch vel) (debug-note)))) (play *result*) ;; end test.lsp |
From: Roger D. <rb...@cs...> - 2008-01-26 04:59:20
|
I just uploaded Nyquist v3.01 to http://www.cs.cmu.edu/~music/music.software.html I believe the Windows problem starting up without a valid sound file name is fixed. The documentation is now mostly in SAL syntax, and the command completion or syntax hints window displays in either Lisp or SAL, depending upon the context. I thought I tested this on Linux today, but it turns out there was a CVS problem and I tested an old version. Chances are reasonably good that 3.01 will work on Linux, but please let me know if you encounter any problems. -Roger |
From: <edg...@we...> - 2008-01-22 00:30:20
|
setupnyqiderun30.exe on Windows 2000 Professional Service Pack 4 C:\>java -version java version "1.5.0=5F06" Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0=5F06-b05) Java HotSpot(TM) Client VM (build 1.5.0=5F06-b05, mixed mode) --------------------------------------------------------------------------= - Output of the Windows shell after starting the Nyquist JavaIDE: --------------------------------------------------------------------------= - C:\Programme\Nyquist>java -jar jnyqide/jNyqIDE.jar added jScrollPane jnyqide.CodePane[,0,0,0x0,invalid,layout=3Djavax.swing.Scr= ollPan eLayout$UIResource,alignmentX=3D0.0,alignmentY=3D0.0,border=3Djavax.swing.plaf.b= asic.B asicBorders$FieldBorder@cd2e33,flags=3D16777544,maximumSize=3D,minimumSize=3D,pr= eferre dSize=3Djava.awt.Dimension[width=3D400,height=3D200],columnHeader=3D,horizontalScr= ollBar =3Djavax.swing.JScrollPane$ScrollBar[,0,0,0x0,invalid,layout=3Dcom.sun.java.sw= ing.pl af.windows.WindowsScrollBarUI,alignmentX=3D0.0,alignmentY=3D0.0,border=3D,flags=3D= 419463 2,maximumSize=3D,minimumSize=3D,preferredSize=3D,blockIncrement=3D10,orientation=3DH= ORIZON TAL,unitIncrement=3D1],horizontalScrollBarPolicy=3DHORIZONTAL=5FSCROLLBAR=5FALWAYS= ,lower Left=3D,lowerRight=3D,rowHeader=3D,upperLeft=3D,upperRight=3D,verticalScrollBar=3Djava= x.swin g.JScrollPane$ScrollBar[,0,0,0x0,invalid,layout=3Dcom.sun.java.swing.plaf.wi= ndows. WindowsScrollBarUI,alignmentX=3D0.0,alignmentY=3D0.0,border=3D,flags=3D4194632,max= imumSi ze=3D,minimumSize=3D,preferredSize=3D,blockIncrement=3D10,orientation=3DVERTICAL,uni= tIncre ment=3D1],verticalScrollBarPolicy=3DVERTICAL=5FSCROLLBAR=5FALWAYS,viewport=3Djavax.s= wing.J Viewport[,0,0,0x0,invalid,layout=3Djavax.swing.ViewportLayout,alignmentX=3D0.0= ,align mentY=3D0.0,border=3D,flags=3D16777224,maximumSize=3D,minimumSize=3D,preferredSize=3D,= isView SizeSet=3Dfalse,lastPaintPosition=3D,scrollUnderway=3Dfalse],viewportBorder=3D] to= panel could not find NyquistWords.txt, trying jnyqide/NyquistWords.txt renderGraph soundBrowser file is C:\Programme\Nyquist/lib/instruments.txt XLISPPATH=3DC:\Programme\Nyquist/lib/;C:\Programme\Nyquist/runtime/; IGNORE=3D envp has SystemRoot=3DC:/windows no ./ny found, trying ./nyquist myProcess: java.lang.ProcessImpl@e66f56jDesktop size: java.awt.Dimension[w= idth=3D0 ,height=3D0] jListOutputFrame.setSize 530 367 java.awt.Dimension[width=3D800,height=3D612] initial frame height 800 screen height 1024 finall frame height 800 Painting... renderGraph calling AxisLayout minLabel 0.0 spacing 0.1 numLines 11minLabel -1.0 spacing 1.0 numLines 3sendInput: ;; transferring preference data from jNyqIDE to Nyqu= ist (false) sendInput: (progn (false) sendInput: (set-sound-srate 44100) (false) sendInput: (set-control-srate 2205) (false) sendInput: (autonorm-on) (false) sendInput: (sound-on) (false) sendInput: (setf *tracenable* nil) (false) sendInput: (setf *gc-flag* t) (false) sendInput: (setf *sal-compiler-debug* nil) (false) sendInput: (setf *sal-traceback* t) (false) sendInput: (setf *sal-secondary-prompt* nil) (false) --------------------------------------------------------------------------= - Output of the JavaIDE 'Output' Window: --------------------------------------------------------------------------= - XLISP version 2.0, Copyright (c) 1986, by David Betz CMU MIDI Toolkit, Copyright (c) 1993,1994, by Roger B. Dannenberg; loading= "C:\Programme\Nyquist\runtime\init.lsp" Set *default-sf-dir* to c:\tmp in fileio.lsp AutoNorm feature is on. ;; transferring preference data from jNyqIDE to Nyquist (progn (set-sound-srate 44100) (set-control-srate 2205) (autonorm-on) (sound-on) (setf *tracenable* nil) (setf *gc-flag* t) (setf *sal-compiler-debug* nil) (setf *sal-traceback* t) (setf *sal-secondary-prompt* nil) --------------------------------------------------------------------------= - Now I type into the 'input' field in the upper left corner in the JavaIDE:= --------------------------------------------------------------------------= - (+ 1 1) --------------------------------------------------------------------------= - after pressing 'Return' the Window Shell displays: --------------------------------------------------------------------------= - cut newline: newlinePos 7 pos 8 sendInput: (+ 1 1) (false) --------------------------------------------------------------------------= - after this the JavaIDE window 'freezes' and doesn't even react if I click it's Windows 'close' button. I can exit the JavaIDE only by clicking the 'close' button of the background shell window. --------------------------------------------------------------------------= - If I start 'nyquist.exe' in a shell window it only works if I (setf *default-sound-file* "temp.wav") manually or in init.lsp --------------------------------------------------------------------------= - it's not too hurry, I can live with that, thanks for Nyquist 3.0, - edgar --=20 The author of this email does not necessarily endorse the following advertisements, which are the sole responsibility of the advertiser: =5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F Jetzt neu! Sch=FCtzen Sie Ihren PC mit McAfee und WEB.DE. 30 Tage kostenlos testen. http://www.pc-sicherheit.web.de/startseite/=3Fmc=3D022220 |
From: Roger D. <rb...@cs...> - 2008-01-19 23:13:27
|
That example and the output looks/sounds right to me. In general, each line of Adagio score produces one note. Making a note with "V1" (as opposed to, say, "C4") is unorthodox, but legal. -Roger |
From: Steven J. <pl...@gm...> - 2008-01-19 08:11:43
|
Roger, I was experimenting with adagio and kept getting extra notes. I traced it down to "v" tags in the adagio file. It appears each v tag inserts a spurious c60 note-on event into the seq object. Below are two test files along with the results. --Steven ;; midi_test.lsp ;; (load "midishow") (setf seq (seq-create)) (setf gio-file (open "/home/sj/src/ny2/working/midi_test.gio")) (seq-read seq gio-file) (close gio-file) (midi-show seq) ;; end midi_test.lsp ** midi_test.gio ** v1 v2 v3 ** end midi_test.gio Results: > (load "midi_test") (load "midi_test") ; loading "midi_test.lsp" ; loading "/home/sj/src/nyquist_3.00/lib/midishow.lsp" Loaded Adagio file with 3 note(s), 0 ctrl(s). Note@0 ch:1 pitch:60 vel:127 line:3 dur:600 Note@600 ch:2 pitch:60 vel:127 line:4 dur:600 Note@1200 ch:3 pitch:60 vel:127 line:5 dur:600 T > |
From: Roger D. <rb...@cs...> - 2008-01-09 16:00:59
|
Yes, I have to work on other things now, but I'll try to get the Nyquist 3.0 Linux makefile problem fixed within a few days -- look for Nyquist 3.01. -Roger > From: > victor <vd...@gm...> > > > is someone working in a linux package? > |
From: Roger D. <rb...@cs...> - 2008-01-08 20:55:55
|
I started using the SAL language in Nyquist for "real work" and my "weekend project" to compile and install a Windows version turned into a lot of debugging. But finally, things appear to be in reasonable shape, so I've put the official Version 3.00 on the web at the usual place: http://www.cs.cmu.edu/~music/music.software.html There's a Mac Universal binary app and a Windows installer. There's also a zipped Linux source, but I realize as I type this that the Makefile is wrong so it won't compile without a fair number of fixes (ok, so not all in reasonable shape). Based on recent experience, I expect the SAL stuff is going to have some rough edges, although it's coming along, and I'd certainly like to get some feedback from other users. The Lisp side hasn't changed much and assuming I didn't screw up the release procedure, I don't expect any big problems. Included in 3.0, in addition to SAL, are a number of ports of STK instruments by Pedro Morales as well as a little language he wrote for transcribing mostly common practice music notation into Nyquist. See demos/stktest.lsp and demos/doc/sdl-man.pdf. Online documentation is at htpp://www.cs.cmu.edu/~rbd/doc/nyquist -Roger |
From: Roger D. <rb...@cs...> - 2008-01-06 22:36:38
|
Steven, Thanks for the report. I found a comment about readline in sys/unix/linux/Makefile that says take out -lreadline to disable command line editing. There's also a -DREADLINE switch that's not used. The story here is that XLisp has the ability to break a running computation so you can look at the stack and see what's going on, then resume. But XLisp does not have very nice line editing. You can hack the line editing problem by linking with the readline library, but that disables the runtime control because it buffers control characters. I'll try to document some readline configuration options later when I'm able to test them. You asked about Common Music. (And thanks for getting the name right -- I slipped and referred to it as Common Lisp Music, which is not what I meant). The short answer is no, there's not currently any way to target Nyquist from CM. Nyquist now has patterns that are similar to those in CM, but since XLisp has a different object system, programs in CM are not compatible with Xlisp/Nyquist. CM has the ability to generate MIDI in real time (modulo garbage collection delays) and introduces a process construct. In contrast, Nyquist has a very different approach to concurrency based on lazy evaluation, so again, there are some fundamental incompatibilities. The best way to connect CM to Nyquist would be to get CM to write score files and translate them to Nyquist score files, or work with MIDI files, which both CM and Nyquist can read and write. -Roger |
From: Steven J. <pl...@gm...> - 2008-01-06 08:39:31
|
I just compiled 3.00 on Fedora 8 with very few problems. In addition to the Java and chmod issues reported earlier the only problem I ran into was that lreadline was missing. Simple fix as root: yum install readline yum install readline-devel I don't recall having to do this in previous Fedora distributions. Perhaps it was because I used a "live" CD this time? One question. I am not too familiar with Common Music other then a general idea of the concept. Does the adoption of SAL allow Nyquist to become a target of CM? |
From: Roger D. <rb...@cs...> - 2008-01-04 15:43:18
|
Edgar, Thanks for building (or trying to build) on Linux. The following files that had java compilation problems should simply be deleted (they'll be gone in the next CVS commit): jnyqide/EnvelopeCollection.java jnyqide/SyntaxThread.java [we're still working on the chmod problem that appeared in Edgar's post] Thanks, Roger |
From: Roger D. <rb...@cs...> - 2008-01-03 16:45:40
|
I have been working hard on Nyquist lately. For a long time, I've considered changing Nyquist because so many people seem to be intimidated by Lisp syntax. One possibility I considered was Python, but Nyquist relies heavily on Lisp features that Python lacks. It turned out that Rick Taube was working along similar lines and created an algorithmic language named SAL for his Common Lisp Music system. I really liked the SAL design, which maintains a very close connection to Lisp but adds infix notation, IF-THEN-ELSE, and other familiar statements as well as conventional function call notation, i.e. you write foo(x, y) instead of (foo x y). The great thing about SAL is that it runs on top of lisp and translates to Lisp, so with just a simple front end, you can retain everything from Nyquist. E.g. in SAL, I can now write pluck(c4) to make a plucked string sound, and the symbols "pluck" and "c4" do not even appear in the SAL parser/compiler, nor are there any stubs to bridge from SAL to Nyquist. SAL just translates the code to (pluck c4) and calls Lisp's EVAL. All of this is hidden from novice users, so they don't have to go running in fear from parentheses :-) SAL also allows one to continue working with Lisp code, and the IDE now supports programming with Nyquist in both Lisp and SAL syntax. I've rewritten the Nyquist Manual introductory chapters to use SAL rather than Lisp, and I've added a chapter explaining SAL. The new Nyquist is Version 3.00, and you can get it via cvs from SourceForge. I would be very happy to hear from users about their experience and opinions whether positive or negative. There are undoubtedly bugs I have not discovered (but v3.0 also fixes some Nyquist bugs). The manual and the Nyquist downloads on the web will remain at Version 2.xx until the rate of change settles down a bit. Once you get started, CVS can easily keep you current with the latest updates to v3.xx. None of this will have any immediate impact on Audacity Nyquist and Audacity plug-ins. If people like using SAL in Nyquist, it would be very desirable to to update Audacity with a newer version of Nyquist. (In my opinion, it's a no-brainer, but I acknowledge that there's real work involved to make a major update like this.) -Roger |
From: Roger D. <rb...@cs...> - 2006-01-15 19:05:52
|
I omitted a file from the previously announced release. In the process of fixing it, I updated my machine to use Visual Studio 2005 and Java 1.5, which raised a number of additional, but small issues. Everything on http://www.cs.cmu.edu/~music/nyquist is now up-to-date. If you didn't have Java 1.5 before, you'll need it now for the Nyquist IDE. Note that I elected not to change and recompile all the documentation with a new version number (admittedly a poor practice). Let me know if you find any problems. -Roger |