Monday, June 30. 2008
Weekly Update, Secret Plans ... Posted by Daniel Jones
in kopophex at
19:12
Comments (12) Trackbacks (0) Weekly Update, Secret Plans Divulged, &c
I've been struggling with how to describe what I've been working on succinctly in conversation. I figure I can get about two sentences in before I start getting blank stares and eye rolls. I've been using something like this:
You know how when you put your ipod on shuffle, it magically knows what you want to listen to next? It's a little like that, but completely customizable, and instead of magic it uses a stochastic optimization algorithm. Then they say something like "Hmm", or "Interesting," and then there's a long uncomfortable silence until someone changes the subject. "Can you believe this weather we're having?" This is Week 2 or so for me, and forgoing things like "sleep" and "food", I've made some significant progress. The core of the bias code is written and more or less works. Random mode in working just dandy and if you're running the nightly or svn of Amarok 2, you can find it under the Playlists tab hiding out at the bottom. Since the bias code is written and works, this is a good time to talk about my secret plan. When a I first proposed biased playlists, I described biases as the chance that track has a certain property. Like "30% chance the next track is Jazz". I even made an aesthetically appalling mockup to show what I meant: ![]() The secret is, that I've designed it to be much more general than that. A bias is any function that maps a playlist to a value in [0,1]. The solver will then try to find a playlist where all the biases are at 0. Blank stares, eye rolls. "Can you believe this weather we're having?" The point is: biases can do a lot more that what I described previously. Really, they can impose any kind of restriction on the random playlist being generated. For instance, Suggestion Mode, where the next track is from a similar artist as the previous, can be implemented as a bias. If Suggestion Mode is just a bias, it can be combined with other biases. We could do Suggestion Mode + 30% Metal + 70% pre-1990, and it will do its best to find a playlist that matches fits. It there is no such playlist, it will just give you the best it can come up with. This also really important because it lets us use fuzzy biases like: "arround 1976", "about 3 minutes", or "hasn't been played in a while". Presumably, users could script their own biases, doing wacky things so playlists are random but tracks have increasing lengths, follow an obscure integer sequence, or their titles spell out a secret message. The next few weeks i will mostly be concentrated on tweaking and optimizing the solver and working on an easy way to create biased playlists. There's a lot of work ahead, but I'm very excited with how it's gone so far. Monday, June 30. 2008Let?s be dynamic again!Hands up in the air everyone! Please cheer for Daniel! Daniel, my Summer of Code student, has been working hard to get one of the most loved features of Amarok 1.4 back for Amarok 2 and probably made a lot of people very happy by doing that last week. He implemented a dynamic mode as basis for the biased playlists he will be working on next. First results can be seen now and it is going to be great. It already improved a lot over what we had in Amarok 1.4 because it is easier to discover, configure and use. And I am sure Daniel will continue to improve it and kick ass You can read more about it in his status report for this week and of course try it yourself with Neon or your own build. Go read it! /me is proud and so happy she can listen to music again without having to select songs herself all the time Monday, June 30. 2008GSoC Week Four
AH! Some big progresses and decisions have been made this week. So let's take a quick glance at the new Amarok Scripting interface. Here we go!
var Engine; Engine = Amarok.Engine; Engine.Stop( true ); Engine.Play(); Engine.Seek ( 60*1000 ); ![]() You can run the QtScript code using the script manager. Is the code simple enough for you? Using the code above, you can control the music engine of Amarok. For the current track info, just use AttriVal = Amarok.Engine.TrackInfo.someAttr. No need to import libs for using any APIs. Besides, you will also be able to use the entire Qt APIs in the near future! Now, let's add two menu objects under the "Tool" menu: function Menu1Clicked() { print ("hey, I am menu1!"); } function Menu2Clicked() { print ("hey, I am menu2!"); } Amarok.Window.addSeparator(); Amarok.Window.addMenu( "testMenu1" ); //you are creating a new object here! Amarok.Window.addMenu( "testMenu2" ); Amarok.Window.Menu.testMenu1.triggered.connect(Menu1Clicked); //then we can play with the new toy Amarok.Window.Menu.testMenu2.triggered.connect(Menu2Clicked); ![]() Finally, you can control the OSD and the statusbar widget (in the right bottom corner of the main window) using the code below: var OSD = Amarok.OSD; OSD.setText( "Hey there!" ); OSD.show(); var StatusBar = Amarok.Window.Statusbar; StatusBar.shortMessage( "Hey there!" ); ![]() Still a young wolf ah? A lot more APIs need to be implemented, like the playlist, collection, services, some GUI control, and networking APIs... I am really happy as I am growing with Amarok. Let's pray for an another productive week, and wait for more magics pop up! Sunday, June 29. 2008
GSoC weekly report ? issue 4 Posted by William Viana Soares
in liw at
09:22
Comments (0) Trackbacks (0) GSoC weekly report ? issue 4
A
Friday, June 27. 2008
User behaviour in the open and ... Posted by Myriam Schweingruber
in mamarok at
06:24
Comments (2) Trackbacks (0) User behaviour in the open and closed source world, and why I use Free Software
Funny how people behave sometimes:
I remember from the times I was still in the Closed Source user fraction, I sometimes send bug reports and/or wishes which were simply ignored, as I was a insignificant small user, not investing much money into software, although from a private user perspective, it still was a horrific amount: I remember having payed sFr. 4000.- on AshtonTates Framework 3 when it was released, as well as more than sFr. 1200.- for a complete MS-Office Suite quite some years ago. Years later the school was offered license packages for their computers which made software a bit more accessible for us teachers, but still we payed for. I know for sure that the bugs we filed from the school software were as ignored as my previous private user ones, ditto for the wishes. Occasionally we had some security updates where we sometimes discovered that the security hole had been there since years, but we were still happy to have it finally fixed. On the whole, we were just the cattle supposed to use the software as is and pay money for so the bosses could get rich. When I discovered Free Software, it was a whole new word: bug reports and/or wishes were answered most of the time, especially if one did the homework exploring the bug databases looking for duplicates. Although the answers were not always what one expected and not always very polite, at least I was sure that someone had read it and reacted to it. I didn't have to pay by default but could make donations if I was pleased with the software I got. It was a whole new user experience, something quite a lot of the users still in the Closed Source world would love to experience. I had and still have a tremendous respect for those Free Software developers who listen to the users (most of the time), and I feel respected as a user. Of course, as with most of the Free Software around, it exists mainly because the developer made it to suit her/his needs, occasionally integrating user wishes because they fit in the whole. One doesn't have to use this particular software but can choose form more than one for the same task (remember, once upon a time in the other world we had no choice). One thing that is not known from (or not thought of by) most of the users: if they want a particular feature that can not be integrated by default because of lack of time/money/whatever, they can pay a developer to integrate it. The source is free and can be modified by a skilled developer, so every user can find someone he pays to work on that feature. Of course I'm talking about reasonable features that do not demand years of work and can be done within that particular project. The world is changing all the time. You get aware of it when you look in the mirror: you change too within time, even if it's only on the outside I'm very pleased to see that the progress is still going on in my world, KDE 4 is showing brilliantly how the way we use computers is changing and how Free Software is not staying behind. Of course, there will always be those who don't like changes and refuse to follow progress because it forces them to integrate new concepts in their already quite narrow mind. And yes, changes do not always go smoothly, especially not in bleeding edge software based on new concepts and using new technology. Using a whole new technology also means that not everything we are used to from the old one is immediately available as it has to be brought to that new technology and is not working the same way as it used to. That means a lot of time investment and sleepless nights and sweat and tears on the developer's side which sometimes the user tends to forget. So, Thank You, Free Software Developers! I like my new modern and shiny world Thursday, June 26. 2008Amarok 2: Artwork is BackMy last couple of weeks has been spent focusing on getting cover art back up to scratch in Amarok 2. Cover art really adds a lot of spice and colour into the UI of the application, especially now that we are showing the artwork in the collection browser, context view and playlist. For those of you who are supremely organised, the collection scanner will now trawl through directories and try to pick up images it thinks are relevant to the songs which are being scanned. Embedded artwork is not implemented currently but it is certainly on the todo list. Most of the relevant actions can now be executed for artwork: fetching from amazon, setting a custom image, removal and full size display. Music lovers with non English songs can now rejoice because we’ve also fixed some problems fetching artwork for album/artists that have accented characters, which Amazon seemed to have problems with. Another cool feature that we’ve experimented with is automatic cover fetching if there is an album with no artwork. Keep in mind that this is entirely tentative, as we are not sure that the false-positive rate from Amazon is low enough to justify polluting your database with random covers (although this will improve with our recent fix to non English tags). Maybe we’ll keep it, maybe we won’t, but it certainly is a cool feature which I’m loving at the moment - I am really lazy and hate having to explicitly fetch a cover, even though artwork is great to have. In other news, I did some more work migrating statistics from Amarok 1.4 databases to the new and improved A2 schema. Here you can see how the play count, score and first/last played date for this track. Migration of lyrics and actual cover art isn’t yet implemented but that, like everything else is also on the cards. Oh - one more thing: Thursday, June 26. 2008
Popup Dropper -- now with 400% more ... Posted by Jeff Mitchell
in jefferai at
10:39
Comments (5) Trackbacks (0) Popup Dropper -- now with 400% more droppinness!First off -- the PUD now lives in the KDE Subversion repository! It's at svn://anonsvn.kde.org/home/kde/trunk/playground/libs/popupdropper -- it builds with CMake and acts as a standalone library. Included in there is a testapp that you can build with qmake that I use for my testing and that you can use to check it out, which I encourage. Amarok now uses the PUD pulled in as a svn:external, which means Amarok is now very easily synced with updates I make to the PUD. Now, on to the subject line -- the PUD now contains an average of 400% more droppiness. That's because you can now drop on the text of an item instead of just the icon, which means a far larger drop target (and apparently this is how people expected it to behave in the first place). Next on the agenda is to have text change color on hover so you're sure of what you're dropping onto. Complete with a nice looking fade, of course... Continue reading "Popup Dropper -- now with 400% more droppinness!"Wednesday, June 25. 2008
Amarok Scripting SoC Project - Week 3 Posted by Mark Kretschmann
in markey at
10:15
Comments (16) Trackbacks (0) Amarok Scripting SoC Project - Week 3
My SoC student Peter Zhou has interesting news about his progress with Amarok 2's all-new scripting system. I'm pasting his blog here, as he is not yet aggregated on Planet KDE.
Before that, let me fill you in with the details about our plans for scripting in Amarok 2:
What you can expect is something similar to Firefox's extensions. With one big difference: Amarok still aims to provide a rich feature set out of the box. We believe that an application should be usable without forcing the user to do Lego (TM) building Peter writes: I’ve been at home for three weeks, was with my family and had a three-weeks-leisure-break. Finally, I am sitting here to talk about my summer of code project. I am sorry about the first three weeks break, I really do. But I did try to get familiar with the development environment and tried to hack some code. I am going back to campus in Hong Kong in two days, I can thus concentrate on my SoC project. For a long time, I was trying to understand what is going on there. Trying to think what the other developers think. For the first month I joined the community, I was amazed that Amarok folks are so in love with what they are doing, and have so much passion on it. Different from my past projects, Amarok is a rather large project, different developers had different views on the future way. For the first time, I am feeling myself being pulled to the bleeding edge. I compiled QT for four times in two different platforms (How many times for kdelibs and kdeRunTime? In the first week, I was busy with my exams, and cleaned up the existing dbus interface. For the second and third week, I had a slight trip with my girl friend, set up a new Leopard development environment, tested the MPRIS support, and made my first commitment to KDE svn server. I did some paper work, studied a little with scripts, and I am now quite clear with my goals for the coming busy July. I made my mind to immigrate everything to qtscript from dbus. I would keep the MPRIS stuffs (PlayerDBusHandler, RootDBusHandler, TracklistDBusHandler) for dbus interface. And the other functions will be scriptable through qtscript. (both ruby and python need additional runtime dependencies, but not qtscript. The simpler the better Compare to the current functions, I will add more signals since the signal mechanism are rather easy to be achieved using slots and signals. For example, signals like trackEnd ,trackChange, SeekingTime, configurationChange and etc. would be added. The second change I will make is the scriptable GUI. You will be able to add buttons, menus, lists using scripts. Before my visiting to Belgium, I will make a easier use script manager which include upgrade checking, simple dependency checking (to check Amarok version and optional packages for Amarok which will be also needed by scripts). I am so looking forward to the coming working days and nights. Hopefully, I can work out a brand new scripting interface in one and half months and thus I can start a new script project during my visit to Europe. Peter's original blog can be found here. Tuesday, June 24. 2008GSoC Report Week 4Project: MP3tunes + Amarok IntegrationTotal Commits: 84 Weekly Commits: 36 Past 7 DaysStarting these posts with “It was another busy week..” is starting to get boring; I’ll cook up something more exciting for next week. In case you missed it, in the past seven days history has been made. I’ll let that stand in as the bulk of my weekly report, but a few worthwhile things have occurred since then that deserve a mention. Remote Track Upload - You can now sideload tracks to your MP3tunes collection from remote sources in Amarok. What the heck is sideload and what remote sources you ask? Sideload is a feature of the MP3tunes API that allows for server-to-server transfers. This means you can give your Locker a URL to a track, and it will automatically be downloaded into your Locker. Currently Amarok sports three services with remote collections that are sideloadable to MP3tunes: Ampache, Magnatune, and Jamendo. This method of transferring is generally very fast, because the transfer bypasses your slow internet connection. Upload Progress Bar - When you upload (or sideload) tracks to MP3tunes there is now a simple status bar to let you know how far along in the process you are. Non-Supported Track Filtering - This one is simple: If you try and upload a file-type that MP3tunes doesn’t support, Amarok will tell you and stop that track from being transferred. Upcoming 7 Days
The first one will be simple, in fact I plan to code it up after writing this report. These second and third tasks, however, signify that I’m moving into the last stage of the project. According to my original proposal I am ahead by a week, so I’ll be using this week as extra time to plan and get a jump-start on the synchronization framework. Monday, June 23. 2008
Project Neon - Ask Harald (FAQ) Posted by Harald Sitter
in apachelogger at
11:27
Comment (1) Trackbacks (0) Project Neon - Ask Harald (FAQ)
Note to me, myself and I: FAQs should be listed somewhere to save me the daily headache....
Is amarok-nightly for openSUSE published yet? No, I'll try to get a repository outside of my personal home one and build for openSUSE 11.0, after a couple of tests amarok-nightly for openSUSE can go live. Why is there no amarok-nightly for openSUSE 11.0 to be tested? Because I am preparing for exams, so I have no time for build-dependency magic, and because I will only build for openSUSE 11.0 once the above stated reason is sorted out. However, apparently the 10.3 packages work just fine on 11.0 as well (hooray for good packagin Why is amarok-nightly for openSUSE not built nightly? No neon package gets built nightly as long as it is being tested. Nightly builds will start once openSUSE packages are published in an own repository. Does kde-nightly for Kubuntu include debug symbols? No, neither does amarok-nightly. The packages are built with debugging enabled, a packaging script however strips them for some reason I forgot. In fact I tried adding -dbg packages earlier on, but that didn't work for some strange reason. The good news however is: I will digg into this soonish. After all a good description on how to reproduce is almost as good as a good backtrace Can we get a foobar package for kde-nightly? Feel free to drop ideas at the mailing list, but keep in mind that the build resources on Launchpad are pretty limited, so kdepim or koffice are probably not going to get in... at least for now. In general the current amount of packages is not going to grow a lot - I might only add kdeplasmoids some time soon, but that's about it. Do you plan to integrate more applications into kde-nightly? See above. How do I compile stuff against kde-nightly? This is a bit tricky - you can take a look at the neonmake script in amarok-nightly-tools to get an idea. I will include some proper buildscripts later on for use with kde-nightly and amarok-nightly. Why is there no kde-nightly for openSUSE? The openSUSE KDE guys do a great job on maintaining their own KDE snapshot packages. So launching a kde-nightly stack would be rather pointless, right? Duplicated effort and all.. Friday, June 20. 2008
Amarok 2 now supports uploading to ... Posted by Nikolaj Hald Nielsen
in freespirit at
08:16
Comment (1) Trackbacks (0) Amarok 2 now supports uploading to personal Mp3Tunes locker
Thanks to Casey Link, my GSoC student ( whose blog unfortunately is not on planetkde yet ), it is now possible to upload your tracks directly from Amarok 2 to your personal Mp3Tunes.com locker. How cool is that?
Much more info and screenshots at Casey's Blog Friday, June 20. 2008One small step for Amarok?I’m very excited to announce that the first Amarok->Cloud transfer has taken place. Just moments ago, for the first time ever (as far as I’m aware), a track was sent up into the Cloud from a desktop media player, escaping the local collection prison. This track shed the chains of limited accessibility, and is no longer doomed to obscurity, lost in an sql database in my home directory. This lucky track happened to be Making Me Nervous by Brad Sucks available over at the great indie music label Magnatune. Early this morning I committed the last bit of code that allows you to upload tracks to your MP3tunes Locker from Amarok. Amarok is the first client, besides the official client, to allow you to do such a thing. One of the great things about this feature is it’s seamless integration in the UI. After a short upload I go check the MP3tunes Web Player From this point I can listen to the track on my phone, on my squeezebox, or any other MP3tunes supported devices. Of course there are some caveats, but I aim to fix these over the next several days:
Don’t start thinking that things are winding down; uploading and downloading are only one small part of the show. The end goal is fully automated bi-directional syncing between Amarok and MP3tunes with 100% support for the MP3tunes API. What exactly does this entail?
And it all started today. Thursday, June 19. 2008Dolphin and Amarok share ratingsFirst: Sorry, I planed to blog more often about my GSoC project. I don’t feel very good when blogging in english. But as Thiago “forced” us to blog here an update: Let’s start with something to look at: Isn’t it nice? Ratings from Dolphin in Amarok Yeah, you will be able to rate your songs in Dolphin and see the ratings in Amarok or vice versa. They share the same data in Nepomuk. (I will publish in Amarok Wiki which ontologies are used, so that you can make use of it in your scripts or applications.) The collection you see there in the collection view uses the data from Nepomuk. (As my code can not scan collections yet it works directly on the information Strigi indexed.) I am quite happy about the performance. It is slower than the SQL collection but fast enough in most cases. But you shouldn’t try to add your complete collection to the playlist. On my collection (about 15k songs) it takes about 5 minutes. I am not sure if i can change that. Also not working yet: Collection filtering and any writing of data back Nepomuk.
I recommend to use the Sesame2 backend for Soprano/Nepomuk (needs Java at build and runtime of Soprano). But it should work with Redland too. To test it is enough to only add your music directory to the Strigi index folder (also in the Nepomuk settings). Wednesday, June 18. 2008
Introducing the Popup Dropper Posted by Jeff Mitchell
in jefferai at
15:15
Comments (20) Trackbacks (0) Introducing the Popup DropperAbout a year ago we had an issue in Amarok 2 development because we wanted to be able to move portable device track access into collections (this is happening with Alejandro's GSoC project), but we couldn't figure out a good paradigm for accessing the various device specific functions. There were some other concerns too, about the right-click menus getting too overloaded, making it hard to find common functions. Finally, when people wanted to drag music to the playlist, they now had to cross the entire window, whereas before it was a quick drag and drop...a lot less mouse movement, and possibly the difference between picking the mouse up and not. So I had a brainstorm. We have this ginormous context view area in the middle of A2. What if we could put it to good use, and allow it to act as a surrogate menu? For many people, dragging the mouse a bit to drop items on a big target is much easier than navigating small right-click menus, where it's easy to overshoot your destination and accidentally close submenus. Thus the PUD -- the PopUp Dropper -- was born. My first sketch of it is here:
(Here's the preceding page that talks about collection groups. If you like that idea, be sure to let us know at amarok@kde.org.) The PUD actually lived for a long time in the Amarok source tree, but there were problems. One was that it tied in too tightly to the existing Amarok context view code -- something that, as that code was refactored over and over again, was painfully obvious would not work. The other was that the actual popping up and drawing was painfully slow. It seems drawing a QGraphicsView on top of another one wasn't making Qt happy. Fortunately, as of Qt 4.4, this problem has been solved. The final nail in the coffin (related to the first one actually) is that some of the people that saw the work wanted to see it available for all of KDE to use. This approach wasn't going to work. When Qt 4.4 hit qt-copy, I started to play around with things again. Soon enough I was addicted to making it work. I took the Drag 'n Drop Robot example and started modifying it to use the PUD library I was making. The goals: make it Qt-only, make it very customizable so it could work in any situation, and make it actually able to replace a right-click menu. I'm happy to say that those goals have been met. Here's a list of current features:
I really wanted to make a video available, but I could get neither xvidcap, nor vnc2swf, nor captury working at all. recordmydesktop worked, but interfered with the drops, so it wouldn't work as intended. Instead, I'm making an "alpha" version of the PUD available for people to see (I had been using a local git repository, which is included in the tarball). Don't worry...despite me calling it alpha, it's quite stable (in fact, as you'll see, it's already used in Amarok). No dependencies are needed, just qmake the dragdroprobot.pro file, make, and run the dragdroprobot file. Caveats: it's not commented (see coloritem.cpp for usage examples), I know of a few bugs, it's not finished (I have several more things to add to it), there is at least one crash that I can't reproduce reliably and have not found, there are some things I need to test but have so far been unable to (such as more than one submenu layer), and note the copyrights and distribution requirements on the files -- it's a modified example from Qt. Preferably run in a Qt 4.4 environment (i.e. in a KDE trunk login) to get all the benefits of Alien, or else it might be rather slow depending on your system. But with that all said, let me know how you like it. Finally, it's been updated in the Amarok source tree. Now that I got the submenu support working, Nikolaj has gotten it integrated. In recent builds of Amarok you can simply start dragging an item from your collection and see it in motion. Some screenshots follow. The first is showing the normal menu, the second shows the submenu that pops up when you hover over the Organize Files item (you can see the previous menu behind it, through the transparency).
So what's next? Hopefully, this will eventually make it in some way shape or form into kdelibs, assuming the API stays stable (it was written in the kdelibs style, with a d pointer and private classes), making it easy for KDE apps to take advantage of it without being an external dependency. And as it gets completed I'll be making it available separately for any Qt app out there that wants to use it (not sure what license it will be under...either GPL or BSD). For now, if you want to see the latest versions, keep your eye on the Amarok source code in the src/popupdropper directory (it has a few modifications to my "master" source simply to make it build in the Amarok source tree...specifically, adding moc file includes since it's not using qmake, and exporting PopupDropperAction). Comments appreciated! Continue reading "Introducing the Popup Dropper"Wednesday, June 18. 2008
Project Neon - KDE Nightly Builds Posted by Harald Sitter
in apachelogger at
12:39
Comments (0) Trackbacks (0) Project Neon - KDE Nightly Builds![]() ..it's that time again, when I announce something new, which isn't new at all due to testing Since amarok-nightly is a huge success .... Project Neon now also includes kde-nightly builds for Kubuntu! Currently available are kdebase, kdemultimedia, kdegraphics, kdenetwork and kdesdk Now my dear Kubuntu users, you can: develop, debug, fix, test, promote and break your system Have fun, and in case something goes wrong: blame KRF in #amarok.neon. Misc:
|
Amarok LinksCalendarQuicksearchCategoriesSyndicate This BlogBlog Administration |

