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

    • Or just check the script yourself ^^. I hate having a Microsoft account tied to my windows install.
    • 007 First Light review: Satisfying spy adventure that James Bond needed by Pulasthi Ariyasinghe I have fond memories of classic James Bond games from the Electronic Arts era. Using high-tech gadgets, sneaking into parties, and dispatching bad guys were wildly exciting activities for my younger self. In recent years, Bond games have entirely disappeared, alongside the super spy genre. Fast forward to 2020, imagine my surprise when IO Interactive announced it had secured the Bond IP to make a game. Considering the studio’s Hitman history, this project is one I keenly kept an eye on. Six years later, 007 First Light is finally here, and after spending time inside this globe-trotting adventure, I can safely say that my excitement for this developer’s take on this universe was not unfounded. IO has taken lessons it has learned from Hitman and combined them with what I would expect from a directed cinematic experience like James Bond. I have refrained from mentioning major plot points to save you from story spoilers in this review. This is an original story that doesn’t tie into any movies, so there isn’t an expectation of knowing the backstory or the decades of movies either. Bond, James Bond When 007 First Light begins, Bond is just Bond. There isn’t a spy angle, fancy gadgets, or even a secret mission. The introductory mission is framed to show how James Bond handled himself and how he does not care about the odds when it comes to saving lives. It’s a gorgeous level as well, showing off an island scattered with cliffs in the middle of a storm. Looking back, this is probably the best-looking level in the game, with IO showing off all its abilities with its custom engine, Glacier. But my favorite ended up being the follow-up to this level. Once the United Kingdom's foreign intelligence agency, MI6, recruits our daring youngster into its super-spy “00” program, training begins. However, instead of treading through the same tutorial missions where the game teaches you to run and jump and drive, IO opted for a montage, and it’s amazing. The scenes cut between Bond practicing and improving his marksmanship, parkour, hand-to-hand combat, and driving as weeks go by in his training. What impressed me here was the lack of any loading screens or stutters as scenes instantly switched to different locations entirely, as if I was watching a movie. This creativity is a trend I noticed in most levels, where there is some sort of gameplay or choreography mechanic being introduced to keep things interesting. Soon, the rest of the cast is introduced, bringing other agents that our favorite secret agent will be working with, the scientists and engineers that build MI6’s spy gadgets, as well as higher-ranking officers that either appreciate or (at best) tolerate Bond’s rebellious attitude. It’s a tight cast, all with incredibly good voice acting and personalities that quickly grew on me. The casting for Bond himself is also an excellent one. From showing his iconic soft spot for women to the condescending smiles that get a rise out of enemies, I had no issues getting immersed into this universe as this new face of James Bond. The missions take place in a wide range of locations as MI6 sends Bond to tackle dangers that are growing everywhere from the UK to Africa. These aren’t unrelated adventures where MI6 is sending secret agents, which is an angle I would love to see in another game, but a part of a bigger conspiracy affecting the entire world. Some of the twists and turns were all too predictable, and the character that Lenny Kravitz played made me cringe a little too much. But all in all, I enjoyed the campaign’s storyline that sets the stage for this new agent joining the illustrious “00” program. Plenty of Possibilities The third-person style of IO Interactive fits this role quite well. Bond is presented as a master at hand-to-hand combat as well as firearms, while also having a knack for being stealthy when required. Most sections of missions have a lot of freedom. This means I could beat up every goon and security guard on the way to an objective, slip past them without sounding a single alarm, or do a mix of both. My sessions usually end up with the third option because I tend to be impatient about waiting for a patrol to move. Drawing from its Hitman genes, the developer almost always gives multiple routes for going through missions. Levels can be massive, sometimes sporting hundreds of NPCs going their own ways and having conversations. If my objective is to break into a security room on the third floor, I could look around for roof access, eavesdrop on conversations to find out where someone lost a key, create a distraction and pickpocket a guard for a keycard, sneak in through the vents, or simply kick down the offending door. I enjoyed the variety on offer, especially because the same solutions didn’t usually show up in different missions. Before heading out into a secret MI6 escapade, the gadget specialist of the branch walks Bond through the organization's latest and greatest achievements. This can be cool little devices like a laser built into the watch, a phone that fires poison darts, or a camera that emits a powerful shockwave. The choice of what can be taken into the mission is up to the player. I could usually find fresh routes or get out of tough situations with a punch or two, so I never had the feeling of missing out by not choosing the right equipment. It’s still a fun practice. Choosing the armaments before a mission enhanced the super spy feeling quite a bit. As I mentioned, stealth comes in as a very viable option for most of the missions, letting Bond sneak past foes or knock them out silently. While it is satisfying to clear entire areas of goons and walk away without any alarms, the way of accomplishing this could have been done better. Bond can lure enemies, sneak up and knock them out, or use a gadget to disorient them before dealing a nasty blow. Bodies cannot be moved or hidden afterward either. It’s a very simple system, which I wish were more exciting to pull off. Perhaps more stealth-orientated gadgets, distraction options, or multi-takedowns could have helped here, I think. Getting caught while attempting to be in stealth does not mean a game over. Other than getting into a fist fight, an interesting twist of 007 First Light is the bluffing option. While an enemy is confused as to what you are doing in a restricted location, Bond has the option to improvise and persuade them that you are exactly where you’re supposed to be. These are fun little dynamic interactions with unique dialog depending on the mission and location, giving a few extra moments for Bond to go past suspicious guards smoothly. It’s the first time I’ve witnessed this system in a game, and I hope to see more. License to Kill Bond isn’t just dealing with security guards or civilians. From time to time, entire gangs of gun-toting mercenaries show up in levels looking to take down our protagonist. It is then that License to Kill mode is activated for Bond, letting him use firearms with no restrictions. I was surprised by just how tight gunplay is in 007 First Light. The weapons feel powerful and satisfying to fire, with single bullets capable of taking down an enemy with a headshot. Ammo is scarce, and enemies don’t drop weapons with full magazines most of the time. This forces a hectic kind of gameplay where I am always advancing towards enemies to take their weapons after they are downed. Things like shooting legs to immobilize, aiming at the hands to make their weapon go flying, blowing up nearby fire extinguishers for cover, and using gadgets to halt a goon in their tracks while I reload, make up enjoyable levels. I had to hold back my disappointment when the enemy count in these action sequences dropped to zero and I had to go non-lethal again. Speaking of action sequences, First Light isn’t just offering sandbox levels to complete at the player’s own leisure either. Each level comes with specific linear and directed scenes to move the story forward and put Bond in tight situations. These usually end up with high-octane chases or driving sections, offering the chance to witness chaining explosions, hails of gunfire, and scripted parkour scenes that remind me of Mission Impossible movies more than Bond. Elements like seeing James Bond jump out of a plane without a parachute or drive through buildings in London inside a trash truck were fantastic and always left me at a high point when finishing a mission. The classic James Bond theme is sprinkled in here too, which only happens a handful of times in the game, but at just the right moments. Visuals and Performance Compared to Unreal Engine 5 games we are seeing nowadays, 007 First Light isn’t flexing a huge amount of realism when it comes to graphics. The models, textures, and effects all feel a little dated, with the starting mission that I mentioned being the most visually striking. However, the complete lack of stutters, the hundreds of NPCs that can be on screen without a single hitch, massive sandbox levels, and smooth transitions between them all play a part in making this an immensely immersive and complex experience. The in-engine cutscenes are gorgeous as well, offering an upgraded visual style and model detail over the gameplay sections. Animations are one aspect that jumps out at me about any new game, and First Light has nailed what a third-person action game should feel like. Walking, sneaking, and running all have a heaviness to them that I appreciate. Whenever Bond moves past a wall or a ledge, his arms reach out to lightly hold those structures until he moves away. NPCs actually react to my character and move out of the way. Even during melee combat or takedown animations, the fists impacting a body or a head hitting a wall all have that same weight. Even the more frivolous animations, like catching a gun in midair or chucking an empty one at a goon (yes, you can do that), are satisfying to pull off. Of course, the in-engine cutscene animations are remarkably well done too, with facial animations and the upgraded model details improving my engagement with the characters. I have an AMD Radeon RX 9070 XT 16GB paired with an eight-core Ryzen 7 3700X and 32GB of RAM, with the game running at 1440p resolution. Deciding to completely max out all the graphics options gave me a range of frame rates between 60 and 100 depending on the scene and level. While I did try to enable AMD FSR, which bumped up the frame rates by a good 20% at Quality mode, IO Interactive’s implementation of the technology wasn’t that great. Every corner and edge in levels began shimmering, and I was also seeing smearing issues in fast-moving sections. The title seemingly uses the older generation FSR 3.1 and not the machine learning-assisted FSR 4, leading to these artifacts. Unfortunately, there isn't a way to manually upgrade this right now either. I opted to turn off the upscaling and play the game in native 1440p to avoid problems. I would say the FPS range I was getting was an acceptable one for a single-player action game for my setup. I do wish there were an FOV slider option in the settings. While the camera is far enough back for my tastes in most situations in this third-person adventure, at times the perspective is far too close. When trying to look around quickly and spot targets, I realized I was getting a slight headache at times due to the use of an almost over-the-shoulder close-up camera. Conclusion Being James Bond in 007 First Light is a treat. Traveling around the world chasing conspiracies, using high-tech gadgets disguised as everyday accessories, and improvising on the spot to fool foes all give a fantastic feeling of being a super spy. For an origin story, IO Interactive has done a great job at introducing the character and his motives for doing what he does. The satisfying combat animation and fantastic voice acting are definitely high points, with the License to Kill moments being my favorite. Not being able to move bodies and the simplistic stealth of mechanics does hurt its presentation a little. The NPC logic and intelligence is easy to manipulate and trick, repeating the same actions over and over again if I keep making distractions. The lack of an FOV slider was also a pain (quite literally) at times, and the FSR implementation is quite poor. These are things I hope the studio will improve upon with updates. Even with its faults, IO Interactive and James Bond are a match made in heaven. The studio knows how to make a main character that oozes charm and competency while also leaning heavily into its Hitman experience to make gigantic levels with what looks like hundreds of NPCs roaming around. Being an origin story, IO’s Bond has a way to go before he becomes the highly effective agent we see in the movie world. I am hoping the studio will continue this series alongside its Hitman ventures going forward, just so we get to experience the journey for longer. 007 First Light is available on PC (Steam, Epic Games Store, and Xbox PC), Xbox Series X|S, and PlayStation 5 for $69.99. This review was conducted on the PC version of the game provided by IO Interactive.
    • [Price Drop] PDF Expert for Mac v3 is still half off by Steven Parker Today's highlighted deal comes via our Apps + Software section of the Neowin Deals store, where for only a limited time you can save 42% on PDF Expert One-Time Purchase. PDFs remain the best way to transmit documents, but editing them isn't possible with standard Mac software. PDF Expert changes that, allowing you to edit PDF text, images, links, and outlines quickly and easily. Typo in a contract? Easy fix. Need to rework a complete section of a document? No problem. PDF Expert provides a series of essential functions that will transform the way you work with documents on your Mac. It recognizes text and OCR, makes edits, and fills out forms. And with the “Enhance” feature powered by AI, it will fix distortions, remove shadows and improve contrast so that even difficult-to-read documents look great. EDIT Change the text. Easily fix typos, update numbers, or add entire paragraphs Insert images. Update logos in a contract or add a new graph to a report Add links. Enrich your PDFs by linking to other pages or external websites ANNOTATE Highlight the important. Make the most valuable content stand out at a glance Comment on PDFs. Add text to PDFs, insert pop-up notes & write your thoughts in the margins Add stamps. Review documents with our set of stamps or create custom stamps for any workflow ORGANIZE Merge PDFs. Combine multiple files into one PDF document Manage pages. Add, delete, rearrange, or rotate PDF pages with ease Split PDFs. Extract pages from PDFs & save them as separate files CONVERT Convert to PDF. Turn JPG, PNG, Word, PPT, and Excel to PDF PDF to Word. Convert PDFs into editable Word documents PDF to image. Turn PDFs into JPG or PNG images PDF to Excel. Convert PDFs into Excel spreadsheets PDF to PPT. Save PDFs as PowerPoint presentations PDF to text. Convert PDFs into editable TXT files FILL OUT Fill out PDF forms. Easily fill out PDF forms by just clicking on them Sign documents. Add your signature to a PDF in a few clicks. Let customers sign documents with handy one-time signatures Redact PDFs. Blackout or erase confidential information from your documents RECOGNIZE TEXT OCR text in PDF. Recognize the text, so you can search, highlight & copy it Enhance scans. Fix distortions, remove shadows & improve contrast Crop & split pages. Split double-page scans into separate pages & remove undesired margins Good to know: Length of access: Lifetime Redemption deadline: redeem your code within 30 days of purchase Access options: Mac Max number of device(s): Unlimited usage on personal macOS devices Version: PDF Expert 3 for Mac (macOS) Updates: Get continuous support and bug fixes. Additional new features may come at an extra cost. PDF Expert One-Time Purchase normally costs $139.99, but you can pick it up for just $69.97 for a limited time, that represents a saving of $70 (50% off). For a full description, specs, and license info, click the link below. Deal Price One time cost now only $69.97 (was $139.99) Although priced in U.S. dollars, this deal is available for digital purchase worldwide. Support queries If you have queries or need support for any of the Neowin Deals, please use the contact form here. Neowin Deals are managed and sold by StackCommerce who represent Neowin on an affiliate basis. We post these because we earn commission on each sale so as not to rely solely on advertising, which many of our readers block. It all helps toward paying staff reporters, servers and hosting costs. Other ways to support Neowin Whitelist Neowin by not blocking our ads Create a free member account to see fewer ads Make a donation to support our day to day running costs Subscribe to Neowin - for $14 a year, or $28 a year for an ad-free experience Disclosure: Neowin benefits from revenue of each sale made through our branded deals site powered by StackCommerce.
    • Indeed - drives me mad - usually because Refresh is hidden in the full menu.
    • Firefox has had rounded corners for many years. I take it you're not a fan of modern browsers?
  • Recent Achievements

    • Collaborator
      conkir earned a badge
      Collaborator
    • Rising Star
      olavinto went up a rank
      Rising Star
    • 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
  • Popular Contributors

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

    Love Neowin? Tell a friend!