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