X11.app and XMMS

Posted:
in macOS edited January 2014
Hi all. I've decided to reinstall X11 Fink etc just for certain things. One of those things is XMMS. The X Multimedia System. I wanna open it from X11.app's Applications shortcut menu and XMMS opens just fine but then it can't find the sound driver etc no matter what I do. Here's what I posted to the X11 Apple mailing list:



Quote:

Update on the situation:



When I try typing 'xmms' at my xterm prompt it loads the sound just fine but it uses the Built-in Audio component. I want it to use ESD. Here's what happens when I type ESD at my prompt:



[MacOSXRules:~] bob% esd

using device Built-in audio controller for output:

with sample rate 44100.000000, 2 channels and 32-bit sample

using device Built-in audio controller for input:

with sample rate 44100.000000, 2 channels and 32-bit sample



I want that to happen when I select XMMS from the Applications shortcut menu in X11.app. When I try and do that it complains no matter what I do. Any suggestions?



On Sunday, September 28, 2003, at 11:20 PM, [email protected] wrote:



How do I get ESD to start up without having to add it to my .xinitrc file? If I dont do that my XMMS doesnt find my sound card and complains that it's not set up correctly blah blah.... I'm running on Mac OS X 10.2.8 with X11b3. Also two other things: I don't think Quartz-WM is starting either.. Whenever I try and open up an Xterm it comes up as a white box on the upper left of my screen. The same happens with XMMS' WIndows.



Well.. any suggestions? = )

Comments

  • Reply 1 of 14
    My suggestion is to ask yourself why you want to pipe sound through ESD? ESD sucks. For linux, it's better than nothing, but why not just pipe it straight to OSX core ausio or whatever?



    lemme know how xmms is on OSX, I want and MP3 player that uses 0% CPU and itunes is nowhere near that. Also, I use it to (by default) save streams to disk, so I can save all my rad protonradio.com streams and pluck out the good tracks.
  • Reply 2 of 14
    esd, being a daemon, isn't the kind of thing that should be started at the same time as the program that uses it. mainly for the reason that say u open xmms (and esd), then close it and reopen xmms (and esd). now u have two esd's (well, i aint sure if esd will know to kill itself if its duelling for the sound card). esd is the kind of thing that should be started on startup, then used when necessary. but, if u really want to, you can make a script that starts esd (if necessary), then starts xmms right after. something like this:

    Code:


    #!/bin/sh

    if [ ps aux | grep esd | grep -v grep ]; then

    echo "esd is already running."

    else

    echo "starting esd..."

    esd&

    echo "esd is running."

    fi



    xmms&







    note: that ps->grep(x2) test may not be the best way to check for a running program.



    now, instead of having xmms be the menu item, save that (or a similar) script somewhere, give it execute permissions, then put it as the menu item.



    -



    also, i've had a lot of trouble with xmms/esd and iTunes in the passed. i think back in iTunes v3 or v2, once i started esd, iTunes couldn't reclaim audio. And I would quickly tire of xmms and want to go back to iTunes. it would often require a restart, or would force me to continue using xmms. xmms being such a dirty program, you may want to consider waiting around a few weeks until my new mp3 player comes out.
  • Reply 3 of 14
    I think you need the port flag as well. Try this:



    esd -port 16001 &
  • Reply 4 of 14
    Quote:

    Originally posted by Brad

    I think you need the port flag as well. Try this:



    esd -port 16001 &




    Thanks Brad and 1337 Hax0r! You did it. Leet: you ask about how XMMS runs on OS X? Well here's a screenshot of my terminal running TOP:







    Notice that you need to have X11 installed and running to use it as there isn't an XMMS Aqua (yet). I like XMMS because it's skinable and it's cool. I hear it can play MPEG movies. I have yet to try that. It's sorta like the WinAmp that the Mac never got. Here's a screenshot of my XMMS with its current skin:







    Now Brad: when I popped in "esd -port 16001 &" will that add esd to the programs that start when I log in or would I have to manually start it up again?



    Thuh freak: I'm an amateur compared to you with that script writing stuff so if I had to do that you'd have to basically write it for me. Heh.



    P.S. The terminal text in the first screenshot should be green text on a black background. Matrix style. But for some reason the color got distorted. Oh well. Thanks again all.
  • Reply 5 of 14
    ok, in my post, notice the <code> section (starts with '#!/bin/sh ends with xmms&'), replace the 'esd&' line with Brad's 'esd -port 16001 &'. then copy and paste the whole thing into a file, save it in your home folder. pop into terminal, and change permissions on it like this: 'chmod +x nameOfSavedFile'. now move it somewhere useable, like '/usr/local/bin' or something, like this: 'sudo mkdir -p /usr/local/bin;sudo cp nameOfSavedFile /usr/local/bin'. Now, edit the x11 menu to use '/usr/local/bin/nameOfSavedFile' instead of xmms. (for all the previous replace 'nameOfSavedFile' with the name of the file you saved.) To run xmms use the new menu item (and possibly remove the xmms one). It'll spawn esd if it needs to, then it'll startup xmms.
  • Reply 6 of 14
    Quote:

    Originally posted by thuh Freak

    ok, in my post, notice the <code> section (starts with '#!/bin/sh ends with xmms&'), replace the 'esd&' line with Brad's 'esd -port 16001 &'. then copy and paste the whole thing into a file, save it in your home folder. pop into terminal, and change permissions on it like this: 'chmod +x nameOfSavedFile'. now move it somewhere useable, like '/usr/local/bin' or something, like this: 'sudo mkdir -p /usr/local/bin;sudo cp nameOfSavedFile /usr/local/bin'. Now, edit the x11 menu to use '/usr/local/bin/nameOfSavedFile' instead of xmms. (for all the previous replace 'nameOfSavedFile' with the name of the file you saved.) To run xmms use the new menu item (and possibly remove the xmms one). It'll spawn esd if it needs to, then it'll startup xmms.



    Well what Brad told me to do seems to have worked. I logged out and logged back in to test it and ESD was still running. I hope it runs when I restart....
  • Reply 7 of 14
    Quote:

    Originally posted by Proud iBook Owner 2k2

    Well what Brad told me to do seems to have worked. I logged out and logged back in to test it and ESD was still running. I hope it runs when I restart....



    well, it won't be running when u restart. you have to start it yourself (or write a startup script). it does, as you've noticed, survive through log outs/ins. i was playing around with esd yesterday (on my gnu/linux box), and i noticed that it will quit itself if it can't hit the sound card (you may want to test this yourself). so, you should be safe trying to reopen it whenever you want. if you run xmms and you can't get sound to work with esd, just pop into terminal and run 'esd -port 16001&'. you can probably make a menu item for it in x11 too.
  • Reply 8 of 14
    Quote:

    Originally posted by thuh Freak

    well, it won't be running when u restart. you have to start it yourself (or write a startup script). it does, as you've noticed, survive through log outs/ins. i was playing around with esd yesterday (on my gnu/linux box), and i noticed that it will quit itself if it can't hit the sound card (you may want to test this yourself). so, you should be safe trying to reopen it whenever you want. if you run xmms and you can't get sound to work with esd, just pop into terminal and run 'esd -port 16001&'. you can probably make a menu item for it in x11 too.



    Could you be so kind as to write me a startup script?
  • Reply 9 of 14
    thuh Freak is right. The reason it was still running is because the "&" on the tail of the command launches it as a background process of sorts (I can't recall the exact term for it). That way it keeps running even when you close your shell.



    Though, it doesn't keep running after you restart the computer.
  • Reply 10 of 14
    Okay well now I'm trying to compile a DSP plugin for XMMS and I'm ALMOST there but it can't find my glib installation no matter what I do. Here's the terminal output:



    [MacOSXRules:~/oddcastv2_xmms-2.0.0] gasparhe% ./configure --prefix=/usr/local/bin/glib-config

    checking for a BSD-compatible install... /usr/bin/install -c

    checking whether build environment is sane... yes

    checking for gawk... gawk

    checking whether make sets $(MAKE)... yes

    checking for gcc... gcc

    checking for C compiler default output... a.out

    checking whether the C compiler works... yes

    checking whether we are cross compiling... no

    checking for suffix of executables...

    checking for suffix of object files... o

    checking whether we are using the GNU C compiler... yes

    checking whether gcc accepts -g... yes

    checking for gcc option to accept ANSI C... none needed

    checking for style of include used by make... GNU

    checking dependency style of gcc... gcc

    checking for g++... g++

    checking whether we are using the GNU C++ compiler... yes

    checking whether g++ accepts -g... yes

    checking dependency style of g++... gcc3

    checking build system type... powerpc-apple-darwin6.8

    checking host system type... powerpc-apple-darwin6.8

    checking for ld used by GCC... /usr/bin/ld

    checking if the linker (/usr/bin/ld) is GNU ld... no

    checking for /usr/bin/ld option to reload object files... -r

    checking for BSD-compatible nm... /usr/bin/nm -p

    checking for a sed that does not truncate output... /usr/bin/sed

    checking whether ln -s works... yes

    checking how to recognise dependent libraries... file_magic Mach-O dynamically linked shared library

    checking command to parse /usr/bin/nm -p output... ok

    checking how to run the C preprocessor... gcc -E

    checking for egrep... grep -E

    checking for ANSI C header files... yes

    checking for sys/types.h... yes

    checking for sys/stat.h... yes

    checking for stdlib.h... yes

    checking for string.h... yes

    checking for memory.h... yes

    checking for strings.h... yes

    checking for inttypes.h... yes

    checking for stdint.h... yes

    checking for unistd.h... yes

    checking dlfcn.h usability... no

    checking dlfcn.h presence... no

    checking for dlfcn.h... no

    checking for ranlib... ranlib

    checking for strip... strip

    checking for objdir... .libs

    checking for gcc option to produce PIC... -fno-common

    checking if gcc PIC flag -fno-common works... yes

    checking if gcc static flag -static works... no

    checking if gcc supports -c -o file.o... yes

    checking if gcc supports -c -o file.lo... yes

    checking if gcc supports -fno-rtti -fno-exceptions... yes

    checking whether the linker (/usr/bin/ld) supports shared libraries... yes

    checking how to hardcode library paths into programs... unsupported

    checking whether stripping libraries is possible... no

    checking dynamic linker characteristics... darwin6.8 dyld

    checking if libtool supports shared libraries... yes

    checking whether to build shared libraries... yes

    checking whether to build static libraries... yes

    checking whether -lc should be explicitly linked in... yes

    creating libtool

    checking for ANSI C header files... (cached) yes

    checking for an ANSI C-conforming const... yes

    checking for Ogg... yes

    checking for Vorbis... yes

    checking for libcurl... yes

    checking for libmad (>= 0.12.0)... yes

    checking for liblame... yes

    checking for wx-config... no

    checking for xmms-config... /sw/bin/xmms-config

    checking for gawk... (cached) gawk

    checking for XMMS - version >= 1.2.4... yes

    checking for glib-config... no

    checking for GLIB - version >= 1.2.2... no

    *** The glib-config script installed by GLIB could not be found

    *** If GLIB was installed in PREFIX, make sure PREFIX/bin is in

    *** your path, or set the GLIB_CONFIG environment variable to the

    *** full path to glib-config.

    configure: error: *** GLIB >= 1.2.2 not installed - please install first ***



    Notice I started with [MacOSXRules:~/oddcastv2_xmms-2.0.0] gasparhe% ./configure --prefix=/usr/local/bin/glib-config. I did what it told me and it still doesn't wanna find where glib is... Any suggestions? Brad? Thuh Freak? Anyone?
  • Reply 11 of 14
    Quote:

    Originally posted by Proud iBook Owner 2k2

    Okay well now I'm trying to compile a DSP plugin for XMMS and I'm ALMOST there but it can't find my glib installation no matter what I do. Here's the terminal output:



    [MacOSXRules:~/oddcastv2_xmms-2.0.0] gasparhe% ./configure --prefix=/usr/local/bin/glib-config



    ...



    checking for glib-config... no

    checking for GLIB - version >= 1.2.2... no

    *** The glib-config script installed by GLIB could not be found

    *** If GLIB was installed in PREFIX, make sure PREFIX/bin is in

    *** your path, or set the GLIB_CONFIG environment variable to the

    *** full path to glib-config.

    configure: error: *** GLIB >= 1.2.2 not installed - please install first ***



    Notice I started with [MacOSXRules:~/oddcastv2_xmms-2.0.0] gasparhe% ./configure --prefix=/usr/local/bin/glib-config. I did what it told me and it still doesn't wanna find where glib is... Any suggestions? Brad? Thuh Freak? Anyone?




    You can get glib pre-compiled from here:



    http://www.myersdaily.org/joseph/not...5a52d1ccb1217a



    It is a bzip2 file, so you will have to expand with



    % cat glib-1.2.10-ppc-comp.tar.bz2.* | bzip2 -d | tar -xf -



    and then go into that directory and type



    % sudo make install



    I assume you know how to do this kind of thing?



    If the directories /usr/local/* do not exist, then they will need to be created first.
  • Reply 12 of 14
    Quote:

    Originally posted by cookies

    You can get glib pre-compiled from here:



    http://www.myersdaily.org/joseph/not...5a52d1ccb1217a



    It is a bzip2 file, so you will have to expand with



    % cat glib-1.2.10-ppc-comp.tar.bz2.* | bzip2 -d | tar -xf -



    and then go into that directory and type



    % sudo make install



    I assume you know how to do this kind of thing?



    If the directories /usr/local/* do not exist, then they will need to be created first.




    I have it installed... but I don't know how to tell it where it is.... I want it to look in /sw/lib but I don't know how to tell it that.
  • Reply 13 of 14
    thuh freakthuh freak Posts: 2,664member
    Quote:

    Originally posted by Proud iBook Owner 2k2

    Could you be so kind as to write me a startup script?



    Code:


    #!/bin/sh

    esd -p 16001 &







    Thats your script (pretty simple, eh?). Now, the trick is to make it run on startup. Mac OS X and darwin have this interesting way of handling startup scripts. In /Library/StartupItems (and /System/Library/StartupItems/), there are folder with various names. Inside each of those folders is a file with the exact name as the folder it contains. That is the startup script. So, make the /Library/StartupScripts/ESD/ directory (sudo mkdir -p /Library/StartupScripts/ESD/) (note: we use /Library/.. because we want this program to start regardless of users, and not in /System/.. because it is not Apple-made). Copy the code section, from above, into a file named 'ESD' (note the capital letters). Move the file into /Library/StartupScripts/ESD/. Now, another trick about Mac OS X startup scripts, is you have to have a StartupParameters.plist file in there (actually, I'm not sure if its required, but it can't hurt). The contents of this file should look like this:

    Code:


    {

    Description = "Enlightened Sound Daemon";

    Provides = ("esd");

    Requires = ("");

    Uses = ("");

    OrderPreference = "Last";

    Messages = {

    start = "Starting Enlightened Sound Daemon";

    stop = "Stopping Enlightened Sound Daemon";

    };

    }







    The different values are easy enough to understand. Items within parenthesis, are arrays (in this simplistic example, an array of 1 item), other items are scalar strings. This file should be in the /Library/StartupItems/ESD folder, next to the script.



    Now, the final step, is to make the script executable. In terminal type:

    Code:


    sudo chmod +x /Library/StartupItems/ESD/ESD



  • Reply 14 of 14
    thuh freakthuh freak Posts: 2,664member
    Quote:

    Originally posted by Proud iBook Owner 2k2

    Okay well now I'm trying to compile a DSP plugin for XMMS and I'm ALMOST there but it can't find my glib installation no matter what I do. Here's the terminal output:



    [MacOSXRules:~/oddcastv2_xmms-2.0.0] gasparhe% ./configure --prefix=/usr/local/bin/glib-config



    ...



    Notice I started with [MacOSXRules:~/oddcastv2_xmms-2.0.0] gasparhe% ./configure --prefix=/usr/local/bin/glib-config. I did what it told me and it still doesn't wanna find where glib is... Any suggestions? Brad? Thuh Freak? Anyone?




    actually, ur --prefix isn't right. --prefix is where you want the final program to be installed (when you do 'sudo make install'). what they were saying is IF glib-config is installed in your prefix, then make sure that "PREFIX/bin is in your path..."; in your case, glib-config is probably not in PREFIX (since, A: your building this thing your self, so ur prefix should be /usr/local. b: you shouldn't force the prefix into /sw/ [which would probably match glib-config] because the fink system wouldn't know how to handle anything you installed inside /sw/). whenever i get a problem with ./configure (ie, it doesn't work), i open up config.log. This file tends to be long (so please spare us the full contents). If you jump to the end, then slowly back off a page at a time, you'll (hopefully) find the problem part. There should be a few lines in sh-style, that explain what ./configure was trying to do when it error'd out. In your case it should mention the glib-config program. If you give us those lines (plus like 5 or 10 on either side of them), I should be able to help you out a bit more.



    edit: i was just thinking. and you may have already tried this, but its worth a try. './configure --help'. it should print out all kinds of help info. it may not all make sense, but if you notice anything about glib, post those lines here and we may be able to figure it out.
Sign In or Register to comment.