Skip to content

Releases: MissingCore/Music

v3.3.0

Choose a tag to compare

@MissingCore-Bot MissingCore-Bot released this 02 Jul 22:16

Some QOL improvements, bug fixes, and a faster method of getting through the initial track indexing.

🧪 Experimental Features

  • New Use MediaStore Scanner option to obtain track metadata from MediaStore.
    • This method is extremely fast, however may not be as accurate.
      • Indexing new tracks should be finished almost immediately, though saving the artwork for those newly indexed tracks will still be a bottleneck.
    • Only available on Android 11+ due to most of the MediaStore metadata fields being introduced in this version.

🎉 Added

⚡ Changes

  • Hopefully the final redesign of "bottom actions" (for v3).
  • Move toggle to display lyrics from the "Playback Options" sheet to be directly on the "Now Playing" screen.
  • Redesigned "Lyrics Settings" screen, moving the Lyrics Providers & Use Embedded Lyrics actions here.
    • Lyrics Providers is still an experimental feature (for now).

🛠️ Fixes

  • Unexpected "Unsaved Changes" warning when leaving "Edit Lyrics" screen when no changes were made.
    • This is due to not trimming the returned lyrics in our "automatic" detection. This should be fixed on new lyric entries.
  • Staying on the splash screen for an unnecessarily long time due to inefficiency of comparison logic when cleaning up images.
    • This only happens if the app has a lot of images due to lots of singles or albums.
  • "Junk" in front of embedded lyrics that are stored in ID3's binary frame.
    • This is most likely the cause of why embedded synchronized lyrics didn't work (normally, you would manually clean them up to fix it).
    • We have a (temporary) patch, which attempts to remove the "junk" at the start of existing lyric entries if detected.
  • Playing the wrong track after removing items on the "Upcoming Tracks" screen and then clicking on a track to play.

🔠 Translations

  • Updated Polski translations by @p-krystian
  • Updated Français translations by Mickael81
  • Updated Español translations by @G4b-0
  • Updated Русский translations by Julia

⚙️ Internal Changes

  • Replaced expo-media-library with our own implementation (used for detecting audio files).
  • Control default of "Check for Updates" setting via environment variable (enabled by default for APK & Google Play releases).

v3.3.0-rc.1

v3.3.0-rc.1 Pre-release
Pre-release

Choose a tag to compare

@MissingCore-Bot MissingCore-Bot released this 20 Jun 21:55

Important

Treat this as a pre-release for the next version. This is available as an APK on GitHub & via the "Open Beta" on Google Play (as of June 24).

This should be sent for review to Google Play in ~1 week, giving enough time for some last minute translation updates and bug fixes (if they get reported).

Some QOL improvements and a faster method of getting through the initial track indexing.

🧪 Experimental Features

  • New Use MediaStore Scanner option to obtain track metadata from MediaStore.
    • This method is extremely fast, however may not be as accurate.
      • Indexing new tracks should be finished almost immediately, though saving the artwork for those newly indexed tracks will still be a bottleneck.
    • Only available on Android 11+ due to most of the MediaStore metadata fields being introduced in this version.

🎉 Added

⚡ Changes

  • Hopefully the final redesign of "bottom actions" (for v3).
  • Move toggle to display lyrics from the "Playback Options" sheet to be directly on the "Now Playing" screen.
  • Redesigned "Lyrics Settings" screen, moving the Lyrics Providers & Use Embedded Lyrics actions here.
    • Lyrics Providers is still an experimental feature (for now).

🛠️ Fixes

  • Unexpected "Unsaved Changes" warning when leaving "Edit Lyrics" screen when no changes were made.
    • This is due to not trimming the returned lyrics in our "automatic" detection. This should be fixed on new lyric entries.

🔠 Translations

⚙️ Internal Changes

  • Replaced expo-media-library with our own implementation (used for detecting audio files).

v3.2.0

Choose a tag to compare

@MissingCore-Bot MissingCore-Bot released this 16 Jun 23:33

Pretty big updates for audio effects & lyrics (via experimental & stable features).

❗ Breaking/Important Changes

  • Removed Experimental Glyph Toy feature.
    • It's personally impossible to test new features since I don't own a Nothing Phone 3, pretty limited as the "main" feature requires the Glyph Button, and may have caused some startup crashes for Nothing Phone 3 users.
    • Hopefully this speeds up review times on Google Play.

🧪 Experimental Features

🎉 Added

  • Automatically pull lyrics from adjacent files given it has the same file name & .lrc extension.
    • .txt files do not work (most likely for security concerns). You can change the file extension to .lrc and it should get detected.
  • Support for modifying the pitch of the track.
  • Support for persisting the app volume across app sessions.
  • New Audio Effects screen (Settings > Audio Effects) which contains the following:
    • Experimental Features: Equalizer, ReplayGain, ReplayGain Pre-amp.
    • Stable Features: Playback Pitch, Playback Speed, Restore App Volume
      • Playback Pitch & Playback Speed settings will only show up when we navigate to this screen via the "Playback Options" sheet on the "Now Playing" screen.
  • New Use Embedded Lyrics setting, which allows you to skip checking for embedded lyrics.
    • Currently located in the Lyrics Providers screen.

⚡ Changes

  • Display space taken up by fonts in "Insights" breakdown.
  • Improve draglist performance (you should see less whitespace while scrolling in a draglist with lots of items).
    • Though as a side-effect, you may see the moved items flash twice & initiating a new drag after dropping too fast causing the gesture to lose focus.
  • No longer hide the Update via Play Store button on in-app release notes screen for pre-releases due to now releasing them via the "Open Beta" on Google Play.

🛠️ Fixes

  • Edge case where lyrics weren't detected as synchronized (ie: it has \n\r\n in the raw lyrics text).
  • Potential fix to no such table: custom_fonts error.

🔠 Translations

⚙️ Internal Changes

  • Upgraded to Expo SDK 56 / React Native 0.85.
  • Replaced some third-party packages with our own implementations.
  • Upgraded to react-native-gesture-handler v3.
  • Limit where react-native-audio-browser's ContentProvider can find (local) images from.
    • This shouldn't break anything, but symptoms of breakage would be no artwork being displayed in Android Auto or the media notification.

v3.2.0-rc.1

v3.2.0-rc.1 Pre-release
Pre-release

Choose a tag to compare

@MissingCore-Bot MissingCore-Bot released this 08 Jun 20:18

Important

Treat this as a pre-release for the next version. This is available as an APK on GitHub & via the "Open Beta" on Google Play (as of June 11).

This should be sent for review to Google Play in ~1 week, giving enough time for some last minute translation updates and bug fixes (if they get reported).

Pretty big updates for audio effects & lyrics (via experimental & stable features).

🧪 Experimental Features

🎉 Added

  • Automatically pull lyrics from adjacent files given it has the same file name & .lrc extension.
    • .txt files do not work (most likely for security concerns). You can change the file extension to .lrc and it should get detected.
  • Support for modifying the pitch of the track.
  • Support for persisting the app volume across app sessions.
  • New Audio Effects screen (Settings > Experimental Features > Audio Effects) which contains the following:
    • Experimental Features: Equalizer, ReplayGain, ReplayGain Pre-amp.
    • Stable Features: Playback Pitch, Playback Speed, Restore App Volume
      • Playback Pitch & Playback Speed settings will only show up when we navigate to this screen via the "Playback Options" sheet on the "Now Playing" screen.
  • New Use Embedded Lyrics setting, which allows you to skip checking for embedded lyrics.
    • Currently located in the Lyrics Providers screen.

⚡ Changes

  • Display space taken up by fonts in "Insights" breakdown.

🛠️ Fixes

  • Edge case where lyrics weren't detected as synchronized (ie: it has \n\r\n in the raw lyrics text).
  • Potential fix to no such table: custom_fonts error.

🔠 Translations

⚙️ Internal Changes

  • Upgraded to Expo SDK 56 / React Native 0.85.
  • Replaced some third-party packages with our own implementations.
  • Upgraded to react-native-gesture-handler v3.
  • Limit where react-native-audio-browser's ContentProvider can find images from.

v3.1.0

Choose a tag to compare

@MissingCore-Bot MissingCore-Bot released this 28 May 20:42

Warning

For users coming from v3.1.0-rc.*, we have reverted the change where we added an unique constraint on the uri field for the Track entries, which caused the UNIQUE constraint failed: tracks.uri error to occur unexpectedly. It should be safe to update to v3.1.0, but creating a backup beforehand doesn't hurt.

New customizations (font & theme) & fixing an issue where reduced motion settings broke the seekbar & scrollbar.

Coming from v2.x.y? See what's new in the v3.0.0 change log.

🧪 Experimental Features

  • New downsampling feature to get high sample rate audio files (ie: 352.8kHz & 384kHz) working.
    • These files will get downsampled to 192kHz as that seems to be the max sample rate Exoplayer can handle before it throws an error.
    • This is enabled by default (though can be toggled off), with the plan of having this be the default behavior in the future in which the toggle will be removed.

🎉 Added

  • Support for custom themes with import & export support.
    • An example of the structure of the .json file that will get imported/exported can be found in the Customizations docs.
    • We support importing the structure in .json or .txt formats.
  • Support for custom fonts (.otf & .ttf only).
  • New Show Navbar "Appearance" setting (enabled by default) to show a navbar when we click on the hamburger menu on the home screen since swipe gestures aren't that obvious.
  • New Optimized Image Saving "Scanning" setting (enabled by default) which have tracks sharing the same artwork that's assigned to their album.
    • ❗It's highly discouraged to disable this feature as it will result in the app using a lot more storage due to saving images for every track.❗
    • Note: The images saved when this feature is disabled won't be deleted even if you re-enable this feature and trigger a "Deep Rescan".

⚡ Changes

  • Automatically ignore tags (ie: [ti:]) in raw lyrics text. This should allow synchronized lyrics to work without manually removing these tags.
  • Require confirmation before triggering: "Reset" button on "Edit Metadata" screen, "Deep Rescan" feature, and "Purge Cached Waveforms" feature.
    • This is to make it harder to accidentally trigger these consequential features.
  • Automatically check for embedded lyrics for playing track when on the "Now Playing" screen and "Lyrics" enabled.
    • The "Use Embedded" button is no longer needed and has been removed due to the computation for doing this is pretty light.
  • Cap Minimum Track Duration to 99s (1min 39s).
  • Make lyrics visibility preference persist across app sessions.

🛠️ Fixes

  • Being able to delete an unrelated playlist if you changed the "Name" field and then went through the delete flow.
  • Reduced motion settings breaking seekbar & scrollbar implementation.
    • More specifically, this is from enabling Remove Animations (Accessibility > Color and Motion) or setting Transition animation scale to Animation off.
  • Creating a playlist from importing a M3U file failing due to duplicate tracks in the list.
  • Fix issue where high sample rate audio (ie: 352.8kHz & 384kHz) couldn't be played. Requires enabling the downsampling experimental feature.
    • Look at #138 for more details.

🔠 Translations

⚙️ Internal Changes

  • New workflow to create dev builds via GitHub Actions which changes the display name to Music (Dev) and adds an .dev suffix to the application id.
  • Update to PNPM 11.
  • Make "Privacy Build" more resilient to PNPM major version changes.

v3.1.0-rc.2

v3.1.0-rc.2 Pre-release
Pre-release

Choose a tag to compare

@MissingCore-Bot MissingCore-Bot released this 17 May 19:48

Important

Treat this as a pre-release for the next version. This will only be available as an APK download as this is mainly to test for bugs for the latest features.

This should be sent for review to Google Play on May 22, giving enough time for some last minute translation updates and bug fixes (if they get reported).

Some bug fixes & improvements.

Coming from v2.x.y? See what's new in the v3.0.0 change log.

⚡ Changes

  • Require confirmation before triggering the "Deep Rescan" or "Purge Cached Waveforms" features.
    • Make it harder to accidentally trigger these consequential features.
  • Automatically check for embedded lyrics for playing track when on the "Now Playing" screen and "Lyrics" enabled.
    • The "Use Embedded" button is no longer needed as the computation for doing this is pretty light (we didn't want to automatically check due to potential delays/hangs).

🛠️ Fixes

  • Creating a playlist from importing a M3U file failing due to duplicate tracks in the list.

v3.1.0-rc.1

v3.1.0-rc.1 Pre-release
Pre-release

Choose a tag to compare

@MissingCore-Bot MissingCore-Bot released this 15 May 22:35

Important

Treat this as a pre-release for the next version. This will only be available as an APK download as this is mainly to test for bugs for the latest features.

This should be sent for review to Google Play in ~1 week, giving enough time for some last minute translation updates and bug fixes (if they get reported).

New customizations (font & theme) & fixing an issue where reduced motion settings broke the seekbar & scrollbar.

Coming from v2.x.y? See what's new in the v3.0.0 change log.

🎉 Added

  • Support for custom themes with import & export support.
    • An example of the structure of the .json file that will get imported/exported can be found in the Customizations docs.
    • We support importing the structure in .json or .txt formats.
  • Support for custom fonts (.otf & .ttf only).
  • New Show Navbar "Appearance" setting to show a navbar when we click on the hamburger menu on the home screen (on by default).
  • New Optimized Image Saving "Scanning" setting which have tracks sharing the same artwork that's assigned to their album (on by default).
    • ❗It's highly discouraged to disable this feature as it will result in the app using a lot more storage due to saving images for every track.❗

⚡ Changes

  • Automatically ignore tags (ie: [ti:]) in raw lyrics text. This should allow synchronized lyrics to work without manually removing these tags.
  • The "Reset" button on the "Edit Metadata" screen now requires confirmation.

🛠️ Fixes

  • Being able to delete an unrelated playlist if you changed the "Name" field and then went through the delete flow.
  • Reduced motion settings breaking seekbar & scrollbar implementation.
    • More specifically, this is from enabling Remove Animations (Accessibility > Color and Motion) or setting Transition animation scale to Animation off.

🔠 Translations

⚙️ Internal Changes

  • New workflow to create dev builds via GitHub Actions which changes the display name to Music (Dev) and adds an .dev suffix to the application id.
  • Mark the uri field on the "Tracks" table as unique. This shouldn't break anything as there shouldn't be multiple track entries sharing the same URI.

v3.0.1

Choose a tag to compare

@MissingCore-Bot MissingCore-Bot released this 04 May 19:17

Important

We aim to not have anything break when upgrading. If you want to be safe, you can use the "Backup" feature to create a backup containing favorite albums, playlists, and tracks along with your playlists.

If things do break, doing a fresh install might fix the issue (though that means all data will be lost).

Warning

Some notes about potential issues.

  1. We may remove the Experimental Glyph Toy feature in an upcoming minor version (v3.x.0) depending on our "fix" for the startup crashes caused by it are resolved (I've never experienced it) and whether we get reports of the expected behaviors not working (I don't have a Nothing Phone 3 to test this out).
  2. If the app no longer finds any tracks in this update (but has in prior updates), these may give some hints to help debug or fix the issue:
    • Check the "Save Errors" (Settings > Insights > Save Errors) to see if it's a metadata issue.
    • Ensure there's nothing in the Allowlist/Blocklist and the "Min Duration" isn't some huge number in the "Scanning" settings.
    • Restart your device to force MediaStore to rescan your device for media files (this may take a few minutes) and then try again.
      • Playing the undetected file directly in the Google Files app might also update MediaStore.

Bug fixes for some issues in v3.0.0.

  • There are crashes / black screens that are (probably) caused by the animation package we use that we can't really fix, so we just have to wait and see for their updates.

Coming from v2.x.y? See what's new in the v3.0.0 change log.

🎉 Added

  • New "Playback" setting to display favorite/unfavorite button on track items.

⚡ Changes

  • Primary font variant of NType is now thinner (to fix the text issue mentioned below).
  • Revised sleep timer design (active indicator & sheet when active).

🛠️ Fixes

  • Missing text caused by using NType font as the primary font.
    • Caused by allocated width for text not being correct due to incorrect font width calculation for "Headline" version of NType font.
  • Error caused by splitting album artist string with duplicate artists (ie: Artist 1, Artist 1).
  • Error from calling AudioBrowser.getEqualizerSettings() before AudioBrowser has been initialized (doesn't matter if you were using the Experimental Equalizer feature).
  • Display special message on error screen when upgrading to a "modern" version of the app due to critical migrations (which have since been removed) never being applied.
  • Potential fix to startup crashes caused by our Experimental Glyph Toy feature.
    • Basically any Nothing device (that isn't the Phone 3) was calling performOnServiceConnected, which emits an event to the app, but emitting the event was sometimes causing a crash due to the the things used to emit the event not existing.

🔠 Translations

v3.0.0

Choose a tag to compare

@MissingCore-Bot MissingCore-Bot released this 25 Apr 19:03

Important

We aim to not have anything break when upgrading. If you want to be safe, you can use the "Backup" feature to create a backup containing favorite albums, playlists, and tracks along with your playlists.

If things do break, doing a fresh install might fix the issue (though that means all data will be lost).

App redesign along with some requested features (non-experimental & experimental).

  • Some features may require a "Deep Rescan" to be triggered for existing users.

❗ Breaking/Important Changes

  • Removed experimental Ignore Interruptions feature. Android will now manage auto focus.

🧪 Experimental Features

  • Promote Continue Playback on Dismiss to stable (now found in "Playback" settings).
  • Promote Smooth Playback Transition to stable (now the default behavior).
  • Experimental Glyph Toy which supports interactions via the Glyph Button to simulate a limited set of media controls (as such, currently only supports Nothing Phone 3).
    • ❗ This is untested (as I don't own a Nothing Phone 3), so the interactions via the Glyph Button (to play/pause/skip) might not work. As such, this might get removed in a future v3.x release if things end up not working. ❗
    • Documentation can be found here.
  • Experimental support for Android Auto (you can read more in the docs on the limitations/caveats).
  • Experimental support for 5-band equalizer.

🎉 Added

  • Support for organizing tracks by genre.
    • ❗ You must use the Deep Rescan feature to get the genre for existing tracks. ❗
  • New Multi-Value Separators "Scanning" setting, enabling multi-artist & multi-genre support.
    • ❗ You must use the Deep Rescan feature to apply the separators to existing tracks. ❗
  • BYO (Bring Your Own) Lyrics, supporting unsynchronized, line-by-line, and word-by-word formats.
    • Lyric entries are created in the following methods:
      • Via a form (supports manually importing from .lrc or .txt).
      • Via manually pulling embedded lyrics on the "Now Playing" screen.
    • Lyrics can be linked to multiple tracks.
  • Layout options (list, grid, compact grid) on "Albums", "Artists", "Genres", and "Playlists" screens.
  • Sorting support on "Albums", "Artists", "Folders", "Genres", "Playlists", "Current Artist", and "Current Genre" screens.
    • The "Tracks" screen supports additional options.
    • Playing from the "Folders", "Tracks", "Current Artist", and "Current Genre" lists will apply the sorting order to the queued tracks.
    • Note: Only the tracks are sorted on the "Folders" screen.
  • Support using NDot & NType as the primary font.
    • ❗ This is not recommended due to legibility concerns and not supporting all languages. ❗
  • New "onboarding" flow for new users which enables them to change some settings (ie: search directories, separators) before metadata scanning & saving starts for the first time.
  • Support auto-filling album information from existing albums on the "Edit Metadata" screen.
  • New Quick Add to Queue "Playback" setting to display a new "Add to Queue" button directly on the track items next to the button to open the track sheet.
  • New Drag Miniplayer Down to Clear Playback "Playback" setting.
  • New Square Artwork "Appearance" setting.

⚡ Changes

  • Various design adjustments (ie: "bottom actions", buttons, sheets, toasts).
    • ❗ The navbar for the home screens has been removed. Use swipe gestures instead (you can customize the order of the tab and whether they show up in the settings).
  • Drag-to-reorder actions can now only be done while your finger is on the "Drag Handle".
  • Converted "Favorite Tracks" to a playlist, allowing the customizing of artwork & track order.
  • Moved various settings (non-experimental & experimental) to other settings screens and to sheets on "Albums" & "Now Playing" screens.
  • Changed how the "Hide Track" feature works.
    • You now have to rescan the library to get the track that was hidden to show up in the app after unhiding it.
  • Updated fonts.
  • Show "action" to reveal track sheet for track results on the "Search" screen.

🛠️ Fixes

  • Don't show "Disc 1" on the "Current Album" screen if the only disc is "Disc 1".
  • Situation where artwork may not be found on a track due to incorrect image categorization in the metadata.
  • Situation where artwork may not be found on .flac/.m4a/.mp4 files.
  • Weird issue where we encountered an infinite buffering loop on some files (so far reported happening on a single .flac file).
  • Weird issue where unrelated tracks get marked as invalid when we encounter an invalid track.
  • Importing M3U file with relative paths in the "Download" directory not working on newer Android versions.
  • Some UI components appear incorrectly with RTL.
  • The artwork sheet being unusable on large screens.

🔠 Translations

  • Translators now show up in the Language sheet.
  • Updated Polski translations by @p-krystian
  • Updated Français translations by Mickael81
  • Updated Dansk translations by @friiskoch
  • Updated हिंदी translations by @Earendel-lab
  • Updated Español translations by @G4b-0
  • Updated Türkçe translations by @mikropsoft
  • Updated 日本語 translations by @reindex-ot

⚙️ Internal Changes

  • Enabled React Native's New Architecture (there may be some performance/visual regressions).
  • Assign different version codes for each APK architecture.
  • Upgraded to Expo SDK 55 / React Native 0.83 / React 19.2 from Expo SDK 53 / React Native 0.79 / React 19.0.
  • Switch to using uniwind for styling.
  • Switch to using react-native-audio-browser for handling playback logic.
  • Removed SYSTEM_ALERT_WINDOW permission from AndroidManifest.xml in release build (used in debug build for React Native debug menu).

v3.0.0-rc.6

v3.0.0-rc.6 Pre-release
Pre-release

Choose a tag to compare

@MissingCore-Bot MissingCore-Bot released this 10 Apr 21:00

Important

We aim to not have anything break when upgrading. If you want to be safe, you can use the "Backup" feature to create a backup containing favorite albums, playlists, and tracks along with your playlists.

If things do break, doing a fresh install might fix the issue (though that means all data will be lost).

The final "rc" release before we send v3 for review in ~2 weeks.

🧪 Experimental Features

  • Also display artists, genres, and track list on Android Auto interface.
    • Do note that Android Auto may not display all items in the list to prevent distracted driving.

🎉 Added

  • Option to attempt to read from embedded lyrics (if they exist) on the "Now Playing" screen if no lyric entry exists for the current track.
    • This is the yellow button next to the red "Manage Lyrics" button.
    • We've also added a small "edit" button on the bottom right corner of the lyrics "area" to simplify the process of editing the displayed lyrics (as the returned embedded lyrics may not be formatted correctly).
    • Note: Embedded lyrics won't be read when scanning from tracks due to the additional overhead from the extra work that needs to be done when the user may not use the "Lyrics" feature.
  • Support for sorting the tracks on the "Folders" screen, with the sort options persisting when you play from a folder.
    • Same sort options & behavior as sorting on the "Tracks" screen.
  • Support for sorting the tracks on the "Current Artist/Genre" screens (as these lists are "unstructured"), with sort options persisting when you play from that list.

🛠️ Fixes

  • Menu opening at incorrect position after scrolling.
  • Playback sometimes doesn't work on app launch when it reuses a prior session (this can happen when you use Android Auto).
  • Android Auto interface displaying stale data.
    • Relaunching the Android app will update the data (which should be enough as you shouldn't be changing the lists while driving).
  • Skipping to the next track with "Hey Google" not working.
  • The artwork sheet being unusable on large screens.

🔠 Translations

  • Updated Español translations by @G4b-0

⚙️ Internal Changes

  • Reworked internal data fetching from database.
  • Removed SYSTEM_ALERT_WINDOW permission from AndroidManifest.xml in release build (used in debug build for React Native debug menu).