Woof Moo is a native Android app for listening to WFMU, a listener supported, independent freeform radio station. You can:

The WFMU Server API is powered by KenzoDB, written by Ken Garson Systems LLC.



The app is split into major sections of operation, each represented by a navigation tab at the bottom of the screen, and an equivalent entry in the navigation menu .


The home section is shown when the app first starts. From top to bottom we see:

  1. A carousel of shows and recently archived episodes.
  2. Followed shows that are streaming now or later (not present if no shows are applicable).
  3. A pager rotating through each of the 4 live streams, showing what is currently playing.
  4. A set of tabs for various station-related information.

Most prominently, next to the pager in the 3rd item, is a button . Tap this listen button to play the stream displayed next to it. Swipe across the stream to show the other streams. The pager automatically cycles through each stream every 10 seconds.


The streams section lists each of the station’s streams in the form of a card, along with its current track and artwork. It offers an alternative way to start listening to a stream, or get track information.


The schedule section by default shows each of the streams as a tab, each of which contains a list of the upcoming shows to be broadcast over the next 7 days. If the show is currently live, its current track is shown. The listen button at the bottom of the screen offers another way to listen to this stream.

You can also change how the streams are grouped, using the Group By item in the menu:

Tap on a show to open a dialog box for that show. It contains a list of all its recently archived episodes, ordered by date. You can also follow the show from here (see later).

Tap on an episode to show the episode’s playlist and archived comments . Tap the listen button to play this episode, either now (interrupting what is currently playing) or next (by enqueueing the episode for playback after the currently episode finishes).

You can also get information about a specific track by tapping it. Play this track by tapping the play button in the toolbar of the popup sheet. Note that this requires the track to be timestamped.


The archive section is composed of main 2 parts:

Additionally, an I’m Feeling Lucky button opens a random episode from the archive.


A queue is a list of episodes, and is playing from top to bottom. By default there are no queues, so the section is empty (this isn’t strictly true, as there is always an ad-hoc queue, but it is hidden by default. See the FAQ entry for more details).

To create a new queue, tap the plus button in the top-right corner, and enter a name in the dialog box. Check the Download Episodes Automatically box to download episodes as soon as they are added to this queue.

Episodes can be appended to a queue. Tap the Add to Queue button in an episode’s dialog box to do this. Tap the listen button to play the queue from where you last left off.

Reorder each episode by long-pressing on it then dragging it up or down. You can tap on the icon to enter Selection mode, which lets you select multiple episodes, or drag without long-pressing on them before.

Play an queued episode or get information it by tapping on its name. To download the episode tap the Download button. As before, tapping a track will popup a sheet, and let you play the track.


When an episode has been downloaded, it will be listed in this section. You don’t need to be online to listen to downloaded episodes.

An episode can only be downloaded while it is part of a queue. When the episode is removed from its queue, any associated download is also removed.

Followed Shows

A show can be followed, as indicated by a star icon beside it. To follow a show means it is listed in this section. Follow a show by tapping Follow in the show’s dialog box.

Tap the Notifications button on the card of a followed show to:

If either is enabled, the button will add a check mark .

You can also Queue New Episodes, meaning whenever an episode of this show is archived, it can automatically be added to one of your queues. If that queue’s Download Episodes Automatically setting is enabled, it will be downloaded in the background.


Episodes and tracks can be bookmarked, and they will be shown in this section. This enables quick access to a specific episode of a show, or a track within an episode of the show. If the episode or track is still in the archive, you can play the item as well.

Note: Bookmarks are not associated with your WFMU account (the ‘clicky stars’ feature). There are only part of the app.

Bookmarks are like web bookmarks, in the sense that what they point to can be moved or expired. If this happens, try manually looking at the source of the bookmark. See this FAQ entry for more details.


The history section contains a list of every episode and track you’ve listened to, limited to 1,500 items or 28 days (whichever is shorter). As with bookmarks, you can get episode or track information, and listen directly from here.

The Player

When playback begins, a card appears permanently on screen. This is the Player, and it is always in one of these states:

To collapse or expand the player, drag the card up or down.

Transport Page

This is the middle page of the expanded player, and is usually where you start from. It consists of a dial and a small card containing the current track name. As before, swipe across the track name to change tracks.

The dial is an alternate way to express, and if you’re listening to an archived episode, control your position. The thin line around the outside of the dial is the “minute” hand of the clock. The thick line inside is the “hour” hand, representing progress within the episode.

Like an iPod® click wheel, drag it around to reorient yourself in the episode. The arrow on the dial points to where you are. One full rotation advances you by 1 hour.

The progress bar around the info button represents progress within the current track.

There is also a sleep timer function, available from the menu or by tapping the moon button . By setting a sleep time, playback will automatically be stopped at that time.

Playlist Page

Tap the button located at the bottom right to access the episode’s playlist page, or swipe over to it (the rightmost page). Tap the track name to popup information about the track. You can also quickly skip to a track by tapping its icon.

Comments Page

Tap the button located at the bottom left to access the episode’s comments page, or swipe over to it (the leftmost page). These are the comments on the episode. It is updated automatically whilst listening to live episodes. To add a comment, tap the plus button at the bottom right of the screen.

Note: Comments are not associated with your WFMU account. To post from your account, go to the episode’s web page. A link to this page is provided in the menu of the comments page.

Frequently Asked Questions

An episode or track shows a 404 error when I try to play it!

404 is the error code for a missing file. This usually occurs when the episode is no longer available at the expected address. Sometimes this is a temporary error, especially with specific shows. Check if it is available on the web site.

If the episode was added less than 28 days ago, but you are now over 28 days, it is probably due to the episode being moved from the short term to the long term audio archive. For the first 28 days of an episode it is archived with a higher quality audio format. After 28 days that file seems to be deleted, and it is re-encoded for the long term archive.

Unfortunately it is difficult to automatically convert the address from the short term to long term archive, so the best current workaround is to find the same episode in the archive, and add it again. This will point to the newly archived, long term episode item.

What is the ad-hoc queue, and why shouldn't I use it for downloads?

When, for example, an archived episode is chosen for playback, behind the scenes a queue is created, containing just this episode. This is the Ad hoc queue. Anything that was in the queue beforehand is removed.

For an episode to be downloadable, it must be part of a queue. When the episode is removed from a queue, its downloaded file is also removed. Therefore if the episode is in the Ad hoc queue and it has been downloaded, you must take care not to play a different episode, or the file will be removed its corresponding episode is removed from the Ad hoc queue.

Therefore the safest option is to create a dedicated queue, whose contents you explicitly manage yourself. Note that, as of version 2022.6.126, the Ad hoc queue is hidden by default. It can be made visible from the 3-vertical-dot menu in the upper-right corner.

How do I select the stream bitrate or format?

Either long press on one of the round buttons containing a speaker icon, or tap the three dot button in the Streams section.

How do I post comments using my WFMU account?

You don’t. Comments posted from within the app are currently not linked to any account. To use your account, go to the episode’s web page instead. A link to the relevant page on the web site is shown at the top of the New Comment dialog box.

It's a bit complex, isn't it?

Yes. The app was made from the ashes of an unfinished podcast player I was working on, and if you squint that’s basically what it still is. A show is a podcast, an episode is an episode of a podcast, a track is a chapter, etc. There’s even a silence skip feature hidden away. C’est la vie.

The app crashes on devices running Android 5, 6, and 7!

Mostly this seems to be related to a lack of memory. I have disabled image loading on these operating system versions as a temporary workaround.

Also, please keep in mind I’m just some guy with a single Android phone, so I can only do so much testing. Please leave Crash Reporting enabled in the Settings, to give me the best chance of fixing issues.

How do I download an episode of a show to listen offline?
  1. If you haven’t done so already, create a new queue (although the ad hoc queue is always present, it is not recommended that you use it).
  2. Find the episode you wish to add, either by selecting the show the episode belongs to, located in either the Schedules section or the vertically scrolling list in the Archives section. Tap the correct show, then tap the episode.
  3. Tap the Add to Queue icon in the top right corner, then select the queue you just created.
  4. Go to the Queues section, locate the queue you created earlier, and tap the episode you just added to it. In the dialog that opens, select the Download icon in the top right.

When you’re finished with the downloaded episode, remove the corresponding queue entry, and the download will be removed.

You can also mark a queue for Automatic Downloads. Any episodes added to it will be downloaded without your intervention. Enable this when creating the queue, or from the menu.

How do I get a notification when a live stream starts, or an episode is archived?

You must first follow a show.

  • Find the show in the schedules or the vertically scrolling list in the archive, and select it.

  • Tap the follow button in the menu bar.

From now on, if this show will live stream today it will be shown on the home page, below the carousel.

  • To receive a reminder when the show starts a live stream, tap the Notifications button on the show’s card, and check Live Streaming Starting.

  • To receive a notification when an episode of the show is archived, tap the Notifications button on the show’s card, and select New Episode Archived.

How can I change the order of the "section" buttons at the bottom of the screen?

Tap the More button at the bottom right, then drag each section to suit your needs. The first 4 sections are always visible.

How can I change the order in which streams are shown?

Select Reorder Streams from the menu of the Home, Streams, or Schedule section. Drag each item to the preferred order. You can also drag each card directly in the Streams section.

How do I save a downloaded episode as an mp3 file?
  1. Tap the corresponding episode in its Queue section, OR long-press on the episode in the queue to select it (you can also tap once on its icon).
  2. Select Copy Download to… from the 3-dot menu in the top right corner.
What's the difference between streaming and downloading an episode?

Downloading an episode transfers the entire episode to your device, whereas streaming splits it into 15 minute chunks (about 10 megabytes each). When you approach the end of one chunk, the next chunk downloads seamlessly.

Therefore you need to be online at the moment the next chunk is required. In this way, should you not listen to the entire episode, you haven’t wasted too much data.

As expected, live streaming requires being online constantly.

How do I sign in to third-party services (, Discogs, Spotify)?

Go to the app Settings page (using the navigation menu in the top left corner), and sign in to the respective accounts.

Note: You don’t need to install the respective service’s app to sign in.

From now on, when you display track information more options will be available.

How do I change tracks?

If the player is in a collapsed state (it occupies only the bottom part of the screen), swipe across the track name.

If the player is in an expanded (it occupies the entire screen), do one of the following:

  • From the Transport page (the middle page), either swipe over the track name at the bottom of the screen or drag the dial in a circular motion. Each dot on the outside represents a new track.
  • From the Queues page (the rightmost page), tap the track name, and choose play from the toolbar. You can also tap the track icon in the list, or long-press the track and choose Skip to Position from the context menu.