Last.fm Boffin - Local Radio Tech Demo [0.0.4 released]

 
    • mxcl disse...
    • Alumni
    • Mar 6 2009, 0h59
    Hopefully I'll set up a Taglib this weekend that has all the plugins and so will support all formats. Then I'll rebuild. The current momentum of Boffin is exciting :) So I have motivation.

    Also, to change the directories you've set, choose Rescan from the Tools menu.

    @gvda you'll have to ask Doug. It was him and Norman who made the local radio system. But I believe, it's random, with a little bit of magic :)

    • rpn disse...
    • Usuário
    • Mar 6 2009, 7h47

    Linux

    I tried compiling Boffin on Linux (Mandriva Cooker, with Qt4.5) and after adding -lsqlite3 for the final linking stage it compiled and run without a problem :).

    make install didn't do much, but I could run it from the _bin/ directory directly instead.

    • jahrynx disse...
    • Usuário
    • Mar 6 2009, 8h09

    linux debian testing

    tried compiling, and got issues.
    Like rpn said, make install didn't do much but in my case running it from _/bin doesn't work. It gives the error:
    ./boffin: error while loading shared libraries: libunicorn.so.1: cannot open shared object file: No such file or directory

    ls in this dir gives:

    ..../_bin$ ls
    boffin libcore.so.1.0 libradio.so.1 libresolver.a libtypes.so.1.0 libunicorn.so.1 libws.so libws.so.1.0.0 libcore.so libcore.so.1.0.0 libradio.so.1.0 libtypes.so libtypes.so.1.0.0 libunicorn.so.1.0 libws.so.1 libcore.so.1 libradio.so libradio.so.1.0.0 libtypes.so.1 libunicorn.so libunicorn.so.1.0.0 libws.so.1.0


    any ideas?

    • dougma disse...
    • Alumni
    • Mar 6 2009, 9h11
    gvda said:
    @mxcl: I was wondering: how does the randomisation process (excuse my French) work? In other words; how is the order in which Boffin plays my songs established? Some kind of fancy shuffle algorithm? (I'm not technical at all but still curious ;-)
    A tag is a set of tracks having different weights (If the tag is "indie pop" for example, a track might be rated 80% "indie pop"). Boffin takes a weighted sample from the tracks on offer to make a playlist. There's a couple of other tricks: it favours the intersection between tag sets, and it has a (short) memory to mix up the artists a bit more.

    That's it. :)

    • RJ disse...
    • Alumni
    • Mar 6 2009, 9h41

    Re: linux debian testing

    jahrynx said:
    tried compiling, and got issues.
    Like rpn said, make install didn't do much but in my case running it from _/bin doesn't work. It gives the error:
    ./boffin: error while loading shared libraries: libunicorn.so.1: cannot open shared object file: No such file or directory

    ls in this dir gives:

    ..../_bin$ ls
    boffin libcore.so.1.0 libradio.so.1 libresolver.a libtypes.so.1.0 libunicorn.so.1 libws.so libws.so.1.0.0 libcore.so libcore.so.1.0.0 libradio.so.1.0 libtypes.so libtypes.so.1.0.0 libunicorn.so.1.0 libws.so.1 libcore.so.1 libradio.so libradio.so.1.0.0 libtypes.so.1 libunicorn.so libunicorn.so.1.0.0 libws.so.1.0


    any ideas?



    It might not be looking for those .so files in the current directory by default, try running like this:

    LD_LIBRARY_PATH=. ./boffin

    Information wants to be beer.
    • thisfred disse...
    • Usuário
    • Mar 6 2009, 9h50

    Linux build

    Yep, builds just fine. I had to install libphonon-dev, which wasn't listed as a dependency, but other than that, no problems.

    "Look out honey, 'cause I'm using technology..."
    • mxcl disse...
    • Alumni
    • Mar 6 2009, 9h53

    Re: Linux build

    thisfred said:
    Yep, builds just fine. I had to install libphonon-dev, which wasn't listed as a dependency, but other than that, no problems.
    Yeah I should add that to the README, thanks.

    make install didn't do muchYeah sorry. I didn't have time to implement make install properly. I wouldn't run it, I don't even know what it'll do! I will fix the tarball up properly for 0.0.5.

    after adding -lsqlite3 for the final linking stage it compiledOdd, as we do add that to the link line, it's just buried in 3rdparty.pro.inc.

    • jahrynx disse...
    • Usuário
    • Mar 6 2009, 16h59

    Re: Re: linux debian testing

    RJ a dit :

    It might not be looking for those .so files in the current directory by default, try running like this:

    LD_LIBRARY_PATH=. ./boffin



    Nice it works. It can scan, build the tagcloud and play music. But i got an error if i try to change/add folder to scan and it crashes

    the only things it print is
    Instruction illégale
    (yeah, french)
    nothing more. is there a way to print debug log or anything that could tell more?

    • mxcl disse...
    • Alumni
    • Mar 6 2009, 18h18
    Try gdb for a backtrace:

    LD_LIBRARY_PATH=. gdb ./boffin
    r
    bt

    • jahrynx disse...
    • Usuário
    • Mar 6 2009, 19h37
    here is the backtrace


    Program received signal SIGILL, Illegal instruction.
    [Switching to Thread 0xb6a5c910 (LWP 6142)]
    0xb636e803 in ?? () from /usr/lib/xine/plugins/1.23/xineplug_inp_dvd.so
    (gdb) bt
    #0 0xb636e803 in ?? () from /usr/lib/xine/plugins/1.23/xineplug_inp_dvd.so
    #1 0xb7a26a05 in QFileDialog::getExistingDirectory ()
    from /usr/lib/libQtGui.so.4
    #2 0x0806e980 in PickDirsDialog::prompt (this=0xbfadf7e0)
    at PickDirsDialog.cpp:91
    #3 0x0807f68e in PickDirsDialog::qt_metacall (this=0xbfadf7e0,
    _c=QMetaObject::InvokeMetaMethod, _id=0, _a=0xbfade9bc)
    at _build/moc_PickDirsDialog.cpp:66
    #4 0xb729ebe0 in QMetaObject::activate () from /usr/lib/libQtCore.so.4
    #5 0xb729efe0 in QMetaObject::activate () from /usr/lib/libQtCore.so.4
    #6 0xb7b94b71 in QAbstractButton::clicked () from /usr/lib/libQtGui.so.4
    #7 0xb78e7ea9 in ?? () from /usr/lib/libQtGui.so.4
    #8 0xb78e9aa4 in ?? () from /usr/lib/libQtGui.so.4
    #9 0xb78e9d36 in QAbstractButton::mouseReleaseEvent ()
    from /usr/lib/libQtGui.so.4
    #10 0xb76027c2 in QWidget::event () from /usr/lib/libQtGui.so.4
    #11 0xb78e7d4e in QAbstractButton::event () from /usr/lib/libQtGui.so.4
    #12 0xb798e630 in QPushButton::event () from /usr/lib/libQtGui.so.4
    #13 0xb75aa79c in QApplicationPrivate::notify_helper ()
    from /usr/lib/libQtGui.so.4
    #14 0xb75b2fd1 in QApplication::notify () from /usr/lib/libQtGui.so.4
    #15 0xb728a0e1 in QCoreApplication::notifyInternal ()
    from /usr/lib/libQtCore.so.4
    #16 0xb75b225e in QApplicationPrivate::sendMouseEvent ()
    from /usr/lib/libQtGui.so.4
    #17 0xb761be2d in ?? () from /usr/lib/libQtGui.so.4
    #18 0xb761ac11 in QApplication::x11ProcessEvent () from /usr/lib/libQtGui.so.4
    #19 0xb764463a in ?? () from /usr/lib/libQtGui.so.4
    #20 0xb6b1a368 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
    #21 0xb6b1da03 in ?? () from /usr/lib/libglib-2.0.so.0
    #22 0x09fe8690 in ?? ()
    #23 0x00000000 in ?? ()


    and another when trying the resolve xspf


    Program received signal SIGSEGV, Segmentation fault.
    [Switching to Thread 0xb69ef910 (LWP 6096)]
    0x093ddd87 in ?? ()
    (gdb) bt
    #0 0x093ddd87 in ?? ()
    #1 0xbfb7007b in ?? ()
    #2 0xb6301631 in ?? () from /usr/lib/xine/plugins/1.23/xineplug_inp_dvd.so
    #3 0xb7300798 in ?? () from /usr/lib/libQtCore.so.4
    #4 0x00000013 in ?? ()
    #5 0x08076003 in App::xspf (this=0xbfb740f0) at App.cpp:287
    #6 0x0807fba5 in App::qt_metacall (this=0xbfb740f0,
    _c=QMetaObject::InvokeMetaMethod, _id=1, _a=0xbfb7322c)
    at _build/moc_App.cpp:87
    #7 0xb7231be0 in QMetaObject::activate () from /usr/lib/libQtCore.so.4
    #8 0xb7231fe0 in QMetaObject::activate () from /usr/lib/libQtCore.so.4
    #9 0xb75374a1 in QAction::triggered () from /usr/lib/libQtGui.so.4
    #10 0xb7537e0f in QAction::activate () from /usr/lib/libQtGui.so.4
    #11 0xb7911294 in ?? () from /usr/lib/libQtGui.so.4
    #12 0xb7911d22 in QMenu::mouseReleaseEvent () from /usr/lib/libQtGui.so.4
    #13 0xb75957c2 in QWidget::event () from /usr/lib/libQtGui.so.4
    #14 0xb7914019 in QMenu::event () from /usr/lib/libQtGui.so.4
    #15 0xb753d79c in QApplicationPrivate::notify_helper ()
    from /usr/lib/libQtGui.so.4
    #16 0xb7545fd1 in QApplication::notify () from /usr/lib/libQtGui.so.4
    #17 0xb721d0e1 in QCoreApplication::notifyInternal ()
    from /usr/lib/libQtCore.so.4
    #18 0xb754525e in QApplicationPrivate::sendMouseEvent ()


    Hope they can be useful.
    As a workaround it follows simlinks :) and i have to say it's great pieces of software.
    can't wait to see it integrated in Amarok (isn't there Amarok dev working around in last.fm?)

    • mxcl disse...
    • Alumni
    • Mar 6 2009, 21h18
    Looks to me like you xinelib is broken and is for some crazy reason getting loaded whenever we show a dialog. Linux has its quirks :P

    • tburny disse...
    • Forum Moderator
    • Mar 7 2009, 1h18
    well my boffin is still scanning, as my music collection is bit of large ;) Maybe you can speed up reading the data a bit, I think this is possible...

    Great app, runs fine on windows 7 so far, it creates the db and plays fine :D Thumbs up!

    Combo.fm: Combine your favourite radio stations! | My Blog | scala-lastfmapi | Cache2k - A high performance Java in-memory cache
    P.S.: Do not click here
    throw new PokemonException(); //Gotta catch 'em all
    My forum post reflects my personal opinion :)
    Editado por tburny em Mar 7 2009, 15h27
    • jahrynx disse...
    • Usuário
    • Mar 7 2009, 10h40
    mxcl a dit :
    Looks to me like you xinelib is broken and is for some crazy reason getting loaded whenever we show a dialog. Linux has its quirks :P

    xinelib broken... I'll believe you on this, that explains everything. hopefully updates will come soon.
    thanks for your help

    • maz35 disse...
    • Usuário
    • Mar 7 2009, 21h19
    maz35 said:
    maz35 said:
    Like I said to doug via email, for some reason its not loading up at all for me now. I see the process in task manager but no program loads up. Shame as it seems a really cool app.

    Still having this issue in the updated version.

    Finally managed to fix this issue myself, I just searched for and deleted any entries for it in the registry and the main window has returned.

    Now I can go back to testing it :D

    • hawkse disse...
    • Usuário
    • Mar 7 2009, 21h21

    Up and running

    Thanks for that little redist-file. Already had a bunch of versions listed so I thought I'd be set. Works fine now.

    Looking forward to vorbis-support !

    • gvda disse...
    • Usuário
    • Mar 7 2009, 21h40
    dougma said:
    A tag is a set of tracks having different weights (If the tag is "indie pop" for example, a track might be rated 80% "indie pop"). Boffin takes a weighted sample from the tracks on offer to make a playlist. There's a couple of other tricks: it favours the intersection between tag sets, and it has a (short) memory to mix up the artists a bit more.

    That's it. :)


    Thanks dougma, for explaining that.

    • mxcl disse...
    • Alumni
    • Mar 8 2009, 1h10
    tburny said:
    well my boffin is still scanning, as my music collection is bit of large ;) Maybe you can speed up reading the data a bit, I think this is possible...
    Well, we're already using the fastest available tag reading library, Taglib.

    But things speed up if you hide the window, as the animation is a little CPU heavy. Though you'll find there is no difference at all if you have more than one core. As then it's IO bound.

  • Very nice. Just some quick feedback:

    1. It seems to work pretty well. I like the minimalistic interface but there really should be a volume slider. Also, I realize this is a demo/proof-of-concept at this point but at least the Win32 version doesn't have an icon which gives it sort of an early alpha-feel. Having an option to minimize to the tray like the scrobbler would also be really nice for those of us who have a ton of apps open at any time.

    2. And while I'm nitpicking: the dialogue where you specify what directories you want Boffin to index becomes illegible when you add more than a few directories (XP Pro SP3, US-version, 32 bit) and the directory selection GUI thingie(tm) seems to default to "%HOMEPATH%/My Music" which is sort of annoying if you're adding a dozen directories (after all, you're only going to be adding that directory once). Oh, and speaking of nitpicking: the "Cancel" button doesn't change to "OK" after the check for a newer build has completed.

    3. What stuartsjm said about logic operators. I too feel that only songs that have both/all tags should be played when multiple tags are selected (if possible; I realize there won't be much content to play if you select more than a few tags).

    • tburny disse...
    • Forum Moderator
    • Mar 9 2009, 16h07
    I'd propose to seperate the process of scanning files and playing them, so you can:
    a) start listening while the scanner is still active
    b) boffin scans for new files on launch, you won't have to wait till that is done....adding new and removing missing files could also be done in background :) also, maybe a check box to disable the scan output would be really cool!

    I really love boffin, though it's proc :)

    Combo.fm: Combine your favourite radio stations! | My Blog | scala-lastfmapi | Cache2k - A high performance Java in-memory cache
    P.S.: Do not click here
    throw new PokemonException(); //Gotta catch 'em all
    My forum post reflects my personal opinion :)
    • mr_maxis disse...
    • Moderador
    • Mar 9 2009, 16h58
    1 hour and a half of scanning is a little bit long... but it was worthwhile ! I can rediscover my entire library, which is very large and eclectic so media player's shuffle mode is useless for me, now tags help me a lot!!
    Thank to Last.fm Boffin and all the boffins behind it ;)

    • dougma disse...
    • Alumni
    • Mar 9 2009, 18h06
    tburny said:
    I'd propose to seperate the process of scanning files and playing them, so you can:

    Indeed, great ideas. Stay tuned. :)

    • akrde disse...
    • Usuário
    • Mar 9 2009, 19h10
    Is it planned to use this new scanning/tagging technique for the user's Last.fm library too?

    Are you planning to integrate this tool in the new Last.fm client for playing the local AND online libraries by automatic generated tags?

    Would be very cool...

    • julians disse...
    • Alumni
    • Mar 9 2009, 20h09
    The default window size is a little bit too small to contain all my tags. Not by too much, just enough so I always think ‘Why isn’t the window bigger?’. Also, it doesn’t remember the window size if you resize and then relaunch it. The ‘Check for updates’ didn’t seem to work when 0.4 was out.

  • it would be great that Boffin's functions came integrated in the default Last.fm Client. Why would you want 2 programs when all can be done in one? don't you think?

    • tburny disse...
    • Forum Moderator
    • Mar 10 2009, 13h59
    this is proof of concept and i guess it WILL come....what elso could be improved in the client itself? uhm playlists maybe...

    Combo.fm: Combine your favourite radio stations! | My Blog | scala-lastfmapi | Cache2k - A high performance Java in-memory cache
    P.S.: Do not click here
    throw new PokemonException(); //Gotta catch 'em all
    My forum post reflects my personal opinion :)
Usuários anônimos não podem postar mensagens. É preciso fazer login ou criar uma conta para postar nos fóruns.