Skip to main content


Please note that most of the software linked on this forum is likely to be safe to use. If you are unsure, feel free to ask in the relevant topics, or send a private message to an administrator or moderator. To help curb the problems of false positives, or in the event that you do find actual malware, you can contribute through the article linked here.
Recent Posts
WavPack / Re: Clicks/pops occur at the beginning of DSD wv tracks when playing as PCM
Last post by sacdman -
Hi everyone... I am an SACD enthusiast myself and I am still encountering those ticks or clicks at the beginning of DSF or ISO tracks. I am currently using the sacd_extract-WINDOWS-v0.3.9@setmind_git_2019-03-21 and I have also tried the sacd_extract- I simply load the disc into my sony blu-ray player and connect by wifi. When I extract the ISO and play it in foobar, if I do hear anything, it is a very soft tic at the beginning of the first track.

I thought that the latest version of sacd_extract.exe was to have eliminated the pops/clicks? Or is this only a "partial" fix? I know that a certain amount of frames have been removed as mentioned in the log.

I am just wondering if there is something here I am missing, perhaps and any help or suggestions are greatly appreciated. I am not on these forums all the time and I hope someone can help.

3rd Party Plugins - (fb2k) / Re: Playlist Organizer (aka foo_plorg) replacement on Jscript Panel 3
Last post by frogworth -
Once a lock is enabled, it "belongs" to the component that enabled it and it cannot be removed by anything else. Locks persist as a permanent property of the playlist until you remove it (or delete the playlist).

Thanks a lot for this info @marc2k3!
I did come across the ownership thing after downloading @etip's latest version. It showed the lock symbol but wasn't able to display the playlist lock options. Once I realised the issue, I used the playlist attributes dialog to remove the restrictions and recreate them via the Jscript Panel 3 dialog.

Question for either of you: One of my locked/restricted playlists is an autoplaylist.
It has the lock symbol because it's locked for reordering (through the autoplaylist definition).
But I'd like to also disable deleting the playlist, which is currently unreachable from both components.
Is it not possible to use the playlist lock on a force-sorted autoplaylist?
General Audio / Re: Album Art Downloader XUI
Last post by PaciPag -
they dropped the need for an API key when they went from 1.0 to 2.0
For access to image URLs it still requires a "consumer" key (as you mention). Whatever they call it, it's still a key I need in order to access the API, which has to be kept secret. Looks like an API key to me! Keeping a key secret is not an option for AAD, so I'm not going to write a script that requires it. I do take your point that users with registered discogs accounts could generate their own keys and then supply them in some sort of config file, or by editing the script, but that's not really a model I'm interested in putting much work into.
Like Shakespeare said, "an API key by any other name..." ;)

If anyone else wants to write a discogs-api script based on this principle, I'd be happy to include it in the list of scripts, though,

Tempting, but might be a bit beyond my meager skills.

I did, however, edit to be better at finding various-artist compilations. Discogs considers the artist for various-artist compilations to be "Various" and I personally index my collection as "Various Artists" (and others truncate it to "VA"). So this (crude) hack will feed Discogs "various" even if the "actual" artist per the file tags is "Various Artists" or "VA".

The edits are on lines 25-29; I could probably have just done an OR but, eh, why write two lines when you can write four. :)

Code: [Select]
# refs: System.Web.Extensions

import System
import System.Text.RegularExpressions
import System.Web.Script.Serialization
import AlbumArtDownloader.Scripts
import util

class Discogs(AlbumArtDownloader.Scripts.IScript):
def constructor():
// Discogs requires TLS 1.1 or greater
Tls12 = Enum.ToObject(typeof(System.Net.SecurityProtocolType), 3072);
Tls11 = Enum.ToObject(typeof(System.Net.SecurityProtocolType), 768);

System.Net.ServicePointManager.SecurityProtocol = Tls12 | Tls11 | System.Net.SecurityProtocolType.Tls
Name as string:
get: return "Discogs"
Author as string:
get: return "Alex Vallat"
Version as string:
get: return "0.27"
def Search(artist as string, album as string, results as IScriptResults):
//artist = StripCharacters("&.'\";:?!", artist)
//album = StripCharacters("&.'\";:?!", album)
//Discogs lists Various Artists compilations under "Various", many collections term these "Various Artists" or "VA"
if (artist = "Various Artists"):
if (artist = "VA"):
json = JavaScriptSerializer()

resultsInfoJson = GetDiscogsPage("" + EncodeUrl("\"${artist}\" \"${album}\""))
resultsInfo = json.Deserialize[of (Result)](resultsInfoJson)

results.EstimatedCount = resultsInfo.Length;

for result in resultsInfo:
// Get the release info from api
title = result.GetString(result.artist) + " - " + result.GetString(result.title);
url = result.GetString(result.uri);
//id = url.Substring(url.LastIndexOf('/'));

releasePage = GetDiscogsPage("" + url)

releasePageImagesMatches = Regex("\"Image:{[^{]+}\":(?<json>{.+?}})", RegexOptions.IgnoreCase | RegexOptions.Singleline).Matches(releasePage)
for match as Match in releasePageImagesMatches:
imageInfo = json.Deserialize[of ImageInfo](match.Groups["json"].Value)
if (imageInfo.fullsize != null and imageInfo.thumbnail != null):
fullInfo = json.Deserialize[of ImageRef](imageInfo.fullsize.__ref.Substring(10))
thumbInfo = json.Deserialize[of ImageRef](imageInfo.thumbnail.__ref.Substring(10))

results.Add(thumbInfo.sourceUrl, title, "" + url + "/image/" +, -1, -1, fullInfo.sourceUrl, CoverType.Unknown)

def RetrieveFullSizeImage(fullSizeCallbackParameter):
return GetPageStream(fullSizeCallbackParameter, null, true);

def GetDiscogsPage(url) as string:
request = System.Net.HttpWebRequest.Create(url) as System.Net.HttpWebRequest

request.Accept = "*/*"
request.UserAgent = "Mozilla/5.0 (AAD on " + System.Environment.MachineName + ")"

response = request.GetResponse()
except ex as WebException:
exResponse = ex.Response as System.Net.HttpWebResponse
if (exResponse != null and exResponse.StatusCode == 308):
return GetDiscogsPage(exResponse.GetResponseHeader("Location"))

stream = response.GetResponseStream()
return GetPage(stream)

class Result:
public artist as object
public title as object
public uri as object

def GetString(value):
result = value as string;
if result is null:
result = (value as (object))[0] as string;
return result;

class ImageInfo:
public id as string
public thumbnail as ImageRefJson
public fullsize as ImageRefJson

class ImageRefJson:
public __ref as string

class ImageRef:
public sourceUrl as string
3rd Party Plugins - (fb2k) / Re: Playlist Organizer (aka foo_plorg) replacement on Jscript Panel 3
Last post by marc2k3 -
You should look at smooth playlist manager for a reference.

It's better to completely hide autoplaylist options for playlists that are not autoplaylists and then you should check if any existing playlist lock is not owned by anyone else before offering the option to edit.

3rd Party Plugins - (fb2k) / Re: foo_dsp_xgeq
Last post by UELong -
Parabéns ao criador, alguns plugins são muito interessantes, mas esse EQ tem um utilidade em qualquer situação, tamanha a versatilidade!! Só instalo foobar 32 bits para não perder esse EQ. Obrigado!!

Please provide English translation in future posts.
TOS 10. All members must post in English.  Content in other languages are allowed as long as full English translations are provided, or otherwise at the discretion of the staff.

Google translation:
Congratulations to the creator, some plugins are very interesting, but this EQ is useful in any situation, such is its versatility!! I only install foobar 32 bits so I don't lose that EQ. Thanks
Well I went 64, as it was about time FB went 64.  And I'm still patiently waiting for such a straightforward program to be updated.