Slashdot Mirror


X11Amp v0.9 Source Released

Max Karpiak writes "The source to X11Amp's new (long awaited) version is available at the main homepage, and should hopefully propagate out the to the US site soon as well. Go get it. It's cool." Mine's making on the next desktop.

98 comments

  1. Why don't other mp3 players get announced on slash by Anonymous Coward · · Score: 0

    Other mp3 players avalable for linux do more and have been GPLd for much longer...

  2. Okay, this is annoying. by Anonymous Coward · · Score: 0

    Omigosh! I need ImageMagick, a graphics viewer,
    to use an mp3 player? I can understand a few
    libraries here and there, but a whole another
    application?

    1. RE: Okay, this is annoying. by Anonymous Coward · · Score: 0

      Most likely its the Slackware users that are complaining..
      Debian and RedHat have all the packages needed

    2. RE: Okay, this is annoying. by Anonymous Coward · · Score: 0

      try www.gnome.org, look around for the rpms.

    3. RE: Okay, this is annoying. by Daniel · · Score: 1

      No distro has the right GTK+ (well, debian potato does but it's unstable and doesn't count :-) ), but all you need to do to install it is:
      (a) download the tar and extract (www.gtk.org)
      (b) ./configure && make && [sudo|su -c] make install

      It's stabilizing enough that the recent releases are fairly interchangable.

      I believe Debian 2.1 ("frozen", should be released stable RSN) has the relevant imlib, although I could be wrong. I _know_ the rest of the libs should be fine.

      Daniel

      --
      Hurry up and jump on the individualist bandwagon!
    4. RE: Okay, this is annoying. by Daniel · · Score: 1

      "unstable" is not as unstable as you may think.

      I know. I'm running it. :-)

      Daniel

      --
      Hurry up and jump on the individualist bandwagon!
    5. RE: Okay, this is annoying. by Dagmar+d'Surreal · · Score: 1

      Hi there. I'm a Slackware user, and I'm here to say that you don't know what you're talking about.

      I can actually compile Gnome from CVS, because I know what packages have to be installed, and in what order, and even the proper phase of the moon.

      However, none of this changes the fact that the new release of X11amp is *terribly* unstable, and IMHO, quite unuseable. Most of the time it won't even draw a window, but instead chooses to die and give an X error.

      On the other hand, GQmpeg said very plainly in the README's that it required the 1.0.x libraries, yet it compiled without a whimper and runs beautifully with gtk+/glib-1.1.4 and imlib 1.9.2. Go figure.

      Furthermore, mpg123 (it's backend) 0.59q contains 3dNow! support for people like me who have K6-2 CPUs and binutils 2.9.1.0.19a. That means that mpg123 rolls back and forth between 3% and 8% of my total CPU.

      Personally, I'll wait for the X11amp guys to attempt to compile their own code before I go back to trying to use the new version.

    6. RE: Okay, this is annoying. by woggo · · Score: 1

      If you install GNOME 0.99.3 over RH 5.2, you'll have the right versions.



      cheers,
      wb

  3. Error I get while configuring by Anonymous Coward · · Score: 0

    I get this error:
    checking for GTK - version >= 1.1.12... no
    *** Could not run GTK test program, checking why...
    *** The test program failed to compile or link. See the file config.log for the
    *** exact error that occured. This usually means GTK was incorrectly installed
    *** or that you have moved GTK since it was installed. In the latter case, you
    *** may want to edit the gtk-config script: /usr/bin/gtk-config
    checking for imlib-config... (cached) no
    checking for IMLIB - version >= 1.7... no
    *** The imlib-config script installed by IMLIB could not be found
    *** If IMLIB was installed in PREFIX, make sure PREFIX/bin is in
    *** your path, or set the IMLIB_CONFIG environment variable to the
    *** full path to imlib-config.



    I have tried all sorts of stuff to fix it, changing the env variables, flags on configure, etc.



    I have (brand new) gtk+ 1.1.14 and imlib 1.9.2. I am running kernel 2.2.1 on a RH5.2 box.

  4. I don't know why this works.. by Anonymous Coward · · Score: 0

    but even though /usr/lib is in my ld.so.conf, I still have to do a setenv LD_LIBRARY_PATH /usr/lib to get it to run. It works though.

  5. Error I get while configuring by Anonymous Coward · · Score: 0

    Sorry...I did that (several times)


    And no, I will not reboot, not even for a brand new mp3 player (have to rebuild my uptime after the kernal reboot)

  6. x11amp 0.9 (speed) by Anonymous Coward · · Score: 0

    Due to the thread scheduling, top did not report the actual CPU usage of the old x11amp correctly. mpg123 is just as fast as the old amp engine, but top reports it correctly now.

  7. oh well.. by Anonymous Coward · · Score: 0


    They did say some stuff was gonna be missing.. but I'm still not too happy with this release. I think I'll stick with 0.7 or switch to gqmpeg for the time being. BTW, x11amp won't start if you dont have a .x11amp directory created in your home directory (or at least it didn't on my machine).

  8. Whingedot.org by Anonymous Coward · · Score: 0

    I can't believe that there's people whining.

    It's using dev. libs!!! It's taking more cpu!!!

    Fuck. Is there any way for someone to do _anything_ postive and not be attacked? I mean, the authors have gone open-source and GPL and you're still not happy. waaa waaaa waaaa. Always something to complain about.

    I hereby rename slashdot.org to whingedot.org. Some of you guys need to get out more and stop posting utter rubbish, finding slight problems/ issues in anything and concentrating on that point. You can't see the forest for the trees.

    If you don't like x11amp, go develop or use an alternative, otherwise stop wasting our and your time bitching about issues that _you_ personally don't agree with. I don't mind someone saying "This is great... funny that they're using dev. libs, but yeh, it's great". Instead we get people bitching like it's some sort of catastrophe.

    To quote Dennis Leary: "Whining fucking maggots"

    AndyM

  9. Error I get while configuring by Anonymous Coward · · Score: 0

    If you haven't done this already you will need to remove the previous gtk rpms that installed with the stock RH installation. i.e.

    'rpm --erase --nodeps gtk+ gtk+-devel'

    Then recompile the gtk+ 1.1.14 and the error should disappear. It worked for me.

  10. Anyone else miss the old file selector? by Anonymous Coward · · Score: 0

    I miss it.. was it part of the source they couldn't release? I always thought the file selection dialog was the one thing x11amp had over winamp.

  11. esound by Anonymous Coward · · Score: 0

    is there a way to get this version to play though esd? the old one worked through esddsp but this one doesnt like it
    esound output plugin anyone?
    (ie i havent a clue how to write one)

  12. old X11 had a cpu hack by Anonymous Coward · · Score: 0

    you just THINK its using more CPU because mpg123
    shows up in 'top'. The old hacks that kept the
    player from skipping but (coincidentally) hid
    processor usage were removed.

  13. It does not encode MP3. What's the point? by Anonymous Coward · · Score: 0

    good luck; I don't even think they have Linux *executables* of the latest version

    yes they do have a linux executable of the latest version

  14. Very very Cool (the Shoutcast support rocks) by Anonymous Coward · · Score: 0

    Thanks you developers. Works great here.

  15. Gawd this is slow!!!! (plus bugfix) by Anonymous Coward · · Score: 0

    Man, what happened? Why couldn't they use their old decoder? I think I'll stick with 0.7.

    Anyways, there's an annoying feature about the install. Both the code and the install script expect to find the input and output plugins in /usr/local/share/x11amp (and their respective Input and Output dirs)

    configure --prefix isn't going to help you. It puts everything else in the right place, but the plugin path is hard-coded in the source, and I can't figure out how the install script is deciding on that location. So go with it, or change the path in input.c and output.c, and install by hand. Otherwise it crashes on startup (because they don't even check to see if the plugin search function succeeds. sloppy!)

  16. gdk error? by Anonymous Coward · · Score: 0

    update your x11 libs to some that are thread-safe

  17. I see a pattern too... by Anonymous Coward · · Score: 0

    They're not waiting for stable libraries because this is a development (unstable) release.

    -Anonymous Loser

  18. Problem Linking by Anonymous Coward · · Score: 0

    In the x11amp subdir, all the compilations work fine, but the final link throws up hundreds of errors for all the GTK functions used. The flags -lgtk and -I/usr/include/gtk are both included at compile time and at link time, but to no avail. Anyone else have a similar problem?

  19. Okay, this is annoying. by Anonymous Coward · · Score: 0

    You are perfectly right.
    I will stick to older version of X11Amp . Plays fine for me ...

  20. Amen! by Anonymous Coward · · Score: 0

    I spent an hour trying to download all the stuff required. I'd download one thing just to find it needed 5 more things I didnt have. I ended up just saying fuck it and giving up. I dont have all night...

  21. Anyone else miss the old file selector? by Anonymous Coward · · Score: 0

    I hated the old file selector, well the scroll bar in particular. try browsing a directory of 5000 files with it. it sucks big time...

    i admit the gtk file selector is ugly, but it's WAAYY better than the old crap...

    (and as themed gtk it almost looks ok...)

  22. new x11amp illegal? by Anonymous Coward · · Score: 0

    The mpg123 license forbids distributing modified versions of the code.. That's why every other mp3 player that uses it uses it only as a front end, and doesn't link to it, like x11amp now does. x11amp going GPL is all well and good, but they needs to at least READ the GPL before releasing software.

  23. Okay, this is annoying. by Anonymous Coward · · Score: 0

    *glib 1.1.14
    *gtk+ 1.1.14

    These aren't really development as such... all of the GTK development releases are VERY stable... I've NEVER crashed any of them... the only difference is the API is subject to change. It almost certainly will not change much before 1.2.0. The x11amp people made a wise choice in choosing what is basically an almost-1.2.0 release. gtk+1.0.6 is a bit long in the tooth now...

    *linuxthreads 0.71
    *gnu gettext 0.10
    These should both be standard with any even remotely standard distro. If you don't have linuxthreads, you belong to the 1980s. If you don't have gettext, i guess you only speak english...

    >For imlib, I'd need:
    *giflib 3.0-2
    *libungif 3.0
    *libpng 1.0.1
    *zlib 1.1.2
    *jpegsrc 6b
    All of these are a) optional, and b) included with any reasonable distribution. If the binary you has requires them, go find a different binary which doesn't, go get them, or compile it yourself without these dependanceies. Imlib is basically just a wrapper layer which lets you use the one interface to load all of these (it does lots more, but think of it this way). It only requires what it was compiled to use.
    *ImageMagick 4.0.5
    Again, this is optional. It's a fallback for imlib if you don't have any of the above.

  24. Why the switch? by Anonymous Coward · · Score: 0

    It seems winamp 0.7 had quite alot going for their decoding engine. I mean it ate only about 2% at most of the cpu. Now they're running off the mpg123 engine, which uses the cpu 4-5 times more than the original? Was there something up with the old engine, something that they couldn't release, because why would you switch when you seem to be ahead. But their main goal was to release the sources and GPL it, it makes you wonder if anything was up.

  25. Precompiles static x11amp anyone? by Anonymous Coward · · Score: 0

    I'd realy like to see a precompiled static
    x11amp v0.9.. since i don't want to
    install all those libs just for one program.

    Please? :)

  26. Error I get while configuring by Anonymous Coward · · Score: 0

    Imlib-config is in the package imlib-devel package, and comes with version 1.8.5 on redhat 5.2 I think. Although the x11amp home page says you need imlib 1.9.2. You may want to try grabbing the newer imlib packages from ftp.gnome.org and installing those and erasing the old packages.

  27. x11amp 0.9 - bad choice of decoder (?) by Anonymous Coward · · Score: 0

    On a couple of occasions I've tried to play
    mp3 files using mpg123, and it has terminated
    with an error message (some complaints about
    the header if I remember correctly). On those
    occasions, I have switched to x11amp, which
    played the tunes without complaints.

    If the new x11amp uses mpg123, that means x11amp
    won't play those files either, that's bad news :(

  28. WHAT ABOUT GQMPEG???? by Anonymous Coward · · Score: 0



    Why is slashdot such a bunch of snobs?

    Gqmpeg is much better than x11amp...faster...and it's GPL'd.
    it supports more stinking skins!!!!

    Sheesh get a clue.

  29. Why the switch? by Anonymous Coward · · Score: 0

    File not found
    :/

  30. Actually, It should be faster! by Anonymous Coward · · Score: 0

    not really...

    instead of make, do:

    make CFLAGS=-O6

    That makes things faster, and slightly bigger.

  31. Skin fix by Anonymous Coward · · Score: 0

    Actually, if you are refering to the "socket: too many files open" bug, here's how you use skins:

    - Don't run late 2.1.x or 2.2.x kernels. 2.0.36 works fine with this.

    - Alternately, you may UNZIP all your skins into separate subdirectories under ~/.x11amp/Skins ... Then you can use them as before.

    - This bug has to do with a change in kernel behavior in 2.1.133 (or thereabouts?) that returns a value x11amp isn't expecting.

    - Do NOT ever give /root world readable permissions. This is a security hole waiting to happen, and is NOT worth it for stupid WinAmp skins.

    (Sorry if you are refering to another bug that might be present in x11amp 0.9, but this is the "big skin bug" most people refer to...)

  32. compile errors by Anonymous Coward · · Score: 0

    Here's what I get when I run 'make' on x11amp0.9:

    util.c: In function `del_directory':
    util.c:42: `EISDIR' undeclared (first use this function)
    util.c:42: (Each undeclared identifier is reported only once
    util.c:42: for each function it appears in.)
    make[2]: *** [util.o] Error 1
    make[2]: Leaving directory `/home/argoneus/download/x11amp-0.9-alpha1/x11amp'
    make[1]: *** [all-recursive] Error 1
    make[1]: Leaving directory `/home/argoneus/download/x11amp-0.9-alpha1'
    make: *** [all-recursive-am] Error 2

    I have all the required libs and automake 1.3...anyone know what's up?

  33. Why the switch? by Anonymous Coward · · Score: 0

    FYI: Xaudio is about 2x faster (i.e. uses
    half as much CPU) than x11amp.

    http://www.xaudio.com

  34. The negative side of OSS by Anonymous Coward · · Score: 0

    This is the negative side of the massive expanssion of open source software. All these ignorent people just sitting at home on their fat asses contributing nothing to the OSS movment, but have an opinion about everything when they don't know a fucking clue what they are talking about. If you don't like it then don't use it! OR write you own! The x11amp people have worked hard on this application... and how much did you pay them? NOTHING!...so use it and show your appreciation or shut up... all this shit about libs/cpu%/etc. will just make them unmotivated to continue this project.

  35. eMusic is rockin' too by Anonymous Coward · · Score: 0

    Don't believe it, the day Chutt releases a version of eMusic that doesn't hideously crash is the day I... eat a penguin, alive. :P

    ashp@hivemind.org

  36. VT100amp skin? by Anonymous Coward · · Score: 0

    Anybody know where to find it?

  37. genetic optimization by Anonymous Coward · · Score: 0

    nurgle nurgle

  38. It does not encode MP3. What's the point? by Anonymous Coward · · Score: 0

    No. Huffman encoding is used for additional compression on the bitstream, but it isn't the "meat" of the compression algorithm. The far greater compression comes from strong spectral encoding. The concept of spectral encoding is nothing new, but the data points that Fraunhofer collected in an impressive number of extremely clever experiments make MP3 a great compression algorithm for general audio (20-20khz).

    There are better spectral encoders for specific audio applications. Mobile phones use a form of spectral encoding which is "tuned" for the voice band (400-4khz).

    But the specific algorithm in MP3 is clever in it's own right. There is a substantial amount of data on Fraunhofer's website regarding the specific algorithms used, and even some fairly detailed mathematics for the decoder algorithms and some hints for efficient implementations. However the data sets that Fraunhofer spent such a long time collecting are not available in any form except their reference implementation, as far as I've been able to tell.

  39. The negative side of OSS by Anonymous Coward · · Score: 0

    damn right, you said it brother! i especially hate those fags that bitched about 2.1.x being released so often, its like they didn't know it was development.. f*cking idiots.
    -trey [my cat's name is mittens]

  40. Geez by Anonymous Coward · · Score: 0

    I for one appreciate the work done here though
    I bet you llamahs couldnt even compile a kernel source, stop complaining or do a better job yourself

  41. new x11amp illegal? by Anonymous Coward · · Score: 0

    Wow didnt know that, i wonder what that makes of my
    mpg123 mod I released on metalab 1 year go then?

    I made a svgalib mod to mpg123 with a spectrograph/anaylzer thingo

    Its with my source, so .... everyone wins. I didnt call it X25amp or anything, but mpg123svga , its on metalab, go get it

    :P~~
    -CB

  42. x11amp 0.9 - bad choice of decoder (?) by Anonymous Coward · · Score: 0

    I'll have to try that new version out tonight.

    My previous experiences with mpg123 and x11amp are
    that mpg123 has real problems playing some songs.

    A friend of mine sent me a bunch of country songs that he had recorded in quite lousy quality, and mpg123 couldn't play them. X11amp did...

  43. Skin fix by Anonymous Coward · · Score: 0

    The skindir is hardcoded to roots account rather than to the $HOME variable. Pretty stupid error if you ask me... but then again its alpha, so I guess you have to expect stupid errors.

    my god man. how can you accept an error like this? if they are capable of making an error this stupid it shows that they know absolutely nothing about unix. it certainly makes me not want to trust this program ever again. whats next, are they gonna accidentally send your passwd file to a hotmail account?

  44. It does not encode MP3. Yet... by Anonymous Coward · · Score: 0

    I was one of the first ppl to get the v.9a1 source (sorry, just had to point that out :P). anyway, v.9 supports input and output plugins. It should be trivial for someone to port a mp3 encoder (most likly use an iso based encoder, bladeenc maybe?) to accept output from x11amp (about the only thing i could think of this would be good for is for dumping data to a shoutcast server) but anyway, most times if you want to encode mp3s, get a dedicated encoder.

    too lazy to login from school,
    Dj-Ohki

    p.s. i would like to hear from anyone running on a SMP box that has had any luck running x11amp, apperntly, the thread system that x11amp uses works find on UP boxes because there is only 1 thread of execution at one time, but on SMP boxes, there can be 2 or more threads running at the exact same time, this makes some stuff in gtk+/glibc "rip the carpet out from under" other stuff in some other thread of execution... pain in the ass to debug too... anyway, im gonna play around with some pthread mutex locks and see if i can isolate the prob areas when i get home today..

  45. x11amp 0.9 decoder engine and appernt cpu usage by Anonymous Coward · · Score: 0

    in versions prior to .9, the way the decoding engine worked, it didnt register with the cpu time (has something to do with glibc i think, the libc 5 version reported ~20% or so cpu usage on a pentium 233, go figger).

    anyhoo, v.9 has support for plugin input and outputs. if you dont like mpg123 as a decoding engine, hack the xaudio SDK to make a plugin, or use some other mp3 decoding engine to make a plugin. (might not be able to use xaudio though, the license is free for single user use, oh well, someone email them and ask, http://www.xaudio.com/)

    Dj-Ohki, too lazy to login

  46. Actually, It should be faster! by Anonymous Coward · · Score: 0

    oooh!

    I'll remember that (ive just been recompiling my whole system from scratch with O6). I'll keep mpg123 / kernel O2. The rest has been done O6. E ^bfast^b :)

  47. This just ROCKS! by Anonymous Coward · · Score: 0

    I just what to say Thank you x11amp people!
    Just got home, downloaded and compiled it... it worked right out of the box!

  48. I had the same problem as you by Anonymous Coward · · Score: 0

    The new version is significantly slower on my computer too. Alot of it seems to be that stupid spectrum analyser. I would guess the rest of it (as it was stated in an earlier responce) is because they switched to mpg123. I've always preferred amp and it's decendants to mpg123, however I've heard that the new versions of mpg123 do a decent job playing mp3s. I suspect as the new version of x11amp mature, they'll be able to improve the performance to something closer to where it was.

  49. Gdk-ERROR **: an x io error occurred by Anonymous Coward · · Score: 0

    After compiling and make installing x11amp 0.9a, I get this error after trying to load an mp3:

    Gdk-ERROR **: an x io error occurred
    aborting...
    IOT trap/Abort (core dumped)

    This is with libc5 and linuxthreads 0.7. Any ideas?

  50. Strange error by Anonymous Coward · · Score: 0

    I know this is a vague description, but I can't figue out any more. The source compiles and installs correctly (or so it appears). However, when I run it, it immediately exits. I never see the interface or anything. If I run it with the -p flag it seg faults. Any ideas? Anything I can do to list possible errors?

  51. Gdk-ERROR **: an x io error occurred by Anonymous Coward · · Score: 0

    you need threadsafe xlibs.
    either that or follow the instructions for libc5 systems on the website. (i guess that this is a way of getting around it somehow)

  52. Skin fix by Anonymous Coward · · Score: 1

    Heard this on IRC, so I'm not the one who figured it out. If your skins aren't working, you have to (until it's fixed) have your skins in ~root/.x11amp/Skins instead of your user directory. And of course if you're running it as a user, you'll have to chmod 755 /root.. and then probably rechmod other stuff in there to keep it safe.

  53. Crackling mp3s w/ Binary X11amp by mfh · · Score: 1

    When i play mp3s with x11amp (any binary-only release) the songs start to crackle at random times in the song. It doesn't matter what my load is, it always does it, even if i'm not doing anything else. I have to constantly click the status bar to pause and start the mp3 again. Anybody else have this problem? (I tried using "real time" mode by running as root - whatever that means - but it didn't work either) Any help is appreciated. wxh[at]altonet.com

    --
    The dangers of knowledge trigger emotional distress in human beings.
  54. great news by palpatine · · Score: 1

    I have to admit, this is good news for the Linux community. My first X Window-based MP3 player was x11amp, and I was never sure about its license. It's nice to see that they are participating in the Open Source phenomenon.

    Currently, I use mpg123, and one of its frontends, GQmpeg. That combination really works well for me because of the 3DNow! support in the latest release of mpg123. The CPU is much less busy now. All things considered, there's nothing bad about this announcement.

  55. yuk. by Shiska · · Score: 1

    Well, it compiled just fine... trying to play an mp3 causes it to die, though. (freezes and eats 99.9% CPU until killed). ... ah, the joys of alpha software. This definately sucks. I use x11amp 0.7 all of the time, so I was pretty excited.



    ----------------- ------------ ---- --- - - - -

    --
    ----------------- ------------ ---- --- - - - -
    Your honor is perfectly understandishable.
  56. developers use development libs by vipw · · Score: 1

    keep in mind that unstable == development (what developers usually use because they are looking to the future)


    it all gets to the users in the end, but developers *use* the bleeding edge stuff. most developers aren't going to give a rat's ass if you don't get the brand spanking new stuff, you can always wait until all the devel libs are into stable. there are many reasons for the developers to use the devel libs: to help guide the next versions, have their input taken, and to be prepared for the future. sure this is a release of x11amp, and you do have a point, but asking a developer to bend over backward and support the present instead of looking to the future is a pretty silly attitude, after all the developers aren't doing this just to make you happy.


    my advice, don't ask to be treated like a user : )

  57. Okay, this is annoying. by vipw · · Score: 1

    developers use development libs, get used to it

  58. its all getting to the users eventually by vipw · · Score: 1

    it would be that way if the libs weren't evolving so rapidly, currently the lib developers aren't the only ones developing the libs, they are getting hacked together to do what a app developer needs them to do. you have a good point, but it isn't really applicable to libs that are changing this rapidly

  59. Uhmm... no! by servo8 · · Score: 1

    And I assume you're basing this on your own developmental experience?

  60. It does not encode MP3. What's the point? by gavinhall · · Score: 1
    Posted by Windigo The Feral (NYAR!):

    Some anonymous coward wrote:

    I already had a couple of MP3 players for my Linux box. Why the fsck
    isn't there an encoder to be found anywhere with source? Is the
    algotithm "secret" or some garbage like that? I thought MPEG was an
    open standards body like CCITT or NIST or ISO or ...

    The main problem with releasing an MP3 encoder with source is, as I understand it, the fact that the mathematical formula for MP3 compression happens to be patented by Fraunhofer GmBH. :P Technically, in those parts of the world that are insane enough to allow patents on mathematical formulas (like the US :( ) one isn't even supposed to create ANY sort of encoder/decoder that can handle MP3s without paying a royalty. :P

    Yes, the algorithm has been published as an ISO standard, but thanks to the patent issues it is next to impossible to put out a truly "open" MP3 encoding library, at least in the US and other places that accept US patents as valid. :P

    Obvious solutions:

    1) Find someone in a country that doesn't recognise software and/or algorithm patents as valid (and which also doesn't have a trade agreement that would mean they have to see US patents as valid) to put out an open library for MP3 encoding, and hope they don't get sued by Fraunhofer GmBH

    2) Raise hell with Fraunhofer GmBH to release the MP3 encoder/decoders as open libraries (good luck; I don't even think they have Linux *executables* of the latest version)

    3) US-based folks: Raise polite hell using snail-mail with your congress-critters stating that patent law needs reform to prevent abuses [be sure to cite examples such as IBM's recent-ish patent on the wheel]

    4) US-based folk, and maybe others--support peaceful protests to get patent law changed, such as some of the ideas proposed on here in past [one of my favourites--get a patent put out that essentially describes the process of patenting, then once it gets approved point out to the patent office that it's prior art by using *THEM* as the example].

  61. Excellent by Schemer · · Score: 1

    Making those directories saved me from a few minutes of banging my head against my keyboard. Thanks!

    --
    A buddhist walks up to a hot dog stand and says ``Make me one with everything.''
  62. Pleasantly surprised by tugrul · · Score: 1

    I hope the x11amp team keeps up the good work despite all the stupid whining about the programs dependencies. I see that it is eats more CPU than mpg123, but its keeping up there with the presence winamp has, which some of us enjoy. mp3s in X will belong to x11amp for me.

    Just be happy with have a choice.

    tugrul

  63. What on earth *IS* it? by DunbarTheInept · · Score: 1
    Okay, I poked around their website for a while and I still have one small little question:


    - What the heck *is* X11amp anyway? From the screenshots I can guess that it is a sound thing of some sort, but nothing on the site gives enough information to figure out anything other than that.

    --

    Don't label something "offtopic" unless you know the topic well enough to tell what's on topic.

  64. Okay, this is annoying. by Erik+Hollensbe · · Score: 1

    Oh, and much of the stuff you listed should be on any new self-respecting linux system

    (Rest of quote cropped for brevity)

    Lessee here.

    GTK and Glib I can understand - core GUI libraries are something that's going to be released/upgraded/recompiled often.

    Lets see how much of that stuff is acutally just needed because of imlib.

    ImageMagick
    libjpeg
    libgif
    libpng
    .....

    It seems that only gettext is left. That's a lot of crap for "skins" IMO. Also, 90% of the fact that people were using a binary MP3 player was because it was so damn fast! Miniscule (below 1%)processor usage even on a K6-200, something that just isn't possible with mpg123 or any other decoder that i've seen other than amp.

    And what is it with amp anyways? I thought that it was under a BSD-like or artistic licence anyways, which would imply free use of the code. Maybe since Winamp has brutally raped the living hell (and work) out of amp's creator the license has changed.

    It's surprising that the fact that imlib, which is no more than a wrapper that has a disgustingly high-priority list of library requirements, is getting anywhere at all. Frankly with all the effort people are putting into it, it would just seem easier to play the not-invented-here (not really) game and re-write the whole damn thing themselves.

    Imlib is a great, great, great, idea. But it's so poorly steered and designed it's going to have to fall eventually...

    -Erik-

  65. To stop mpg123 from skipping... by David+Price · · Score: 1

    ...add in a buffer. You can do this by passing -b to mpg123. I've found that one meg works well, or if you're memory-squeezed, 512K is great too. A buffer acts like ESP on a Discman, decoding the audio into one end and playing it out the other. If there's a short spike in system activity the player doesn't skip.

    gqmpeg has an option to do this; since the new x11amp uses mpg123, it should too.

  66. Woo!! by ninjaz · · Score: 1

    I finally got home from work and was able to compile the new version, and it rocks. :) Working EQ (!!), no seggies yet (!!), the gtk file selector works much better, and GPL (!!) I was really pleasantly surprised after compiling to see how much this new version rocks. :) This after expecting to be disappointed reading all of the incessant whining about it. Feh.

  67. Okay, this is annoying. by Daniel · · Score: 1

    AFAIK, GTK+ is nearing 1.2.0. Most of the software I've seen that uses the development libraries is developmental itself, and so it makes no sense to tie it to an older version of the library which is scheduled to be replaced soon.

    In addition, I suspect that X11Amp uses skins? Those are probably done with GTK+ themes (although I haven't looked at the source yet so take this with a grain of salt :) )

    Oh, and much of the stuff you listed should be on any new self-respecting linux system (linuxthreads is part of the standard C library now, imlib has stable versions out there, libpng, libgif (or libungif), and libjpeg are AFAIK optional but recommended (and again, they're stable and, IIRC, used by a bunch of stuff), zlib is pretty much universal--the latest version is 1.1.3 not 1.1.2 which you listed, and imagemagick is unrelated. Don't know what it's doing there. The only exotic and devel stuff I see is GTK+, Glib, and gettext--and I run programs using those almost continually on my system with ABSOLUTELY NO CRASHES DUE TO THE LIBRARIES. And they build quite nicely too (and I'm using the most difficult method of building them) )

    Daniel

    --
    Hurry up and jump on the individualist bandwagon!
  68. Look at X11Amp's version number! by dangermouse · · Score: 1

    You miss the point... They're doing all of their development based on the development branches of various libraries. A lot of people are. A lot of silly, silly Gprimates.

    How are they ever supposed to become stable, if they're basing all of their work on a shaky foundation? The stable versions of most of those libs are there. Use them.

  69. Look at X11Amp's version number! by dangermouse · · Score: 1

    Gtk 1.1 is perfectly stable

    I think you misinterpret what I mean by "unstable". Not "unstable" as in you link against it and your app crashes and burns. "Unstable" as in it's still in development and therefore subject to change. "Unstable" as in it's still in development, and therefore you can't be assured that everyone has the latest (probably not greatest) version.

    GTK 1.0 is stable. Version releases occur infrequently, and people generally have the latest version. If they don't, you can be sure they can safely upgrade to it.

  70. Okay, this is annoying. by dangermouse · · Score: 2
    Would you people stop coding every damn thing with experimental/developmental libraries? There's a reason it's called being "bleeding edge".

    I use x11amp 0.7, because I have found nothing particularly better for X. (I'm a pretty big fan of nice GUIs, if I'm gonna have a GUI.) I was going to install 0.9a essentially for the double-size option.

    But wow, check out the libraries I'd need:
    • glib 1.1.14
    • gtk+ 1.1.14
    • imlib 1.9.2
    • linuxthreads 0.71
    • gnu gettext 0.10
    For imlib, I'd need:
    • giflib 3.0-2
    • libungif 3.0
    • libpng 1.0.1
    • zlib 1.1.2
    • jpegsrc 6b
    • ImageMagick 4.0.5


    See a trend? Why do people write so much software that compiles only against developmental/experimental libraries?

    Not to mention the stuff that the G-crowd (and E-flock) consider standard, but nobody else has or uses....

    Yeah, these new libs (especially gtk) tend to have some neato-burrito whiz-bang wowie-zowie features, but can't we wait til they're something resembling stable? Isn't that why there're separate "stable" and "development" versions?
  71. Slower than older versions by zilym · · Score: 1

    Note that the new version might be slower than the older binary only releases because of your compiler. With binary only releases, the author may have used an optimizing Pentium (pgcc) compiler unliek the gcc/egcs combo most people have on their systems.

    This is just speculation, I haven't actually compiled any MP3 players under normal gcc and pgcc to compare.

  72. It does not encode MP3. What's the point? by Alex+F · · Score: 1

    Windigo said:

    ... cite examples such as IBM's recent-ish patent on the wheel

    Please can someone point me towards this.

    Alex

  73. Okay, this is annoying. by cthonious · · Score: 1

    True, and hunting down libraries for downloading isn't exactly my favorite pastime (I'd rather shave my balls with a weed wacker), but mostly this is a good thing. It's painful sometimes, but it is a good thing. Anything GTK is a good thing for X (as opposed to motif).

    --

    support gun control: take guns from cops
  74. Heres yer help. by FORTYoz · · Score: 1

    making problems? try

    make SHELL=sh

    wont start?
    rm -rf ~/.x11amp ; mkdir ~/.x11amp ; mkdir ~/.x11amp/Skins ; chmod +x ~/.x11amp/Skins

  75. Try this test to see how much CPU is really used by Drew+M. · · Score: 1

    Ok, run x11amp as normal, play some mp3's. Open a top and check it out. (hmm .7% for me) Now start rendering something in povray or start cracking rc5. Take a look at top again.... Interesting, my x11amp process is now taking up 8.2%
    mpg123 takes up less CPU for me. How about you?

    CPU Hack? Probably...

  76. Try this test to see how much CPU is really used by Drew+M. · · Score: 1

    Ok, run the old x11amp (version .7) as normal, play some mp3's. Open a top and check it out. (hmm .7% for me) Now start rendering something in povray or start cracking rc5. Take a look at top again.... Interesting, my x11amp process is now taking up 8.2%
    mpg123 takes up less CPU for me. How about you?

    CPU Hack? Probably...

  77. gdk error? by Dagmar+d'Surreal · · Score: 1

    It's not just you. I'm getting it as well. Considering that this is the only thing out of the entire mess of apps that I use which rely on the 1.1.x libraries which malfunctions like this, I'm inclined to blame X11amp.

  78. Look at X11Amp's version number! by Psiren · · Score: 1

    I believe they just added two more functions! ;)

    I tend to agree with the original thread of this post, but for another reason. Lots of people like to use the latest software, but having the latest version of gtk, and the stable version co-existing is a bit of a pain in the ass. Yes, its possible, but a pain. And some of us still use apps that won't work with gtk 1.1. But then, its nice to use the latest features. I guess you can't please all the people all of the time. :)

  79. New X11amp is pretty cool, but by Chutzpah · · Score: 1

    I downloaded it before teh announcement on /. (i had been refreshing the ftp all day) anyway, It has a nice feature set, but I find it uses up about 4-5 timesmore CPU power than the old one. Anybody have any clue what might have caused this HUGE jump in processor usage?

  80. Microsoft products by Geoff+NoNick · · Score: 1

    Hey, they're not all bad. Sure they, crash now and then, but come on - good effort guys! I'm not gping to complain about the problems with something because I don't care if it gets fixed or not.

  81. To stop mpg123 from skipping... by scrytch · · Score: 1

    Yes, fix the goddam mpg123 code to make it pre-load the buffer and not try to play when it loads the first damn bit of the first damn byte of the mp3.

    Sorry, not cursing at you, but mpg123 in general. kmpg has been annoying me for the longest time with this.

    --
    I've finally had it: until slashdot gets article moderation, I am not coming back.
  82. what's new? (first post!!) by [-ET-] · · Score: 0

    so what's new? does it actually have a menu somewhere now? streaming (plz!!)?

    ah well.. i'm off to check it out

  83. Error I get while configuring by Bubba · · Score: 1
    Worked fine for me on my RH 5.2 box. But, I didn't use RPM versions of the libs and Installed them all in /usr/local. Then did:
    • export PATH=/usr/local/bin:$PATH

      export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
    to make sure it would pick up the libs I wanted. It configured and compiled perfectly. Here is my ldd of the binary.


    • $ ldd /usr/local/share/x11amp/x11amp-0.9a

      • libgdk_imlib.so.1 => /usr/local/lib/libgdk_imlib.so.1 (0x40006000)
        libjpeg.so.62 => /usr/lib/libjpeg.so.62 (0x4002c000)
        libtiff.so.3 => /usr/lib/libtiff.so.3 (0x4004c000)
        libungif.so.3 => /usr/lib/libungif.so.3 (0x40077000)
        libpng.so.2 => /usr/lib/libpng.so.2 (0x4007e000)
        libz.so.1 => /usr/lib/libz.so.1 (0x40098000)
        libm.so.6 => /lib/libm.so.6 (0x400a6000)
        libgtk-1.1.so.11 => /usr/local/lib/libgtk-1.1.so.11 (0x400bf000)
        libgdk-1.1.so.11 => /usr/local/lib/libgdk-1.1.so.11 (0x401ca000)
        libgmodule-1.1.so.12 => /usr/local/lib/libgmodule-1.1.so.12 (0x401f9000)
        libglib-1.1.so.12 => /usr/local/lib/libglib-1.1.so.12 (0x401fd000)
        libdl.so.2 => /lib/libdl.so.2 (0x4021e000)
        libXext.so.6 => /usr/X11R6/lib/libXext.so.6 (0x40222000)
        libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x4022e000)
        libpthread.so.0 => /lib/libpthread.so.0 (0x402d1000)
        libc.so.6 => /lib/libc.so.6 (0x402de000)
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x2aaaa000)


    Hope this helps...
  84. what's new? (first post!!) by Bubba · · Score: 1

    Yeah, you can stream it with netscape if you use this script I whipped together. No guarentees, but it works for me...


  85. Use the source, Luke! by Brent+Nordquist · · Score: 1
    I'm using RedHat 5.2. The way I did it was with the SRPMS; you can find them at rawhide.redhat.com.

    As others have mentioned, use rpm --erase --nodeps to remove the 1.0.* gtk/gdk and imlib library packages installed with 5.2 (there are three).

    One gotcha is that the new stuff requires a binary called libtoolize; grab the libtool SRPM and build/install it; I put it in /usr/local.

    Then build and install new 1.1.* versions of the gtk/gdk and imlib libraries from the SRPMS; I install them in /usr/local. Add /usr/local/lib to your /etc/ld.so.conf file and re-run ldconfig.

    Now you can build and install x11amp! Good luck.

    --
    Brent J. Nordquist N0BJN
  86. x11amp 0.9 by woggo · · Score: 1

    wow, I found about this BEFORE reading it on slashdot...heh.

    The new version uses mpg123, and skips a little more. It seems a bit flakier, but it actually has a *lot* of new features. (feature set -- not just l&f -- reminds me of winamp on my girlfriend's computer)


    cheers,
    wb

  87. Great news, real benefits by Tim+Sutherland · · Score: 1

    I've actually needed to make changes to the X11Amp
    source before, but couldn't because of the
    license. I'm glad it's now under the GNU GPL.

  88. Shuffle? by Bellwether · · Score: 1

    /*
    I noticed shuffle isn't hooked in yet. Here's a quick fix to enable shuffle. It's not an ideal fix, but it'll work until we see another release!
    My apologies if the formatting gets screwed up.
    */

    //playlist.c
    #include "x11amp.h"

    GList *playlist=NULL;
    GList *playlist_position;


    void playlist_clear(void)
    {
    GList *node;
    PlaylistEntry *entry;

    if(playlist)
    {
    if(get_input_playing()) input_stop();
    node=playlist;
    while(node)
    {
    entry=(PlaylistEntry *)node->data;
    if(entry->filename) g_free(entry->filename);
    if(entry->title) g_free(entry->title);
    node=node->next;
    }
    g_list_free(playlist);
    playlist=NULL;
    playlist_position=NULL;
    }
    }

    void playlist_delete(gboolean crop)
    {
    gboolean restart_playing=FALSE,set_info_text=FALSE;
    GList *node=playlist,*next;
    PlaylistEntry *entry;

    while(node)
    {
    entry=(PlaylistEntry *)node->data;
    next=g_list_next(node);
    if((entry->selected&&!crop)||(!entry->selected&&cr op))
    {
    if(playlist_position==node)
    {
    set_info_text=TRUE;
    if(get_input_playing())
    {
    input_stop();
    restart_playing=TRUE;
    }
    if(g_list_next(playlist_position))
    playlist_position=g_list_next(playlist_position);
    else if(g_list_previous(playlist_position))
    playlist_position=g_list_previous(playlist_positio n);
    else if(node!=playlist)
    playlist_position=playlist;
    else
    playlist_position=NULL;
    }
    if(entry->filename)
    g_free(entry->filename);
    if(entry->title)
    g_free(entry->title);
    playlist=g_list_remove_link(playlist,node);
    g_free(entry);
    g_list_free_1(node);
    }
    node=next;
    }
    playlistwin_update_list();
    if(set_info_text)
    mainwin_set_info_text();
    if(restart_playing)
    {
    if(playlist_position)
    playlist_play();
    mainwin_set_song_info(0,0,0);
    }
    }

    void playlist_select_all(void)
    {
    GList *node;

    node=playlist;
    while(node)
    {
    ((PlaylistEntry *)node->data)->selected=TRUE;
    node=node->next;
    }
    playlistwin_update_list();
    }

    void playlist_select_none(void)
    {
    GList *node;

    node=playlist;
    while(node)
    {
    ((PlaylistEntry *)node->data)->selected=FALSE;
    node=node->next;
    }
    playlistwin_update_list();
    }

    void playlist_inverse_selection(void)
    {
    GList *node;

    node=playlist;
    while(node)
    {
    ((PlaylistEntry *)node->data)->selected=!((PlaylistEntry *)node->data)->selected;
    node=node->next;
    }
    playlistwin_update_list();
    }


    void playlist_add(gchar *filename)
    {
    PlaylistEntry *entry;
    gchar *ext;

    entry=g_malloc0(sizeof(PlaylistEntry));
    entry->length=-1;
    entry->filename=g_strdup(filename);

    if(!playlist)
    {
    playlist=g_list_append(NULL,entry);
    playlist_position=playlist;
    }
    else
    g_list_append(playlist,entry);
    }

    void playlist_add_dir(gchar *path)
    {
    DIR *dir;
    struct dirent *dirent;
    struct stat statbuf;
    gchar *filename;

    if(dir=opendir(path))
    {
    while(dirent=readdir(dir))
    {
    if(dirent->d_name[0]!='.')
    {
    filename=g_strconcat(path,"/",dirent->d_name,NULL) ;
    stat(filename,&statbuf);
    if(S_ISDIR(statbuf.st_mode))
    playlist_add_dir(filename);
    else
    playlist_add(filename);
    g_free(filename);
    }
    }
    }
    }

    /*
    * I'm not sure if this is the correct way to do it but it seems to work fine
    */

    void playlist_add_url_string(gchar *string)
    {
    gint i=0,start;
    gchar *temp,*ext;
    struct stat statbuf;

    printf("%s\n",string);
    while(*string)
    {
    temp=strchr(string,'\n');
    if(temp)
    {
    if(*(temp-1)=='\r')
    *(temp-1)='\0';
    *temp='\0';
    }
    if(!strncasecmp(string,"file:",5))
    {
    stat(string+5,&statbuf);
    if(S_ISDIR(statbuf.st_mode))
    playlist_add_dir(string+5);
    else
    {
    ext=strrchr(string+5,'.');
    if(ext)
    {
    if(!strcasecmp(ext,".m3u")||!strcasecmp(ext,".pls" ))
    playlist_load(string+5);
    else
    playlist_add(string+5);
    }
    else
    playlist_add(string+5);
    }
    }
    else
    playlist_add(string);
    if(!temp)
    break;
    string=temp+1;

    }

    }

    void playlist_play(void)
    {
    PlaylistEntry *entry;
    gchar *ptr;

    if(get_playlist_length()==0)
    return;
    entry=(PlaylistEntry *)playlist_position->data;

    if(get_input_playing()) input_stop();

    input_play(entry->filename);

    if(input_get_time()!=-1)
    input_set_eq(cfg.equalizer_active,cfg.equalizer_pr eamp,cfg.equalizer_bands);

    }

    void playlist_set_info(gchar *title,gint length,gint rate,gint freq,gint nch)
    {

    PlaylistEntry *entry;

    entry=(PlaylistEntry *)playlist_position->data;

    if(entry->title)
    g_free(entry->title);
    entry->title=g_strdup(title);
    entry->length=length;
    mainwin_set_song_info(rate,freq,nch);
    mainwin_set_info_text();
    playlistwin_update_list();
    }


    void playlist_next(void)
    {
    if(!playlist) return;

    if(!cfg.shuffle) {
    if(g_list_next(playlist_position))
    playlist_position=g_list_next(playlist_position);
    }
    else
    playlist_position=g_list_nth(playlist,rand() % get_playlist_length());
    if(get_input_playing())
    {
    input_stop();
    playlist_play();
    }
    else
    {
    mainwin_set_info_text();
    playlistwin_update_list();
    }

    }

    void playlist_prev(void)
    {
    if(!playlist) return;


    if(g_list_previous(playlist_position))
    playlist_position=g_list_previous(playlist_positio n);
    if(get_input_playing())
    {
    input_stop();
    playlist_play();
    }
    else
    {
    mainwin_set_info_text();
    playlistwin_update_list();
    }
    }

    void playlist_set_position(gint pos)
    {
    if(!playlist) return;

    playlist_position=g_list_nth(playlist,pos);
    if(get_input_playing())
    {
    input_stop();
    playlist_play();
    }
    else
    {
    mainwin_set_info_text();
    playlistwin_update_list();
    }
    }

    void playlist_eof_reached(void)
    {
    input_stop();

    if(!cfg.shuffle) {

    if(!g_list_next(playlist_position))
    {
    playlist_position=playlist;
    if(!cfg.repeat)
    {
    mainwin_set_song_info(0,0,0);
    mainwin_set_info_text();
    return;
    }
    }

    else
    playlist_position=g_list_next(playlist_position);
    }
    else
    playlist_position=g_list_nth(playlist,rand() % get_playlist_length());


    playlist_play();
    }

    gint get_playlist_length(void)
    {
    if(!playlist)
    return 0;
    return g_list_length(playlist);
    }

    gchar *playlist_get_info_text(void)
    {
    PlaylistEntry *entry;
    gchar *text=NULL,*title,*tmp,*tmp2;
    gint i;

    if(playlist)
    {
    entry=(PlaylistEntry *)playlist_position->data;
    if(entry->title)
    title=entry->title;
    else
    {
    title=strrchr(entry->filename,'/');
    if(!title)
    title=entry->filename;
    else
    title++;
    }
    text=g_malloc(strlen(title)+20);
    if(entry->length!=-1)
    sprintf(text,"%d. %s (%d:%-2.2d)",get_playlist_position()+1,title,entry ->length/60000,(entry->length/1000)%60);
    else
    sprintf(text,"%d. %s",get_playlist_position()+1,title);
    if(cfg.convert_underscore)
    while(tmp=strchr(text,'_'))
    *tmp=' ';
    if(cfg.convert_twenty)
    while(tmp=strstr(text,"%20"))
    {
    tmp2=tmp+3;
    *(tmp++)=' ';
    while(*tmp2)
    *(tmp++)=*(tmp2++);
    *tmp='\0';
    }



    }
    return text;
    }

    int playlist_get_current_length(void)
    {
    PlaylistEntry *entry;

    if(!playlist) return 0;

    entry=(PlaylistEntry *)playlist_position->data;
    return entry->length;
    }

    gboolean playlist_save(gchar *filename)
    {
    PlaylistEntry *entry;
    GList *node;
    FILE *file;
    gchar *ext;
    gboolean is_pls=FALSE;

    if(file=fopen(filename,"w"))
    {
    ext=strrchr(filename,'.');
    if(ext)
    if(!strcasecmp(ext,".pls"))
    {
    is_pls=TRUE;
    fprintf(file,"[playlist]\n");
    fprintf(file,"NumberOfEntries=%d\n",get_playlist_l ength());
    }
    node=playlist;
    while(node)
    {
    entry=(PlaylistEntry *)node->data;
    if(is_pls)
    fprintf(file,"File%d=%s\n",g_list_position(playlis t,node)+1,entry->filename);
    else
    fprintf(file,"%s\n",entry->filename);
    node=node->next;
    }
    fclose(file);
    return TRUE;
    }
    return FALSE;
    }

    gboolean playlist_load(gchar *filename)
    {
    FILE *file;
    gchar *line,*ext,key[10];
    gint i,noe;
    int linelen=1024;

    ext=strrchr(filename,'.');
    if(!ext) ext=".m3u";
    if(!strcasecmp(ext,".pls"))
    {
    if(line=read_ini_string(filename,"playlist","Numbe rOfEntries"))
    {
    noe=atoi(line);
    g_free(line);
    }
    else
    return FALSE;
    for(i=1;i=noe;i++)
    {
    g_snprintf(key,10,"File%d",i);
    if(line=read_ini_string(filename,"playlist",key))
    {
    playlist_add(line);
    g_free(line);
    }
    }
    return TRUE;
    }
    else
    {
    if(file=fopen(filename,"r"))
    {
    line=g_malloc(linelen);
    while(fgets(line,linelen,file))
    {
    while(strlen(line)==linelen-1&&line[strlen(line)-1 ]=='\n')
    {
    linelen+=1024;
    line=(gchar *)g_realloc(line,linelen);
    fgets(&line[strlen(line)],1024,file);
    }
    while(line[strlen(line)-1]=='\r'||line[strlen(line )-1]=='\n') line[strlen(line)-1]='\0';
    playlist_add(line);
    }
    fclose(file);
    return TRUE;
    }
    }
    return FALSE;
    }

    GList *get_playlist(void)
    {
    return playlist;
    }

    gint get_playlist_position(void)
    {
    return g_list_position(playlist,playlist_position);
    }

    gint playlist_sort_by_title_cmpfunc(PlaylistEntry *a,PlaylistEntry *b)
    {
    gchar *a_title=NULL,*b_title=NULL;
    if(a->title)
    a_title=a->title;
    else
    {
    if(a->filename[0]='/')
    a_title=strrchr(a->filename,'/')+1;
    if(!a_title)
    a_title=a->filename;
    }

    if(b->title)
    b_title=b->title;
    else
    {
    if(b->filename[0]='/')
    b_title=strrchr(b->filename,'/')+1;
    if(!b_title)
    b_title=b->filename;


    }
    return strcasecmp(a_title,b_title);
    }


    void playlist_sort_by_title(void)
    {
    playlist=g_list_sort(playlist,(GCompareFunc)playli st_sort_by_title_cmpfunc);
    }

    gint playlist_sort_by_filename_cmpfunc(PlaylistEntry *a,PlaylistEntry *b)
    {
    gchar *a_filename=NULL,*b_filename=NULL;
    if(a->filename[0]='/')
    a_filename=strrchr(a->filename,'/')+1;
    if(!a_filename)
    a_filename=a->filename;

    if(b->filename[0]='/')
    b_filename=strrchr(b->filename,'/')+1;
    if(!b_filename)
    b_filename=b->filename;

    return strcasecmp(a_filename,b_filename);
    }


    void playlist_sort_by_filename(void)
    {
    playlist=g_list_sort(playlist,(GCompareFunc)playli st_sort_by_filename_cmpfunc);
    }

    gint playlist_sort_by_path_cmpfunc(PlaylistEntry *a,PlaylistEntry *b)
    {
    return strcasecmp(a->filename,b->filename);
    }


    void playlist_sort_by_path(void)
    {
    playlist=g_list_sort(playlist,(GCompareFunc)playli st_sort_by_path_cmpfunc);
    }

    void playlist_reverse(void)
    {
    playlist=g_list_reverse(playlist);
    }

  89. Winning users are annoying by raistlinne · · Score: 1

    Look, this is really quite simple:
    1. x11amp is free
    2. Gtk+ 1.1.14 is pretty close to Gtk+ 1.2.0
    3. There are a fairly large number of differences between the two, depending on what you are doing.
    4. Pursuant to #4, if your code heavily uses the heavily affected areas, it will be a lot of work to switch.
    5. Seeing as how both 2 & 4 are true, it will minize your work the most to use Gtk+ 1.1 until 1.2 comes out.
    6. Seeing as how 1 & 5 are true, your best course of action is to use Gtk+ 1.1 until Gtk+ 1.2 comes out.
    7. Some users might complain that they don't get to use your bleeding edge program without using the bleeding edge libraries.
    8. Pursuant to 7, your best course of action is to politely point out the GPL on your program, and invite them to patch their copy to work with non-development libraries, and then distribute it if they wish.
    9. Some users won't do any work but sit around and complain that people aren't giving them free stuff exactly how they want it.
    10. Point out that they aren't really who are meant to get the software, they are just a sideeffect of the freedom involved.
    11. Also point out that a little humility and gratitude go a long way.
    12. Also point out that it is improper for a non-coder to criticise the ways of a coder, or for a beginning coder to criticize the decisions of a master coder.

    Look, it's one thing if you are poitning out some sort of moral issue, free versus proprietary, etc. That's everyone's duty to (a) complain about and (b) fix as best they can. Every good open source application that's written weakens the power of closed source software, and every voice that cries against proprietary software helps, too. The money that purchases open source CDs, hires open source programmers, reads open source magazines, buys computers from vendors who install open source operating systems, or purchases services and manuals from open source developers helps even more. This has absolutely nothing to do with that. Do you have something more valid to say than open source developers shouldn't develop for their target platforms, but instead for older ones? I bet, if you look at it, that X11amp will be in its stable version around the time that Gtk+ 1.2 comes out. Therefore that is probably its target platform. If there target platform is Gtk+ 1.2, it makes a hell of a lot more sense to develop on Gtk+ 1.1.x then 1.0.x. It's one thing to switch in the middle of a stable version, but you're complaining about a development version being in development?

    Lastly, x11amp is an mp3 player. This isn't the kernel or libc that we're talking about. you can (a) live without it for a few months and (b) choose another one. Just learn from the closing verse to MST3K's theme song, "Repeat to yourself 'It's just a show' - I should really just relax!"

    --
    They laughed at Einstein. They laughed at the Wright Brothers. But they also laughed at Bozo the Clown. -- C. Sagan
  90. developers use development libs by Fvision · · Score: 1

    And who exactly is going to bug-test the libraries? I mean - changing the source slightly when the nexts stable library comes out can't be that hard (Spoken with no experience whatsoever. Correct me if I'm wrong) It sounds as if it all works at the moment so stop fretting - just wait until it comes out in a nice stable package for your enjoyment. Thats generally what I do.

  91. Finally I get this for my PPC box by Badfish · · Score: 1

    Thank you X11 Amp people. My linuxPPC box awaits your Glorious program!

  92. nervermind by dangerboy · · Score: 1

    forgot to compile X with threading support last time. damnit