-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Fix replaygain mapping for Subsonic Artist Radio and Top Songs #4328
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Summary of Changes
Hello @deluan, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!
This pull request addresses the proper handling of replay gain information received from the Subsonic API, specifically for songs retrieved through artist-related actions like 'radio' and 'top songs'. I've introduced a new mapping mechanism to standardize how this data is stored and ensured its correct application, backed by new unit tests to confirm the functionality.
Highlights
- ReplayGain Mapping: I've implemented a new utility function,
mapReplayGain
, to extractreplayGain
information (album gain/peak, track gain/peak) from Subsonic song objects. This data is now mapped to new top-levelrg*
fields on the song object for easier access and consistency. - Integration: The
mapReplayGain
utility has been integrated into theplayTopSongs
andplaySimilar
actions. This ensures that replay gain data is correctly processed and available when playing songs from Subsonic radio and top songs lists, providing a more consistent listening experience. - Testing: I've added comprehensive unit tests in
ArtistActions.test.jsx
to verify that replay gain information is correctly mapped and accessible for songs fetched via both the 'radio' (similar songs) and 'top songs' actions. This includes mocking Subsonic API responses withreplayGain
data and asserting the correct transformation.
Using Gemini Code Assist
The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.
Invoking Gemini
You can request assistance from Gemini at any point in your pull request via creating an issue comment (i.e. comment on the pull request page) using either /gemini <command>
or @gemini-code-assist <command>
. Below is a summary of the supported commands.
Feature | Command | Description |
---|---|---|
Code Review | /gemini review |
Performs a code review for the current pull request in its current state. |
Pull Request Summary | /gemini summary |
Provides a summary of the current pull request in its current state. |
Comment | @gemini-code-assist | Responds in comments when explicitly tagged, both in issue comments and review comments. |
Help | /gemini help |
Displays a list of available commands. |
Customization
To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/
folder in the base of the repository. Detailed instructions can be found here.
Limitations & Feedback
Gemini Code Assist is currently in preview and may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments to provide feedback.
You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.
Footnotes
-
Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution. ↩
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Code Review
This pull request correctly adds replay gain mapping for Subsonic radio and top songs, along with corresponding tests. The review focuses on improving code quality by making the mapping function pure to avoid side-effects, reducing code duplication in both the business logic and test files, and making test assertions more concise and readable. These changes will improve the maintainability of the code.
Signed-off-by: Deluan <deluan@navidrome.org>
Signed-off-by: Deluan <deluan@navidrome.org>
Description
This PR fixes the bug where artist radios (similar songs) were ignoring replaygain information, causing songs to be played at much louder volumes than when played manually.
The issue was that the
getSimilarSongs2
andgetTopSongs
Subsonic API endpoints return replaygain data in a different format (replayGain
object) than what the frontend expects (rgAlbumGain
,rgAlbumPeak
,rgTrackGain
,rgTrackPeak
fields). This PR adds proper mapping between these formats to ensure replaygain information is correctly passed to the playback system.Related Issues
Fixes #4299
Type of Change
Checklist
Please review and check all that apply:
How to Test
Screenshots / Demos (if applicable)
N/A - This is an audio-related bug fix with no visual changes.
Additional Notes
mapSubsonicSong
function that maps thereplayGain
object from Subsonic API responses to the expected frontend formatThis PR addresses the volume inconsistency issue reported in #4299 by ensuring replaygain information is properly preserved when starting artist radios.