Archive for the ‘dev/dream’ Category

Morrigan Project media player – first alpha release

Sunday, February 7th, 2010

While development is still in early days, now seems like a nice time to gather some preliminary feed back. Hopefully this should give people a feel for what I am aiming for. Also I would like to catch any really nasty show-stopping bugs ASAP.

I have draft entries about some of the ideas I want to explore with this project which I will try and finish and post in the next few days.

Known issues:
- The playback engine implementation currently packaged, while being truly cross-platform, is somewhat flaky and will randomly reject certain malformed files.
- On Ubuntu (and other linux?) it will fail to play anything if a flash object is loaded. This is an issue with the non-free linux flash player.

License:
Obviously this is an alpha build and is intended for testing only. It is likely to explode randomly at any time. I have not decided on which (open source) licence to release under, so for now this alpha build is supplied “as is” – use at your own risk. For now, I reserve copyright on any content that is copyrightable.
These downloads contain 3rd party libraries: sqlitejdbc, mp3SPI, vorbisSPI and of course the Rich Client Platform.

Feedback:
Any and all feedback is greatly welcomed, particularly if you find a bug! And if you are feeling super keen, I have just set up a bug track at my mantis server here.

Download links:
Windows x86 32bit
Linux x86 32bit
Mac Cocoa x86 (i can’t test this one, so no idea if it works)

More platforms available on request.

dev/dream – awakening

Sunday, February 7th, 2010

My week.. well 5 days of coding are basically over, so to begin this entry, here is a transcript of my white-board-wiki todo-list as it currently is. These are not in order – on the board the sections are in a sort of circle.

General:
- Logging. it needs some.
- Handlers – fix my crap handler impl (this is an RCP thing).
- Icons – get some decent ones (ATM i am reusing terra icons).

Playback:
- back / pause buttons, etc.
- support multiple external playback engines.
- extra play order modes.
- read meta data (mainly track length).

Library:
- Queries (these will be savable sub-views of libraries).
- Store entry paths relative to source directories? (just an idea, might help with portability)

Playlists:
- save meta data.
- differentiate between saving metadata and saving the list content.

Preferences:
- configure playback engines.
- etc…

Of course, this does not cover any of the remaining big items on my list such as media repositories, meta data syncing and tagging. The next big thing to do is to take advantage of my newly externalised playback engine interface and write a decent one that makes morrigan actually usable for my every day needs. I have fond some promising leads on using DirectShow in java will probably start with this one. I know it will be windows only, but at least then morrigan will begin to complete with terra for compatibility. This is important – once I can start using morrigan instead of terra, I will have hit a strong mile-stone. And once I am using it with anger, I should be able to start properly hardening the code bade.

If anyone is interested in beta-testing, I should have a decent build to play with in the next couple of days. I can also make the beta source available, if anyone is interested.

dev/dream – end of ’session’ 1

Wednesday, February 3rd, 2010

Progress: I can add and remove files from a playlist and doubleclicking them plays that file… providing its a .wav. I tried copying across the playback code from musicman and it seems to work, until you give it a .mp3 and it throws a unknown format exception. *sigh* As soon as i have finished writing this i am stopping to eat dinner.

Since pictures tell far more, here is a sample UI screen shot:

Current issues:
- Can’t play mp3 (when it should).
- My implementation of “? extends AbstractHandler implements IHandler”’s execute() is really nasty but I can’t workout how I am *supposed* to do it.
- Standard java logging seems to be colliding with RCP – the console handler does not work. Needs further investigation.

fortunately, only the first of these is blocking. If i can clear that, then i can move on and start implementing the library.

dev/dream morrigan development week off to a late start

Tuesday, February 2nd, 2010

I was supposed to start yesterday, but Quilage stole Saturday and then I went back to my parents for a couple of days to pick up my luggage that took 3 weeks to get from Geneva to Epsom. Thanks for that, Thompson Travel. But I digress…

Initial progress is slow, but that is somewhat expected. Some time taken by re-familiarising my self with RCP stuff, the code I wrote before some time ago. But that all makes sense now and I have nearly finished a very basic playlist editor. All that is left is to link in the methods I have to read and write playlist files to the right bits of RCP. Once this is done, I get to actually try and make it play files.

This is the first major hurdle. Java is not renowned for its media APIs. To work around the myriad of different ways of playing media, I plan to abstract out the actual playback engine so that it can be pluggable. This should also help with cross-platform support. If I am really lucky, I should be able to use DirectShow on Windows and GStreamer on Linux. As for OSX, that’s an SEP.

The first iteration will only be able to play mp3 files, and will use the very simple playback mechanism Tsuki Chama uses in MusicMan. I am lead to believe its cross-platform (I should probably test this) and will do for now as I start to design the playback abstraction layer.

I have planned my work for this week into 4 slightly vague user stories.

1. A user can add local files to a playlist and play them.

2. A user can maintain a library of local media.

3. A user can check media out from a remote media repository.

4. A user can sync metadata against a remote media repository.

I know these are a little vague, but as most of the design process is exploratory they are a sufficient guide for now. Also these clearly don’t cover all the features I want to add, this is just what I think I can do in a week :S. And obviously at the moment, I am still on story 1.

I have a strange flow-chart on a scrap of paper next to me that describes all the interactions I want in the system. Soon I will digitise it and discuss the ideas.

My sister’s letters: todays reading

Wednesday, December 23rd, 2009

My sister has an amazing imagination and has started semi-regularly emailing me the most bizarre messages. Since these are far too good to keep hidden, I will here share them with the wider world. I have a small back-log, so I will post them every now and again until I run out and have to wait for more.


Subject: todays reading

todays reading is from luc chapter 6 verses 2 – 11
on the five night, the angles came down from heaven and showed them selves to mary !
” i know the last time we was here we said you were gonna have a babbie , but not this time , this time we have a little surprise for you ( not that last time wasn’t a surprise ) ”
the angels said together – in a variety of different accents ! after the angels had dissapeared promising to return with more information once they had checked with god on what the nitty gritty were mary thought to herself … she thought and she thought until she really didn’t have anything to think about apart from the things that she had thought about and she didn’t really see much point in thinking it all over again. so mary was alone – desperate for someone to talk to , so she went to find her llama , tilly . tilly was a magical llama. mary had rescued her from the big fire when darf vader was looking for his glasses and had gone ramparging through all the towns looking for them – he couldn’t see very well as he didn’t have his glasses so he kept on bumping into thing you see. so yes tilly was a magical llama and had two red feaths tied in a tuff on the top of her head . mary had tried to remove the feathers but however hard she tried – she couldn’t .

suddenly a great chorus of angels decended upon her asking when the next bus to cranley was.
” erm … i think the next one is at 3. so yeah – in about 4 hours. ” ” danke – merci – thank ya – tack – ขอบคุณ – Şükürler ” ( again they are from all over the place – even heaven has problems with imagrants )

so the angels and mary waited , and tilly , for the next bus – talking about fish and chips and the problems fish mongers have when the weathers bad !!!! ” all that washing – how are they meant to get it all done with a load full of turnip pealers under their stairs !? ”
no one knew the answer – so jesus was called for – jesus said they had special ways of doing it . they usee green scrubbing brushes !!!!! that always works ! ” oh thank you great one !!! ” the people cheered !

” you really are trully special – now go and clean the goats !!!! ” yelled mary !
jesus went prooving that although he was the son of god – he was willing to do normal , mortal things like cleaning goats !!!!

here ends this mornings reading !

dev/dream – the beginning

Tuesday, December 8th, 2009

(@HolyHaddock told me I should blog this project, so here it begins…)

So the plan goes something like this:
1. book a week of work with the entire plan of completing a hacking project in only 7 days.
2. plan project.
3. …
4. profit!…. or at least, by the end of the sprint I will have something that a) works and b) is useful.

The thought behind the current codename for this mad venture: For a long time I have believed that my body naturally craves a 30 hour day; 8 to 10 hours sleeping followed by around 20 hours awake time. As this project will be entirely in my own time, I plan to experiment with detaching my self from daylight and find out how long I keep going. The name reflects the state I expect my brain to be in about 2 “days” in. And on that subject, I will need a new name to replace “day”… “cycle”? “loop”? … suggestions on a postcard.

For this project I have booked the first week of February 2010 as vacation – Monday to Friday. However, you will no doubt spot that before I mentioned “7 days” – the idea is to start on the Saturday morning of the first weekend and continue through till the following Saturday morning… at which point I will endeavour to use the weekend to recover from the shock and resume some vaguely normal sleeping hours.

And now that the time resource has been allocated, I need to choose from the list of possible things to hack:
1. Quilage
2. Morrigan (my media player)
3. Some home automation and making things out of copper pipe.
4. “Remote Widgets” idea.
5. (some other idea…)

Currently my minding is thinking that Morrigan is the best project to work on;
- It is fairly self contained.
- I am the only developer, so I am not dependant on anyone else yes.
- I really really want the end result.
- I have a very clear idea of what I want it to do.

Though perhaps that list of reasons is not that helpful – all of those could be applied to the Remote Widgets and the home automation stuff. Might as well fall back on this reason then:
- Because I want to.
It works well enough for now.

Obviously a major part of any plan is: What could possible go wrong?
1. Getting blocked – waste loads of time because I am missing some critical piece of information.
2. Food – I am bad a remembering to eat at the best of times…
3. RSI – Hopefully this ugly beast will not rear its head too early on in the project… that’s all I can really hope for really :S.

Hopefully between now and February I will manage to mitigate at least the first 2 risks. As always, suggestions welcome.

And finally, I should probably explain some motivations behind my obsession with planning this carefully: When it comes right down to it, I see this as a major test of my skills – in planning as much as the actual development. I hope to take all that I have learned over the past year or so and really put it into action. By having a clear plan I hope that I can perform as efficiently as possible in the time available. Having a plan should also ensure that by the end of the week the effort and time that I have invested will have paid off in the form of a functional result.

Over the next few weeks, I hope to cover the following topics:
1. Risk mitigation – not getting blocked and remembering to eat.
2. Morrigan – what I think I can achieve in 1 week.
3. Some of the other possible projects I could work on.
4. dev/dream 2 – the awakening??? (ie, what I would do if i were offered a second one – for comparison with what I then think after the first)

I might also try and write about some of the other things on my TOBLOG list.