Nightingale Forums

Full Version: Nightingale's Database on Different Partition?
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Hello, on Windows 10, can i
  • move the Nightingale Database to a different partition or better yet
  • create a new database on the partition of my chosing (not C)?
Removing all files from within Nightingale and then re-importing them is no problem.

Background: I play mainly from an "intelligent album" with many criteria, among them a criteria to play only sounds i haven't heard before. I have around 70.000 songs and for every database operation Nightingale is blocked for around 40 seconds. This means, whenever it changes to a new song it is blocked for 40 seconds and also when i edit metadata (which i do frequently). The music continues playing smoothly, but you cannot for instance stop this music or do anything else.

I just installed Nightingale on a brandnew fast desktop computer with conventional HDDs and it proved almost as slow as before on a 6 years old desktop computer (and on various other new laptops in between).

Now on that brandnew computer i have a partition G that's a SSD. I already uninstalled Nightingale from C and re-installed on the SSD partition G, hoping for more speed. But after re-installing, Nightingale seemed to keep it's old database and profile, because everything was there instantly - i had hoped to re-import everything and get a database on the software's drive, i.e. on G (the SSD). Nightingale doesn't seem much faster now that it is on the SSD drive, but the database still on C.

That's why i want to try having the database itself on the SSD.

I am not a geek, but am aware of a prefs.js and i see i can open+edit it with the Editor. I see these entries there:

user_pref("songbird.library.loader.0.databaseGUID", "main@library.songbirdnest.com");
user_pref("songbird.library.loader.0.databaseLocation", "C:\\Users\\user1\\AppData\\Roaming\\Nightingale\\Profiles\\vtdvlnim.default\\db\\main@library.songbirdnest.com.db");
user_pref("songbird.library.loader.0.loadAtStartup", true);

I also see the database "main@library.songbirdnest.com" itself on the C drive, while the software is now on the G drive.

Again, i'll happily build up a completely new database and delete the old one, no problem. If you could tell me if/how i could have a database on drive G, that would be great.

Thanks!
I'm running Windows 10 with a partitioned 512GB SSD. Music is not in my C: partition.
Nightingale loads the files from my music partition and never knew any music even existed on C:, but the database files are still on C: according to prefs.js for me as well.
EDIT: Most programs default to storing user data in C:\users\[you]\AppData\Roaming, and most things don't offer an alternative. If there's a way to change it for Nightingale, it's going to be using regedit, but someone else will have to tell you exactly how. DO NOT go into regedit and try without knowing what to do, I'm just saying this so someone who does know might think of it.

However, moving the database to the SSD might not help. No matter where it is stored, any affected information including the database listing still has to be accessed by the processor and put on RAM to do anything, and the processor then goes and does whatever the program wants it to do from there. There are a lot of things going on between you clicking a song and that song playing, and any one could be the problem.

This first fix I have here will take the longest by far, so you might actually want to do it last, but if this doesn't help the problem you won't like any other solution.
First, back up EVERYTHING on the music partition if you haven't already (it really should be backed up).
If you are okay with losing your settings, uninstall Nightingale entirely. That isn't necessary per se, but if you leave it installed don't open it during this.
If you don't use one already, you might want to find a music manager and have it sort everything well (I use MediaMonkey) - not a huge deal but this is a good opportunity to do it and it can shave off some of the database file size. Then the important part, use a good defragger (I use Auslogics DiskDefrag; MS's included defragger doesn't really work) and defrag and optimize the partition with your music.
Once that's done either reinstall Nightingale, or if you didn't uninstall just open it and let it refresh everything.

A slow processor could be the issue - even it's an Intel i5, that's a long list of models and some are better than others - and the process could also be starving the computer for RAM.
When Nightingale locks up, is using up all of any one processor core? It's 32-bit so even if you have a 4-core processor, it can only use one. I can't get my Task Manager to show individual cores, just total usage, so to observe on that level you might need a more sophisticated, third-party monitoring program.
If you are maxing a processor core, the only solution is to use a 64-bit media player. Nightingale has a 64-bit Linux version if you've ever been interested in trying out a dual-boot - I dual-boot with Ubuntu Studio.

If the processor cores are all under full-speed while Nightingale is locked, is the computer using all the available RAM? If that's the problem, the solution is unfortunately a RAM upgrade, assuming the motherboard can accept more RAM (information easily found online).

Also, it sounds like you have multiple hard drives, so check if Nightingale is maxing out the disk speed on the SSD connection.
When you say you have a SSD partition, is it all or part of a physical SSD in the computer connected via internal PCI bus, or is it connected via USB? Even a SSD connected by USB 3.0 will usually be slower than a fairly new HDD connected by PCI, so if it is USB and it's maxing the transfer rate, using an internal SSD is the solution. If it's already internal and it's still maxing out, then a faster drive is the only fix.

If you rule out everything I just mentioned, it's something in Nightingale itself, and if that's the case someone else here will have to help or you'll just have to find another program.
Omega, thanks for a very detailed answer!

What i can say right now:
- The SSD is built-in in a new computer of spring 2016. That PC has 64 GB RAM and a very fast CPU (not sure which though).
- When i do edit metadata with Nightingale, click OK and watch Windows 10's regular task manager, i see: while processing the metadata, Nightingale needs 15% of CPU and 250 MB RAM. When simply replaying, Nightingale needs 0,5% of CPU and 210 MB RAM.

I will look into your suggestions soon and i will certainly not touch regedit.

Thanks!
(04-03-2016, 03:33 PM)henrik2k Wrote: [ -> ]- When i do edit metadata with Nightingale, click OK and watch Windows 10's regular task manager, i see: while processing the metadata, Nightingale needs 15% of CPU and 250 MB RAM. When simply replaying, Nightingale needs 0,5% of CPU and 210 MB RAM.

16.6666% CPU usage equals to a full core in the Windows logic, if you have 6 logical cores (your physical core number may be less due to hyper threading). For most cases, the CPU is the limiting factor in the situations you describe (I have 6 physical cores and everything on a SSD - and it is slow for me as well^^). Nightingale does not use multiple cores for DB access iirc.

As soon as the DB is loaded, it is usually cached by Windows given enough RAM (it's only some MB, as it does not contain the music). There are, however, advantages from having the profile (not only the library) on a SSD, mainly to reduce startup time; if you want to do so, start Nightingale with the "-p" parameter, then create a new profile on the SSD, and use that profile.

The main location (%APPDATA%, which is the roaming folder you guys talked about) is specified by Windows for all applications and can be configured in Windows. There are good reasons for it to be the default, and for it not to be editable from Nightingale, feel free to read on Microsoft's documentation on the semantic meaning of that folder (the reasons are mostly related to complex Windows installations, which span multiple computers).


I really want to rewrite either Nightingale as a whole (due to our dependencies causing trouble, especially XULrunner) or at least the DB core at some time, as some optimizations may be made (like caching results and fetching stuff without locking the UI, as well as structural changes), but I haven't found time in the last years and am unlikely to do so in the next time due to real life. If somebody else wants to provide a patch for that? Wink
rsjtdrjgfuzkfg, thanks for your input!