Skip to main content

Notice

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
2
3rd Party Plugins - (fb2k) / Re: NEW ESLyric v0.5 - an alternative lyric show component
Last post by sveakul -
@sveakul Correction, I have a Deezer Sid (cookie), the API is what is needed. 
According to this..  Following the steps, Deezer is not accepting new applications.  Is there a different way for the API?   
https://www.educative.io/courses/getting-started-with-the-deezer-api-in-javascript/getting-started-with-the-deezer-api
None that I know of.
3
General - (fb2k) / Re: Old 1.x versions usage
Last post by sveakul -
However, I am almost convinced that this is not a personal mistake. Every time I access foobar2000 directly from File Explorer (Windows 10 x64) where a certain directory contains more than 15 songs, the player does not open to play the files. To do so, I open a directory and click on the "Play all" command in File Explorer. Any directory with up to 15 tracks this command works correctly.
You're running into the Windows limitation where there is a 15 file open limit in the context menu handler by design.  Check out https://learn.microsoft.com/en-US/troubleshoot/windows-client/shell-experience/context-menus-shortened-select-over-15-files

The workaround/fix is discussed here:
https://www.tenforums.com/tutorials/94513-fix-context-menu-items-missing-when-more-than-15-selected-windows.html

4
Other Lossy Codecs / Re: lossyWAV 1.4.2 Development (was 1.5.0)
Last post by Porcus -
A little bit of testing, although the algorithm itself isn't changing. But over the years, some codecs have been upgraded.

What I did:
Took 219 minutes (first ten and a half minutes of each of 7+7+7 albums from my signature), processed with lossywav -C, compressed both original, lossy and correction file at various settings. Tested in particular block size 1024 just to see whether the penalty is severe.
Re-did FLAC with 1.4.3 beta "d".
Included WavPack even if that has its own hybrid mode which is easier to manage.


CDDA, all numbers in kbit/s or differences thereof.
* lossless, no block size set: Because if you don't want to use LossyWAV, you don't want to fiddle with that switch.
*"corr., def" is the correction file but compressed without imposing block size. That gives slightly better results. It is commented on.
* "cost of two files": Difference between sum of the lossy (with block size set) and correction (without) - and lossless (without).
.lossless, no block size setcost of two fileslossycorr., def.
wav1411141114111411
WMAL778196487487
WavPack, 512with --merge-blocks. Virtually no penalty for double block size. 4 to 7 kbit/s penalty for storing  correction file with same setting
fast779128473434
default760122458424
-hx748123455416
-hhx4743115447411Multi-threaded -hhx6 shaves 1 off the lossy.
FLAC, 512
-0b51284184486439Double blocksize penalty: 12
-2eb51279997459437Double blocksize penalty: 11
-5b51275698432423Double blocksize penalty: 5. 8 kbit/s penalty for storing correction file with same setting
-8pb51275199429421Double blocksize penalty: 6. 8 kbit/s penalty for storing correction file with same setting
TAK, 512
-p0 -fsl51275677427406Double blocksize penalty: 8. 12 kbit/s penalty for storing correction file with same setting
-p2 -fsl51273486418402Double blocksize penalty: 4. 16 kbit/s penalty for storing correction file with same setting
-p4m -fsl51272193414400Double blocksize penalty: 4. 17 kbit/s penalty for storing correction file with same setting
ALS
-l -n51275175411415Double blocksize penalty: 13. 4 kbit/s penalty for storing correction file with same setting
-7 -p -l -n51271987407399Better use double blocksize! 8 kbit/s penalty for storing correction file with same setting
-7 -p -l -n1024 (!)719399
Going out on a limb, it should be no surprise from what one already knew about that TAK that it could be the codec of choice for LossyWAV:
* Compresses impressively
* Downsides of TAK less applicable to LossyWAV users: they know what they are doing, so they could likely handle TAK too - and find a player that supports it.
* TAK natively supports RIFF chunks, no issues about remembering the foreign metadata switch in FLAC
* ... so does WavPack, but WavPack users would likely rather use the format's own hybrid.

A couple of remarks on other codecs
* Interestingly, but hardly not anything recommended due to speed: The ALS -7 -p setting does better with block size 1024. I guess it does some optimization under the hood, you should get something out of waiting for this ridiculous amount of time.
* FLAC roundoffs could be affected by inconsistent padding since I ran the lossy+correction parts afterwards, having upgraded to beta 1.4.3d
* From this one could doubt that WMAL is "LossyWAV compatible" - it is, it is just a bad performer overall. Next table shows that the two-file penalty is less than for OptimFROG.

For reference, the following uses LossyWAV as one should absolutely not do it:
Included codecs that don't use wasted bits;
No block size options applied - except I did apply -z3 -7 -l -p -n512 for the ALS RLSMS mode which apparently does not honour it (and shouldn't be used for anything either).
.losslesscost of two fileslossy
wav141114111411
cuetools ALAC761430772
Monkey’s extra high721446739
ALS RLSMS with everything713438733
OptimFROG default724264600
WMAL778196487
WavPack default760199535
FLAC default756143476
TAK default734139472
ALS default751108444
ALS -7 -p -l71986406
Here, all three columns are same setting, and "cost of two files" is also difference between apples and apples.
5
Lossless / Other Codecs / FrAD: Fourier Analogue-in-Digital (Analogue Audio Archive Codec)
Last post by forart.eu -
(@Admins: since has not been approved as news, this is the normal discussion version of the post)

Sounds more like a "wannabe" than a working project, but some (Archivist Licensed) source code seems available:
Quote
Fourier Analogue-in-Digital is an uncompressed codec like WAV or AIFF rather than FLAC or ALAC. Unlike WAV or AIFF, which store PCM, FrAD stores energy density per frequency.

FrAD is a codec that nobody owns, nobody patents, and is standardised in so much detail that anyone can easily implement it in any language, even if the original implementation is lost. It also supports tags, cover art, and sequential search, and the original implementation can be supported by any OS on any machine that supports Python.

The main difference between any other formats and FrAD is its resilience to corruption and robustness. For many audio files that are branched fron PCM, even a flip of a bit or two can result in popping noise, failure to play the corrupted frame, or even the loss of all subsequent audio information. FrAD, however, provides robust error recovery such that sporadic flipping of a few bytes is not even a concern.

Goals of FrAD (more)
  • Preserving analogue waveforms intact in digital file.
  • Ensuring the analogue waveform remains intact even if the file is corrupted
  • Making all data frames work independently

Website: https://mikhael-openworkspace.notion.site/Fourier-Analogue-in-Digital-d170c1760cbf4bb4aaea9b1f09b7fead
Format specs: https://mikhael-openworkspace.notion.site/Format-specs-727affae8db043f2b50372d91d534368
EN FAQ: https://mikhael-openworkspace.notion.site/FAQ-EN-51a2c395aafa46bf87febe615bad3a22
Git: https://github.com/h4n-ul/Fourier_Analogue-in-Digital

Dev's help request: https://github.com/h4n-ul/Fourier_Analogue-in-Digital/issues/1
9
3rd Party Plugins - (fb2k) / Re: Biography Discussion
Last post by Majestyk -
I've noticed that the plugin doesn't seem to handle certain special characters correctly.

For instance, i get the following error in my console when attempting to retrieve the album review for: https://www.allmusic.com/album/closure-continuation-mw0003617672

Quote
Biography Server: allmusic review: Closure/Continuation / Porcupine Tree: not found

Is there a workaround or is this a bug? I'd create a github issue, but there doesn't appear to be a way to do it.

I wasn't going to bring it up until the Allmusic bug was solved but now that you've brought it up, YES this is another Biography bug. I discovered it a couple weeks ago with the artist AC/DC and I actually got ChatGPT to fix it.

EDIT... I just checked my notes and it was the lyrics not loading that was the problem. So this is not your issue, BUT this is a separate issue that needs to be addressed.

You have to replace the function findFile in text.js to this...

Code: [Select]
	findFile(v, n) {
const type = /_\.(lrc|txt)$/.test(v.pth) ? 0 : /\.(lrc|txt)$/.test(v.pth) ? 1 : 2;
        let pth = '';
let item = n == 'bio' ? v.pth.replace(/%BIO_ARTIST%|%BIO_ALBUMARTIST%/gi, '%BIO_ARTIST%') : v.pth.replace(/%BIO_ALBUMARTIST%|%BIO_ARTIST%/gi, '%BIO_ALBUMARTIST%');

const a = $.tfEscape(name.artist(!v.lyrics ? panel.id.focus : false, !v.lyrics ? false : true).replace(/\//g, '_'));
const aa = $.tfEscape(name.albumArtist(!v.lyrics ? panel.id.focus : false, !v.lyrics ? false : true).replace(/\//g, '_'));
const l = $.tfEscape(name.album(!v.lyrics ? panel.id.focus : false, !v.lyrics ? false : true).replace(/\//g, '_'));
const tr = $.tfEscape(name.title(!v.lyrics ? panel.id.focus : false, !v.lyrics ? false : true).replace(/\//g, '_'));
item = item // substitue bio var + check advanced radio stream parser (tfBio & tfRev do lookUps not parser)
.replace(/((\$if|\$and|\$or|\$not|\$xor)(|\d)\(|\[)[^$%]*%bio_artist%/gi, a ? '$&#@!%path%#@!' : '$&').replace(/%bio_artist%/gi, a)
.replace(/((\$if|\$and|\$or|\$not|\$xor)(|\d)\(|\[)[^$%]*%bio_albumartist%/gi, aa ? '$&#@!%path%#@!' : '$&').replace(/%bio_albumartist%/gi, aa)
.replace(/((\$if|\$and|\$or|\$not|\$xor)(|\d)\(|\[)[^$%]*%bio_album%/gi, l ? '$&#@!%path%#@!' : '$&').replace(/%bio_album%/gi, l)
.replace(/((\$if|\$and|\$or|\$not|\$xor)(|\d)\(|\[)[^$%]*%bio_title%/gi, tr ? '$&#@!%path%#@!' : '$&').replace(/%bio_title%/gi, tr);

switch (type) {
case 0:
pth = item.replace(/_\.(lrc|txt)$/, '.$1');
break;
case 1:
pth = item.replace(/\.(lrc|txt)$/, '_.$1');
break;
}
let pths = !v.lyrics ? [item] : [item, pth];
return pths.some(w => {
const wildCard = /[*?]/.test(w);
if (!wildCard) {
this[n].readerItem = panel.cleanPth(w, !v.lyrics ? panel.id.focus : false, !v.lyrics ? '' : 'lyr').slice(0, -1).replace(/#@!.*?#@!/g, '');
return $.file(this[n].readerItem);
} else {
let p = panel.cleanPth(w.replace(/\*/g, '@!@').replace(/\?/g, '!@!'), !v.lyrics ? ppt.focus : false, !v.lyrics ? '' : 'lyr').slice(0, -1);
p = p.replace(/@!@/g, '*').replace(/!@!/g, '?').replace(/#@!.*?#@!/g, '');
const arr = utils.Glob(p);
if (!arr.length) return false;
this[n].readerItem = arr[0];
return $.file(this[n].readerItem);
}
});
}

I don't know if this is a proper fix or not but it works.