spotube icon indicating copy to clipboard operation
spotube copied to clipboard

Non-stable audio normalization

Open tte0 opened this issue 1 year ago • 0 comments

Is there an existing issue for this? (Please read the description)

  • [X] I have searched the existing issues

Current Behavior

When audio normalization is enabled, it lowers the volume at different amounts at different parts of songs. I don't know the implementation but my prediction is that it caps the volume at a specific volume by lowering the volume at that moment.

Expected Behavior

I think the better would be to select a reference "highest" volume and lower the overall volume of the whole song according to that. The reference volume doesn't necessarily have to be the highest peak at a frame, it can be highest average of 1 second intervals.

Steps to reproduce

I noticed this in "Blackout - Colin Root" it is the most apparent one that I can find

Logs

Logs
[2024-12-25 20:10:11.969035]---------------------
org.freedesktop.DBus.Error.NameHasNoOwner: Could not activate remote peer 'org.freedesktop.Avahi': activation request failed: unknown unit
#0      DBusClient._callMethod (package:dbus/src/dbus_client.dart:1146)
<asynchronous suspension>
#1      DBusClient.callMethod (package:dbus/src/dbus_client.dart:621)
<asynchronous suspension>
#2      AvahiServer.callGetVersionString (package:bonsoir_linux/src/avahi/server.dart:95)
<asynchronous suspension>
#3      AvahiBonsoirDiscovery._isModernAvahi (package:bonsoir_linux/src/actions/discovery/discovery.dart:323)
<asynchronous suspension>
#4      AvahiBonsoirDiscovery.ready (package:bonsoir_linux/src/actions/discovery/discovery.dart:49)
<asynchronous suspension>
#5      ConnectClientsNotifier.build (package:spotube/provider/connect/clients.dart:37)
<asynchronous suspension>
#6      FutureHandlerProviderElementMixin.handleFuture.<anonymous closure>.<anonymous closure> (package:riverpod/src/async_notifier/base.dart:355)
<asynchronous suspension>

----------------------------------------
[2024-12-25 20:10:11.993944]---------------------
org.freedesktop.DBus.Error.NameHasNoOwner: Could not activate remote peer 'org.freedesktop.Avahi': activation request failed: unknown unit
#0      DBusClient._callMethod (package:dbus/src/dbus_client.dart:1146)
<asynchronous suspension>
#1      DBusClient.callMethod (package:dbus/src/dbus_client.dart:621)
<asynchronous suspension>
#2      AvahiServer.callGetVersionString (package:bonsoir_linux/src/avahi/server.dart:95)
<asynchronous suspension>
#3      AvahiBonsoirDiscovery._isModernAvahi (package:bonsoir_linux/src/actions/discovery/discovery.dart:323)
<asynchronous suspension>
#4      AvahiBonsoirDiscovery.ready (package:bonsoir_linux/src/actions/discovery/discovery.dart:49)
<asynchronous suspension>
#5      ConnectClientsNotifier.build (package:spotube/provider/connect/clients.dart:37)
<asynchronous suspension>
#6      FutureHandlerProviderElementMixin.handleFuture.<anonymous closure>.<anonymous closure> (package:riverpod/src/async_notifier/base.dart:355)
<asynchronous suspension>

----------------------------------------
[2024-12-25 20:10:12.697790]---------------------
NoSuchMethodError: The method '[]' was called on null.
Receiver: null
Tried calling: []("__typename")
#0      Object.noSuchMethod (dart:core-patch/object_patch.dart:38)
#1      _objectNoSuchMethod (dart:core-patch/object_patch.dart:85)
#2      transformSectionItemTypeJsonMap (package:spotube/models/spotify/home_feed.dart:174)
#3      transformSectionItemJsonMap.<anonymous closure> (package:spotube/models/spotify/home_feed.dart:220)
#4      MappedIterable.elementAt (dart:_internal/iterable.dart:385)
#5      ListIterator.moveNext (dart:_internal/iterable.dart:354)
#6      WhereIterator.moveNext (dart:_internal/iterable.dart:450)
#7      new _GrowableList._ofOther (dart:core-patch/growable_array.dart:202)
#8      new _GrowableList.of (dart:core-patch/growable_array.dart:152)
#9      new List.of (dart:core-patch/array_patch.dart:39)
#10     Iterable.toList (dart:core/iterable.dart:498)
#11     transformSectionItemJsonMap (package:spotube/models/spotify/home_feed.dart:229)
#12     transformHomeFeedJsonMap.<anonymous closure> (package:spotube/models/spotify/home_feed.dart:241)
#13     MappedIterable.elementAt (dart:_internal/iterable.dart:385)
#14     ListIterator.moveNext (dart:_internal/iterable.dart:354)
#15     new _GrowableList._ofEfficientLengthIterable (dart:core-patch/growable_array.dart:189)
#16     new _GrowableList.of (dart:core-patch/growable_array.dart:150)
#17     new List.of (dart:core-patch/array_patch.dart:39)
#18     ListIterable.toList (dart:_internal/iterable.dart:224)
#19     transformHomeFeedJsonMap (package:spotube/models/spotify/home_feed.dart:244)
#20     CustomSpotifyEndpoints.getHomeFeed (package:spotube/services/custom_spotify_endpoints/spotify_endpoints.dart:164)
<asynchronous suspension>
#21     FutureHandlerProviderElementMixin.handleFuture.<anonymous closure>.<anonymous closure> (package:riverpod/src/async_notifier/base.dart:355)
<asynchronous suspension>

----------------------------------------


Operating System

Linux

Spotube version

v3.9.0

Installation source

Arch User Repository (AUR)

Additional information

I don't actually know how it's implemented in different apps. So I would appreciate if you can tell whether this is possible to implement or not.

Self grab

  • [ ] I'm ready to work on this issue!

tte0 avatar Dec 25 '24 17:12 tte0