Monday, 25 December 2006

An early x-mas present from Nullsoft

After several months of struggling with Winamp's faulty plug-in submission form—I first submitted in late September and was informed in December that it was rejected due to a broken site—Nullsoft finally delivered me an early x-mas present and posted the Remote Speakers Output Plug-In on Dec. 24th!

They have not had a chance to review the plug-in itself since they do not possess an Apple AirPort Express. So for any of you who have used the plug-in extensively, please visit the plug-in's page on winamp.com and post a review. Your help would be much appreciated.

And don't forget to submit your suggestions for the next major version in the entry below this one. I have started researching some of the new feature suggestions, but there is still plenty of time to get your wish list to me.

Posted by emilles at 2:33 PM in Software

Monday, 20 November 2006

What would you like to see in version 2.0?

With version 1.0 of the Remote Speakers Output Plug-In released and submitted to Winamp for distribution, the time has come to talk about its future direction. I have a couple ideas about what I would like to add or fix for 2.0—the major of which are:

But I am more interested in hearing about what you would like to see change. So please post a comment here to cast your vote for any of these or to suggest something else. I have heard from a number of you already but I would like you to resubmit your requests here for all to see and consider. I'll do my best to work on the most requested features. When I have selected an item to implement, I may post a new entry here to request more information. So keep checking back for updates once you've posted a comment.

Posted by emilles at 7:02 PM in Software

Saturday, 28 October 2006

Remote Speakers Output Plug-In 1.0

The day has finally arrived! After many months of work, today I am releasing version 1.0 of my AirTunes solution for Nullsoft Winamp and Ventis Media MediaMonkey, the Remote Speakers Output Plug-In. My Apple AirPort Expresses are buzzing with excitement! This version contains only a couple minor changes from 0.13:

  • Streaming audio from a URL should behave now
  • The installer received a visual update
  • The plug-in is compiled without debug information and with optimizations

Many thanks to all who helped me work out all the bugs and get to this point. And to those who have donated money, a big thanks to you as well. I'll be taking a little time off, but there will be an announcement posted here shortly regarding the future direction of the plug-in. As always, go get the plug-in, enjoy streaming music to your remote speakers and drop me a line if anything doesn't work as it should.

Posted by emilles at 3:19 PM in Software

Saturday, 30 September 2006

Remote Speakers Output Plug-In 0.13

Lucky number 13...(fingers crossed). This is a momentous release of my AirTunes solution for Winamp and MediaMonkey. The Remote Speakers Output Plug-In has finally been refactored to decouple receiving audio data from the player and sending audio data to the remote speakers. Why is this important, you ask? Before I made this change, the responsiveness of the player was pretty bad because execution was held up in the output plug-in as soon as the buffer in the AirPort Express filled. Take a look at how poorly the spectrum analyzer updates with a previous version. Now, it should be back to normal—bouncing along with the music, as you would expect.

With this, the last major milestone I have set for the code, the plug-in is soon to be submitted to winamp.com for widespread distribution. I just need all of you to run this version and get back to me with any problems that may have been introduced by this large and complex change. Hopefully nothing major rears its ugly head, but please let me know right away if anything does.

So, on that note, thanks to all of you who have sent or will send comments and bug reports. I can finally see the light at the end of the tunnel... Go download the new version of the plug-in and enjoy streaming music to your Apple AirPort Express. Cheers!

Posted by emilles at 3:12 PM in Software

Sunday, 24 September 2006

A little weekend maintenance for the web server

I spent a few hours updating the web site this weekend. It was in need of a lot of attention. All of the following changes were made:

  • Updated blojsom from 2.30 to 2.32
  • Restored XHTML 1.1 compliance to all blog pages
  • Added HTML 4.01 Strict comliance to all pages I authored
  • Reduced complexity of main CSS stylesheet used on pages I authored
  • Incorporated YUI reset and fonts CSS stylesheets on pages I authored
  • Added page counter to footer of all blog pages
  • Added Google AdSense ads to template for blog entries
  • Added security code CAPTCHA to blog comment form
  • Enabled email of new comments to myself for immediate approval/deletion
  • Enabled comment moderation so only approved comments appear
  • Separated Remote Speakers Output Plug-In screenshots out onto separate page
  • Added screenshot of Remote Speakers Output Plug-In configuration dialog
  • Moved Remote Speakers Output Plug-In FAQ and Screenshots pages into out_apx directoty

Posted by emilles at 12:43 PM in Stuff

Tuesday, 5 September 2006

Remote Speakers Output Plug-In 0.12

Well, I got the itch and decided to work a little over Labor Day weekend. Here is the latest and greatest Remote Speakers Output Plug-In for Winamp and MediaMonkey. Did I ever mention that I love AirTunes? The biggest change is the addition of the remote speaker selection submenu to the menubar for Modern Skins, as demonstrated by this screen capture:

screenshot of submenu from menu bar

Also in this build, I have added support for per-user configuration, fixed a few small details like eliminating the connect dialog "flicker" when a connection can be established quickly, which is the most common scenario. And I have increased performance a little by using a lighter-weight process synchronization construct. Enough technobabble already...if your interested, you can see all the changes made for this release in the complete history file and the source code.

I am listening and respondig to your comments and suggestions. Next on the list is to provide asynchronous writing to the AirPort Express so visualization doesn't get so choppy due to the use of blocking (i.e. synchronous) I/O. Keep those comments—and compliments—streaming in. And please don't forget to click on an advert or two now and again... Cheers!

Posted by emilles at 10:15 PM in Software

Wednesday, 30 August 2006

Remote Speakers Output Plug-In 0.11

Thanks everyone for the bug reports; please keep 'em coming. This month I have fixed a couple more problems and cleaned up the code base a little. So, here is a new release of my AirTunes solution for Winamp and MediaMonkey—the Remote Speakers output plug-in.

Also, if anyone out there has Graphic Design experience and would like to help out, please drop me a line. I still need to put together a couple banners so I can submit the plug-in for widespread distribution.

Posted by emilles at 9:45 PM in Software

Monday, 31 July 2006

Remote Speakers Output Plug-In 0.10

Time to make one last push towards final release. This release of the Remote Speakers output plug-in has a couple stability fixes and is the first to be compiled with debug information disabled and optimizations enabled. Please let me know right away if you experiance any problems. If I don't hear anything in a couple weeks, I'll be releasing to winamp.com and mediamonkey.com for widespread distribution.

Posted by emilles at 11:15 PM in Software

Tuesday, 11 July 2006

Remote Speakers output plug-in installer and banner design contest

My application for a license with Apple to utilize Bonjour for Windows has finally been approved. Now that I can legally do so, it has come time to build and distribute an installer for the Remote Speakers output plug-in. No longer will you need to download and install Bonjour separately. I have wrapped version 0.9 in an installer and made it available; please download it and try it out. I need to know if there are any problems with setup, as it is one of the very last things I need to certify before declaring the project ready for "final" release.

With this iminent milestone in mind, I am also looking for help making the necessary banners that are required by winamp.com for final submission. I have little graphical design skill, so I am proposing a little contest. The winner will have their name forever etched into the plug-in as well as having their artwork on display at winamp.com representing the Remote Speakers output plug-in. What I need from you are two gif/jpg banners as follows: One banner should be 178 x 75 and the other 275 x ? (winamp.com is not clear on the height of the second image). Both banners should share the same theme—the smaller of the two is intended to be a "thumbnail" of the other.

My initial thoughts are to incorporate the elements of the Winamp logo and something representing an AirPort Express (try to avoid directly using the Apple logo as I have no legal right to use it) or the more abstract notion of remote speakers with something representing the wirless transmission/streaming of audio between the two. But you are welcome to stray from these initial ideas as much as you deem necessary. Feel free to browse winamp.com to get an idea of the size and utilization of the banners. If the winning submission is of sufficient quality, I may consider using it in all communications regarding the plug-in (including this website) with proper credit to the artist. This is your chance to contribute a little something to the open-source community. Please send your submission to me by July 31st, 2006.

Posted by emilles at 10:33 PM in Software

Sunday, 18 June 2006

Remote Speakers Output Plug-In 0.9

The work to add a submenu to Winamp's context menu that allows quick selection of an AirPort Express is complete. Thanks to Ioannis Epaminonda for sending me some example code to start me off and answering several questions along the way. I have not added the submenu to any of the modern skin menu bar menus, since I don't use a modern skin. But that could be done rather easily if someone out there has a strong desire to choose their AirPort Express from there. Also, MediaMonkey doesn't seem to support this behavior; I don't think it implements the full set of IPC calls that Winamp does. I may be wrong... Anyways, here is a screen capture from my instance of Winamp so you can see what the new submenu looks like.

screenshot of submenu from context menu

So, go get the laterst version of the Remote Speakers output plug-in, try the new submenu out and as always let me know if anything is broken. And don't forget, those of you who are interested in playing tracks on your computer speakers and remote speakers simultaneously, take a look at Ioannis' multiple output plug-in. He and I have worked hard to ensure both plug-ins can be used in concert.

Posted by emilles at 1:23 PM in Software

Thursday, 15 June 2006

Update on status of Remote Speakers Output Plug-In

Well, the latest version of the plug-in has been out for over a week, and so far no new stability issues have been reported. This leaves me with a warm and tingly feeling as the march toward 1.0 continues along smoothly. Remember, if you have experienced any problems with the plug-in—even if you have reported it in the past—please drop me a line.

And to give you a little taste of what is to come, one of my most personally desired features is almost complete. I have received some help from the maker of the multiple output plug-in, and I have added a submenu to Winamp's main menu that allows quick selection of an AirPort Express. This reduces the time to switch between remote speakers—I often go from upstairs to downstairs and this little menu allows me to keep the music going without a lot of fiddiling around. Of course, outputting to both AirPort Expresses simultaneously would be even better. But any progress is a good thing. Keep an eye on the site; I should have a version with the quick-access 'Remote Speakers' submenu by the end of the week.

Posted by emilles at 3:36 PM in Software

Sunday, 4 June 2006

Remote Speakers Output Plug-In 0.8

As I close in on a "final" version of my Apple AirPort Express audio streaming plug-in for Nullsoft Winamp or Ventis Media MediaMonkey, it has come time to release another pre-1.0 version. The changes in this build are focused on stability. A number of users have raised issues and I have done my best to respond; thank you all for that. Please download the most recent version of the plug-in and forward me the details of any problems you encounter. Even if you have submitted an issue for a previous version, please submit the problem again—I have no bug tracking system...for better or worse.

I was never expecting this project to have been such the undertaking it has become. The plug-in is being used in all kinds of scenarios that I never anticipated. And with the scarce API documentation provided for Winamp, it is difficult at times to keep everything flying straight and true. But I soldier on and things are improving—just think about how long the direct sound or wave output plug-ins have been around to have all their little kinks worked out...

As always, new feature requests are welcome, but be patient as I am not planning on adding any new features until after release 1.0 is cut and I can take a break to think about the future direction of the plug-in.

Posted by emilles at 10:48 AM in Software

Tuesday, 30 May 2006

Under Control

I've been working on the Remote Speakers output plug-in for a couple months now and there have been quite a number of changes. However, up to this point I have just been taking daily snapshots of the code base into zip files (archaic...I know!). This has left a number of changes intermixed and has made it less-than-possible to back out of anything with ease. I decided it was time to put my code into a source control repository. I've use Microsoft Visual SourceSafe in the past, but am annoyed by M$'s lack of attention to the product. It is seriously stuck in the late 80s. I could go an an "I hate VSS" rant, but I'll lay off for now. Come to work and watch my expression when I am told a mildly complex change needs to be backed out of a release if you are interested to know how I feel about SourceSafe.

Anyways, I took advantage of my time at the JavaOne conference and talked to a couple vendors of source control tools. And the one that really impressed me was Perforce. It is commercial software, however it can be used for free with certain restrictions. Perforce has the standard set of source control tool features, of course; but what really piqued my interest is: 1) support for change sets—VSS is pitiful in this area and 2) a graphical view of file history—you can see at a glance where branches, merges, renames, etc. occurred in a file's history. No more constructing a mental picture of a files history from a list—Perforce provides the picture complete with pan and zoom.

I downloaded Perforce and populated the repository with all my daily snapshots one fine Sunday. The viewer initially took some getting used to; it doesn't do things quite the same as VSS or CVS. But once I got the hang of it, I was immediately empowered. Making changes for a release can be done with far greater confidence. I can now make multiple changes at once and keep them separated with ease. And working with change sets is a dream come true for a VSS user. Thank you Perforce development team! Send me your change requests—I am ready to handle them with much greater speed. Now if I could only get Perforce installed at work...

Posted by emilles at 9:41 PM in Software

Sunday, 28 May 2006

Blog server up and running

Memorial Day weekend is upon us and I finally got a chance to look at some blog server software and get it installed on my web application server. This should pep up the look of my site quite a bit and make it much easier to use for all. Now I don't need to mess with a lot of raw HTML. I had been wanting this pretty much since the day I revived my web site. I can't believe I didn't just start out with this. Let me know what you think of the new look and feel.

Posted by emilles at 11:48 AM in Stuff

Tuesday, 23 May 2006

Progress continues

I continue to work towards release 1.0 of the Remote Speakers output plug-in. A number of stability issues have already been corrected, but several remain. If you are experiencing a problem with the plug-in, you should send me an email with details right away. Once I cut release 1.0, I'll be taking some time off, so the window of opportunity to have your issue fixed is closing. Thanks again to all who have submited problem reports and replied to requests for more information. Also, let me know if there is a feature you'd like included; I may not get them all into 1.0, but I'll keep them in mind for future releases.

Posted by emilles at 12:00 AM in Software

Saturday, 13 May 2006

Perspective on JavaOne

I'm back from a busy week at the JavaOne conference in San Francosco. What an experience it was. More than 10,000 software developers were crammed into a convention center and fed substandard, catered meals and all the free caffine we could handle. I learned quite a bit and even got to meet some of the authors of the Java books I have read over time.

It looks like mobile computing is going to be the next big area of great expansion and innovation. From what the Motorola rep said at their booth, I should finally be able to get my hands on the Motodev development tools and be able to unlock my phone so I can write and put some Java apps on it. I can't wait until I get a free week to see what I can do with my phone—it is so boring with just factory stuff installed.

I am also gong to make an effort to figure out Ajax, which seems to be the next buzzword of the times. I have already got a big book and I just need to carve out a few evenings to read it through and build some demo pages/apps at home. Who knows...I might learn enough to make my lame looking web pages a little more attractive and interactive.

Posted by emilles at 12:00 AM in Stuff

Sunday, 30 April 2006

The secret is out—Remote Speakers Output Plug-In 0.7

In addition to releasing an updated version of the Remote Speakers output plug-in today, I am also releasing—for the first time—the source code! Now you can see what the plug-in is made of and maybe even contribute to the project. The source is released under the GPLv2 license. Get it all here.

Posted by emilles at 12:00 AM in Software

Wednesday, 19 April 2006

Remote Speakers Output Plug-In 0.6

Finally, no more clunky IP addresses to be lookep up and typed in. I have completed automatic discovery of remote speakers using zero-configuration networking protocols. You can simply pick remote speakers from a simple drop-down list. And this list updates automatically as remote speakers come and go on the network. Unfortunatley, you need to grab and install Apple's Bonjour for Windows separately. I'll do my best to make an installer that includes this package before I release the plug-in as 1.0. Get the latest version here.

Posted by emilles at 12:00 AM in Software

Thursday, 13 April 2006

Remote Speakers Output Plug-In 0.5

At the request of several people, I added in sample rate conversion to support an arbitrary input sample rate. I had originally figured this as a low priority item, but I was in limbo waiting for a book on zero-configuration networking to arrive so I thought I would take a stab at it. I managed to find a high-quality, open-source library for sample rate conversion. However, resampling tends to eat up a lot of CPU. I'd like to hear your opinion on the quality vs. performance of the library I chose. Get the latest version here.

Posted by emilles at 12:00 AM in Software

Tuesday, 11 April 2006

Remote Speakers Output Plug-In 0.4

I removed the Winamp moniker because I just found out that MediaMonkey can use the plug-in as well. Additionally, I fixed playback of Internet radio streams in both Winamp and MediaMonkey (there were two separate issues). Thanks again to the users who submitted issue reports and fed me with extra information on-demand to get these issues resolved. Get the latest version here.

Posted by emilles at 12:00 AM in Software

Tuesday, 4 April 2006

Remote Speakers Output Plug-In 0.3

With the help of some very dedicated people, I was able to remove dependence on the Microsoft Visual C++ Redistributable Package. This fixes the issue of the plug-in not loading for quite a number of people. Plus it keeps in line with my goal of not depending on any 3rd-party installs. Thanks again to those who stuck with me through many attempts to fix this mysterious problem. Get the latest version here.

Posted by emilles at 12:00 AM in Software

Sunday, 2 April 2006

Remote Speakers Output Plug-In 0.2

Thanks to everyone who has sent feedback on the plug-in so far. I have fixed a couple issues that people have reported. Plus, I have added support for password-protected remote speakers in this version. As always, let me know how you like the plug-in and if you find any problems. The march towards 1.0 continues forward. Get the latest version here.

Posted by emilles at 12:00 AM in Software

Thursday, 30 March 2006

Some software items from the archive

I dug up some oldies but goodies from the archive. First, I have an updated version of the YMAMP Winamp input plug-in. This great Sega Genesis emulator audio dump player had a couple problems seeking, adding and removing tags and playing compressed files. I fixed all of these problems and cleaned up the code somewhat. Second, some of my odds and ends for Java and C development have been posted. Some good general-purpose items have been included. You can find them here.

Posted by emilles at 12:00 AM in Software

Tuesday, 28 March 2006

Remote Speakers Output Plug-In 0.1

After two long years of putting it off and researching to see if it was truly possible, I have finally managed to create a plug-in for Winamp that streams audio to my Apple AirPort Express. Unlike a few of the other options available, this plug-in does not require any additional 3rd-party libraries or packages (like QucikTime or the .NET framework) to download and install. Plus, it runs completely within the Winamp process space; it does not need iTunes or any other program to be on the execution path. There's just one file to copy to the Winamp plug-ins directory. And all major Winamp playback operations (play, pause, stop, seek, next/prev track, set volume) are supported. Get the latest version here.

How It All Came To Be

I love Apple's AirPort Express remote speakers capability (AirTunes). It allows me to ditch the old fifty-foot audio cable that once connected my computer to my stereo receiver. However, I have a lot of audio files that will not play in iTunes because of its lack of a rich set of input plug-ins. I badly desired a way to stream audio from Winamp—which has years of input plug-in development behind it—to an AirPort Express. There were a number of open-source projects available on the web, but none of them were very good (to be brutally honest). So, I set out to build a Winamp output plug-in myself but there were a lot of hurdles to overcome.

Enter Jon Lech Johansen (aka Mr. DVD). He managed to figure out the protocol for communicating with the AirPort Express to stream audio. His little program JustePort was able to send a single track, which was just the start I needed. Using the source for JustePort as a guide, I was able to craft a bare-bones Winamp output plug-in that could stream audio to an AirPort Express. The initial version required the .NET framework to run (just as JustePort did). But I don't want to have that 100+ MB monstrosity installed on my box and I bet most Winamp users don't either. I wanted to get my plug-in reduced to one file with no 3rd-party installations required.

I stumbled around Google to find another open-source project by Marcus Glocker and Marc Balmer. These two ported JustePort to Linux—in the form of rtunes—which meant they couldn't have used the .NET framework. I used their port as a guide on how to get audio over to the AirPort Express without the aid of the .NET framework. This work led to a plug-in that was self-contained and a mere 300 KB.

Next I needed a way to configure the plug-in. JustePort and rtunes took in configuration on the command-line. This wouldn't work for a proper Winamp plug-in. So, I busted out Visual Studio and mocked up a proper (albeit minimal) configuration dialog box. With a lot of web page reading and some trial-and-error, I was able to figure out how to display a custom dialog and handle all the callback messages. Now I could prompt the user for configuration options via the GUI. And there were some nice procedures available in the Win32 API for reading and writing an INI file. They came in quite handy for persisting the user's selections.

It was time to tackle support for major playback functions like play, pause, stop, etc. None of the existing open-source projects on the Net were really meant to do more than one-song-at-a-time utilities, so I was in new territory. I dissected the Winamp interface and put together a fully-functional plug-in that responded to all the events that Winamp sent. I played, paused, stopped, jumped around the playlist and more to test it all out; after a few hours work, everything was up and running.

With all of this in hand, I figured I should give some of you a chance to enjoy the fruits of my labor. Thus, I bundled the DLL up with a (nice) README and released it as 0.1. I still am looking to add support for password-protected remote speakers and automatic discovery of remote speakers before I release the plug-in as 1.0. But I definitely think 0.1 is a stable and workable version. Please let me know what you think of it and if you find any issues that you think should be fixed before an official 1.0 release.

Posted by emilles at 12:00 AM in Software

Monday, 27 March 2006

Web site revival

I finally got the web site back up and running. It's original purpose of assisting me in getting a job was complete and it was put to rest. However, I felt it was time for a revival and a new mission statement: disseminate my computer know-how to the world at large. That's right, you can now benefit from all the times my family and friends have asked me how to do something with their box. It will take some time to populate the site, so please bear with me.

Posted by emilles at 12:00 AM in Stuff