Sunday, January 29. 2006Music Brainz: Picard and libtunepimpReleases: Picard and libtunepimp: “We released the 0.6.0 version of Picard today — this release fixes many bugs and adds the much anticipated mp4, mpc and wma plugins! Also included in this release are support for generating cuesheets, M3U, PLS and XSPF playlists….” (Via MusicBrainz Blog.) So it looks like official MusicBrainz client has mp4 support now, unfortunately the change log doesn’t mention any of the OS X problems being resolved. These problems are GUI related though, and otherwise the application Picard (python) and backend libtunepimp (c++) should otherwise work for OS X as far as the last time I tested. A Cocoa gui via the PyObjc Bridge might be a good option for some one out there wanting a full MusicBrainz client. iEatBrainz is a bit beyond resurrecting code wise (It does still work, but changes by Apple or MusicBrainz will certainly break someday in the future), while parts of it could be harvested, I’d suggest to anyone thinking about it to strongly consider a cocoa gui for Picard as it has a lot more features and with MusicBrainz fingerprinting up in the air it’s a much safer approach. Continue reading "Music Brainz: Picard and libtunepimp"Monday, October 10. 2005iEatBrainz, Final VersioniEatBrainz 1.07 is a small update but it’s got a solution to a major problem that has been plaguing iEatBrainz worse and worse with each new version of iTunes. It should be able figure out what songs you are trying to tag in most cases when the iTunes Music Library.xml file is out of date. It’s got some other minor improvements, but those are basically due to shared code between NicePlayer and iEatBrainz. The reason this is the final version, isn’t quite the same as it was going to be. Originally i was working on directly writing aac/mp3 tags to try and get past that bug that this release has a slow work around for, and to perhaps write a newer version based on the framework I was writing to do this, or just release the framework giving other cocoa programers and easy way to write their own take on musicbrainz tagging. However MusicBrainz has an issue of their own, their acoustic fingerprint server is reaching it’s limits. See the MusicBrainz blog General update: What’s up with TRM??. Their acoustic fingerprint server was donated by a company that’s no longer in business, and is proprietary, and about to crap out. Ironically MusicBrainz’s codebase is licensed under the GPL, which is designed to keep something like this from happening, however fingerprinting was all done on a separate server so it didn’t have to follow the GPL. MusicBrainz’s current solution is to go completely to tag based searches, which hopefully will turn out okay. MusicBrainz meta data, while free and open, hasn’t been as rich as those provided by other taggers such as MPFreaker , but the fingerprint really set it apart. Not too long ago MusicBrainz added advanced relations which promises to give it much richer data, I hope this will be enough of a draw to keep people using it. Since what i’ve been working on is pretty much deprecated by this, and my copious free time is not actually copious, I’m going to officially say this is the last version of iEatBrainz I’m releasing. MusicBrainz was originally going to release their next generation tagger for Mac OS X / Windows / Linux which will use the new scheme of tagging anyway, unfortunately it was announced also that this was no longer going to be the case for Mac OS X Bad news: Picard on OS X. The good news is the problem with it seems to be the cross platform GUI widgets, and since you can use a cocoa gui from python, the potential for porting by someone wanting to take it on is good (However, I won’t be that person). Continue reading "iEatBrainz, Final Version"Saturday, September 3. 2005
Odds and Ends, Summer of Non-Code Posted by Jay
at
01:22
Comments (0) Trackbacks () Defined tags for this entry: ieatbrainz, niceplayer
Odds and Ends, Summer of Non-CodeApple Bug FridaySo I’m was reading many blogs today, and I feel so uncool with all these “Apple Bug Friday” posts. I have an apple bug (or at least I considerate it, don’t know if apple will) that I had written some unit tests to explain the behavior problems. I’ll have to prime for next friday it’s 19 minutes past saturday!The state of the projectsYeah so this was not the summer of code for Jay Tuley, but now that the girlfriend is finishing school in London, I’ll have some time this fall that will need occupying with code. So basically NicePlayer is the project that has gotten the most attention from me, because Robert works on it too, and I use it on a regular basis being that it’s now september we’ve missed another self imposed milestone, whoops. I’ll have some time to work on this for sure this fall. i’ve worked on iEatBrainz very intermittently, fixing little bugs, trying to get the applescript update to be more reliable, I’m going to release it soon, and that will probably be the last update of that code base by me, then I’ll focus on iEatMeta. iEatMeta was going really good in the spring, and then poof I stopped working on it as life got in the way, it’s current status is that I have reading m4a, m4p, and mp3 metadata that iTunes does plus MusicBrainz data, I want to make some design changes in the api, before releasing the source, I’m not sure the best way to implement writing the m4a tags, I have some ideas, but I think reading is quite useful, and it’s better to get the framework out there, just incase for some reason life gets in the way again. SleepI had some other odds and ends but I’m too sleepy, and am starting to forget what I’m writing, I’d rather just post something now than waiting and posting later. Good night! Continue reading "Odds and Ends, Summer of Non-Code"Thursday, March 10. 2005iTunes Music Library.xmlSo someone asked me a question, and I’ve had this question before, so I decided to answer it in my blog. Tom asks: One thing that’s been confusing me for awhile is locating the XML file for the iTunes library. The iTunes library can be in an arbitrary location, so relying on it being in ~/Music/iTunes/ is bound to fail for anyone who relocates their library. It’s a pretty good question, when I originally looked into locating the iTunes Music Library.xml file (for the Music Recommendation System), I also was under the impression that the file could be in arbitrary places just like Tom. However, I soon discoved that there are only specific places that file can exist. It had only seemed like this wasn’t the case because the default location for iTunes Music Folder is the same as where your library files need to be. So if you look for the library file at ~/Music/iTunes/iTunes Music Library.xml, you’ll be okay even if the Music Folder is set to be somewhere else.
So that’s easy enough, but wait, you may now be wondering did If I really mean “places” when I wrote “specific places” and indeed there is another place your library could be located, ~/Documents/iTunes/iTunes Music Library.xml. iTunes checks in precedence for the iTunes folder, first ~/Music, if it doesn’t find it there it checks in /Documents. If all you have is the iTunes folder /Documents it will use the library there and save and update it, if you have both, it will use ~/Music. If you have neither it create a folder in ~/Music. Another thing you should do to make sure that you find the iTunes Music Library.xml file, is because some people tend to movie things around with aliases, you need to resolve aliases in that path, you can do that with this code from Apple. So that’s basically all you have to do to find the iTunes Music Library.xml file. And if for some reason you program still can’t find the xml file you can pop up an open dialog box. There are some other notes about the xml file worth noting, it’s periodically updated, and seems to be in place for Cocoa apps like iMovie, iPhoto, and iDVD, however none of them check for the file in ~/Documents (so if you look in the the secondary location, you and iTunes are already one step in sync better than Apple’s own iApps). The tracks are also numbered inside the XML with a Track ID, and in AppleScript they are referred to as “Database ID”, these values aren’t constant, and every so often they get renumbered, it’s worth noting as this has been the bane of iEatBrainz in the past and present. Finally, while it doesn’t concern most, in my opinion there is a major bug regarding the dates in the XML file. The XML file uses the GMT offset for the daylight savings time that you are currently observing, not the offset for when that date occurred in time. So on this day of posting I’m currently not observing daylight savings time. So that’s 6 hours behind GMT where my thinks it’s located. Song A was added in November (not DTS, thus 6 hours behind) Which is right, everything matches, however: Song B with a Data added in July, thus in DTS That’s wrong! the XML doesn’t match up with the GUI and AppleScript! If I change my current time to a day in daylight savings time: iTunes rewrote the date, and now the time matches the GUI, however all the non DTS dates now don’t match! It’s just frustrating, I filed a bug report with Apple last June, but I’m not sure if they care as iMovie, iDVD, and iPhoto, don’t care about dates. So yeah, I guess that’s the iTunes Music Library.xml file in a nutshell. Continue reading "iTunes Music Library.xml"Thursday, February 24. 2005
iEatBrainz -- the status, ... Posted by Jay
at
22:57
Comments (8) Trackbacks () Defined tags for this entry: ieatbrainz, programming
iEatBrainz -- the status, Introducing iEatMetaSo it feels like with each new version of iTunes, the hackish applescript retagging gets less effective. It motivated me to dig deeper in finding out about how meta information is stored in the M4A files. I found out it was pretty easy to parse (ATOMS are amazing) and I had a test app, and figured out all the atoms that I would need to know to read the equivalent of what iTunes allows you to edit. After that i decided I’d try getting mp3 id3 tags using a library. So I wanted something that i could dynamically link to (with out making my code GPL) and low level to get iTunes specific tags, thus I used id3lib, which seems work really well. I’m a little concerned that projects seem to moving from this to libid3tag, however, the only complaints I’ve read are that it’s “over engineered” which makes me feel a little better. I have a library now, iEatMeta.Framework, that reads metadata, and I’m currently working on writing metadata, and hopefully it won’t be too long before I get it how i want it, and I release it under MPL/LGPL. This framework would be the foundation for redesigning iEatBrianz. Continue reading "iEatBrainz -- the status, Introducing iEatMeta"Tuesday, December 7. 2004
iEatBrainz 1.06 Posted by Jay
at
23:41
Comment (1) Trackbacks () Defined tags for this entry: ieatbrainz, release
iEatBrainz 1.06Been really busy, but posted some minor updates to iEatBrainz since it’s been a while What’s new in 1.06 • Auto Check for updates. • FAQ is now online http://www.indyjt.com/wiki/pmwiki.php/IEatBrainz/FAQ • optional iTunes Chooser Playlist for songs that haven’t been tagged. • Minor performance enhancements • Bug fix for “Acoustic Fingerprint not in database error” so it now allows you to choose manual match without regenerating the fingerprint. • Auto Retry when trm server that generating fingerprints is busy, now waits a progressive amount of time before retrying. Might be the last minor update for awhile, as I’m re-writing the main controller code, but by adding my new IndyKit to this version it has an automatic update checker added with very little work. So when that new version is ready a window will pop up like this:
Tuesday, November 23. 2004
NicePlayer 0.88 Posted by Jay
at
13:33
Comments (0) Trackbacks () Defined tags for this entry: ieatbrainz, niceplayer
NicePlayer 0.88Robert Chin and I have released NicePlayer 0.88, it has some significant enhancements. Version 0.88: • Widgets show up when application is inactive • Clicking on time elapsed toggles between time remaining and time elapsed. • File icons for recognized types • Customizable fast forward and rewind speeds • Preferences for looping, time elapsed/remaining default display, fast forward/rewind speed • Fixes for network loading of files • Auto Update Check Being able to access the player controls without having to click once on the window, because the application is not the active app, is one of the best enhancements in this update. It wasn’t even something that was on my radar, but Robert it was on Robert’s and he got it working. w00t! In the last version the compressed file size broke the 100k barrier, which was kind of sad, people seemed to like that it was such a crazily small download, but of course it was n’t going to last as more features are added. However, this time the compressed filesize almost doubled!! But it’s only due to the fact that I added icons for each of the supported quicktime movie types. I looked for awhile on the net, trying to find Apple’s Aqua Icon Kit, but alas it was no where to be found. However, I knew I had downloaded it at some point because I used it on 3DOSX, so luckily I found it on an old backup. I don’t know why apple got rid of it, it was a really useful set of Photoshop templates and actions, Oh well. I was glad to get the “Auto Update Check” into this version, it’s actually part of my IndyKit framework, I’ll be releasing a minor update soon of iEatBrainz that has it too. I was supposed to have the auto update done in summer, but just don’t have as much time these days to work on personal projects (It’s frustrating I’ve got too many Ideas argggh). Robert kept hassling about releasing this version, but I was holding off because I really wanted to get the automatic check for updates in, and I’m glad I did. Anyway my lunch break is over, back to paying job. Continue reading "NicePlayer 0.88"Sunday, November 7. 2004
In one day... Posted by Jay
at
23:07
Comments (0) Trackbacks () Defined tags for this entry: ieatbrainz, niceplayer
In one day...In one day, NicePlayer downloads eclipsed the downloads of iEatBrainz for the month of November, thanks to to 500 visit through this page http://mac.page.ne.jp/ . Okay so we are only 7 days into the month of November, still I’d accept a donation of a NicePlayer nib translated to Japanese. For an iEatBrainz update, it’s going through some much need code bloodletting. Continue reading "In one day..."Friday, August 13. 2004
Back from Vacation Posted by Jay
at
02:49
Comments (0) Trackbacks () Defined tags for this entry: ieatbrainz
Back from VacationJust got back from a family vacation to Monterey. It was a lots of fun, but of course that means for the last 6 days no real coding work has progressed. And I had very little internet access while I was there, so I have several emails to respond to, especially with iEatBrainz bugs/problems (using the email author menu in iEatBrainz (to my gmail account) is the best way to get a reply for bugs BTW). I will be responding to email as soon as I can, but right now I must go to bed. Continue reading "Back from Vacation"Thursday, August 5. 2004iEatBrainz applescript to add iTunes selectionI received an email a little earlier asking what iEatBrainz applescript commands would allow you to add songs from an iTunes selection. iEatBrainz only has a applescript dictionary because it’s an Apple Script Studio app with a lot of Obj-C and just a small bit of applescript. However, since the applescript dictionary encompasses almost all of cocoa, it wasn’t too hard to write a script that takes the currently selected song in iEatBrainz and add it to the tagging list (As long as you know what methods to call). Open this script in Script Editor on addSongWithDatabaseID(aDatabaseID, aLibrary, aTaggingController)tell application “iEatBrainz” set aTrack to call method “trackForTrackID:” of aLibrary with parameter (aDatabaseID as string) call method “addiTunesTrack:” of aTaggingController with parameter aTrack end tell end addSongWithDatabaseID tell application “iEatBrainz” set myLibrary to call method “musicLibrary” of call method “mediator” of call method “delegate” of application set taggingController to call method “musicMatchings” of call method “mediator” of call method “delegate” of application end tell tell application “iTunes” set these_tracks to the selection of browser window 1 —if no selection if these_tracks is {} then error “No tracks are selected in the front window.” end tell repeat with i from 1 to number of items in these_tracks set this_item to item i of these_tracks tell application “iTunes” set dbID to database ID of this_item end tell addSongWithDatabaseID(dbID, myLibrary, taggingController) end repeat This still will have problems on occasion when iEatBrainz gets out of sync with iTunes, due to iTunes renumbering its database. Continue reading "iEatBrainz applescript to add iTunes selection"Sunday, August 1. 2004
iEatBrainz Bugs, and IndyKit work Posted by Jay
at
16:40
Comments (0) Trackbacks () Defined tags for this entry: ieatbrainz, indykit
iEatBrainz Bugs, and IndyKit workSo I just received a report that iChatStatus and Music Image cause iEatBrainz to fail at updating the iTunes library. My guess is because they are continuously polling iTunes through AppleScript. I still have yet to experiment with this. IndyKit is progressing, I’ve written several classes for encryption and signing data, and the unit tests are all working! I thought it was going to be harder than it was, and now I’m writing a subclass to NSButton which is actually harder than I thought, mainly because the apple documentation sucks. I’ve gotten past the parts that were initially hanging me up, mainly that you shouldn’t lock focus on the controlView inside drawRect: inView:, and just assume what needs focus locked, is locked. Who knew?!! Continue reading "iEatBrainz Bugs, and IndyKit work"Saturday, July 31. 2004Currently working on:So right now I’m tracking a bug in iEatBrainz in which the library xml file it’s reading and the actually library when talking through applescript aren’t matching, even when the application waits long enough for iTunes to synch out another update. My first guess was that perhaps there is yet another preset location that iTunes checks for music libraries and those effected might have multiple files which iEatBrainz is choosing incorrectly. However from the preliminary emails I’ve received I don’t think this is the case anymore. So it just occurred to me today that if iTunes Music Library.xml was read only the user wouldn’t notice using iTunes, and sure enought I’ve been able to reproduce the bug symptoms making the library file read only. I’m not sure if this is actually the reason for the reported cases but putting in a check will at least help narrow it out as a cause. The problem right now is that adding the check will require a new version of IndyKit. IndyKit is a little up in the air right now with other features that I’ve been working on. These features will effect both iEatBrainz and NicePlayer so that release won’t be right away. I’m rather excited though with IndyKit as I believe the classes I’m writing will be very useful to many applications. Once I finish with these classes I will be writing up actually documentation for IndyKit, and officially releasing it. Continue reading "Currently working on:" |
QuicksearchStatic PagesCalendar
ArchivesSyndicate This BlogShow tagged entries |
|||||||||||||||||||||||||||||||||||||||||||||||||
