Saturday 23 May 2009

Mormon Radio - In Latin!

Mormon radio is available at http://radio.lds.org


Sadly, the media transport is RTMPT, a proprietary adobe format, which limits reception to those with an adobe flash plugin. That also means x86 PC architecture.


This excludes all streaming audio devices in the world except Adobe Flash. Oh - and there will be iPhone support soon.


How can this seem nearly OK? There are loads of widely supported mechanisms for streaming audio - why choose one with such limited support? This is like publishing the bible only in Latin - because everyone speaks Latin - or at least everybody who needs to read the Bible speaks latin. And what's so special about the iPhone that cuts out my streaming radio?

(Read more at: http://tech.lds.org/forum/showthread.php?t=3119)


Vatican radio on the other hand does it quite well:

http://www.radiovaticana.org/en1/diretta.asp


It supports wma, real (and mp3 in the left column) and no need for any freaky platform-restricted plugins.


So, I'm a church member and I can wake up to Vatican Radio, but not Mormon Radio - why, exactly?

Someone has to make an active decision and sign a large purchase order to do things as wrong as this.

However, by standing on the shoulders of advocates of software freedom, using wireshark to look at the network packets and recognize RTMP as the protocol, swfmill to take to pieces the flash radio player to get the audio addresses, and flvstreamer to dump the audio, I managed to cobble together a system that allows the stream to be converted into an MP3 stream so that mp3 players can pick it up. I've called this the Wycliffe hack in commemoration of John Wycliffe who strove to make religious material available to everyone.

flvstreamer/flvstreamer_x86 -v -r rtmpt://fls2g1.services.att-idns.net/al1/8004_8806_01 -s http://radio.lds.org/mc_files/flash/theMormonChannelPlayer.swf> -p http://radio.lds.org/eng/listen-now -o /dev/stdout > RADIO.flv


Of course I don't want to dump to a file called RADIO.flv, I want to convert the stream to mp3, but commands like this work:

cat RADIO.flv | ffmpeg -f flv -i - -f wav -


if they read from flvstreamer stdout, they fail!


So while I've solved the hardest problem, I need to sort out the glue.

Saturday 2 May 2009


About a year ago I was called as second councillor to the Bishop in Wakefield Ward.

One of my responsibilities is to arrange the meeting programme and to give out speaking assignments, and then conduct the meeting for four months of the year.

I like to be well prepared for things which would otherwise be embarrassing, so to help me I produced an open office writer template that has four pages.

The first page is a meeting programme, with some grey fields to be filled in with things like,
  • the date and meeting type
  • the person conducting the meeting
  • the speaker names and topics, and duration etc.
By filling this in I get a regularly formatted meeting programme which helps me when conducting the meeting.


The bonus, however, is pages 2-4, which are speaker assignment letters and are automatically filled in for me. They inform each of the speakers of
  • the date and topic
  • how long they should plan to speak for and at what time they should finish
  • what other topics will be addressed in the same meeting
  • some tips on good preparation
  • who to contact for further information
So I write out the meeting programme and the computer generates a helpful invitation letter which I can edit if particular speakers need additional information or encouragement.

And I hit print!

Recently the template broke because I used a variable date internally which now (I guess) seems to conflict with some changes in OpenOffice 3. As OpenOffice documents are zip files, the simplest fix was to unzip the template and do a search and replace on the document xml, to replace date with mdate:

$ mkdir t
$ cd t
$ unzip ../vSacrament\ Meeting\ Assignments.ott
$ sed -i -e 's/name="date"/name="mdate"/g' content.xml
$ zip -r ../x.odt .


And then open and re-save the document in OpenOffice