Important Notice: This app is a Subsonic-compatible client and does not provide any music content itself. To use this application, you must have:
Tempus offers advanced features such as Instant Mix, Continuous Play, Artists Page, and many others, which require a properly configured server capable to respond to "similar songs" requests and correctly tagged music files.
This app works with any service that implements the Subsonic API, including:
The first screen lists your servers. Tap Open server editor to add one:
http:// or https://, for example https://your-subsonic-server.com.Server name, User name, Password and Public URL are required, and so is Local URL once its switch is on. Tap Create, then Go to login to return to the server list, and tap the server there to log in. If the login fails, Tempus shows the error and you stay on the list.
To edit a server, open the editor, pick the server in the menu at the top, change what you need and tap Update. Test checks a saved server's connection. Delete removes the picked server at once, with no confirmation. A change to the server you are logged in to takes effect after you log out and tap the server again.
Long press the Tempus icon and pick Introduction to open the welcome, permissions, themes and server pages on their own. The heart icon at the top of the server list opens the same pages.
To switch servers, go to Settings → General → Log out, which takes you back to this list.
If you intend to play to a TV or a network speaker, the address you enter here also has to be reachable from that device, because it fetches the music from your server itself. See Playing on another device.
With a Local URL set, Tempus uses it when it answers and the Public URL otherwise. Each time the app comes to the front while on the Public URL, it tests the Local URL and moves to it only if it answers. If the Local URL stops answering, the app moves back to the Public URL. This suits a server you reach by its home network address at home and by a public or VPN address everywhere else.
When neither address answers, Tempus shows Server unreachable. Continue anyway hides it for 24 hours, and Go to login logs you out and returns to the server list.
For servers behind an authenticating proxy (e.g. Cloudflare Access service tokens), enable Custom HTTP headers on the server in the server editor and enter one header per line:
CF-Access-Client-Id: <id>
CF-Access-Client-Secret: <secret>
Blank lines and lines starting with # are ignored. A line that is not Name: Value, or that names Host, Content-Length, Transfer-Encoding or Connection, is refused when you save, with the line number.
Headers are sent only to that server's address and local address (same scheme, host and port), on API calls, streaming, downloads and cover art, including the artwork shown in the notification, lock screen, Bluetooth and Android Auto. They are not sent to radio stations or other hosts, and they are not carried along when the server redirects to another host. Debug builds hide their values in the HTTP log.
The local address gets the headers too, like it already gets your Subsonic credentials. If your local address is plain http, any device answering on that IP on the network you are connected to would receive them, so use an https local address or leave it empty when the headers are sensitive.
After editing the headers of the server you are signed in to, sign out and back in for them to take effect.
Test in the server editor sends the headers only for the server you are signed in to. For a new server behind a proxy that requires them, Test fails; sign in to the server instead.
Devices that fetch the music themselves cannot send them:
The values are stored on the device the same way as your password.
Multi-library
Tempus handles multi-library setups gracefully. They are displayed as Library folders.
If your server reports more than one music folder, Tempus can limit browsing and search to a single one of them.
Tap the app name in the toolbar on the Music tab of Home, or on Library. A second line under it names the library in use, and tapping opens a checked list of the server's libraries. The same setting lives in Settings under General as "Music library". Either one takes effect on the screen you are looking at, with no restart and no navigating away.
"All libraries" is the default and keeps the old merged view. The filter reaches browsing and search only, so it never touches your starred items, your playlists or your downloads. On the Podcast and Radio tabs that second line names your server instead of a library, and it is not tappable there. On Downloads there is no second line at all.
The setting is hidden when there is only one library to choose from.
If your Subsonic-compatible server exposes the folder tree or provides an artist index (for example Gonic, Navidrome, or any backend with folder browsing enabled), Tempus lets you play an entire folder from anywhere in the library hierarchy:
No extra config is needed—Tempus adjusts based on the connected backend.
Swipe the artwork left or right to play the next or previous track in the queue. Radio stations have one cover and do not swipe.
Tap the artwork to show four buttons over it, and tap again to hide them.
marked the icons with numbers for clarity
Below the playback controls is a row of three buttons.
Long press the format label above the artwork, "flac" for example, to hide this row, and long press it again to bring it back. A short tap on the label shows or hides the bitrate.
Tap the title to open its album, or the artist to open the artist. Long press either one to copy it.
To show the track number in front of the title, turn on Show track number under Settings → UI.
The ⋮ menu next to the heart has Play on… and Add to playlist, plus Built-in equalizer when Built-in is picked under Settings → Sound. Tablets do not have this menu.
Format and bitrate
The player's format and bitrate label gives what was actually decoded, not the transcode Tempus asked for. If your server ignored the request, or had no rule matching the track, the label shows what it really sent. A track the server did transcode reads as the new format followed by "(Transcoding)".
Downloaded tracks show the format on disk. When Tempus transcodes a download, the row and the track info dialog carry the transcoded format and bitrate instead of the source values.
If your server supports it - add a podcast rss feed
The Radio tab on Home lists your stations by name. Tap one to play it.
Tap Add a new radio to add a station. Type the name and stream address yourself, or tap the search icon next to the name to look the station up by name, country or both. The search uses radio-browser.info, a public directory, not your server. It lists up to 30 stations, the most voted first, and Use fills in the fields for you.
Under Save to, pick where the station is kept.
Long press a station, or tap its ⋮, to edit or delete it. A saved station cannot be moved between Server and Local.
The Download tab lists every track stored on the phone. Tap the filter button at the top right to list them by Track, Album, Artist, Genre, Playlist or Year. Tempus remembers the choice.
The Track and Album lists are sorted by album artist, then album, then disc and track number, so a compilation with a different artist on each track stays together in track order and is listed under its album artist. An album whose server reports no album artist sorts under its own title.
Playlist lists the tracks you downloaded from a playlist, under the playlist's name. Each download remembers one playlist only, so a track that is in two playlists, or was downloaded from an album first, may not show under the playlist you expect.
Keeping a playlist downloaded
In a playlist's ⋮ menu, turn on Keep synced. Tempus downloads every track of the playlist that is not on the phone yet, then checks again each time you open the playlist and once each time the app starts, and downloads any track added since. Tracks removed from the playlist stay downloaded. There is no check while Tempus is closed.
Download only on Wi-Fi, under Settings → Data, pauses downloads on mobile data and resumes them on Wi-Fi. It does not apply when downloads are saved to a folder you picked.
When you open Tempus again, your queue comes back with the track you were on, paused where you stopped.
Podcast episodes, audiobooks and music tracks longer than 10 minutes also keep their spot after you move on to something else. Tempus saves it when you pause, when you switch tracks, and every 15 seconds while playing. These tracks are listed under Continue listening on the Music tab of Home, newest first, each with its cover, title, album and the time it resumes at. Tap one to play it from that spot, with the rest of its album after it. The row is hidden while it is empty.
The spot is also saved as a bookmark on your server, if the server supports bookmarks, so the row also shows tracks you stopped on another device with the same account, and bookmarks made by other apps. A track leaves the row when it plays through to the next one.
Tempus can hand playback to a UPnP or DLNA renderer on your network, such as a TV, an AV receiver or a network speaker. Tap the cast button in the toolbar, pick the device, and the queue, the position and the play state move to it while the app keeps the controls. On the GitHub build the same button lists Chromecast devices and network renderers together. On the degoogled build the button shows a speaker icon, not the Cast icon.
The renderer fetches the music from your server itself. Nothing is streamed through the phone, which is how the protocol works. Downloaded tracks are played from your server too, because the renderer cannot reach what is stored on the phone.
Your server address has to be one the renderer can reach. If Tempus is configured with an address only the phone can use, the device still appears in the list and still accepts being selected, and then plays nothing. Addresses that fail this way:
localhost or 127.0.0.1Use the address your server has on the same network as the renderer.
Volume is left to the renderer's own remote, because some renderers report a volume that does not match what they are doing. The sleep timer's fade out has no effect on a renderer, so playback stops at full volume when the timer runs out. Discovery uses SSDP, which is UDP and lossy, so if your device does not appear the first time, close the picker and open it again.
This feature is experimental. Two phones running Tempus can pair over your local network, so one phone, the controller, picks the music and runs playback on the other, the receiver. Both phones need a Tempus version with this feature and have to use the same server address, because the receiver plays every track from your server with its own account. Songs downloaded on the controller still need the server on the receiver.
Pairing
Open Settings → Remote player. Set the phone's name under This device. One phone can be both a receiver and a controller.
A paired controller does not need pairing opened again. To remove one, tap it under Paired controllers on the receiver and confirm.
Playing on the receiver
Tap the device icon on the mini player, or Play on… in the expanded player or its overflow menu, and pick the receiver. The normal player then shows Playing on and the receiver's name, and its playback controls, shuffle, repeat, speed, seeking from the lyrics and the sleep timer all act on the receiver. The volume keys change the receiver's volume. With the screen off or Tempus in the background, that works only while Android keeps Tempus running and sends the keys to it. Audio effects are set on the receiver itself.
While a receiver is selected, Play, Add to queue and Play next in the library send music to it, albums and playlists included. Adding to an empty receiver queue loads it without starting playback. Queue shows the receiver's queue, where you can tap to play or pause, swipe to remove, drag to reorder, and use the menu to shuffle or clear the upcoming tracks, or save the whole queue as a playlist. The controller's own queue is left as it was.
Tap the device button again to go back. The receiver keeps playing, and the controller does not start playing on its own.
Limits
Connections use mutual TLS, and each phone is approved by hand. There is no unencrypted fallback.
Open a playlist and pick Edit playlist from its menu to rename it, drag tracks into a new order, or remove tracks. Saving writes the list exactly as it stands on screen, so a removal or a reorder takes effect on the server instead of being added on top of the tracks already there.
Two things to know:
Open the full playlist list with See all next to Playlists on Home or Library, and tap the sort button to change the order. The same choice is under Settings → Playlist → Playlist sorting. It also orders the Playlists row on Home, which shows up to 20 playlists, and the list you pick from when you add songs to a playlist. Tempus remembers it.
Faves
To make a playlist a fave, tap Add to faves in its ⋮ menu, or long press it in the playlist list. Tap Remove from faves to undo it. Faves are kept on the phone, not on your server, and a playlist deleted from the server stops being a fave.
Tap the search icon at the top of Settings and type part of a setting's name or description. Only the matching settings stay on screen, each under its page. Capital letters and accents are ignored, and a match on a page name, such as Sound, shows that whole page. The options on the Theme screen are not searched, so search for Theme to find that screen.
Select Settings → UI → Language to choose an app language. Swedish is available as Swedish (or Svenska, depending on the current language). Select System language to follow your device language.
Open Settings → UI → Theme to change how Tempus looks. Each change applies right away.
Accent colors, from the wallpaper or picked, need Android 12 or newer, and some phones on Android 12 do not support them. Without them Tempus keeps its default colors.
Tiles size, under Settings → UI, sets how big album and artist covers are in grids and rows, and the Discover cards on Home. Default is the largest and Tiny the smallest.
Rounded corners rounds the corners of covers and Corners size sets how much. Restart Tempus after changing either.
Settings → Sound holds the equalizer, ReplayGain and volume settings.
Select an equalizer to use picks one of three:
Set replay gain mode evens out the volume between tracks. It is off by default.
Tempus takes the values from your server and, if the server sends none, from the file's tags. Prevent clipping, on by default, lowers the gain when the file's peak value shows the track would clip. It works only while ReplayGain is on.
Pre-amplification makes everything Tempus plays louder or quieter, by up to 15 dB, with ReplayGain on or off. A change is heard from the next track.
These are under Settings → Data.
Song preload buffer sets how much music ahead of where you are Tempus downloads while streaming, 1 minute by default. Restart Tempus after changing it.
Size of streaming cache keeps the music you stream on the phone, so playing it again does not download it again. It is 256 MiB by default, and when it is full the music you played longest ago is removed first. The setting shows how much of it is in use. A new size takes effect after Tempus restarts, and Disabled turns the cache off.
Pre-cache upcoming tracks downloads the next 1, 2, 3 or 5 tracks of the queue into the streaming cache, so skipping to them starts at once and short signal drops do not stop playback. It follows shuffle and repeat, leaves out radio and downloaded tracks, and does nothing while the streaming cache is Disabled. Pre-cache on Wi-Fi only, on by default, pauses it on mobile data.
Enable music scrobbling, under Settings → Miscellaneous, is on by default. It tells your server what you are playing and which tracks you played. Tempus sends this only to your server, which may pass it on to a service such as Last.fm if it is set up to.
A track counts as played when it plays to the end. When you skip to another track in the queue, the one you left counts if it played past its halfway point or 4 minutes, whichever comes first, unless it is 30 seconds or shorter. Only music counts, not podcasts or radio. A play that does not reach the server is not sent again later.
Android Auto needs the app-tempus build from the GitHub releases. The degoogled build, app-degoogled and the version on F-Droid and IzzyOnDroid, does not offer your library to Android Auto, and its Settings has no Android Auto page.
To allow the Tempus app on your car's head unit, "Unknown sources" needs to be enabled in the Android Auto "Developer settings". This is because Tempus isn't installed through Play Store. Note that the Android Auto developer settings are different from the global Android "Developer options".
The Android Auto interface can be configured by the user to best suit their preferences. The settings are under Settings → Android Auto.
4 tabs can be configured with the following functions:
| Function | What it shows |
|---|---|
| Do not display | This tab is not used |
| Home | Displays all functions not used in other tabs |
| Recent | The 15 recently listened-to albums |
| Albums | Albums sorted by name |
| Artists | Albums sorted by artist or Artists, selected by preference |
| Playlists | |
| Podcast | The 100 podcasts recently added |
| Radio | Your server's stations together with any you added locally in the app. The local ones show even when the server reports no stations of its own |
| Folder | Navigation through music directories |
| Albums most played | The 15 most played albums |
| Tracks played | The 100 last tracks that were completely played |
| Albums added | The 15 recently added albums |
| For You bundle | |
| Starred bundle | |
| Tracks bundle | |
| Genres | 500 songs of the chosen genre OR 100 random songs if "shuffle genre songs" is selected |
| Downloads | the 500 first downloaded tracks OR 100 random downloaded tracks if "shuffle downloaded tracks" is selected. Shown at the top of the Home tab and playable without connectivity |
If all tabs are set to "Do not display", then "Home" tab will be created with all functions inside.
If "Home" is selected after another tab, it becomes "More".
For You bundle includes:
| Item | What it shows |
|---|---|
| Quick mix | features 12 tracks chosen randomly from the 15 last played albums |
| My mix | features 15 tracks chosen randomly from the 15 last played albums, and starred artists or starred albums, following preference |
| Discovery mix | features 18 tracks, as My mix, with similar songs |
| Starred artists | |
| Starred albums | |
| Starred tracks | the 500 first starred tracks OR 100 random starred tracks if "shuffle starred tracks" is selected |
Starred bundle includes:
| Item | What it shows |
|---|---|
| Starred artists | |
| Starred albums | |
| Starred tracks | the 500 first starred tracks OR 100 random starred tracks if "shuffle starred tracks" is selected |
Tracks bundle includes:
| Item | What it shows |
|---|---|
| Random | 100 random songs |
| Genres | 500 songs of the chosen genre OR 100 random songs if "shuffle genre songs" is selected |
| Tracks played | The 100 recently listened-to tracks |
| Starred tracks | the 500 first starred tracks OR 100 random starred tracks if "shuffle starred tracks" is selected |
In addition, you can choose to display the following functions as thumbnails or lists:
As they displayed tracks, Tracks played, Starred tracks, Random and Genres are always displayed as a list.
Artists view and View by albums:
Starred Artists view:
On an artist's page, if they have at least 2 albums with a minimum of 20 tracks, an "Instant Mix by Tempus" album is added at the beginning. This album features 12, 15 or 18 tracks chosen randomly from their discography and is one click play. The number of tracks on the album depends on the size of the artist's discography (>20, >30 or >40)
When an album has tracks on more than one disc, its track list is grouped under a heading for each disc, such as Disc 1, with the disc's title after the number when your server sends one.
The A-Z button allows you to jump to items starting with the chosen letter.
Search button returns albums or artists, even if they are not displayed by the selected function.
Results of the A-Z jump will always be displayed as a list.
Display of albums and artists is limited to 500. For large libraries, it's preferable to use star albums or star artists.
Shortcuts are displayed only if the function is selected from root level:
First reported in issue #226
The work around is to disable the cache in the settings, (set to 0), and if needed, cleaning the (Android) cache fixes the problem.
For additional help:
Note: This app requires a pre-existing Subsonic-compatible server with music content.