Thread: [Nyquist-users] compiling nyquist and mailing list issues
Nyquist is a language for sound synthesis and music composition.
Brought to you by:
rbd
From: Roger D. <rb...@cs...> - 2010-10-02 05:33:51
|
There was a discussion here about some undeclared functions such as "fopen" in Nyquist. My local copy of nyqstk/src/FileRead.cpp has been modified by adding #include <stdio.h> before #include <sys/stat.h> I think the change was put in by some Audacity folks to reduce some warning messages, but apparently with some compilers (or some configurations) a missing declaration is an error. This file comes from STK, and I try to avoid changing STK code so that it will be easier to upgrade, but in this case it really needs the include. I was signed up to get digests, and I guess it took almost a year to make a digest's worth of stuff. If you're reading this in 2011, maybe you should ask me to change your settings. (I just changed mine -- sorry I wasn't getting messages more promptly.) Finally, Edgar, I manually put you on the list. I hope that works for you. I have no idea why you weren't able to sign up yourself. While I'm writing, I'll mention that I'm going to do some work on Nyquist between now and January to get ready for my class. Among other things, Nyquist doesn't work on some systems without an upgrade of PortAudio, and Nyquist Makefiles are not set up for 64-bit machines. (Nyquist will not run on 64-bit instruction sets without a lot of work, but I can at least provide Makefiles that generate 32-bit code even when the native architecture is 64-bit.) I've done this and it seems to work fine, but the changes are not in the release. There are a few other things that are broken. Let me know (or remind me) if there are other fixes I should look into. -Roger |
From: Raymond M. <la...@gm...> - 2010-10-03 09:08:24
|
On October 2, 2010 06:50:29 pm David wrote: > I got past the 'asound' problem, seems you need to have the > "developer" version of ALSA installed. > > But now I'm getting another error, and it doesn't look like it's due > to a missing package. > > portaudio/pa_unix/pa_unix_hostapis.o:(.data+0x0): undefined reference > to `PaAlsa_Initialize' > collect2: ld returned 1 exit status Incorrect libraries, wrong version of PortAudio, etc. I already went through this myself and reported it in some posting, not sure where/when now. > Here's a list of the packages I've had to install so far. As Raymond > says, they should be standard in most Linux distros, but they weren't > included in mine. If someone's using a distro aimed at small netbooks > or end-users (as opposed to developers), they might not be included. > > - gcc > - g++ > - automake > - libtool > - libasound2-dev Aside from the ALSA part, these are standard tools on Linux for doing development. The question is whether you have your system setup for it or not. A vanilla install of one distro for an end user is not necessarily intended for software development immediately. Since you are trying to use Nyquist, which does not come in binaries, then these are absolutely normal requirements that you have to fulfill. And you will not have the development tools installed on a netbook or even a regular system by default unless you choose the option appropriately on install of Linux or set this up yourself. That is just the way it is and is completely expected by anyone doing software development or even just to compile a binary. Raymond |
From: David <dfk...@gm...> - 2010-10-03 14:14:06
|
I understand perfectly. My only point is that not everybody knows that, and it might make life easier for those who aren't Linux experts if these requirements were documented in the install instructions. Most people, I think, would have given up by now, if they don't have a background in Unix or Linux. There may be some people interested in using Nyquist who don't have that kind of background, like musicians or composers. You don't happen to remember which version of PortAudio is the right version? I installed the latest version available from the Ubuntu repository, but it didn't help. That might be worth documenting, too, if a particular version is required. Thanks. |
From: Raymond M. <la...@gm...> - 2010-10-03 16:58:16
|
On October 3, 2010 10:13:59 am you wrote: > I understand perfectly. My only point is that not everybody knows > that, and it might make life easier for those who aren't Linux experts > if these requirements were documented in the install instructions. > Most people, I think, would have given up by now, if they don't have a > background in Unix or Linux. There may be some people interested in > using Nyquist who don't have that kind of background, like musicians > or composers. I think you misunderstand some of the purpose of Nyquist then. It can be used for experimenting with sound and programming of it. Aside from the technically inclined, most musicians and composers will not know what to do with this program. Thus having to compile it is not a far stretch at all given the technical side involved. The average musician sure is not going to want to program in Lisp, if program at all. Binaries would be nice, but this is not your average sound program for average people in my opinion. So compiling is not a big deal at all. If you are desperate for a binary then inquire with your Linux distro providers to see if they will compile and distribute it. In fact this is what happens with many programs that are not available in compiled form (and there are quite a few common programs on a Linux system that are only available this way from the original developers) and probably the most reliable way for it to work on a specific platform besides doing it yourself. Raymond |
From: Raymond M. <la...@gm...> - 2010-10-05 05:04:15
|
On October 4, 2010 07:19:08 pm David wrote: > The package for Ubuntu seems to work, although it's not the latest > version (it's 2.29), and it doesn't include the IDE. I tried compiling > the Java code included with v3.03 (although I don't know if it's > compatible with v2.29), but I'm getting compile errors. For example: > > SpecialMacHandler.java:3: package com.apple.mrj does not exist > import com.apple.mrj.*; > ^ > SpecialMacHandler.java:7: cannot find symbol > symbol: class MRJQuitHandler > implements MRJQuitHandler, MRJPrefsHandler, MRJAboutHandler { > ^ > etc. You will have to comment any of that out, along with any class/methods that use it. It is for Mac OS X. The jar libraries for that are only on OS X. Maybe just remove SpecialMacHandler.java and comment out where it is getting called from, if you understand what the code is doing at that point. Raymond |
From: David <dfk...@gm...> - 2010-10-05 22:53:45
|
Thanks, it worked. I just deleted the source file 'SpecialMacHandler.java' and everything else compiled. The only references to it I could find were a couple of lines in 'MainFrame.java': MainFrame.java: Class mac_class = Class.forName("SpecialMacHandler"); MainFrame.java: System.out.println("isMac, so created instance of SpecialMacHandler"); I guess the first line never gets executed unless you're running it on a Mac, and the one in the second line is just printing a string. I'm curious, though, about the source file 'Trie.java'. Everything in it is commented-out. When I compiled it, no class file was generated. So I looked at the source and noticed it was just a very long comment. When I tried to run the IDE, it seemed to work, except that it doesn't want to go into SAL mode, I'm not sure why. This was in the output window: > error: unbound function - SAL if continued: try evaluating symbol again Was SAL only added in version 3? (The package I downloaded from the Ubuntu repository is v2.29.) Another odd thing I noticed is that when it first opens in a maximized window (or if I maximize the window myself), none of the sub-windows or frames appear, just a blank main window with nothing but a title bar. If I resize it, though, the frames appear properly. Maybe this is an old bug in 2.29, or maybe it's just a quirk of my Java environment, I'm not sure. If you need volunteers to do testing under Linux, let me know. I'd still like to be able to compile the latest version myself, and maybe I could assemble a package that could be distributed for Linux. But I've never done that before, I'll need to find how what's involved in creating a package. Thanks for all your help. |
From: David <dfk...@gm...> - 2010-10-02 12:28:29
|
Just a suggestion, but why not provide pre-compiled install packages for Linux so users wouldn't have to compile it themselves? Maybe you don't have enough users on Linux to justify the work, I don't know. But it might save everybody time in the long run. And some users who don't have a programming background may not have the expertise to compile it themselves. At the very least, I'd update the install instructions in the Nyquist manual. For example, the 'setenv' command is only available in some Unix/Linux shells. On others, you have to use the 'export' command. It's not a big deal if you know Unix or Linux well enough, but it might be a problem for inexperienced users. And I'd also add a list of the tools needed to compile Nyquist; you can't assume that they will be automatically included in all Linux distributions, as Raymond seems to think. I'm using EasyPeasy, a trimmed-down version of Ubuntu for small netbooks, which doesn't include a lot of the development tools needed to compile Nyquist (although I can download and install them, of course). As for the header file, it may be that newer compilers have the contents of stdio.h "hard-wired" into them, but in the old days, you had to include the header file or take the chance that the compiler would make some invalid assumptions about the functions declared in it. Personally, I think it's still better to include the header explicitly, even if it does compile without it on some systems. Maybe you could suggest this to the STK folk. As for myself, I've downloaded the missing development tools, but I'm still getting a compile error about a missing library ('asound'). I'll try to figure it out, but if I can't, I'll post details later. Thanks for your help. On Sat, Oct 2, 2010 at 1:33 AM, Roger Dannenberg <rb...@cs...> wrote: > There was a discussion here about some undeclared functions such as > "fopen" in Nyquist. My local copy of nyqstk/src/FileRead.cpp has been > modified by adding > #include <stdio.h> > before > #include <sys/stat.h> > > I think the change was put in by some Audacity folks to reduce some > warning messages, but apparently with some compilers (or some > configurations) a missing declaration is an error. This file comes from > STK, and I try to avoid changing STK code so that it will be easier to > upgrade, but in this case it really needs the include. > > I was signed up to get digests, and I guess it took almost a year to > make a digest's worth of stuff. If you're reading this in 2011, maybe > you should ask me to change your settings. (I just changed mine -- sorry > I wasn't getting messages more promptly.) > > Finally, Edgar, I manually put you on the list. I hope that works for > you. I have no idea why you weren't able to sign up yourself. > > While I'm writing, I'll mention that I'm going to do some work on > Nyquist between now and January to get ready for my class. Among other > things, Nyquist doesn't work on some systems without an upgrade of > PortAudio, and Nyquist Makefiles are not set up for 64-bit machines. > (Nyquist will not run on 64-bit instruction sets without a lot of work, > but I can at least provide Makefiles that generate 32-bit code even when > the native architecture is 64-bit.) I've done this and it seems to work > fine, but the changes are not in the release. There are a few other > things that are broken. Let me know (or remind me) if there are other > fixes I should look into. > > -Roger > > > ------------------------------------------------------------------------------ > Start uncovering the many advantages of virtual appliances > and start using them to simplify application deployment and > accelerate your shift to cloud computing. > http://p.sf.net/sfu/novell-sfdev2dev > _______________________________________________ > Nyquist-users mailing list > Nyq...@li... > https://lists.sourceforge.net/lists/listinfo/nyquist-users > |
From: Roger D. <rb...@cs...> - 2010-10-02 17:00:16
|
On 10/2/10 8:28 AM, David wrote: > Just a suggestion, but why not provide pre-compiled install packages > for Linux so users wouldn't have to compile it themselves? I'm not very knowledgeable about Linux software distribution. One problem is that Linux has many variants and the differences really matter, so I believe that a pre-compiled package will only be good for a particular installation. There are some pre-compiled versions of Nyquist for Linux, but I assume not for EasyPeasy or Ubuntu. A common approach in these cases is to provide source and use configuration tools to explore the local environment, figure out the proper options, and build a working version of the program for that local environment. This has not been done for Nyquist. Instead, I've tried to make Nyquist as self-contained as possible, and to avoid system-dependent code as much as possible. Most of this work predated the widespread use of Linux, auto configure tools, and Linux distributions, so I'll readily admit that Nyquist is not using popular distribution methods and it could use an upgrade by someone that really understands this. Maybe it would be possible to take an existing distribution (I think Debian has a packaged version of Nyquist) and make it more universal. > Maybe you > don't have enough users on Linux to justify the work, I don't know. > But it might save everybody time in the long run. And some users who > don't have a programming background may not have the expertise to > compile it themselves. > > At the very least, I'd update the install instructions in the Nyquist > manual. For example, the 'setenv' command is only available in some > Unix/Linux shells. On others, you have to use the 'export' command. > It's not a big deal if you know Unix or Linux well enough, but it > might be a problem for inexperienced users. And I'd also add a list of > the tools needed to compile Nyquist; you can't assume that they will > be automatically included in all Linux distributions, as Raymond seems > to think. In the words of Perlis, "One man's constant is another man's variable." Seriously, this is good information; I *do* update installation instructions based on problems and feedback, so thanks for the input. > I'm using EasyPeasy, a trimmed-down version of Ubuntu for > small netbooks, which doesn't include a lot of the development tools > needed to compile Nyquist (although I can download and install them, > of course). I think you'll find it necessary to add lots of dev tools as you move away from "standard" apps like open office toward more experimental packages. > As for the header file, it may be that newer compilers have the > contents of stdio.h "hard-wired" into them, but in the old days, you > had to include the header file or take the chance that the compiler > would make some invalid assumptions about the functions declared in > it. Personally, I think it's still better to include the header > explicitly, even if it does compile without it on some systems. Maybe > you could suggest this to the STK folk. Probably this problem is solved in current STK, but I haven't upgraded. > As for myself, I've downloaded the missing development tools, but I'm > still getting a compile error about a missing library ('asound'). I'll > try to figure it out, but if I can't, I'll post details later. asound is ALSA. This is fundamental to any sound-related linux program (although you could have ALSA without the ALSA development tools needed to compile a program that uses ALSA) > Thanks for your help. > > On Sat, Oct 2, 2010 at 1:33 AM, Roger Dannenberg<rb...@cs...> wrote: >> There was a discussion here about some undeclared functions such as >> "fopen" in Nyquist. My local copy of nyqstk/src/FileRead.cpp has been >> modified by adding >> #include<stdio.h> >> before >> #include<sys/stat.h> >> >> I think the change was put in by some Audacity folks to reduce some >> warning messages, but apparently with some compilers (or some >> configurations) a missing declaration is an error. This file comes from >> STK, and I try to avoid changing STK code so that it will be easier to >> upgrade, but in this case it really needs the include. >> >> I was signed up to get digests, and I guess it took almost a year to >> make a digest's worth of stuff. If you're reading this in 2011, maybe >> you should ask me to change your settings. (I just changed mine -- sorry >> I wasn't getting messages more promptly.) >> >> Finally, Edgar, I manually put you on the list. I hope that works for >> you. I have no idea why you weren't able to sign up yourself. >> >> While I'm writing, I'll mention that I'm going to do some work on >> Nyquist between now and January to get ready for my class. Among other >> things, Nyquist doesn't work on some systems without an upgrade of >> PortAudio, and Nyquist Makefiles are not set up for 64-bit machines. >> (Nyquist will not run on 64-bit instruction sets without a lot of work, >> but I can at least provide Makefiles that generate 32-bit code even when >> the native architecture is 64-bit.) I've done this and it seems to work >> fine, but the changes are not in the release. There are a few other >> things that are broken. Let me know (or remind me) if there are other >> fixes I should look into. >> >> -Roger >> >> >> ------------------------------------------------------------------------------ >> Start uncovering the many advantages of virtual appliances >> and start using them to simplify application deployment and >> accelerate your shift to cloud computing. >> http://p.sf.net/sfu/novell-sfdev2dev >> _______________________________________________ >> Nyquist-users mailing list >> Nyq...@li... >> https://lists.sourceforge.net/lists/listinfo/nyquist-users >> |
From: David <dfk...@gm...> - 2010-10-02 20:21:29
|
Just as an example, PureData (you're probably familiar with it, or have at least heard of it) is distributed as a single package for all variants of Linux and it seems to work for most people. I've installed it under EasyPeasy, and it works. And for what it's worth, both Audacity and STK are distributed as pre-compiled packages for Linux, which I was able to install without any problem. I've also installed a few other things that weren't included as part of the distribution, too. Nyquist is the first thing I've actually had to compile myself. I'm not sure which version of Nyquist is bundled with Audacity, but if they can do it, I think it should be possible to distribute the stand-alone version as a package as well. It's becoming less and less common to have to compile things yourself, even for Linux systems. And if it became available from either the Debian or Ubuntu repositories, it might even expand your user base. (I only became aware of Nyquist after installing Audacity and discovering that I could write plugins for it in Nyquist!) Thanks, David. |
From: Roger D. <rb...@cs...> - 2010-10-03 17:49:08
|
On 10/2/10 4:21 PM, David wrote: > Just as an example, PureData (you're probably familiar with it, or > have at least heard of it) is distributed as a single package for all > variants of Linux and it seems to work for most people. Is this really true? I just looked here: http://puredata.info/downloads and it appears that there is a different compiled package for each (supported) variant of Linux, and a source version so users of other Linux versions can compile their own. > I've installed > it under EasyPeasy, and it works. And for what it's worth, both > Audacity and STK are distributed as pre-compiled packages for Linux, > which I was able to install without any problem. And http://audacity.sourceforge.net/download/linux shows about 9 different packages for 9 different Linux variants along with a source code link. > I've also installed a > few other things that weren't included as part of the distribution, > too. > > Nyquist is the first thing I've actually had to compile myself. I'm > not sure which version of Nyquist is bundled with Audacity, but if > they can do it, I think it should be possible to distribute the > stand-alone version as a package as well. Absolutely possible. It's just a question of doing it. I can't really keep up with changes in OS X, Windows, and 1 linux system, much less 9 or 10 linux systems, but help is certainly welcome. Debian and Ubuntu, for example, have Nyquist releases. I don't know about others. > It's becoming less and less > common to have to compile things yourself, even for Linux systems. And > if it became available from either the Debian or Ubuntu repositories, It is! > it might even expand your user base. (I only became aware of Nyquist > after installing Audacity and discovering that I could write plugins > for it in Nyquist!) > > Thanks, > David. > |
From: David <dfk...@gm...> - 2010-10-02 22:50:36
|
I got past the 'asound' problem, seems you need to have the "developer" version of ALSA installed. But now I'm getting another error, and it doesn't look like it's due to a missing package. portaudio/pa_unix/pa_unix_hostapis.o:(.data+0x0): undefined reference to `PaAlsa_Initialize' collect2: ld returned 1 exit status Here's a list of the packages I've had to install so far. As Raymond says, they should be standard in most Linux distros, but they weren't included in mine. If someone's using a distro aimed at small netbooks or end-users (as opposed to developers), they might not be included. - gcc - g++ - automake - libtool - libasound2-dev Sorry for all the trouble, but I'm sure I'm not the only one experiencing all these problems. I googled for the error message I was getting about asound and came up with about 2,000 hits. Seems it's quite a common error (not just compiling Nyquist, but a lot of things). I tried googling for the latest error too, but couldn't find anything that seemed relevant. David. |
From: Roger D. <rb...@cs...> - 2010-10-03 22:14:54
|
On 10/3/10 5:15 PM, David wrote: > That's the version I tried (portaudio19-dev), but it didn't help. > Raymond mentioned he had a similar problem at some point, but didn't > seem to remember exactly how he resolved the problem. > > I'll try the Ubuntu package, maybe it will work on EasyPeasy, since > it's based on Ubuntu. I didn't even know there was one. Neither the > Nyquist manual nor the the project page on SourceForge make any > mention of packages for Linux, at least not that I remember seeing. I didn't know an Ubuntu package existed either -- I just found it. I'm not the one that created/contributed it, but I'm happy it's there (if it works). > I don't know if the various packages for Audacity and PureData are > really different packages, or if it's just the same package being > pushed to different repositories. The 32-bit and 64-bit versions would > be different, of course. I was surprised to find 64-bit versions at all -- if anyone knows anything about these, please get in touch. > Do you agree that Nyquist isn't really intended to be used by > non-programmers or non-techies? I don't know if it's any harder to > learn than Csound, which is used by a fair number of composers. Yes, Nyquist is for programmers, but I think you don't have to be much of a programmer, and if you can put together CSound patches, you should be able to compose Nyquist behaviors. I think Nyquist is much simpler and more regular than C-sound, but perhaps the restrictions in C-sound (non-nested instruments, instruments and scores are separate languages with their own special syntax) is actually an advantage for beginners. I'm not sure. -Roger > David. > > On Sun, Oct 3, 2010 at 1:57 PM, Roger Dannenberg<rb...@cs...> wrote: >> On 10/2/10 6:50 PM, David wrote: >>> But now I'm getting another error, and it doesn't look like it's due >>> to a missing package. >>> >>> portaudio/pa_unix/pa_unix_hostapis.o:(.data+0x0): undefined reference >>> to `PaAlsa_Initialize' >>> collect2: ld returned 1 exit status >>> >>> ... >>> I tried googling for the latest error too, but couldn't find anything >>> that seemed relevant. >> PaAlsa_Initialize() is in PortAudio. I'm not sure why you got this error >> since there is a copy of PortAudio sources in the Nyquist sources. You can >> also use a newer version of PortAudio (v19). >>> David. >>> |
From: David <dfk...@gm...> - 2010-10-04 23:19:14
|
The package for Ubuntu seems to work, although it's not the latest version (it's 2.29), and it doesn't include the IDE. I tried compiling the Java code included with v3.03 (although I don't know if it's compatible with v2.29), but I'm getting compile errors. For example: SpecialMacHandler.java:3: package com.apple.mrj does not exist import com.apple.mrj.*; ^ SpecialMacHandler.java:7: cannot find symbol symbol: class MRJQuitHandler implements MRJQuitHandler, MRJPrefsHandler, MRJAboutHandler { ^ etc. But at least I have Nyquist itself now. Thanks to you and Raymond for your patience. David. On Sun, Oct 3, 2010 at 6:14 PM, Roger Dannenberg <rb...@cs...> wrote: > On 10/3/10 5:15 PM, David wrote: >> >> That's the version I tried (portaudio19-dev), but it didn't help. >> Raymond mentioned he had a similar problem at some point, but didn't >> seem to remember exactly how he resolved the problem. >> >> I'll try the Ubuntu package, maybe it will work on EasyPeasy, since >> it's based on Ubuntu. I didn't even know there was one. Neither the >> Nyquist manual nor the the project page on SourceForge make any >> mention of packages for Linux, at least not that I remember seeing. > > I didn't know an Ubuntu package existed either -- I just found it. I'm not > the one that created/contributed it, but I'm happy it's there (if it works). >> |
From: Roger D. <rb...@cs...> - 2010-10-06 14:00:50
|
The SpecialMacHandler.java file should not be compiled or included in a Linux or Windows versions of jNyqIDE. There are some details in sys/linux/Makefile that show renaming jnyqide/SpecialMacHandler.java to hide it from javac. I think you tried to compile jnyqide/*.java. -Roger On 10/4/10 7:19 PM, David wrote: > The package for Ubuntu seems to work, although it's not the latest > version (it's 2.29), and it doesn't include the IDE. I tried compiling > the Java code included with v3.03 (although I don't know if it's > compatible with v2.29), but I'm getting compile errors. For example: > > SpecialMacHandler.java:3: package com.apple.mrj does not exist > import com.apple.mrj.*; > ^ > SpecialMacHandler.java:7: cannot find symbol > symbol: class MRJQuitHandler > implements MRJQuitHandler, MRJPrefsHandler, MRJAboutHandler { > ^ > etc. > > But at least I have Nyquist itself now. Thanks to you and Raymond for > your patience. > > David. > |