Recommended Posts

On 4/20/2018 at 8:57 AM, Raphaël G. said:

I'm fixing this issue. The LRC format has given me some headaches. But I'm now improving the LRC parser and adding some automated tests which will prevent behavior to change between releases.

I'll soon release a 15.5.14 beta 1, with these fixes. Give me a day or 2, as I'd like to spend some time getting this right.

Thanks man,  I have a possible feature request for a future version.  The download lyrics from section could be a sortable list.  Netease lyrics have timestamps available in some cases and I would like it to search that site first, followed by any others.

 

Another small bug:  my lyrics download timeout is Language_none seconds.  I'm not sure how long that is.

Dopamine 1.5.14 Beta 1 has just been released. Info + download here: https://www.digimezzo.com/2018/04/23/dopamine-1-5-14-beta-1/

Change log:

 

– [Changed] Before adding a collection folder, a check is now performed to ensure its content is accessible.
– [Changed] Improved parsing of lyrics
– [Changed] Updated the Korean translation
– [Fixed] We now don’t crash anymore when a collection folder’s content is not accessible.
– [Fixed] Fixed a small issue displaying lyrics download timeouts

On 21/4/2018 at 10:49 PM, Ned said:

Thanks man,  I have a possible feature request for a future version.  The download lyrics from section could be a sortable list.  Netease lyrics have timestamps available in some cases and I would like it to search that site first, followed by any others.

 

Another small bug:  my lyrics download timeout is Language_none seconds.  I'm not sure how long that is.

I've created an issue for the lyrics provider idea: https://github.com/digimezzo/Dopamine/issues/734

  • Like 1

Dopamine 1.5.14 Beta 2 has just been released. This is the change log:

 

– [Changed] Updated the Chinese (Simplified) translation
– [Changed] Decreased the minimum window size for people using vertical monitors
– [Fixed] Fixed a crash which occurs when indexing MP3 files which have corrupt headers

 

Download here

  • Like 3

Lately I have been moving a lot of large files from hard drive to hard drive and I notice while doing this that Dopamine starts skipping or having issues playing or retrieving the music file from the hard drive while its copying other files... is there a way to have an option where we can increase the memory cache size for dopamine to alleviate some of this?

 

Thank you! 

On 28/4/2018 at 2:23 AM, Ravensky said:

Lately I have been moving a lot of large files from hard drive to hard drive and I notice while doing this that Dopamine starts skipping or having issues playing or retrieving the music file from the hard drive while its copying other files... is there a way to have an option where we can increase the memory cache size for dopamine to alleviate some of this?

 

Thank you! 

You could try increasing the latency setting in Settings > Playback. I'm not sure if that will fully solve this issue though.

Hi everyone,

 

Dopamine 1.5.14 Release Candidate 1 has been released today. This is the change log:

 

– [Changed] Updated the Swedish translation
– [Fixed] Further improved scaling for narrower monitors

 

That last entry in the change log seems crazy in this day and age. But I have people using Dopamine on vertical monitors :)

 

Download here: https://www.digimezzo.com/content/software/dopamine/

 

@Ned How is lyrics support treating you in the 1.5.14 betas?

 

Enjoy!

  • Like 3

Sorry, I don't typically beta test.  How many betas did you release because the last one crashed on me.

 

Two beta's, okay.  I'll try this one out.  I get a crash when I edit lyrics on a song with no lyrics.  Hmm, it's happened once.  Hard to reproduce.

 

error getting lyrics from netease....

 

2018-04-29 20:31:31.048|Info|PlaybackService.PlaybackFinishedHandler|1278|Track finished: E:\Music\Video Game\Super Meat Boy! - Digital Special Edition\57 ---.mp3
2018-04-29 20:31:31.120|Info|PlaybackService.TryPlayAsync|1171|Playing the file E:\Music\Oasis\(What's the Story) Morning Glory-\06 [Untitled Track].mp3. EventMode=False, ExclusiveMode=False, LoopMode=None, Shuffle=False
2018-04-29 20:31:32.951|Error|LyricsFactory.GetLyricsAsync|44|Error while getting lyrics from 'NeteaseLyrics'. Exception: Object reference not set to an instance of an object.
2018-04-29 20:31:32.951|Error|LyricsControlViewModel.RefreshLyricsAsync|269|Could not get lyrics online E:\Music\Oasis\(What's the Story) Morning Glory-\06 [Untitled Track].mp3. Exception: Object reference not set to an instance of an object.
2018-04-29 20:31:32.952|Error|LyricsControlViewModel.RefreshLyricsAsync|284|Could not show lyrics for Track E:\Music\Oasis\(What's the Story) Morning Glory-\06 [Untitled Track].mp3. Exception: Object reference not set to an instance of an object.
2018-04-29 20:31:36.104|Info|PlaybackService.SavePlaybackCountersAsync|539|Saved track statistics
2018-04-29 20:31:37.650|Error|App.xaml.ExecuteEmergencyStop|501|Unhandled Exception. Exception:
System.NullReferenceException: Object reference not set to an instance of an object.
   at Dopamine.ViewModels.Common.LyricsViewModel.<.ctor>b__63_6()
   at MS.Internal.Commands.CommandHelpers.CanExecuteCommandSource(ICommandSource commandSource)
   at System.Windows.Controls.MenuItem.UpdateCanExecute()
   at System.Windows.Controls.MenuItem.OnCommandChanged(ICommand oldCommand, ICommand newCommand)
   at System.Windows.Controls.MenuItem.OnCommandChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
   at System.Windows.DependencyObject.OnPropertyChanged(DependencyPropertyChangedEventArgs e)
   at System.Windows.FrameworkElement.OnPropertyChanged(DependencyPropertyChangedEventArgs e)
   at System.Windows.DependencyObject.NotifyPropertyChange(DependencyPropertyChangedEventArgs args)
   at System.Windows.DependencyObject.UpdateEffectiveValue(EntryIndex entryIndex, DependencyProperty dp, PropertyMetadata metadata, EffectiveValueEntry oldEntry, EffectiveValueEntry& newEntry, Boolean coerceWithDeferredReference, Boolean coerceWithCurrentValue, OperationType operationType)
   at System.Windows.DependencyObject.InvalidateProperty(DependencyProperty dp, Boolean preserveCurrentValue)
   at System.Windows.Data.BindingExpressionBase.Invalidate(Boolean isASubPropertyChange)
   at System.Windows.Data.BindingExpression.TransferValue(Object newValue, Boolean isASubPropertyChange)
   at System.Windows.Data.BindingExpression.Activate(Object item)
   at System.Windows.Data.BindingExpression.OnDataContextChanged(DependencyObject contextElement)
   at System.Windows.Data.BindingExpression.HandlePropertyInvalidation(DependencyObject d, DependencyPropertyChangedEventArgs args)
   at System.Windows.Data.BindingExpressionBase.OnPropertyInvalidation(DependencyObject d, DependencyPropertyChangedEventArgs args)
   at System.Windows.Data.BindingExpression.OnPropertyInvalidation(DependencyObject d, DependencyPropertyChangedEventArgs args)
   at System.Windows.DependentList.InvalidateDependents(DependencyObject source, DependencyPropertyChangedEventArgs sourceArgs)
   at System.Windows.DependencyObject.NotifyPropertyChange(DependencyPropertyChangedEventArgs args)
   at System.Windows.DependencyObject.UpdateEffectiveValue(EntryIndex entryIndex, DependencyProperty dp, PropertyMetadata metadata, EffectiveValueEntry oldEntry, EffectiveValueEntry& newEntry, Boolean coerceWithDeferredReference, Boolean coerceWithCurrentValue, OperationType operationType)
   at System.Windows.TreeWalkHelper.OnInheritablePropertyChanged(DependencyObject d, InheritablePropertyChangeInfo info, Boolean visitedViaVisualTree)
   at System.Windows.DescendentsWalker`1._VisitNode(DependencyObject d, Boolean visitedViaVisualTree)
   at System.Windows.DescendentsWalker`1.WalkLogicalChildren(FrameworkElement feParent, FrameworkContentElement fceParent, IEnumerator logicalChildren)
   at System.Windows.DescendentsWalker`1.WalkFrameworkElementLogicalThenVisualChildren(FrameworkElement feParent, Boolean hasLogicalChildren)
   at System.Windows.DescendentsWalker`1.IterateChildren(DependencyObject d)
   at System.Windows.DescendentsWalker`1.StartWalk(DependencyObject startNode, Boolean skipStartNode)
   at System.Windows.FrameworkElement.OnPropertyChanged(DependencyPropertyChangedEventArgs e)
   at System.Windows.DependencyObject.NotifyPropertyChange(DependencyPropertyChangedEventArgs args)
   at System.Windows.DependencyObject.UpdateEffectiveValue(EntryIndex entryIndex, DependencyProperty dp, PropertyMetadata metadata, EffectiveValueEntry oldEntry, EffectiveValueEntry& newEntry, Boolean coerceWithDeferredReference, Boolean coerceWithCurrentValue, OperationType operationType)
   at System.Windows.DependencyObject.InvalidateProperty(DependencyProperty dp, Boolean preserveCurrentValue)
   at System.Windows.Data.BindingExpressionBase.Invalidate(Boolean isASubPropertyChange)
   at System.Windows.Data.BindingExpression.TransferValue(Object newValue, Boolean isASubPropertyChange)
   at MS.Internal.Data.ClrBindingWorker.NewValueAvailable(Boolean dependencySourcesChanged, Boolean initialValue, Boolean isASubPropertyChange)
   at MS.Internal.Data.PropertyPathWorker.UpdateSourceValueState(Int32 k, ICollectionView collectionView, Object newValue, Boolean isASubPropertyChange)
   at MS.Internal.Data.PropertyPathWorker.OnDependencyPropertyChanged(DependencyObject d, DependencyProperty dp, Boolean isASubPropertyChange)
   at System.Windows.Data.BindingExpression.HandlePropertyInvalidation(DependencyObject d, DependencyPropertyChangedEventArgs args)
   at System.Windows.Data.BindingExpressionBase.OnPropertyInvalidation(DependencyObject d, DependencyPropertyChangedEventArgs args)
   at System.Windows.Data.BindingExpression.OnPropertyInvalidation(DependencyObject d, DependencyPropertyChangedEventArgs args)
   at System.Windows.DependentList.InvalidateDependents(DependencyObject source, DependencyPropertyChangedEventArgs sourceArgs)
   at System.Windows.DependencyObject.NotifyPropertyChange(DependencyPropertyChangedEventArgs args)
   at System.Windows.DependencyObject.UpdateEffectiveValue(EntryIndex entryIndex, DependencyProperty dp, PropertyMetadata metadata, EffectiveValueEntry oldEntry, EffectiveValueEntry& newEntry, Boolean coerceWithDeferredReference, Boolean coerceWithCurrentValue, OperationType operationType)
   at System.Windows.DependencyObject.CoerceValue(DependencyProperty dp)
   at System.Windows.Controls.PopupControlService.OnOwnerChanged(DependencyObject o, DependencyPropertyChangedEventArgs e)
   at System.Windows.DependencyObject.OnPropertyChanged(DependencyPropertyChangedEventArgs e)
   at System.Windows.FrameworkElement.OnPropertyChanged(DependencyPropertyChangedEventArgs e)
   at System.Windows.DependencyObject.NotifyPropertyChange(DependencyPropertyChangedEventArgs args)
   at System.Windows.DependencyObject.UpdateEffectiveValue(EntryIndex entryIndex, DependencyProperty dp, PropertyMetadata metadata, EffectiveValueEntry oldEntry, EffectiveValueEntry& newEntry, Boolean coerceWithDeferredReference, Boolean coerceWithCurrentValue, OperationType operationType)
   at System.Windows.DependencyObject.SetValueCommon(DependencyProperty dp, Object value, PropertyMetadata metadata, Boolean coerceWithDeferredReference, Boolean coerceWithCurrentValue, OperationType operationType, Boolean isInternal)
   at System.Windows.DependencyObject.SetValue(DependencyProperty dp, Object value)
   at System.Windows.Controls.PopupControlService.RaiseContextMenuOpeningEvent(IInputElement source, Double x, Double y, Boolean userInitiated)
   at System.Windows.Controls.PopupControlService.ProcessMouseUp(Object sender, MouseButtonEventArgs e)
   at System.Windows.Controls.PopupControlService.OnPostProcessInput(Object sender, ProcessInputEventArgs e)
   at System.Windows.Input.InputManager.RaiseProcessInputEventHandlers(ProcessInputEventHandler postProcessInput, ProcessInputEventArgs processInputEventArgs)
   at System.Windows.Input.InputManager.ProcessStagingArea()
   at System.Windows.Input.InputManager.ProcessInput(InputEventArgs input)
   at System.Windows.Input.InputProviderSite.ReportInput(InputReport inputReport)
   at System.Windows.Interop.HwndMouseInputProvider.ReportInput(IntPtr hwnd, InputMode mode, Int32 timestamp, RawMouseActions actions, Int32 x, Int32 y, Int32 wheel)
   at System.Windows.Interop.HwndMouseInputProvider.FilterMessage(IntPtr hwnd, WindowMessage msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   at System.Windows.Interop.HwndSource.InputFilterMessage(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)

Stack trace:
   at Dopamine.ViewModels.Common.LyricsViewModel.<.ctor>b__63_6()
   at MS.Internal.Commands.CommandHelpers.CanExecuteCommandSource(ICommandSource commandSource)
   at System.Windows.Controls.MenuItem.UpdateCanExecute()
   at System.Windows.Controls.MenuItem.OnCommandChanged(ICommand oldCommand, ICommand newCommand)
   at System.Windows.Controls.MenuItem.OnCommandChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
   at System.Windows.DependencyObject.OnPropertyChanged(DependencyPropertyChangedEventArgs e)
   at System.Windows.FrameworkElement.OnPropertyChanged(DependencyPropertyChangedEventArgs e)
   at System.Windows.DependencyObject.NotifyPropertyChange(DependencyPropertyChangedEventArgs args)
   at System.Windows.DependencyObject.UpdateEffectiveValue(EntryIndex entryIndex, DependencyProperty dp, PropertyMetadata metadata, EffectiveValueEntry oldEntry, EffectiveValueEntry& newEntry, Boolean coerceWithDeferredReference, Boolean coerceWithCurrentValue, OperationType operationType)
   at System.Windows.DependencyObject.InvalidateProperty(DependencyProperty dp, Boolean preserveCurrentValue)
   at System.Windows.Data.BindingExpressionBase.Invalidate(Boolean isASubPropertyChange)
   at System.Windows.Data.BindingExpression.TransferValue(Object newValue, Boolean isASubPropertyChange)
   at System.Windows.Data.BindingExpression.Activate(Object item)
   at System.Windows.Data.BindingExpression.OnDataContextChanged(DependencyObject contextElement)
   at System.Windows.Data.BindingExpression.HandlePropertyInvalidation(DependencyObject d, DependencyPropertyChangedEventArgs args)
   at System.Windows.Data.BindingExpressionBase.OnPropertyInvalidation(DependencyObject d, DependencyPropertyChangedEventArgs args)
   at System.Windows.Data.BindingExpression.OnPropertyInvalidation(DependencyObject d, DependencyPropertyChangedEventArgs args)
   at System.Windows.DependentList.InvalidateDependents(DependencyObject source, DependencyPropertyChangedEventArgs sourceArgs)
   at System.Windows.DependencyObject.NotifyPropertyChange(DependencyPropertyChangedEventArgs args)
   at System.Windows.DependencyObject.UpdateEffectiveValue(EntryIndex entryIndex, DependencyProperty dp, PropertyMetadata metadata, EffectiveValueEntry oldEntry, EffectiveValueEntry& newEntry, Boolean coerceWithDeferredReference, Boolean coerceWithCurrentValue, OperationType operationType)
   at System.Windows.TreeWalkHelper.OnInheritablePropertyChanged(DependencyObject d, InheritablePropertyChangeInfo info, Boolean visitedViaVisualTree)
   at System.Windows.DescendentsWalker`1._VisitNode(DependencyObject d, Boolean visitedViaVisualTree)
   at System.Windows.DescendentsWalker`1.WalkLogicalChildren(FrameworkElement feParent, FrameworkContentElement fceParent, IEnumerator logicalChildren)
   at System.Windows.DescendentsWalker`1.WalkFrameworkElementLogicalThenVisualChildren(FrameworkElement feParent, Boolean hasLogicalChildren)
   at System.Windows.DescendentsWalker`1.IterateChildren(DependencyObject d)
   at System.Windows.DescendentsWalker`1.StartWalk(DependencyObject startNode, Boolean skipStartNode)
   at System.Windows.FrameworkElement.OnPropertyChanged(DependencyPropertyChangedEventArgs e)
   at System.Windows.DependencyObject.NotifyPropertyChange(DependencyPropertyChangedEventArgs args)
   at System.Windows.DependencyObject.UpdateEffectiveValue(EntryIndex entryIndex, DependencyProperty dp, PropertyMetadata metadata, EffectiveValueEntry oldEntry, EffectiveValueEntry& newEntry, Boolean coerceWithDeferredReference, Boolean coerceWithCurrentValue, OperationType operationType)
   at System.Windows.DependencyObject.InvalidateProperty(DependencyProperty dp, Boolean preserveCurrentValue)
   at System.Windows.Data.BindingExpressionBase.Invalidate(Boolean isASubPropertyChange)
   at System.Windows.Data.BindingExpression.TransferValue(Object newValue, Boolean isASubPropertyChange)
   at MS.Internal.Data.ClrBindingWorker.NewValueAvailable(Boolean dependencySourcesChanged, Boolean initialValue, Boolean isASubPropertyChange)
   at MS.Internal.Data.PropertyPathWorker.UpdateSourceValueState(Int32 k, ICollectionView collectionView, Object newValue, Boolean isASubPropertyChange)
   at MS.Internal.Data.PropertyPathWorker.OnDependencyPropertyChanged(DependencyObject d, DependencyProperty dp, Boolean isASubPropertyChange)
   at System.Windows.Data.BindingExpression.HandlePropertyInvalidation(DependencyObject d, DependencyPropertyChangedEventArgs args)
   at System.Windows.Data.BindingExpressionBase.OnPropertyInvalidation(DependencyObject d, DependencyPropertyChangedEventArgs args)
   at System.Windows.Data.BindingExpression.OnPropertyInvalidation(DependencyObject d, DependencyPropertyChangedEventArgs args)
   at System.Windows.DependentList.InvalidateDependents(DependencyObject source, DependencyPropertyChangedEventArgs sourceArgs)
   at System.Windows.DependencyObject.NotifyPropertyChange(DependencyPropertyChangedEventArgs args)
   at System.Windows.DependencyObject.UpdateEffectiveValue(EntryIndex entryIndex, DependencyProperty dp, PropertyMetadata metadata, EffectiveValueEntry oldEntry, EffectiveValueEntry& newEntry, Boolean coerceWithDeferredReference, Boolean coerceWithCurrentValue, OperationType operationType)
   at System.Windows.DependencyObject.CoerceValue(DependencyProperty dp)
   at System.Windows.Controls.PopupControlService.OnOwnerChanged(DependencyObject o, DependencyPropertyChangedEventArgs e)
   at System.Windows.DependencyObject.OnPropertyChanged(DependencyPropertyChangedEventArgs e)
   at System.Windows.FrameworkElement.OnPropertyChanged(DependencyPropertyChangedEventArgs e)
   at System.Windows.DependencyObject.NotifyPropertyChange(DependencyPropertyChangedEventArgs args)
   at System.Windows.DependencyObject.UpdateEffectiveValue(EntryIndex entryIndex, DependencyProperty dp, PropertyMetadata metadata, EffectiveValueEntry oldEntry, EffectiveValueEntry& newEntry, Boolean coerceWithDeferredReference, Boolean coerceWithCurrentValue, OperationType operationType)
   at System.Windows.DependencyObject.SetValueCommon(DependencyProperty dp, Object value, PropertyMetadata metadata, Boolean coerceWithDeferredReference, Boolean coerceWithCurrentValue, OperationType operationType, Boolean isInternal)
   at System.Windows.DependencyObject.SetValue(DependencyProperty dp, Object value)
   at System.Windows.Controls.PopupControlService.RaiseContextMenuOpeningEvent(IInputElement source, Double x, Double y, Boolean userInitiated)
   at System.Windows.Controls.PopupControlService.ProcessMouseUp(Object sender, MouseButtonEventArgs e)
   at System.Windows.Controls.PopupControlService.OnPostProcessInput(Object sender, ProcessInputEventArgs e)
   at System.Windows.Input.InputManager.RaiseProcessInputEventHandlers(ProcessInputEventHandler postProcessInput, ProcessInputEventArgs processInputEventArgs)
   at System.Windows.Input.InputManager.ProcessStagingArea()
   at System.Windows.Input.InputManager.ProcessInput(InputEventArgs input)
   at System.Windows.Input.InputProviderSite.ReportInput(InputReport inputReport)
   at System.Windows.Interop.HwndMouseInputProvider.ReportInput(IntPtr hwnd, InputMode mode, Int32 timestamp, RawMouseActions actions, Int32 x, Int32 y, Int32 wheel)
   at System.Windows.Interop.HwndMouseInputProvider.FilterMessage(IntPtr hwnd, WindowMessage msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   at System.Windows.Interop.HwndSource.InputFilterMessage(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)

2018-04-29 20:31:37.650|Info|App.xaml.ExecuteEmergencyStop|504|### FORCED STOP of Dopamine, version 1.5.14.3001 ###
2018-04-29 20:31:37.723|Info|Shell.xaml.PerformClosingTasksAsync|146|Performing closing tasks
2018-04-29 20:31:37.724|Info|Shell.xaml.PerformClosingTasksAsync|151|Writing settings

that would have been an attachment but apparently I couldn't attach .txt

Download lyrics from options are greyed out. I can't select or deselect anything.   Deleting the settings.xml fixed that...annoying.

 

... {after lots of edits}  Looks like if I right click on the lyrics screen too fast after startup it crashes.  Also the file has to have no lyrics in it.

7 hours ago, Ned said:

Download lyrics from options are greyed out. I can't select or deselect anything.   Deleting the settings.xml fixed that...annoying.

 

... {after lots of edits}  Looks like if I right click on the lyrics screen too fast after startup it crashes.  Also the file has to have no lyrics in it.

Hi,

Thanks a lot for trying this out! I realized that testing on my computer doesn't make me discover all possible issues. That's why I re-introduced beta's.

I just fixed all issues you mentioned. Sorry for having them in the first place.

As for the lyrics not being found for "Untitled track", I suspect that the title "Untitled" causes the issue. I'm not sure yet. For other tracks NetEase support works fine.

 

Edit: another question: is the white line issue for timed lyrics resolved on your side?

I just want to say - if I haven't already - this is incredible. I've been using this as my main player since its release and it works brilliantly for me. @Raphaël G.I'm astonished at the work that you continue to put in to this program, and given it was a hobby to begin with I think we can all look to you as a great example of what can be achieved when we put our minds to something that interests us.

On 4/30/2018 at 4:10 PM, Nick H. said:

I just want to say - if I haven't already - this is incredible. I've been using this as my main player since its release and it works brilliantly for me. @Raphaël G.I'm astonished at the work that you continue to put in to this program, and given it was a hobby to begin with I think we can all look to you as a great example of what can be achieved when we put our minds to something that interests us.

Hi @Nick H., thanks a lot for the kind words. This kind of feedback means a lot to me, and is partly what keeps the project going. The other part comes from my inexhaustible need to learn new stuff, to learn better ways to program and to support users. It's challenging, but I need this, apparently :).

  • 2 weeks later...

Dopamine 1.5.14 has been released. This is the change log:

 

– [Changed] Updated the Chinese (Simplified) translation
– [Changed] Updated the Korean translation
– [Changed] Updated the Swedish translation
– [Changed] Decreased the minimum window size for people using narrow or vertical monitors
– [Changed] Before adding a collection folder, a check is now performed to ensure its content is accessible.
– [Changed] Improved parsing of lyrics
– [Fixed] We now don’t crash anymore when a collection folder’s content is not accessible.
– [Fixed] Indexing stops when encountering an unreadable file or folder
– [Fixed] Fixed another issue playing files which contain special characters
– [Fixed] Fixed multiple crashes when searching for lyrics and when editing lyrics
– [Fixed] Fixed a crash which occurs when indexing MP3 files which have corrupt headers
– [Fixed] Fixed a small issue displaying lyrics download timeout settings

 

Download here

  • 4 weeks later...
1 hour ago, FiB3R said:

Will this be fixed by then? 

 

 

?

Yes

 

Edit: however I want to add that the fix will be a workaround for user's which are, essentially, mixing up the artists and album artists tag. There is no AI to detect which tracks are from 1 album. It has to happen based on tag values. Dopamine 1 groups tracks which have the same Album artist and album title. Dopamine 2 will group all tracks which have the same album title. So, I can see the next complaint I'll get: why are tracks from 2 albums which have the same album title grouped into 1 album?

14 minutes ago, dakn said:

Yep exactly. You're putting in a fix that isn't required because someone can't tag their artists properly! (Don't do it ;))

 

People that have albums titled "Greatest Hits" Won't be happy!

I've long postponed "fixing" this, as the current behavior is the only correct one. But the amount of complaints and questions I get about the current behavior is just exhausting. I've spent already too much time explaining this. So the behavior change will happen, for the sake of my mental health :) I'm still brainstorming how I can make this optional though. As I smell trouble already.

8 minutes ago, Brandon H said:

looking good Raphael

 

any chance of you publishing an entry on the Window Store now that they allow WIN32 x86/x64 entries?

the extra level of sandboxing would be nice; even for an audio player :)

I can't say for sure. I've attempted publishing Dopamine to the store already, but the process is tiresome and includes contact with a Microsoft support engineer. I abandoned it after a few weeks. Maybe I'll try again in the future. Hopefully the process of adding a win32 app to the store will be more streamlined by then.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Posts

    • NetSpeedTray 1.3.2 by Razvan Serea NetSpeedTray is a lightweight, open-source Windows network monitor that shows live upload and download speeds directly on the Taskbar. Designed for efficiency, it quietly sits in the system tray, conserving CPU and battery with dynamic updates. It blends seamlessly with Windows 10/11, adapts to light/dark themes, and auto-positions to avoid overlaps. Features include accurate interface detection, customizable display, optional mini-graph, color coding, granular font and unit control, detailed per-interface history graphs, safe data management, and easy CSV export—bringing the network monitoring Windows forgot. NetSpeedTray key features: Lightweight & Efficient Runs quietly in your system tray without consuming resources. Features a "Dynamic Update Rate" that lowers refresh frequency when the network is idle to save CPU and battery life. Native Look & Feel Blends seamlessly with Windows 10/11 UI. Smart detection for light and dark taskbar themes ensures text is always visible. Intelligent & Adaptive Positioning Automatically finds empty space next to your system tray and shifts to make room for new icons, preventing overlaps. Seamless OS Integration Behaves like a native Windows component. Hides instantly with auto-hiding taskbar Hides when a fullscreen app is active Smart Network Monitoring Accurate by Default: Auto mode identifies your main internet connection and ignores noise from VPNs or virtual adapters. Easy Interface Selection: Switch effortlessly between Auto, All, or Selected network interfaces via intuitive radio buttons. Total Visual Customization Free Move Mode: Unlock and place the widget anywhere on your screen. Optional Mini-Graph: Real-time graph of recent network activity with adjustable opacity. Color Coding: Customize colors and speed thresholds to quickly see network status. Granular Display Control Text & Font: Adjust font family, size, weight, and alignment. Units: Automatic (B/s, KB/s, MB/s) or fixed Mbps display. Precision: Set decimal places and always show them for uniform appearance. Detailed & Intelligent History Graph Smart Scale: Logarithmic scale shows low-level traffic and large spikes clearly. Per-Interface Filtering: View speed history for specific adapters (Wi-Fi, Ethernet, VPN). Safe & Efficient Data Management: Adjustable retention, automatic cleanup, optimized database. Easy Data Export: Export raw data to .csv or save high-quality graphs for reports. NetSpeedTray v1.3.2: Smaller, Lighter, Better Multi-Monitor NetSpeedTray v1.3.2 focuses on being smaller, lighter, and more reliable, with major memory savings, better multi-monitor support, stronger privacy protections, and easier troubleshooting. Changes 24% smaller installer (106 → 81 MB) 28% smaller portable ZIP (127 → 91 MB) 45–70% lower idle RAM usage (~135 MB → ~40–75 MB) Preferred Monitor setting for multi-monitor setups (#72) Export Support Bundle for one-click bug-report packaging Live Windows Light/Dark theme detection (#62) Lazy loading of matplotlib & numpy for faster, lighter startup Improved multi-monitor widget position restore after reboot (#133) Windows 10/11 stylesheet and font compatibility fixes (#149) Support Bundle includes sanitized logs, config, and system info PII obfuscator hardened to cover IPv6, MACs, hostnames, GUIDs, and paths (#141) Unified log redaction across file and console logging Better diagnostic logging included by default in support bundles Korean translation improvements and updated translator credits (#139) Test suite expanded from 146 → 191 passing tests (+45) [full release notes] Download: NetSpeedTray 1.3.2 | 81.6 MB (Open Source) Download: NetSpeedTray Portable | 91.1 MB View: NetSpeedTray Home Page | Screenshot Get alerted to all of our Software updates on Twitter at @NeowinSoftware
    • Reluctantly..bs. In this day and age(pun intended) information is more valuable then apps; big tech worked with the GOP and in dem states like California to add this crap so they can agro better marketing data.
    • >Under 13, 13-15, 16-17, or 18+ Or as the Texas GOP likes to call them... Under 13: Priest-bait 13-15: "Want to meet a prince?" - Epstein and Trump 16-17: "Totally legal!" - Megyn Kelly 18+: Public-facing Breeder Wives
    • An excellent piece of hardware held back by its OS
  • Recent Achievements

    • Apprentice
      fernan99 went up a rank
      Apprentice
    • One Month Later
      nothanks earned a badge
      One Month Later
    • One Month Later
      B2Proxy earned a badge
      One Month Later
    • One Year In
      MadMung0 earned a badge
      One Year In
    • Week One Done
      jefred earned a badge
      Week One Done
  • Popular Contributors

    1. 1
      +primortal
      473
    2. 2
      PsYcHoKiLLa
      232
    3. 3
      Skyfrog
      79
    4. 4
      FloatingFatMan
      68
    5. 5
      Michael Scrip
      58
  • Tell a friend

    Love Neowin? Tell a friend!