Thread: [Nyquist-users] problem with nyquist on fedora core 13
Nyquist is a language for sound synthesis and music composition.
Brought to you by:
rbd
From: <pr...@un...> - 2010-11-14 10:37:58
|
I'm having a problem running the version of nyquist distributed with fedora core 13. This looks to be pretty close to the standard 3.03 distribution although there are changes to deal with relevant libraries etc. I've downloaded the source for the package nyquist.x86_64 3.03-3.fc12 and done a fair bit of digging. The problem appears to be when building the list of available output devices in pa_linux_alsa.c. the function snd_pcm_open( &pcm, deviceNames[i].alsaName, SND_PCM_STREAM_PLAYBACK, blocking ) fails (i.e returns negative) for the alsa device "hw,0,0" which corresponds to the sound device /dev/snd/pcmC0D0p. One can confirm this using strace where one sees a line: open("/dev/snd/pcmC0D0p", O_RDWR|O_NONBLOCK|O_CLOEXEC) = -1 EBUSY (Device or resource busy) Now this is a bit odd. I *am* using the device already since I have a speech synthesizer running but I can confirm I can open it again and play other sounds in parallel e.g. with mpg123. Confirmed with strace -eopen -ooutfile mpg123 mytrack.mpe open("/dev/snd/pcmC0D0p", O_RDWR|O_APPEND|O_NONBLOCK|O_CLOEXEC) = 4 No problem. Note the extra "O_APPEND" flag here. This is probably a portaudio question but I thought I'd ask here since I'm not sure Roger is using the vanilla portaudio distribution. Also can I ask what the current plans for development of the cvs version are? I can't compile that at the moment, the portaudio subdirectory seems to be empty or nearly so. Roger, ar you cutting over to the standard portaudio distribution? Thanks in advance for any help cheers Peter -- Peter Rayner room 330 School of Earth Sciences, University of Melbourne, 3010, Vic, Australia tel: work: +61 (0)3 8344 9708; fax: +61 (0)3 8344 7761 mobile +61 402 752 379 mail-to: pr...@un... |
From: Roger D. <rb...@cs...> - 2010-11-14 15:02:43
|
Hi Peter, Thanks for the question. I'm actually unaware of what unix distributions are available and whether they work. Maybe I should take a more proactive role in finding and working with whoever packages Nyquist in linux distributions. I just moved nyquist from CVS to SVN (because I couldn't get CVS to cooperate). The move is not complete, and I haven't made any announcements because I was waiting to hear from someone who might be trying it out. In any case, I'd suggest getting the head of the SVN repository from SourceForge and seeing if it will build. This version compiles on at least one 64-bit linux (red hat) and has a newer version of PortAudio. Nyquist does not compile on any 64-bit architectures, but the build system (basically just run make in the top directory) uses the -m32 switch on all compiles and libraries to run in 32-bit mode. I want to switch over to 64-bit native code, but the combination of Lisp, garbage collection, and lazy evaluation means there are lots of places where memory is carefully managed with assumptions about pointer sizes. It's not just a matter of recompiling. Please let me know what you find. -Roger On 11/14/10 5:37 AM, pr...@un... wrote: > I'm having a problem running the version of nyquist distributed with > fedora core 13. This looks to be pretty close to the standard 3.03 > distribution although there are changes to deal with relevant > libraries etc. > I've downloaded the source for the > package > nyquist.x86_64 3.03-3.fc12 > and done a fair bit of digging. The problem appears to be when > building the list of available output devices in pa_linux_alsa.c. > the function > snd_pcm_open(&pcm, deviceNames[i].alsaName, SND_PCM_STREAM_PLAYBACK, blocking ) > fails (i.e returns negative) for the alsa device "hw,0,0" > which corresponds to the sound device > /dev/snd/pcmC0D0p. > One can confirm this using strace where one sees a line: > open("/dev/snd/pcmC0D0p", O_RDWR|O_NONBLOCK|O_CLOEXEC) = -1 EBUSY (Device or resource busy) > Now this is a bit odd. I *am* using the device already since I have a > speech synthesizer running but I can confirm I can open it again and > play other sounds in parallel e.g. with mpg123. Confirmed with > strace -eopen -ooutfile mpg123 mytrack.mpe > open("/dev/snd/pcmC0D0p", O_RDWR|O_APPEND|O_NONBLOCK|O_CLOEXEC) = 4 > No problem. > Note the extra "O_APPEND" flag here. > This is probably a portaudio question but I thought I'd ask here since > I'm not sure Roger is using the vanilla portaudio distribution. > > Also can I ask what the current plans for development of the cvs > version are? I can't compile that at the moment, the portaudio > subdirectory seems to be empty or nearly so. Roger, ar you cutting > over to the standard portaudio distribution? > Thanks in advance for any help > cheers > Peter > > > > > > |
From: <pr...@un...> - 2010-11-14 23:17:45
|
Roger Dannenberg writes: >Hi Peter, >In any case, I'd suggest getting the head of the >SVN repository from SourceForge and seeing if it will build. This >version compiles on at least one 64-bit linux (red hat) and has a newer >version of PortAudio. Ok, what's the URL for the svn repository and I'll give it a go. I presume I'll need 32-bit ALSA libraries etc but that's fine. cheers Peter -- Peter Rayner room 330 School of Earth Sciences, University of Melbourne, 3010, Vic, Australia tel: work: +61 (0)3 8344 9708; fax: +61 (0)3 8344 7761 mobile +61 402 752 379 mail-to: pr...@un... |
From: Roger D. <rb...@cs...> - 2010-11-15 00:13:39
|
Try this: svn co https://nyquist.svn.sourceforge.net/svnroot/nyquist/trunk/nyquist nyquist After getting the sources with svn, you should be able to build Nyquist on a Linux machine as follows: cd nyquist make I think you are right that this will require 32-bit ALSA libraries (and C run-time libraries, etc.). I don't think I had to install anything special, so maybe the libraries are already built for both 64- and 32-bit architectures, but let me know how it goes. -Roger On 11/14/10 6:17 PM, pr...@un... wrote: > Roger Dannenberg writes: >> Hi Peter, >> In any case, I'd suggest getting the head of the >> SVN repository from SourceForge and seeing if it will build. This >> version compiles on at least one 64-bit linux (red hat) and has a newer >> version of PortAudio. > Ok, what's the URL for the svn repository and I'll give it a go. > I presume I'll need 32-bit ALSA libraries etc but that's fine. > cheers > Peter > |
From: <pr...@un...> - 2010-11-15 04:42:28
|
Ok, that works. I can compile this on my system with the following changes to the sys/unix/linux/Makefile svn diff Makefile Index: Makefile =================================================================== --- Makefile (revision 18) +++ Makefile (working copy) @@ -73,7 +73,7 @@ LN = g++ -m32 AR = ar # to enable command line editing, insert -lreadline -lcurses -LFLAGS = $(LIBPA_PATH)/libportaudio.a -lm -lpthread -lasound -llo -L$(LIBLO_PATH) +LFLAGS = $(LIBPA_PATH)/libportaudio.a /lib/librt.so.1 -lm -lpthread /lib/libasound.so.2 -llo -L$(LIBLO_PATH) TAGS: find . ( -name > However it doesn't produce sound (although it does produce a correct saved audio file: Here is the session: ---------------------------------------------------------------------- strace -ooutfile ./ny [ Process PID=29338 runs in 32 bit mode. ] XLISP version 2.0, Copyright (c) 1986, by David Betz CMU MIDI Toolkit, Copyright (c) 1993,1994, by Roger B. Dannenberg ; loading "/home/prayner/packages/nyquist/runtime/init.lsp" Set *default-sf-dir* to /tmp/ in fileio.lsp AutoNorm feature is on. Default sound file is prayner-temp.wav. system.lsp : *RUNTIME-PATH* = /home/prayner/packages/nyquist/runtime/ Nyquist -- A Language for Sound Synthesis and Composition Copyright (c) 1991,1992,1995,2007,2008 by Roger B. Dannenberg Version 3.01 > (play (osc 60)) (play (osc 60)) Saving sound file to /tmp/prayner-temp.wav [ gc: total 39640, 1058 free; samples 1KB, 0KB free ] warning: could not open audio, error -9996, Invalid device. total samples: 44100 AutoNorm: peak was 0.9, peak after normalization was 0.9, new normalization factor is 1 0.9 > (quit) (quit) NIL > ---------------------------------------------------------------------- And looking around outfile to see what files it's trying to access: All the files in /dev are /dev/dsp* and it doesn't try to open any of the alsa config files. So it looks as though this version isn't trying to use alsa. Should I add back some of the flags from the USE_ALSA macro in the old Makefile? cheers Peter -- Peter Rayner room 330 School of Earth Sciences, University of Melbourne, 3010, Vic, Australia tel: work: +61 (0)3 8344 9708; fax: +61 (0)3 8344 7761 mobile +61 402 752 379 mail-to: pr...@un... |