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
3rd Party Plugins - (fb2k) / foo_uie_panel_splitterBlurring background image in plugin
Last post by sq68 -
// 设置图片路径
$puts(img_path,%path%,artreader)

// 显示原始图片
$imageabs(10, 10, 200, 200, $get(img_path), top noexpansion,)

// 获取原始图片的位置和大小
$puts(img_x, $getlastpos(x))
$puts(img_y, $getlastpos(y))
$puts(img_w, $getlastpos(w))
$puts(img_h, $getlastpos(h))

// 添加玻璃效果的模糊图片,放在原始图片的上方
$imageabs($get(img_x), $get(img_y), $get(img_w), $get(img_h), $get(img_path), top nokeepaspect, blur glass)

// 获取模糊图片的位置和大小
$puts(blur_x, $getlastpos(x))
$puts(blur_y, $getlastpos(y))
$puts(blur_w, $getlastpos(w))
$puts(blur_h, $getlastpos(h))

// 画一个带有半透明背景的矩形框,增强玻璃效果
$gradientrect($get(blur_x), $get(blur_y), $get(blur_w), $get(blur_h), %el_backcolour%-128, %el_backcolour%-255)

// 恢复绘图环境
$setworldtransform(0)

Can't display background image Who can help me? Thank you!
2
3rd Party Plugins - (fb2k) / Re: JScript Panel script discussion/help
Last post by josemescud -
This is entirely the wrong thread to ask about this. :/

Anyway... the download page did have a broken link which I've just fixed. Sorry to everyone about that.

It should have told you to read here...

https://marc2k3.github.io/component/cover-utils/
Quote
This is a combined replacement for foo_cover_info and foo_cover_resizer. If you have either/both installed, you must remove them first.

Note that this uses a separate database for front cover info storage so files would need scanning again. Also, different title format fields are used for display. See below.

specifically...

https://marc2k3.github.io/component/cover-utils/#scan-for-info

Thanks Marc.

I just had to replace in Re-Facets the filter %front_cover_width% MISSING  by  %cover_utils_front_width% MISSING

Everything works perfect
3
3rd Party Plugins - (fb2k) / Re: JScript Panel script discussion/help
Last post by marc2k3 -
This is entirely the wrong thread to ask about this. :/

Anyway... the download page did have a broken link which I've just fixed. Sorry to everyone about that.

It should have told you to read here...

https://marc2k3.github.io/component/cover-utils/
Quote
This is a combined replacement for foo_cover_info and foo_cover_resizer. If you have either/both installed, you must remove them first.

Note that this uses a separate database for front cover info storage so files would need scanning again. Also, different title format fields are used for display. See below.

specifically...

https://marc2k3.github.io/component/cover-utils/#scan-for-info
4
3rd Party Plugins - (fb2k) / Re: JScript Panel script discussion/help
Last post by josemescud -
Message to marc2k3:

Until now I used cover-info to detect in a playlist the albums that I had forgotten to embed their cover.
First I would run the "Scan for cover info" option in the playlist
And then I ran in Re-Facets the filter %front_cover_width% MISSING that returned me the tracks that didn't have the cover embedded.
Everything worked perfectly.

I uninstalled
   - foo_cover_info-1.0.4.fb2k-component
   - foo_cover_resizer-1.0.8.fb2k-component

I have installed foo_cover_utils-1.0.fb2k-component
And it doesn't work anymore. The Re-Facets gives me back all the discs in the playlist when they all have their cover embedded.

I had to uninstall it and reinstall foo_cover_info and foo_cover_resizer.
I don't know if there's something I'm not doing right or if the new component is not fully adjusted.
5
3rd Party Plugins - (fb2k) / Re: foo_vis_text (Text Visualizer)
Last post by Julero -
I don't know if it will be very difficult to access only the L channel and R channel peaks with C++, but something like this could be very decisive for your plugin. With a JS method that accesses that, putting an Analog VU Metter with css and js would be very simple.

But I understand that it could be complicated. :'(
It's not complicated especially since I already have the code but it uses different fb2k services. Plus there is the latency caused by the transition from fb2k to JavaScript. I could see I can forward the fb2k visualization API to EdgeView but then we're heading far away from text visualization land.

Doesn't jscript_panel already have that functionality?

I don't think so. At least I haven't seen anything like that in JScript Panel.

JScript Panel is also wonderful. Both things serve different things.

With JScript you can have a fluid playlist, you can connect with MusicBrain, Last fm, console, custom buttons in design to access all Foobar, thumbnail view of covers, time panels, status bars, volume, etc, etc. , etc. It is a complement that covers a lot and is really cool. But Text Visualizer is completely different and serves very different things. I think both supplements are necessary to vitaminize Foobar2000 and they both complement each other very well.

To make the VU Metter analogue, I think the Text visualizer would be very useful because of the ease of doing it in html, css and js. If you have it done in C++, you can leave the js method available for whoever wants to use it, even with its shortcomings if it has any (latency, etc.).

A hug mate and thanks for your time.
6
MP3 / Re: LAME fastest encoding(-q 9) gives better quality than the slowest encoding(-q 0)
Last post by maikmerten -
Okay, dug a bit deeper. Relevant here seems noise_shaping_amp. q4 sets this to 0, q3 sets this to 1, q0 sets this to 2.

This is used in quantize.c, in the function amp_scalefac_bands

Code: [Select]
 *  Amplify the scalefactor bands that violate the masking threshold.
 *  See ISO 11172-3 Section C.1.5.4.3.5
 *
 *  distort[] = noise/masking
 *  distort[] > 1   ==> noise is not masked
 *  distort[] < 1   ==> noise is masked
 *  max_dist = maximum value of distort[]
 *
 *  Three algorithms:
 *  noise_shaping_amp
 *        0             Amplify all bands with distort[]>1.
 *
 *        1             Amplify all bands with distort[] >= max_dist^(.5);
 *                     ( 50% in the db scale)
 *
 *        2             Amplify first band with distort[] >= max_dist;

For low bitrates, basically all bands will have noise beyond the masking threshold.

With strategies 1 and 2, only some (strategy 1) or one band (strategy 2) will receive a boost. With a fixed target, this smells like the non-boosted bands will get quantized away, as something has to give: The encoder cannot just increase the bitrate to accommodate the boosted bands, so quantization may just push the non-boosted bands into oblivion. This may produce the dropouts I find very objectionable.

With strategy 0 all bands with too much distortion will receive a boost. With low bitrates, this might be "all bands". Given that "all bands" are boosted, and given the fixed bitrate budget, I assume all bands will be quanitzed down somewhat evenly to fit into the budget. While this means that, in effect, many bands will have noise beyond what is masked, this should avoid throwing some bands under the bus completely. The bands will have noise, but at least they'll be there.

This band "starvation" is very visible in the enclosed spectrographs (OP's sample, encoded at 32 kbps CBR - but the effect is also visible at higher CBR bitrates - those also come with higher lowpass values, so more bands have to be encoded).

Most modern codecs prefer having energy in bands, even if it's noisy energy. AAC has PNS, Opus has spectral folding.

Personally, I can see how LAME's logic makes sense in VBR, but for CBR, I feel that strategy 0 is a safer bet.
7
General - (fb2k) / Re: Loudness contol for Foobar
Last post by silverprout -
And you still think you're an average user!   :))

I was in a mess because i need some music when i design on my CAD computer, i've tested some commercial desktop monitors, and the responses were ragged under 250Hz. after that i've printed and tested a lot of boxes and loudspeaker units, retained the best performer after months of tests and measurements (in the CAD workflow).
Then produced the final product, somebody that came at my house was so amazed by the resolution, clarity and the details of the sound... that i given them for free and build a second pair.
Build desktop monitors with a DSP is a not really rare event, and there is at least two of my models on earth, when your monitors can offer a clean rendering of the lows, you need to have a dynamic compensation of the lows to keep the tonal equilibrium constant.

https://www.google.com/search?client=firefox-b-d&sca_esv=cbb07cb897603c0c&sca_upv=1&sxsrf=ADLYWIJjwEyPZSHPX2AZGTHCeb99im26lA:1718820430928&q=thingiverse+loudspeaker&udm=2&fbs=AEQNm0CbCVgAZ5mWEJDg6aoPVcBgBfTqaTQuNecG83gDqWXJqDDjxZx4JTagBkj836YhK0esmg08VwYjk-C34moSUHfR2_enYk-24_sxvdiMta5BoHGwEcY7cI__d8DnxdEdjS4dqYTnxrMpwCpC8SuovqX0Pl6a7euQcF9tDWAlEyy8k2jiX7i8IT1Y5OS6v0CvqnpQCHb07xlrAXdtxcNT1JtVHBfBzg&sa=X&ved=2ahUKEwj9gN-JoeiGAxXGV6QEHXuuBxoQtKgLegQICxAB&biw=2261&bih=1073&dpr=1.13

8
3rd Party Plugins - (fb2k) / Re: foo_vis_spectrum_analyzer
Last post by TT -
Hi @pqyt,

I was reading this post here:
https://hydrogenaud.io/index.php/topic,126042.msg1046430.html#msg1046430
and I thought I would post my question in this thread.

Does foo_vis_spectrum_analyzer supports an interface between your component and JavaScript to read
the left and right channels and peaks via ActiveX in realtime?

I am using the old foo_vis_vumeter component as @Julero has posted and it reads
the left and right channels and peaks without even the need of a panel with the foo_vis_vumeter component being displayed.

I have a custom peakmeter bar and it feeds the data like this:
Code: [Select]
	/** Indicates if the foo_vis_vumeter component is installed. */
VUMeter: utils.CheckComponent('foo_vis_vumeter')

if (Component.VUMeter) {
this.VUMeter = new ActiveXObject('VUMeter');
}

/**
* Calculates the decibel (dB) value of the given volume.
* @type {Function}
* @private
*/
this.toDecibel = (Level) => Math.round(2000 * Math.log(Level) / Math.LN10) / 100;

// * Set and monitor volume level/peaks from VUMeter
this.leftLevel  = this.toDecibel(this.VUMeter.LeftLevel);
this.leftPeak   = this.toDecibel(this.VUMeter.LeftPeak);
this.rightLevel = this.toDecibel(this.VUMeter.RightLevel);
this.rightPeak  = this.toDecibel(this.VUMeter.RightPeak);

// * Debug stuff
DebugLog('LEFT PEAKS: ',  this.leftPeak,   '      RIGHT PEAKS: ',  this.rightPeak);
DebugLog('LEFT LEVEL:  ', this.leftLevel,  '      RIGHT LEVEL:  ', this.rightLevel, '\n\n');

// Outputs:
LEFT PEAKS:  -12.86     RIGHT PEAKS:  0.36
LEFT LEVEL:  -13.89     RIGHT LEVEL:  -0.46

LEFT PEAKS:  1.67       RIGHT PEAKS:  2.85
LEFT LEVEL: -1.88       RIGHT LEVEL:   1.4

LEFT PEAKS:  4.92       RIGHT PEAKS:  5
LEFT LEVEL:  0.28       RIGHT LEVEL:   2.18

LEFT PEAKS:  2.23       RIGHT PEAKS:  3.08
LEFT LEVEL:  2.01       RIGHT LEVEL:   3.03

Can this be achieved also with your foo_vis_spectrum_analyzer component?
It would be great if this could be done because I need a replacement and want to ditch the old foo_vis_vumeter...

-TT
9
MP3 / Re: LAME fastest encoding(-q 9) gives better quality than the slowest encoding(-q 0)
Last post by Porcus -
Uneducated farfetched "could this be a thing?":
In the thread on the new WavPack noise shaping, https://hydrogenaud.io/index.php/topic,125991 , it seems that the noise shaping worsens the predictor which beefs up the noise shaping etc. Of course WavPack lossy experience doesn't translate directly to MP3, but since noise shaping increases noise: could it be something analogous, where
lossiness -> noise -> noise shaping to get it less unpleasant -> increases noise -> increases need for bits -> but given bitrate, leads to more "loss" in "lossy"
and possibly, if "that noise is also to be shaped" ... ?