Help
WFMU (formerly known as Woof Moo) is now the official Android app for WFMU, a listener-supported, non-commercial radio station in Jersey City, NJ.
Features
- Listen to a live stream or archived episodes of shows.
- View a schedule of upcoming shows.
- Download episodes for offline listening.
- Follow shows and get notified when a show starts live streaming or an episode is archived.
- Control the app in your car using Android Auto.
- Interact with last.fm to track (aka scrobble) the music you listen to, Discogs for track information and collection management, or Spotify to add tracks to your likes or playlists.
- Home screen widgets (version
2024.09.273
or later).
The WFMU Server API is powered by KenzoDB, written by Ken Garson Systems LLC.
Terminology
- Each stream has a weekly schedule of shows.
- Each show has archived episodes.
- Each episode has a list of tracks, which is its playlist.
- You add episodes to a queue, then play the queue in sequence.
Sections
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 .
Home
The home section is shown when the app first starts. From top to bottom we see:
- A carousel of shows and recently archived episodes.
- Followed shows that are streaming now or later (not present if no shows are applicable).
- A pager rotating through each of the 4 live streams, showing what is currently playing.
- 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.
Streams
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.
Schedule
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:
- By Stream: Each tab represents a stream containing the week’s upcoming shows. This is the default.
- By Day: Each tab represents a weekday, and the shows being broadcast across all streams are ordered chronologically.
- By Day and Stream: Each tab represents a weekday, but episodes within each tab are grouped by stream.
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 queuing the episode for playback after the current 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.
Archive
The archive section is composed of 2 main parts:
- A horizontally scrolling list of cards representing the recently archived episodes of all shows. Tap an episode to open a dialog box for that episode, containing its playlist and comments.
- A vertically scrolling list of every show in the archive.
Additionally, an I’m Feeling Lucky button opens a random episode from the archive.
Queues
A queue is a list of episodes that play 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).
Queue is a misnomer. Strictly speaking, the episode at the head of a queue is the item currently playing, and the rest of the queue is what will play next. More accurately the app uses a “Episodes List,” where the currently playing episode can be at any position in the list.
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. This setting can also be controlled using the commands in the Automation section of the menu, along with automatically removing the episode or the download when you finish playing it.
Episodes can be appended to a queue. Tap the Add to Queue button in an episode’s dialog box to do this. You can choose to add the episode at the start of the queue, after the episode that is currently playing (next), or at the end of the queue. 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 a queued episode or get information by tapping on its name. To download the episode, tap the Download button. As before, tapping a track will pop up a sheet and let you play the track.
Downloads
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:
- Set a reminder alarm for when this show next starts a live stream (this requires you to grant the “Allow setting alarms and reminders” permission).
- Show a badge, a notification , or both when an episode of this show is archived.
You can also subscribe to an episode, 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 automation setting is enabled, it will be downloaded in the background.
Bookmarks
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). They 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.
History
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:
A collapsed state at the bottom of the screen. The current track’s name and artist are displayed. To change tracks, swipe across the track. To toggle play and pause, tap the play/pause button.
An expanded state covering the entire screen: The card is split into three pages, each of which can be accessed by swiping left or right.
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 pop up 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 while 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.
Home Screen Widgets
As of version 2024.09.273
(September 2024), the app provides home screen widgets that display information from various sections of the app. Access them by long-pressing an empty area of the device’s home screen (or long-press on the app icon to show only the widgets provided by the app).
Tap the title or icon of any widget to open the corresponding section of the app, or tap the refresh button to manually update the widget’s contents.
Queues: Lists every queue along with their contents. The current queue (which plays by default when the in-app play button is tapped) is indicated with a check mark. The current episode within a queue is indicated by a vertical bar alongside the name.
Schedule: Shows every show on every channel that is scheduled to be broadcast today, along with its start time. Shows that you follow are displayed in their own section at the top of the list, indicated by a star icon .
Now Playing: Displays the title and DJ of the current show, along with the current track’s title, artist, and artwork. If the show is being broadcast live, the details depend on the time the widget was last updated, which is indicated next to the refresh button. Tap the track’s name to open the information sheet for that specific track.
Archive: Lists episodes recently added to the archive, along with the time they were archived. Episodes of shows that you follow are displayed in their own section at the top of the list, indicated by a star icon .
Playlist: Lists the tracks of the current episode. The current track is indicated with a vertical bar alongside the entry. If the episode has already been archived (so all tracks are known), tapping on a track moves the playback position to the start of that track. If the source is a live stream the playlist is continually updated, and changing the playback position is not possible.
Frequently Asked Questions
Why does an episodes show a "Not Found" or "404" error when I play it?
- If the episode was recently archived (less than 28 days ago) this is usually because the DJ didn’t archive a high quality (
HQ
) format of the show for some reason. - If it was archived more than a month ago, the high quality format may have been removed from the archive after a month.
In either case you need to manually locate the “normal quality” format of the specific episode and play that instead.
- Locate the show in the vertically scrolling, alphabetically ordered list of shows in the archive, and tap it.
- If the episode was recently archived, select
Show All Formats
from the options menu in the top right corner. - Select the episode without the
HQ
icon alongside it. This is the normal quality version.
Why does everything except live streams stop working for 2 minutes at 8am GMT?
I have no idea. Maintenance? ¯\_(ツ)_/¯
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?
- 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).
- 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.
- Tap the Add to Queue icon in the top right corner, then select the queue you just created.
- 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.
Why are some shows not listed in the app's archive but are present on the website?
The list of shows in the archive is supplied by the station. The policy concerning what is shown in this list (as opposed to the web site) is unknown, but appears to be based on whether an episode was archived in the last month.
As a temporary workaround, find a show’s ID from its show page URL on the web site. It is usually 2 letters or digits long. Eg: GV
in https://www.wfmu.org/playlists/GV. Then choose Open Unlisted Show
in the options menu of the archive section of the app, and enter it.
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 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?
- 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).
- 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 (last.fm, 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.
Why do episode from the archive include about 8 minutes of the following show?
I have no idea, but there’s nothing I can do about it.
To be specific, the audio for most episodes also include a few minutes of the shows before and after it, but in the preceeding case I can automatically trim that out (this isn’t always possible for Chromecast, hence its presence on that platform). Unfortunately, without knowing how long the audio overruns the latter can’t be removed.
Didn't this used to be called Woof Moo?
Yes. With the demise of the old official Android app (with the grey and blue icon), we (the station and I) concluded it made no sense to have an unofficial app without an official one.
Although the new app is published by WFMU, the only difference between the old Woof Moo app and the new app is the icon and name. Functionally it is identical, and as before it is still developed and released by me.