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
1
MP3 - General / Re: Resurrecting/Preserving the Helix MP3 encoder
Last post by maikmerten -
@maikmerten
I saw you removed "-fno-math-errno -fno-trapping-math" from the makefile because of being careful about FP-math optimizations.
I guess because i mentioned concerns about math optimizations may change lossy encoders behaviour.
The 2 flags you choosed didn't change the output here but also didn't help with speed on a 5900x.
It is more obvious when i enable fast-math or AVX2.
I really may be overcautious but i think we once had problems with a lame compile because of such things.
Sorry if i have confused anyone.

I reconsidered including those flags because I didn't find a speed improvement on x64 (Zen2-based Ryzen here), but might perhaps make searching for problems more difficult (no errno, no traps).

So if these options don't gain speed, but may make detecting problems (which may arise on yet-untested platforms) more difficult, I felt they were superfluous.
2
General - (fb2k) / Re: Date Column in UI showing all 000s in version 2.12
Last post by Revup67 -
anamorphic - thanks for the added help.  Here's a screen capture. Marc's idea to add the missing Component was successful. However in various playlists I am seeing the following with all 000's (see screen capture) perhaps the file is not writable ? (guessing)

It's easiest to perform a Playlist scroll than a Library search thus the following results. There are multiple instances of all 000s however.  It is not isolated to what is shown in the attached PNG
3
Listening Tests / Re: Great killer sample, easy to ABX on most codecs
Last post by bryant -
but another approach might simply be to detect the absurdity of the sample (the vast majority of the energy is above 14 kHz) and reject it or fall back to lossless.
"Reject it" meaning reject the noise, i.e. low-pass filter the file, or reject the file entirely?

I don't know what are the intended goals for wavpack lossy, but my opinion on lossy in general is that low-pass should be standard procedure. We are already trading off some quality, so removing what is inaudible (or if you are young enough, what is not that important) seems like the reasonable thing to do. For that matter, for example, I don't understand why vorbis tries to preserve ultrasonics when q >= 6.
I may have been a little rash when I said “reject it”, but I definitely was not referring to filtering out the noise despite it being inaudible (some, most, or all of it, depending on your age). WavPack lossy makes few psychoacoustic assumptions, and frequency is certainly not one of them. It attempts to preserve the waveform faithfully, so it can be useful for non-audio applications like electrophysiology data.

But yes, lowpass filtering of audio would certainly be an appropriate thing to do to get better performance from WavPack lossy, or even reduce the sampling rate. For example, I use 32 kHz sampling rate when I record FM broadcast to WavPack as I do not consider the 19 kHz pilot tone to be part of the "artistic effect".   :)
4
Listening Tests / Re: Great killer sample, easy to ABX on most codecs
Last post by bryant -
@bryant, can we assume that dither is used not only to mask quantization, but also for an artistic effect? Hissing and crackling are effects that I often hear in music. As comrade @danadam noted, in this case it seems 8-bit dither with noise-shaping of Shibata High profile was added. And there are more than a dozen other profiles that generate noise at HF range. I'm sad to think that hybrid mode will only handle basic dither (attached below) and choke on everything else.
WavPack lossy does not handle dither of any kind; it simply attempts to encode the entire waveform as closely as possible and makes no further distinctions. That fact that we have identified that noise as Shibata dither is irrelevant. This sample has a ton of ultrasonic noise and, unlike a psycho-acoustic codec, WavPack is not going to remove it just because you can’t hear it. Instead, it will encode it and attempt to hide its own quantization noise underneath the audio, which in this case is it is unable to do because currently its noise-shaping is not steep enough.

As for your other suggestion, I would certainly not assume that dither would (or should) be used for “artistic effect”. In this sample the audio was truncated to 8-bit at some point, and that was done using dither and noise-shaping to make the conversion artifacts as unobtrusive as possible (that’s what they’re for), and then it was converted back to 16-bit. Obviously there was some reason for this, but if they just wanted to add some hiss there would have been ways to do it without creating havoc with lossy encoders. When this was converted back to 16-bit most of that noise should have been filtered out.
5
MP3 - General / Re: Resurrecting/Preserving the Helix MP3 encoder
Last post by Wombat -
@maikmerten
I saw you removed "-fno-math-errno -fno-trapping-math" from the makefile because of being careful about FP-math optimizations.
I guess because i mentioned concerns about math optimizations may change lossy encoders behaviour.
The 2 flags you choosed didn't change the output here but also didn't help with speed on a 5900x.
It is more obvious when i enable fast-math or AVX2.
I really may be overcautious but i think we once had problems with a lame compile because of such things.
Sorry if i have confused anyone.
7
Listening Tests / Re: Great killer sample, easy to ABX on most codecs
Last post by danadam -
but another approach might simply be to detect the absurdity of the sample (the vast majority of the energy is above 14 kHz) and reject it or fall back to lossless.
"Reject it" meaning reject the noise, i.e. low-pass filter the file, or reject the file entirely?

I don't know what are the intended goals for wavpack lossy, but my opinion on lossy in general is that low-pass should be standard procedure. We are already trading off some quality, so removing what is inaudible (or if you are young enough, what is not that important) seems like the reasonable thing to do. For that matter, for example, I don't understand why vorbis tries to preserve ultrasonics when q >= 6.

can we assume that dither is used not only to mask quantization, but also for an artistic effect? Hissing and crackling are effects that I often hear in music.
You don't need >= 14k content for that. At least for me, I can low-pass your example at 12k and I still hear the same hiss. Of course then it can't stay at 8-bits anymore.

And there are more than a dozen other profiles that generate noise at HF range. I'm sad to think that hybrid mode will only handle basic dither (attached below) and choke on everything else.
This needs clarification "... at 8 bits". I don't think there will be any problems with those noise shaping filters at 16-bits.
8
3rd Party Plugins - (fb2k) / Re: [fb2k v2] SQL Tree (foo_uie_sql_tree)
Last post by fbuser -
Ok, it seems there is somewhere a bug, when using a column alias with the same name as an existing column at least for the used query. This is normally not a problem.

It would require a lot of time to analyze this problem completely, but fortunately there is an easy workaround (see query below). I also adjusted the ORDER BY so that album will be sent to the playlist with the correct track order.

Actually, when I composed the query I used implicitely this workaround as I don't have playcount and lastplayed available in my application setup.

Code: [Select]
WITH Albums AS (
  SELECT a.*,
         avg(CAST(playcount AS INTEGER)) OVER wAlbum avg_playcount,
         max(lastplayed) OVER wArtist max_lastplayed
  FROM (
    SELECT path,
           subsong,
           playcount,
           lastplayed,
           ifnull("album artist",artist) album_artist,
           album,
           (CASE WHEN discnumber THEN 'Disc '||discnumber ELSE NULL END) disc_number,
           tracknumber
    FROM MediaLibrary
  ) a
  WINDOW wAlbum AS (PARTITION BY album_artist,album),
         wArtist AS (PARTITION BY album_artist)
)
SELECT '['||max_lastplayed||'] '||album_artist,
       '['||CAST(avg_playcount AS TEXT)||'] '||album,
       disc_number
FROM Albums
ORDER BY max_lastplayed,album_artist,avg_playcount,album,disc_number,tracknumber COLLATE NaturalNoCase
9
General - (fb2k) / Re: Foobar stream custom columns
Last post by Defender -
Hi!

I have a problem with custom columns. I use this command:
Code: [Select]
$if(%isplaying%, >>> %filename%, %filename%) $if($stricmp($left(%path%,7),'http://'), %artist% - %title%) $if($stricmp($left(%path%,8),'https://'), %artist% - %title%))
This works fine for local files but not for streams.
When I listen to a stream I see this in the playlist (http://nap.casthost.net:8878/;stream.mp3): ;stream Killarmy - Red Dawn [1998]
But this is what i want to see: Killarmy - Red Dawn [1998]
And if I'm not listening to a stream, I see this: ;stream ? - GtronicRadio
But this is what i want to see: GtronicRadio

Can anyone help me with this?

Get rid of the ; before stream. Stream works fine without it. Change "%artist% - %title%" with "[%artist% - ]%title%".
When streaming %artist% is only known when actually playing.
When streaming %title% has actual title of the playing song when actually playing, otherwise it has the station name.
10
Listening Tests / Re: Great killer sample, easy to ABX on most codecs
Last post by Kraeved -
@bryant, can we assume that dither is used not only to mask quantization, but also for an artistic effect? Hissing and crackling are effects that I often hear in music. As comrade @danadam noted, in this case it seems 8-bit dither with noise-shaping of Shibata High profile was added. And there are more than a dozen other profiles that generate noise at HF range. I'm sad to think that hybrid mode will only handle basic dither (attached below) and choke on everything else.