Recommended Posts

 

Hi! Thanks a lot for your feedback!

Most of the features your asking for are planned, eventually (I'm working as fast I humanly possible :))

What do you mean with extended dates? Is there a tag which is reserved for that? (I'm developing a music player, but I don't know much about the available tags :blush: so feel free to enlighten me :))

Concerning the blurry images: are you using a scaling larger than 100% in Windows? If yes, which scaling? I only did tests with 100 and 125%, so I might have missed this issue.

Feel free to improve/correct the French translation if needed. My french was never 100% and is getting a bit rusty :) I'd be glad to include it in next releases.

I'm happy to see that most of these features are planned on your side! I think you progress very fast on the developpement. :)
Extended dates are probably stored in the same "date" tag (have to make some research about that) with "YYYY MM DD" format instead of "YYYY", more precised date.
About the blurry covers, my Samsung SyncMaster S27A850T is configured with a screen resolution of 2560*1440 and 125% DPI and my Surface Pro 3 has a screen resolution of 2160*1440 and 150% DPI. I'm using Windows 10 Pro 64.
Ok, i will check the French translation, but it seems like it's very well translated. ;)
 

I think he means how some music services like itunes are starting to tag the release year with the complete release date (month and day).  Personally I find this irksome as hell and edit the tags to just the year.  I would ask him for a file tagged like that so you can see exactly what he's talking about.

 

I think he means how some music services like itunes are starting to tag the release year with the complete release date (month and day).  Personally I find this irksome as hell and edit the tags to just the year.  I would ask him for a file tagged like that so you can see exactly what he's talking about.

 

When i rip a CD of my collection, i put the complete release date in the "date" tag but Dopamine only reads the "YYYY" format.

I have an example of a file tagged this way, I pm'd you a link to it

and here's a screenshot showing how the date tag is read in foobar2000 vs in dopamine

 

Untitled.png

Thanks! PM and file received. I can see that tag in foobar. I just spent a few hours trying to figure out how to read it, but it seems like a mysterious, badly documented tag. I wasn't able to find out how to get its value using taglib. So I've created a task and delayed adding this tag for later. I feel too frustrated right now :)

 

Thanks! PM and file received. I can see that tag in foobar. I just spent a few hours trying to figure out how to read it, but it seems like a mysterious, badly documented tag. I wasn't able to find out how to get its value using taglib. So I've created a task and delayed adding this tag for later. I feel too frustrated right now :)

Yep, ID3 tags can be a huge pain for sure :)

just an FYI - feedback

The self-updater... work like a charm!!!

Also you are doing some awesome work. keep it up.!

PS - thanks for fixing that bug that caused the player to stop.... when it couldn't figure out the correct end of song.

I know you fixed it ages ago but Just wanted to say that MADE my LIFE SO much EASIER... best fix so far.

Just had the latest build (portable) go crazy, i was searching for a specific song, and while it was playing, it started pausing for a split second, then it totally froze, when I checked in task manager I saw it was using over 1 GB of RAM... this is on Windows 10 X64 8GB RAM, I'm attaching the log file.

2015-09-13 22:33:08.1741|Info|Dopamine.Application.ExecuteStartup|### STARTING dopamine, version 1.0.0 (Build 368). IsPortable = True ###
2015-09-13 22:33:11.3072|Info|Dopamine.Core.Database.DbMigrator.InitializeNewDatabase|New database created at D:\Web Downloads\Dopamine 1.0.0 (Build 368) Preview - Portable\Dopamine\Dopamine.db
2015-09-13 22:33:14.9129|Info|Dopamine.Common.Services.Playback.PlaybackService+VB$StateMachine_70_DeleteRuntimeFilesAsync.MoveNext|Deleting runtime files.
2015-09-13 22:33:14.9379|Error|Dopamine.Common.Services.File.FileService._Lambda$__110|There was a problem while fetching file artwork. Exception: Could not find a part of the path 'D:\Web Downloads\Dopamine 1.0.0 (Build 368) Preview - Portable\Dopamine\Cache\CoverArt'.
2015-09-13 22:33:29.7765|Info|Dopamine.SettingsModule.ViewModels.SettingsCollectionFoldersViewModel+VB$StateMachine_0_AddFolder.MoveNext|Adding a folder to the collection.
2015-09-13 22:33:42.9136|Info|Dopamine.Core.Database.FolderRepository+_Closure$__12._Lambda$__19|Added the Folder F:\Music
2015-09-13 22:33:50.5204|Info|Synapse.Synapse.Main|<<< Synapse indexer started >>>
2015-09-13 22:33:50.5324|Info|Synapse.Synapse.Main|Validating process
2015-09-13 22:33:50.5394|Info|Synapse.Synapse.ValidateProcess|Commandline argument 1: IgnoreRemovedFiles = True
2015-09-13 22:33:50.5394|Info|Synapse.Synapse.Main|Initializing WCF proxies
2015-09-13 22:33:50.6004|Info|Synapse.Synapse.Main|Notifying the main application that the indexer is started
2015-09-13 22:33:50.7254|Info|Synapse.Synapse.Main|Waiting for the database
2015-09-13 22:33:50.7254|Info|Synapse.Synapse.WaitForDatabase|D:\Web Downloads\Dopamine 1.0.0 (Build 368) Preview - Portable\Dopamine\Dopamine.db was found. Proceeding.
2015-09-13 22:33:50.7270|Info|Synapse.Synapse.Main|Initializing the Indexing Worker
2015-09-13 22:33:52.4767|Info|Synapse.Synapse.Main|Initializing the LifeBeat Timer
2015-09-13 22:33:52.4767|Info|Synapse.Synapse.Main|Starting the LifeBeat Timer
2015-09-13 22:33:52.4777|Info|Synapse.Synapse.Main|Updating collection
2015-09-13 22:33:52.4777|Info|Dopamine.Core.Indexing.Indexer+VB$StateMachine_21_IndexCollectionAsync.MoveNext|+++ STARTED INDEXING COLLECTION +++
2015-09-13 22:33:52.5346|Info|Dopamine.Core.Indexing.Indexer+VB$StateMachine_21_IndexCollectionAsync.MoveNext|Tracks removed: 0. Time required: 47 ms +++
2015-09-13 22:34:20.2997|Error|Dopamine.Core.Database.FolderRepository+_Closure$__15._Lambda$__22|Error while recursively getting files/folders. Exception: System.UnauthorizedAccessException: Access to the path 'F:\Music\Albums\2Cellos' is denied.
   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.FileSystemEnumerableIterator`1.CommonInit()
   at System.IO.FileSystemEnumerableIterator`1..ctor(String path, String originalUserPath, String searchPattern, SearchOption searchOption, SearchResultHandler`1 resultHandler, Boolean checkHost)
   at System.IO.Directory.GetFiles(String path)
   at Dopamine.Core.IO.FileOperations.DirectoryRecursiveGetFiles(String iSourcePath, List`1 iFiles, String[] iValidExtensions, ConcurrentQueue`1 oExceptions)
2015-09-13 22:34:20.2997|Error|Dopamine.Core.Database.FolderRepository+_Closure$__15._Lambda$__22|Error while recursively getting files/folders. Exception: System.UnauthorizedAccessException: Access to the path 'F:\Music\Albums\2Cellos' is denied.
   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.FileSystemEnumerableIterator`1.CommonInit()
   at System.IO.FileSystemEnumerableIterator`1..ctor(String path, String originalUserPath, String searchPattern, SearchOption searchOption, SearchResultHandler`1 resultHandler, Boolean checkHost)
   at System.IO.Directory.GetDirectories(String path)
   at Dopamine.Core.IO.FileOperations.DirectoryRecursiveGetFiles(String iSourcePath, List`1 iFiles, String[] iValidExtensions, ConcurrentQueue`1 oExceptions)
2015-09-13 22:34:20.3707|Info|Dopamine.Core.Indexing.Indexer+VB$StateMachine_21_IndexCollectionAsync.MoveNext|Tracks updated: 0. Time required: 4 ms +++
2015-09-13 22:38:14.9162|Info|Dopamine.Common.Services.Playback.PlaybackService+VB$StateMachine_70_DeleteRuntimeFilesAsync.MoveNext|Deleting runtime files.
2015-09-13 22:43:14.9173|Info|Dopamine.Common.Services.Playback.PlaybackService+VB$StateMachine_70_DeleteRuntimeFilesAsync.MoveNext|Deleting runtime files.
2015-09-13 22:48:14.9174|Info|Dopamine.Common.Services.Playback.PlaybackService+VB$StateMachine_70_DeleteRuntimeFilesAsync.MoveNext|Deleting runtime files.
2015-09-13 22:53:14.9299|Info|Dopamine.Common.Services.Playback.PlaybackService+VB$StateMachine_70_DeleteRuntimeFilesAsync.MoveNext|Deleting runtime files.
2015-09-13 22:58:14.9313|Info|Dopamine.Common.Services.Playback.PlaybackService+VB$StateMachine_70_DeleteRuntimeFilesAsync.MoveNext|Deleting runtime files.
2015-09-13 23:03:14.9314|Info|Dopamine.Common.Services.Playback.PlaybackService+VB$StateMachine_70_DeleteRuntimeFilesAsync.MoveNext|Deleting runtime files.
2015-09-13 23:08:14.9324|Info|Dopamine.Common.Services.Playback.PlaybackService+VB$StateMachine_70_DeleteRuntimeFilesAsync.MoveNext|Deleting runtime files.
2015-09-13 23:13:14.9336|Info|Dopamine.Common.Services.Playback.PlaybackService+VB$StateMachine_70_DeleteRuntimeFilesAsync.MoveNext|Deleting runtime files.
2015-09-13 23:16:57.2910|Info|Dopamine.Core.Indexing.Indexer+VB$StateMachine_21_IndexCollectionAsync.MoveNext|Tracks added: 90839. Time required: 2556920 ms +++
2015-09-13 23:18:14.9357|Info|Dopamine.Common.Services.Playback.PlaybackService+VB$StateMachine_70_DeleteRuntimeFilesAsync.MoveNext|Deleting runtime files.
2015-09-13 23:22:33.2837|Info|Dopamine.Core.Indexing.Indexer+VB$StateMachine_21_IndexCollectionAsync.MoveNext|+++ FINISHED INDEXING COLLECTION: Tracks removed: 0. Tracks updated: 0. Tracks added: 90839. Time required: 2920796 ms +++
2015-09-13 23:22:33.3032|Error|Synapse.Synapse.IndexCollection|Could not get from the main application if extra collection check is needed. Exception: There was an error writing to the pipe: Unrecognized error 232 (0xe8).
2015-09-13 23:22:33.3077|Error|Synapse.Synapse.IndexCollection|Could not notify the main application to refresh the lists. Exception: The communication object, System.ServiceModel.Channels.ServiceChannel, cannot be used for communication because it is in the Faulted state.
2015-09-13 23:22:33.3077|Info|Synapse.Synapse.Main|Updating artwork
2015-09-13 23:22:33.3077|Error|Synapse.Synapse.IndexArtwork|Could not notify the main application that updating artwork started. Exception: The communication object, System.ServiceModel.Channels.ServiceChannel, cannot be used for communication because it is in the Faulted state.
2015-09-13 23:22:33.3077|Info|Dopamine.Core.Indexing.Indexer+VB$StateMachine_23_IndexArtworkAsync.MoveNext|+++ STARTED INDEXING ARTWORK +++
2015-09-13 23:23:14.9361|Info|Dopamine.Common.Services.Playback.PlaybackService+VB$StateMachine_70_DeleteRuntimeFilesAsync.MoveNext|Deleting runtime files.
2015-09-13 23:28:14.9468|Info|Dopamine.Common.Services.Playback.PlaybackService+VB$StateMachine_70_DeleteRuntimeFilesAsync.MoveNext|Deleting runtime files.
2015-09-13 23:33:14.9473|Info|Dopamine.Common.Services.Playback.PlaybackService+VB$StateMachine_70_DeleteRuntimeFilesAsync.MoveNext|Deleting runtime files.
2015-09-13 23:35:35.3701|Info|Synapse.Synapse.Main|Aborting WCF proxies
2015-09-13 23:35:35.4371|Error|Synapse.Synapse.Main|Synapse indexer encountered an unexpected error. Synapse indexer stops now. Exception:
System.AggregateException: One or more errors occurred. ---> System.ServiceModel.CommunicationException: There was an error writing to the pipe: The pipe is being closed. (232, 0xe8). ---> System.IO.PipeException: There was an error writing to the pipe: The pipe is being closed. (232, 0xe8).
   at System.ServiceModel.Channels.PipeConnection.StartSyncWrite(Byte[] buffer, Int32 offset, Int32 size, Object& holder)
   at System.ServiceModel.Channels.PipeConnection.StartSyncWrite(Byte[] buffer, Int32 offset, Int32 size)
   at System.ServiceModel.Channels.PipeConnection.Write(Byte[] buffer, Int32 offset, Int32 size, Boolean immediate, TimeSpan timeout, BufferManager bufferManager)
   --- End of inner exception stack trace ---

Server stack trace:
   at System.ServiceModel.Channels.PipeConnection.Write(Byte[] buffer, Int32 offset, Int32 size, Boolean immediate, TimeSpan timeout, BufferManager bufferManager)
   at System.ServiceModel.Channels.BufferedConnection.WriteNow(Byte[] buffer, Int32 offset, Int32 size, TimeSpan timeout, BufferManager bufferManager)
   at System.ServiceModel.Channels.BufferedConnection.Write(Byte[] buffer, Int32 offset, Int32 size, Boolean immediate, TimeSpan timeout, BufferManager bufferManager)
   at System.ServiceModel.Channels.FramingDuplexSessionChannel.OnSendCore(Message message, TimeSpan timeout)
   at System.ServiceModel.Channels.TransportDuplexSessionChannel.OnSend(Message message, TimeSpan timeout)
   at System.ServiceModel.Channels.OutputChannel.Send(Message message, TimeSpan timeout)
   at System.ServiceModel.Dispatcher.DuplexChannelBinder.Request(Message message, TimeSpan timeout)
   at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
   at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
   at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)

Exception rethrown at [0]:
   at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
   at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
   at Synapse.DopamineServiceReference.ICommunicationService.IndexingStopReportingProgress()
   at Synapse.DopamineServiceReference.CommunicationServiceClient.IndexingStopReportingProgress()
   at Synapse.Synapse.StopReportingProgress(Object sender, IndexingEventArgs e)
   at Dopamine.Core.Indexing.Indexer.VB$StateMachine_23_IndexArtworkAsync.MoveNext()
   --- End of inner exception stack trace ---
   at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
   at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
   at System.Threading.Tasks.Task.Wait()
   at Synapse.Synapse.IndexArtwork()
   at Synapse.Synapse.Main()
---> (Inner Exception #0) System.ServiceModel.CommunicationException: There was an error writing to the pipe: The pipe is being closed. (232, 0xe8). ---> System.IO.PipeException: There was an error writing to the pipe: The pipe is being closed. (232, 0xe8).
   at System.ServiceModel.Channels.PipeConnection.StartSyncWrite(Byte[] buffer, Int32 offset, Int32 size, Object& holder)
   at System.ServiceModel.Channels.PipeConnection.StartSyncWrite(Byte[] buffer, Int32 offset, Int32 size)
   at System.ServiceModel.Channels.PipeConnection.Write(Byte[] buffer, Int32 offset, Int32 size, Boolean immediate, TimeSpan timeout, BufferManager bufferManager)
   --- End of inner exception stack trace ---

Server stack trace:
   at System.ServiceModel.Channels.PipeConnection.Write(Byte[] buffer, Int32 offset, Int32 size, Boolean immediate, TimeSpan timeout, BufferManager bufferManager)
   at System.ServiceModel.Channels.BufferedConnection.WriteNow(Byte[] buffer, Int32 offset, Int32 size, TimeSpan timeout, BufferManager bufferManager)
   at System.ServiceModel.Channels.BufferedConnection.Write(Byte[] buffer, Int32 offset, Int32 size, Boolean immediate, TimeSpan timeout, BufferManager bufferManager)
   at System.ServiceModel.Channels.FramingDuplexSessionChannel.OnSendCore(Message message, TimeSpan timeout)
   at System.ServiceModel.Channels.TransportDuplexSessionChannel.OnSend(Message message, TimeSpan timeout)
   at System.ServiceModel.Channels.OutputChannel.Send(Message message, TimeSpan timeout)
   at System.ServiceModel.Dispatcher.DuplexChannelBinder.Request(Message message, TimeSpan timeout)
   at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
   at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
   at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)

Exception rethrown at [0]:
   at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
   at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
   at Synapse.DopamineServiceReference.ICommunicationService.IndexingStopReportingProgress()
   at Synapse.DopamineServiceReference.CommunicationServiceClient.IndexingStopReportingProgress()
   at Synapse.Synapse.StopReportingProgress(Object sender, IndexingEventArgs e)
   at Dopamine.Core.Indexing.Indexer.VB$StateMachine_23_IndexArtworkAsync.MoveNext()<---


Stack trace:
   at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
   at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
   at System.Threading.Tasks.Task.Wait()
   at Synapse.Synapse.IndexArtwork()
   at Synapse.Synapse.Main()
Inner Exception 1:
System.ServiceModel.CommunicationException: There was an error writing to the pipe: The pipe is being closed. (232, 0xe8). ---> System.IO.PipeException: There was an error writing to the pipe: The pipe is being closed. (232, 0xe8).
   at System.ServiceModel.Channels.PipeConnection.StartSyncWrite(Byte[] buffer, Int32 offset, Int32 size, Object& holder)
   at System.ServiceModel.Channels.PipeConnection.StartSyncWrite(Byte[] buffer, Int32 offset, Int32 size)
   at System.ServiceModel.Channels.PipeConnection.Write(Byte[] buffer, Int32 offset, Int32 size, Boolean immediate, TimeSpan timeout, BufferManager bufferManager)
   --- End of inner exception stack trace ---

Server stack trace:
   at System.ServiceModel.Channels.PipeConnection.Write(Byte[] buffer, Int32 offset, Int32 size, Boolean immediate, TimeSpan timeout, BufferManager bufferManager)
   at System.ServiceModel.Channels.BufferedConnection.WriteNow(Byte[] buffer, Int32 offset, Int32 size, TimeSpan timeout, BufferManager bufferManager)
   at System.ServiceModel.Channels.BufferedConnection.Write(Byte[] buffer, Int32 offset, Int32 size, Boolean immediate, TimeSpan timeout, BufferManager bufferManager)
   at System.ServiceModel.Channels.FramingDuplexSessionChannel.OnSendCore(Message message, TimeSpan timeout)
   at System.ServiceModel.Channels.TransportDuplexSessionChannel.OnSend(Message message, TimeSpan timeout)
   at System.ServiceModel.Channels.OutputChannel.Send(Message message, TimeSpan timeout)
   at System.ServiceModel.Dispatcher.DuplexChannelBinder.Request(Message message, TimeSpan timeout)
   at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
   at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
   at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)

Exception rethrown at [0]:
   at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
   at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
   at Synapse.DopamineServiceReference.ICommunicationService.IndexingStopReportingProgress()
   at Synapse.DopamineServiceReference.CommunicationServiceClient.IndexingStopReportingProgress()
   at Synapse.Synapse.StopReportingProgress(Object sender, IndexingEventArgs e)
   at Dopamine.Core.Indexing.Indexer.VB$StateMachine_23_IndexArtworkAsync.MoveNext()
Inner Exception 2:
System.IO.PipeException: There was an error writing to the pipe: The pipe is being closed. (232, 0xe8).
   at System.ServiceModel.Channels.PipeConnection.StartSyncWrite(Byte[] buffer, Int32 offset, Int32 size, Object& holder)
   at System.ServiceModel.Channels.PipeConnection.StartSyncWrite(Byte[] buffer, Int32 offset, Int32 size)
   at System.ServiceModel.Channels.PipeConnection.Write(Byte[] buffer, Int32 offset, Int32 size, Boolean immediate, TimeSpan timeout, BufferManager bufferManager)

2015-09-13 23:35:35.4592|Info|Synapse.Synapse.Main|<<< Synapse indexer FORCED stop >>>
2015-09-13 23:35:39.7639|Error|Dopamine.Common.Services.Indexing.IndexingService.CheckLifeBeatTimerElapsed|There was no Indexer LifeBeat for more than 3 seconds. Stopping the indexing.
2015-09-13 23:38:14.9535|Info|Dopamine.Common.Services.Playback.PlaybackService+VB$StateMachine_70_DeleteRuntimeFilesAsync.MoveNext|Deleting runtime files.
2015-09-13 23:43:14.9623|Info|Dopamine.Common.Services.Playback.PlaybackService+VB$StateMachine_70_DeleteRuntimeFilesAsync.MoveNext|Deleting runtime files.
2015-09-13 23:48:16.6794|Info|Dopamine.Common.Services.Playback.PlaybackService+VB$StateMachine_70_DeleteRuntimeFilesAsync.MoveNext|Deleting runtime files.
2015-09-13 23:48:16.6854|Error|Dopamine.Core.Database.TrackRepository+_Closure$__30._Lambda$__36|Could not get all the Tracks. Exception: Exception of type 'System.OutOfMemoryException' was thrown.
2015-09-13 23:48:21.6702|Error|Dopamine.Core.Database.TrackRepository+_Closure$__30._Lambda$__36|Could not get all the Tracks. Exception: Exception of type 'System.OutOfMemoryException' was thrown.

 

I added a Genres screen (build still in testing):

 

That would be extremely useful if "genre" were ever correctly listed on mp3s. Sigh, those tags are such a headache.

Still has issues with not accepting commands from media keyboards (even once setting it on a per-program basis)

It is great seeing Dopamine grow, look forward to new features.

 

That would be extremely useful if "genre" were ever correctly listed on mp3s. Sigh, those tags are such a headache.

Still has issues with not accepting commands from media keyboards (even once setting it on a per-program basis)

It is great seeing Dopamine grow, look forward to new features.

Correct about genres usually not being useful. It's the reason I originally wasn't planning to add such a screen. It was asked however, and I thought: why not, it is almost a copy of the Artists screen, but then for Genres :rofl:

For the keyboard commands: correct, I haven't changed anything yet, as I haven't been able to reproduce it. But I must say I have tried it only while playing half life 2 fullscreen. So I don't know yet what is interfering with the keyboard commands.

What do you mean setting on per program basis? Is that some kind of configuration in software delivered with your keyboard? Dopamine listens to standard windows keypresses basically any key and then only acts on the keycodes linked to media keys. Maybe we can try this:

Download KeyboardTest5.exe here (this is a link to the directory on dropbox where the exe resides, it doesn't directly download the exe). This exe is from me, so it is safe (the source code is also in that directory). Launch the exe before starting a game, start pressing media keys, and check what the ouput of the program is. When done, select everything which is displayed in the output window, and send it to me.

Next features will be rating and tagging, but I first want to display album artists in the list of artist. It would be silly to delay that until after tagging was added, because I would then have to change the tagging mechanism again.

just an FYI - feedback

The self-updater... work like a charm!!!

Also you are doing some awesome work. keep it up.!

PS - thanks for fixing that bug that caused the player to stop.... when it couldn't figure out the correct end of song.

I know you fixed it ages ago but Just wanted to say that MADE my LIFE SO much EASIER... best fix so far.

Thank you. And, you're welcome:) The stopping of the player was caused by myself :rofl: (some age old code which I never looked at again :))

Just had the latest build (portable) go crazy, i was searching for a specific song, and while it was playing, it started pausing for a split second, then it totally froze, when I checked in task manager I saw it was using over 1 GB of RAM... this is on Windows 10 X64 8GB RAM, I'm attaching the log file.

Thanks for letting me know. Does it happen all the time, or once?

The "genres" screen is a nice addition!

For the blurry covers in 125% and 150% DPI, i think it's a problem due to how Dopamine displays the pictures as the covers in "cache" folder seem to be in very good quality.

The "genres" screen is a nice addition!

For the blurry covers in 125% and 150% DPI, i think it's a problem due to how Dopamine displays the pictures as the covers in "cache" folder seem to be in very good quality.

Yep you are right. That's fixed for the next build. Technical explanation: dopamine scaled the pictures from the cache folder down to the sizes (100px for artist, 150px for albums) required on the artists and albums screens. But when using a "dpi" higher than 100, this scaled down size is upscaled to 100*1.25 and 150*1.50 by WPF itself, which causes the blurryness. I found a way to work around that.

  • Like 1

 

What do you mean setting on per program basis? Is that some kind of configuration in software delivered with your keyboard? Dopamine listens to standard windows keypresses basically any key and then only acts on the keycodes linked to media keys. Maybe we can try this:

Download KeyboardTest5.exe here (this is a link to the directory on dropbox where the exe resides, it doesn't directly download the exe). This exe is from me, so it is safe (the source code is also in that directory). Launch the exe before starting a game, start pressing media keys, and check what the ouput of the program is. When done, select everything which is displayed in the output window, and send it to me.

 

I am using the native MS Mouse and Keyboard Center with a Digital Media Pro keyboard

KeyboardTest showed

nCode='0', wParam='&H100', vkCode='176'
nCode='0', wParam='&H101', vkCode='176'

 

on pressing "next"

 

Yep you are right. That's fixed for the next build. Technical explanation: dopamine scaled the pictures from the cache folder down to the sizes (100px for artist, 150px for albums) required on the artists and albums screens. But when using a "dpi" higher than 100, this scaled down size is upscaled to 100*1.25 and 150*1.50 by WPF itself, which causes the blurryness. I found a way to work around that.

Nice, waiting for the next preview! :)
I expected that the problem was something like that, thank you for the explanation.


Something else, as i use really often use Dopamine lately, someone already ask about to have, in the "cover play mode" ("lecteur pochette" in french), an option to show the playlist under the visualisation instead of "on the cover", like in the "micro play mode"? I think it would be a nice option.

Nice, waiting for the next preview! :)
I expected that the problem was something like that, thank you for the explanation.


Something else, as i use really often use Dopamine lately, someone already ask about to have, in the "cover play mode" ("lecteur pochette" in french), an option to show the playlist under the visualisation instead of "on the cover", like in the "micro play mode"? I think it would be a nice option.

Well, I think having both options in cover player will cause some kind of inconsistency, isn't it? :/

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

    • DVD only? What kind of self-respecting optical disk backup/ripping tool doesn't support Blu-ray these days? I burned all my DVDs like 15+ years ago...
    • ...but you're Johnny, from Australia?    
    • Glow 26.9 by Razvan Serea Glow provides detailed reporting on every hardware component in your computer, saving you valuable time typically spent searching for CPU, motherboard, RAM, graphics card, and other stats. With Glow, all the information is conveniently presented in one clean interface, allowing you to easily access and review the comprehensive hardware details of your system. Glow provides detailed information on various system aspects, including OS, motherboard, processor, memory, graphics card, storage, network, battery, drivers, and services. The well-organized format ensures easy access to the required information. You can export all the gathered data to a plain text file, facilitating sharing with others for troubleshooting purposes. No installation needed. Just decompress the archive, launch the executable, and access computer-related information. Glow runs on Windows 11 and Windows 10 64-bit versions. Glow 26.9 changelog: New Features The processor hardware detection engine has been significantly enhanced beyond traditional Intel and AMD architectures. Native support is now available for modern platforms such as Apple Silicon (M-Series) and the newly introduced NVIDIA Spark. In addition, all ARM-based processors can now be accurately distinguished between ARM32 and ARM64 architectures, providing precise hardware reporting. This marks a major milestone for Glow's hardware detection capabilities. The RAM manufacturer identification algorithm has been expanded. JEDEC vendor codes for popular brands such as Patriot, PNY, Team Group, GeIL, Lexar (Longsys), and Asgard/Gloway have been integrated into the database. This significantly reduces the likelihood of incorrect or "Unknown Manufacturer" results and improves overall hardware detection accuracy. New Public IP Address and Internet Service Provider (ISP) features have been added to the Network section. To ensure reliability, this information is retrieved from the trusted service ipwho.is. When Hiding Mode is enabled, no requests are sent and these features remain hidden, as they may expose sensitive information. The search engine used in the Installed Drivers, Installed Services, and Installed Applications sections has been enhanced. You can now perform more flexible and accurate searches using initials, partial matches, and loosely arranged character sequences. The TS Preloader loading bar has been rebuilt using our modern TS Custom Controls graphics library, developed entirely in-house. As a result of this infrastructure upgrade, the loading bar now features smooth rendering and rounded corners that align with the visual style of Windows 11. [TS Updater] A new validation algorithm has been added to check whether the target application is currently running before the update process begins. Bug Fixes Resolved a condition that could prevent TS Preloader from shutting down safely during rare application crash scenarios. Fixed a text alignment issue in the Network section affecting the display of DNS addresses. Alignment is now rendered correctly. [TS Updater] Fixed an issue that could prevent the updated application's executable "*.exe" file from being located after the update process. [TS Updater] Fixed a bug that could leave outdated "*.sha256" files in the application directory after an update. [TS Updater] Fixed a rare issue that could cause subfolders to be moved into the root directory after an update. [TS Updater] Fixed an issue during the first launch that could cause flickering and a temporary white window appearance due to Windows Defender interactions. Changes A small improvement has been made to the internet connectivity detection algorithm. Connectivity checks are now performed in the background with minimal impact on the user interface thread. The keyboard shortcuts in the top menu have been reorganized and simplified to provide a consistent experience across all Türkaysoft applications and to avoid potential conflicts with standard Windows shortcuts. The TS Preloader splash image has been updated with a Türkiye-themed stadium design to celebrate Türkiye's qualification for the 2026 FIFA World Cup—its first appearance in 24 years. Congratulations, Türkiye! The TS Custom Controls module has been updated to version 26.6, delivering improved stability and a more polished visual appearance. [TS Updater] The application icon has been redesigned to provide a more modern and refined look. Note: Always unzip the program before using it. Otherwise you may get an error. Download: Glow 26.9 | 1.8 MB (Open Source) Links: Glow Homepage | Screenshot | Github Get alerted to all of our Software updates on Twitter at @NeowinSoftware
    • DWARF mini review: the world's smallest smart telescope for night and day sky captures by Steven Parker DWARFLAB reached out to me asking if I was interested in checking out the DWARF mini, which is a portable astronomy telescope designed for amateur astronomers. Why do I say it's for amateurs? Well, for starters, it's not what you'd call "high end"; it's more of a professional-grade starting point for amateurs serious about capturing what's up there in our night and day skies. A typical amateur astronomer is most likely thousands of dollars deep into the hobby, and I will make no claims that this DWARF mini (at a fraction of the cost) could replace it all, okay? Well, if you read on, it will be clearer what I am trying to convey. Disclosure: DWARFLAB provided a free sample without any editorial input or review pre-approval. I have always been interested in looking up and observing the night sky. I see satellites crossing the sky above my garden most nights, and I am always looking at the moon. Yeah, I have a 200MP camera on my phone, but at 200X zoom, AI takes over and makes the pretty moon pictures that I snap, the DWARF mini does not, you get an actual true picture of what you can barely see with the naked eye. Before we start, let's share the highlights of the DWARF mini in bite-sized format: Pocket-Sized & Ultra-Lightweight Weighing just 1.85 lbs (840g), the DWARF mini easily fits into a backpack or large pocket. Its all-in-one, compact design makes it the ultimate grab-and-go digital telescope for hiking, camping, or traveling to dark-sky locations. Intuitive App Control & Built-in Sky Atlas Go from unboxing to your first shot in just 3 minutes! The DWARFLAB App provides a seamless experience with an interactive star map. Simply select your target and start exploring without the steep learning curve of traditional setups. Auto GOTO & 360° Pivot Freedom Enjoy pinpoint automated tracking with full 360° rotation. Powered by a high-sensitivity Sony IMX662 sensor (1/2.8-inch, 2.9μm pixels), it captures amazing, low-noise astro details, bringing faint nebulas and star clusters to life with stunning clarity. Pro-Level EQ Mode & Long Exposure Unlock advanced deep-space imaging with Equatorial (EQ) Mode. Supporting impressive single-frame exposures up to 90 seconds and featuring built-in light pollution filters, it easily cuts through city glow to reveal intricate celestial structures. Smart Cloud Processing & All-Ages Fun Effortlessly enhance your raw data with integrated cloud processing for professional-grade results. Perfect for beginners, kids, and adults, this telescope makes exploring and sharing the wonders of the universe an exciting, family-friendly adventure. The packaging is a pretty minimal affair with the outer box opening like a flap to reveal the plastic mould of the DWARF mini sitting in it. Below, the Sun filter, charging cable, cleaning cloth, and documentation can be found. DWARFLAB also provided a Mini Hydraulic Tripod ($89.99), and I highly recommend getting it if you plan on purchasing the DWARF mini, as it fully supports the motorized tracking feature of the telescope; plus, at 840g, the weight of the telescope, you will need a tripod that supports more than the weight of a smartphone anyway. What's in the box DWARF Mini Smart Telescope × 1 Sun Filter x 1 Type-C to Type-C Cord x 1 Cleaning Cloth x 1 User Guide With that out of the way, here are the full specs: DWARF mini Dimensions (DWH): 60.70 mm x 100.38 × 183.61 (2.39" x 3.95" x 7.23") Weight: 840g (1.85lbs) Aperture diameter: 30 mm (telephoto), 3.4 mm (wide angle) Image Sensor: SONY IMX662 1/2.8" (Telephoto) OmniVision OS02K10 1/2.8" (Wide-angle) Focal length: 150 mm (telephoto), 6.7 mm (wide-angle) Equivalent focal length: 1016 mm (telephoto), 45 mm (wide-angle) Shutter Speed: Tele - 1/10000-90s, Wide - 1/10000-30s Maximum exposure time: 90s (telephoto & wide-angle), Both in EQ mode Rotation range: Lens: 225°, Base: 360° Effective Pixels: 2.07M Maximum Resolution: 1920 × 1080 (Telephoto & Wide-angle) Built-in filters: Astro, Dark, Duo-Band (Telephoto), Astro (Wide-angle) Output: JPG, FITS, TIFF, MP4 Shooting Mode: Photos, Videos, Astronomy, Burst Shooting, Time-lapse Photography Storage: 64 GB Battery: Built-in 7000 mAh, supports external USB charging Charging Port: Type-C NPU: 1 TOPS Features: WiFi, NFC NFC One-Touch Connection Astronomy Post-Processing/Appointment Shooting/Astronomy Mosaic Wi-Fi Transmission Range: 15m (open environment) Color: Black Compatibility: iOS & Android smartphones/tablets Warranty: 2-years (24-months) MSRP: $399 Design Charge port On/off button Lens On the DWARF mini itself, it is a pretty minimal affair. On one side, there is a Type-C USB port to charge the non-removable 7000 mAh battery, and on the other side, a large button to power on or off the telescope. The button is flanked by an LED that is green when connected via the DWARFLAB app, or lights up red when being powered off. Below the button, there are four LEDs that indicate battery power. The DWARF mini does not have any sharp edges as all sides are rounded off; it has a good heft to it, but the weight of it feels quite balanced in the hand, so it isn't top or bottom-heavy. On the front there is the DWARFLAB logo which is quite small and there are no other markings on it. The tripod offers full 360° rotation of the motorized base, which allows for tracking for the time-lapse mode, but also for the 90-second captures of nearer objects in the sky, such as the Sun or the moon. Usage To get started, simply power on the DWARF mini and open the DWARFLAB app, tap on Connect, and it will scan for the DWARF mini over the Wi-Fi network. The device supports both 2.4 GHz and 5 GHz Wi-Fi, as well as Bluetooth for discovery, so connection issues were minimal in my experience with it. As previously noted in the specs, the DWARF mini will stay connected with a phone or tablet up to 15 meters in an open environment, such as a backyard. Lighting status Powering on: The green circular light will rotate and breathe in turn Powering off: The red circular light is gradually extinguished Connecting: Green light strip rotating Connected: Green light strip solid/always on 4 lights 1= 0-25%, 2= 25-50%, 3= 50-75%, 4= 75-100% battery power To view the full lighting status, such as tracking mode and connection failure, you can check the user guide on the official DWARFLAB page. DWARFLAB app Above, you can see the steps undertaken to connect the DWARFLAB app to my Galaxy S26 Ultra. Weirdly, I got an alert that a firmware update failed to get uploaded to the DWARF mini the first time, but upon retrying, it worked. Then place the DWARF mini outside, make sure your smartphone or tablet is connected to it, and then head back inside, because you can manage it from the comfort of your home. Simply enter the Atlas tab in the app and search for what you want to capture, and then tap on the camera icon; the DWARF mini will then attempt to track the object and give you a live view right on your connected device. Results I've had the DWARF mini since April, but even though my garden is south-facing, I had a lot of trouble trying to capture a good image of the moon. In the end, it was possible after I took it with me on a trip to my parents in Southend, UK, at the end of May. Here is a capture of the moon, resulting from 20 stacked images over a 90-second exposure. What you are seeing here is not AI-assisted. A good example of what I mean is the latest flagships with their 200MP cameras claiming to capture things like closeups of the moon, and while they are not as good as the above example on the DWARF mini, the resulting image on smartphones is actually AI-assisted above 30X zoom. Here is an example of a similar shot at the moon at 200X zoom using an HONOR Magic8 Pro. The difference is clear. Next, here we have a shot of the daytime moon. Here is a shot of Arcturus, the red giant star, which is the fourth brightest in the night sky. As previously mentioned, it could be a bit clearer, but clouds passing in front of it muddied the shot a bit. The Sun The DWARF mini also ships with a sun filter, meaning you can take great shots of the sun as well. Tracking Sun Resulting (stacked) shot Live zoom The pictures themselves are limited to Full HD, and some of the examples actually came out in HD (1280x720), but this is because the standard telescopic result is in 720p while "Wide" is in 1080p. Above you can see how in the app the Sun is tracked, the resulting capture, and Live zoom. I have only scratched the surface of what is possible with this telescope; I found several examples online of shots of the Milky Way, among others, such as nebulae and galaxies. All of this requires patience and knowledge, although if you know what you are looking for, simply enter it in the Atlas tab in the DWARFLAB app, tap the camera icon, and the telescope will attempt to track it. Conclusion The good The DWARF mini definitely places itself in a price point that makes astrology accessible to anyone looking to get started in the hobby. Say you want to have a closer look at the moon, simply enter it in the Atlas, and the Live view also lets you zoom in and snap pictures. The bad Some issues I came across while operating the DWARF mini were that it sometimes failed to connect unless I held my smartphone right next to it, and finding and tracking sometimes took several attempts to get it calibrated. I discovered that it helped if I sort of positioned and pointed the telescope in the general area it was supposed to detect, but this obviously wouldn't work with objects you can't see with the naked eye; more testing is required for that. Another bit of advice is to ensure that the lens is clean. While making the examples of live zooming on the sun, I discovered that the telescope lens and sun filter were not completely clean, and only after cleaning with a microfiber cloth was I able to get a decent shot of the sun. Where to buy and a coupon Okay, $399 is not cheap for a side hobby, but nor is a $1,500 smartphone flagship that you'll most likely have for a couple of years. This is a one-time entrance into astrology, and it won't become obsolete in one year like a smartphone. It's a thumbs up from me. The DWARF mini is available to buy right now in the U.S. and U.K. at the links below. DWARF mini for $399 on the official site DWARF mini for $399 on Amazon U.S. Use the NEOWIN5OFF coupon code for an additional 5% off at checkout (expires June 21) As an Amazon Associate, I earn from qualifying purchases.
  • Recent Achievements

    • One Month Later
      lamborghiniv10 earned a badge
      One Month Later
    • Week One Done
      lamborghiniv10 earned a badge
      Week One Done
    • Reacting Well
      X-No-file earned a badge
      Reacting Well
    • One Month Later
      pestcontrol46 earned a badge
      One Month Later
    • Week One Done
      pestcontrol46 earned a badge
      Week One Done
  • Popular Contributors

    1. 1
      +primortal
      504
    2. 2
      PsYcHoKiLLa
      270
    3. 3
      Skyfrog
      75
    4. 4
      +Edouard
      75
    5. 5
      Steven P.
      71
  • Tell a friend

    Love Neowin? Tell a friend!