Podcasting
So, I have been doing my monthly round up of really cool sites, and have been coming across a number of candidate Web sites using podcasting and / or multimedia solutions.
While I am not ready to tack any modules onto Drupal.org, I wanted to write about some low cost ways podcasting and multimedia can be added to a campaign budget. As I see it, the main benefit of adding audio and video in a campaign context is it is a direct appeal from a candidate to potential voters and donors and really gives people a chance to present themselves in the best light. Every campaign I know of has video of speeches and debates that probably should be shown in some context, and there are a number of really cheap ways to pull all this information into a site without a lot of effort.
First, Google Video and YouTube are great for video. While I have personally had some problems getting players to work reliably, the issues have mostly centered around the need for a well designed theme than anything else. There are a lot of workarounds even if you have a poorly designed theme - for instance, using valid XHTML, you really need to have a separate DIV surrounding any Flash player in a page. Also, if you are using nice_menus or something like that, you need to realize there are no reliable solutions for getting those menus to appear on top of your Flash. Move the Flash or the menus, something has to give.
Second, in terms of podcasting - most people know by this point that you can create a podcast from a Drupal site by uploading an mp3 file to a blog entry and pointing users at the RSS feed. But users will be users, and there are a lot of ways they will defeat themselves. I have worked with 3 campaigns that have more tech resources than me in terms of servers, laptops, desktops, network, etc. but who have no idea when it comes to recording audio to upload to a site. Campaign offices tend to be noise, ambient noise in a room can really degrade the quality of the audio and make otherwise good speakers sound like they are screaming in the middle of a factory.
If the user wants to record their own audio, they certainly can, and there are a lot of good open source programs for cleaning up audio files. Audacity is one, check it out on source forge. The application uses VST plugs just like Cubase and other professional audio tools, the most important one is the noise gate. Can really clean up a file, but realize there are no perfect solutions out there at this point. Quicktime can get the job done some of the times, but I really don't touch it unless I have to.
Another route to consider is using a third party service to record audio over the phone. The sound quality is necessarily limited to the bitrate for standard telephone calls, which can actually be a good thing because it necessarily limits the spectrum of noises that can enter the recording. Lots of little things that would be picked up in a regular PC recording (wind, subtle door noises, etc) are completely lost on a telephone recording. Or maybe the people at the campaign simply do not have the bandwidth to sit down at a PC each day to record their audio - this is a legitimate reason why people avoid doing podcasts.
Hipcast and Odeo are 2 services in particular to look at. They allow users to call into a phone line and leave a message that gets converted to an MP3 file that can be downloaded as an RSS feed. It is relatively trivial to modify the aggregator module to import those mp3 files, and there was an aggregator2 module floating around somewhere (way back in Drupal 4.6) that could be used for this purpose as well. Anyways, the long and the short of it is you can hack Drupal's existing capabilities to download mp3 files off Odeo or Hipcast, import them into your site, and actually have a podcast over the phone solution up and running with very little effort.
If you need to have more than one person on the phone at a single time, freeconferencecall.com offers a similar service (xml feeds that can be downloaded as a podcast) only for 2 or more people. I think you can get up to 254 callers on the line at once. To get to the podcast feeds, you need the conference call number you were issued when you registered as well as the pin code. You could actually organize a town-hall meeting style conference call, record it through FCC, and automatically put it up on a candidate's site. One word of warning here - people can use the same number and pin code to record their own conference calls, it usually makes sense to approve each call before it goes live on a site unless you are looking to do something that could be totally open to the public.
If you are looking for a solution with a personalized greeting and a custom conference call line (like an 800 number), Freeconferencecall.com does that also, but you are probably talking about a full blown VoiceXML solution at that point. VoiceXML lines offer a lot of features you are going to have trouble getting anywhere else, including voice command recognition, complete call recording, interactive responses (press one for English, dos for Espanol), etc. I found about 20 VoiceXML services while I was doing due diligence on the project, each with different pricing and capabilities. Google for the one that is right in your situation. We had great results with angel.com on a recent project where we had people call into an 800 line to record stories that were automatically transferred to a Web site. Generally, expect to pay a monthly access fee and a certain amount per minute.
VoiceXML services generally give you back WAV files at the conclusion of a call. To get a podcast running, you usually need to provide audio in an mp3 format. To get this to happen, expect to do some audio conversion. Lame is a safe bet for converting wav files to mp3, but also look at the ffmpeg wrapper for conversion as it handles errors a lot better and actually uses less memory than other services.
With VoiceXML services, you usually also have the option of robocalling. I am not going to get into that here, except to say that each service out there has it's own XML schema for handling events and it is totally possible to pass XML packets back and forth between Drupal and these services to handle actual calls. There has been a lot of talk about integrating asterix and Drupal as a way of doing this, I would like to offer that economic concerns make using a 3rd party service a lot more attractive for this purpose. Asterix is processor intensive more than anything else, and to make a lot of concurrent calls you need to have a lot of processor power. You also need the proper amount of bandwidth - there are a lot of resources on the Web explaining how asterix scales and it's fairly simple to determine the number of servers and the amount of bandwidth you would need to handle a particular level of bandwidth. On the other hand, robocalling typically occurs at set intervals - you make calls between certain hours of the day, on certain days, and only to certain households. That means, even if you have an optimal solution for robocalling in place, part of your cost is the expense of having this stuff sitting around for downtime.
VoiceXML services are great because you can record your message, have Drupal drive the actual placement of calls, and the VoiceXML service will report back the outcome of each call for reporting purposes. If you have bad numbers in your database, the service will tell you. If you have an IVR option for language there, the service will tell you. You can conduct surveys, polls, etc. though such a service and get instant results.
Anyways, this is a very general treatment of the topic, hope it comes in handy as we wind our way down to the last weeks before the elections here in the US. Just enough time to get a final week podcast up to round out the image of a candidate and persuade a couple of voters about what comes next. Always remember that the recorded word can come back to haunt you, remind candidates to stay away from promises they do not intend to keep.
I will be making a presentation on the topic at the next DC Drupal user's group meeting and releasing modules for integrating with Odeo and Freeconferencecall.com. I will also be releasing a generic framework for VoiceXML services sometime after the release of Drupal 5.0, I have been working on an event synchronization module that sends and receives data from VoiceXML services and maps data received to specific nodes. Anyone interested in working on these should contact me, there's no way I am going to get all this done by myself.
M

