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.
Topic: foo_wave_seekbar (Read 807224 times) previous topic - next topic
0 Members and 1 Guest are viewing this topic.

foo_wave_seekbar

Reply #1050
I'm confused... I've tested with my installation of f2k. The download dialog shows already the option to open directly in f2k and install the component. And the "install..." option works fine, too. Which version of foobar2000 are you using? See changelog, version 1.1.11:
Quote
New .fb2k-component file type extension for foobar2000 component packages.

foo_wave_seekbar

Reply #1051
You must be running a very old foobar2000 installation. They have supported .fb2k-component for a very long while now, and any new components will be released in this (renamed zip) format.
There are many gains, including the ability to associate the files and to filter/find them easier.
Stay sane, exile.

foo_wave_seekbar

Reply #1052
I'm on 1.1.10.
For some reason the Changelog has no release dates for any version. Stange thing to omit from a log. I'll update. Thanks.

foo_wave_seekbar

Reply #1053
In case you're running an outdated foobar2000 version or a portable installation, instructions in http://wiki.hydrogenaudio.org/index.php?ti...all_a_component still work (which is linked at the bottom of each component page for your convenience).
Microsoft Windows: We can't script here, this is bat country.

foo_wave_seekbar

Reply #1054
Is there any difference between Direct2D and 3D modes? Anything performance related or anything? Wondering which one I should use, you could think 2D as what its rendering is 2D.

Seems like Direct2D is the most accurate visually in depicting what the true waveform is like, GDI and 3D dont seem to show peaks properly, they seem "muffled" if you can say that of an image

Looks like 3D is the worst in rendering peaks, GDI is slightly better but 2D is the most accurate

The fundamental difference is how I use the waveform data in the Direct2D frontend vs. the GDI and Direct3D ones.

The data used for a waveform is two sets of two thousand datapoints, equally spaced along the track.
Each point records the minimum and maximum amplitude in that region.

In the Direct2D mode, I tell the API to draw a spline with all the datapoints, even though there are too many to fit in the window and rely on it to do a half-arsed job antialiasing the curves.

In the other modes, the amplitude drawn is a mix of the two closest bins, so it has a tendency to remove single-bucket transients. If your window was >2k pixels wide, there wouldn't be as much of a difference.

The unfilled line outline shader takes a bit more information into consideration, so it might give you a reasonable effect. One could possibly adapt it to do more taps, but I'm unsure if there's enough instructions left to do that.



Interesting, however there is a slight difference between GDI and 3D as well as I said above.

foo_wave_seekbar

Reply #1055
I very like the wave_seekbar, it's a great component! From the fist use I'm wondering: Can we have coloured waveforms respecting the frequency of the sound: bass = red, mid = green and treble = blue? You probably know it from many DJ applications. (I probably missed something. If so, it would be nice if someone points me into the right direction since my search here was without results.)

foo_wave_seekbar

Reply #1056
People have suggested moods, tempo, foot-tappityness and other metrics, but no, none of those are considered for inclusion.

By the way, 0.2.23 is out, with slightly less horrible downmixing for formats that are not mono, stereo, quad, 5.1, or 7.1.
Stay sane, exile.

foo_wave_seekbar

Reply #1057
Could one of you people that have the frontend settings trouble export a theme file (assuming you use the Default UI)?
That is, coincidentally, the sane way of preserving any settings.


It's been a while, but I thought I'd pop back with a quick update.
I'm upgrading my PC again, and so I needed to backup my Foobar stuff.

I never actually did fix this problem, so I was unable to get to the frontend settings.
I tried exporting, but it kept failing to do so because of a missing panel. (It turns out it was WSH Panel that I had removed, but not from some test layouts I had.)

Anyway, I wound up with a last resort of updating the component to the latest version, then relaunched Foobar, and I was able to access the frontend settings again. This time I've copied it off into a text file.
Simple solutions.. go figure.

foo_wave_seekbar

Reply #1058
I could have sworn "Capture Screenshot" worked initially. I remember because I produced an image that was 1024 x 1024 and thought that looked really funny for a waveform. After reinstalling Windows and copying over my AppData/roaming profile, it no longer functions. Is there a way to do a clean install of Waveform Seekbar, where upon reinstallation it won't remember my configuration settings like color and position?

Also I ran into really strange issues after deleting wavecache.db one time. I thought "wow, so that's why my AppData folder got so huge, I'll just let foo_wave_seekbar start a new one. Well foobar was very wonky after that, taking several seconds to produce waveform images and skipping through songs. The problem actually got worse over a few days as I played more music. Luckily I found a backup.

I'm just hoping there's a way to do a true clean uninstall and reinstall, without affecting the rest of my configuration.

 

foo_wave_seekbar

Reply #1059
There's three places where the seekbar keeps state:
  • The wavecache.db file in the profile directory;
  • configuration\foo_wave_seekbar.cfg in the profile's configuration directory, for global state like Advanced Preferences;
  • whatever configuration storage that the UI component offers for per-instance configuration. Typically you can wipe that just by deleting and re-creating the instance in your layout.

What codecs were the affected songs using, and roughly how many tracks did you have before destroying it?
Stay sane, exile.

foo_wave_seekbar

Reply #1060
What are the differences, if any, between using Direct2D, Direct3D and GDI in terms of performance, GPU usage?

My priority is low GPU heat and GPU/system stability. (Using Windows 7 and a very old ATI X1300 Pro with bad cooling.)

Thanks in advance!

foo_wave_seekbar

Reply #1061
GDI would win there, on virtue of not using the GPU. It might however be a bit expensive CPU-wise due to re-blitting the static waveform image repeatedly.
D3D would probably be decent if you lower the update rate in advanced properties some.
D2D I have no idea about, but it probably leverages some 3D tech in the background.

GDI and D2D both draw a static cached image with the position and shade overlaid, while D3D rerasterises everything.

Try them and see, Process Explorer's GPU utilization meter might give you some insight.
Stay sane, exile.

foo_wave_seekbar

Reply #1062
I tried now quickly with Process Explorer and it seems like GDI even uses very little CPU, comparable to D2D (which also uses a little bit of GPU).
D3D uses the most of both CPU and GPU.

foo_wave_seekbar

Reply #1063
[feature request] Could you add customizable (fields, font, transparency etc.) label over waveform?

foo_wave_seekbar

Reply #1064
I accidentally put the screenshot functionality in the latest (0.2.21) build as I rushed it out to fix a resume-from-hibernate/sleep crash.

The screenshot functionality is controlled via advanced preferences.
There's a size setting and a titleformat string for naming the file.
If the path is just a filename, it ends up as a PNG in My Pictures.
If it's a full path, it probably ends up in that location with that name.

This functionality only works with the Direct3D9 frontend, as I haven't been arsed to implement it for the other ones. Expect it to be unstable.


Can you remove the "Capture screenshot" entry from the context menu when in GDI or Direct2D mode?


Any chance? Still there in 0.2.27 ...

foo_wave_seekbar

Reply #1065
Out of sight, out of mind.

Quite tempted to just patch it out completely. It's not production-ready anyway.
Stay sane, exile.

foo_wave_seekbar

Reply #1066
What codecs were the affected songs using, and roughly how many tracks did you have before destroying it?


Not just a ton of tracks, I must have had it for 2 weeks and Wavecache was like ~70 MB at the time. Everything I listen to is pretty much FLAC.

By the way, why do waveforms look so different in GDI and DirectX 9 mode? Which do you recommend? FWIW I really would enjoy and use GDI screenshot capabilities, if it's doable later.

foo_wave_seekbar

Reply #1067
I recommend the one that pleases you the most. It's all lies.
Stay sane, exile.

foo_wave_seekbar

Reply #1068
Hi, please explain the beginner how to insert a picture into the background, or make it Standard tubing, transparent.
Now I use:
Code: [Select]
Texture1D tex : WAVEFORMDATA;

SamplerState sTex
{
    Filter = MIN_MAG_MIP_LINEAR;
    AddressU = Clamp;
};

struct VS_IN
{
float2 pos : POSITION;
float2 tc : TEXCOORD0;
};

struct PS_IN
{
float4 pos : SV_POSITION;
float2 tc : TEXCOORD0;
};


float4 backgroundColor : BACKGROUNDCOLOR;
float4 highlightColor  : HIGHLIGHTCOLOR;
float4 selectionColor  : SELECTIONCOLOR;
float4 textColor      : TEXTCOLOR;
float cursorPos        : CURSORPOSITION;
bool cursorVisible    : CURSORVISIBLE;
float seekPos          : SEEKPOSITION;
bool seeking          : SEEKING;
float4 replayGain      : REPLAYGAIN; // album gain, track gain, album peak, track peak
float2 viewportSize    : VIEWPORTSIZE;
bool horizontal        : ORIENTATION;
bool shade_played      : SHADEPLAYED;

PS_IN VS( VS_IN input )
{
PS_IN output = (PS_IN)0;

float2 half_pixel = float2(1,-1) / viewportSize;
output.pos = float4(input.pos - half_pixel, 0, 1);
if (horizontal)
output.tc = float2((input.tc.x + 1.0) / 2.0, input.tc.y);
else
output.tc = float2((-input.tc.y + 1.0) / 2.0, input.tc.x);

return output;
}

float4 bar( float pos, float2 tc, float4 fg, float4 bg, float width, bool show )
{
float dist = abs(pos - tc.x);
float4 c = (show && dist < width)
? lerp(fg, bg, smoothstep(0, width, dist))
: bg;
return c;
}

float4 evaluate(float4 bg, float4 fg, float factor)
{
return saturate(lerp(bg, fg, factor));
}

float4 played( float pos, float2 tc, float4 bg, float factor)
{
float4 c = bg;
if (pos > tc.x)
{
c = evaluate(backgroundColor, highlightColor, factor);
}
return c;
}

float RMSfactor( float2 tc, float border )
{
// alpha 1 indicates biased texture
float4 minmaxrms = tex.Sample(sTex, tc.x);
if (replayGain.g != -1000) {
minmaxrms.rgb *= pow(10,(replayGain.g) / 20) * 2; //use track gain
} else if (replayGain.r != -1000) {
minmaxrms.rgb *= pow(10,(replayGain.r) / 20) * 2; //use album gain
}
minmaxrms.rgb -= 0.5 * minmaxrms.a;
minmaxrms.rgb *= 1.0 + minmaxrms.a;

float belowWave = tc.y + border - minmaxrms.r;
float aboveWave = tc.y - border - minmaxrms.g;
float factorWave = min(abs(belowWave), abs(aboveWave));
bool insideWave = (belowWave > 0 && aboveWave < 0);

float diffRms = abs(tc.y) - border - minmaxrms.b;
float factorRms = abs(diffRms);
bool insideRms = diffRms < 0;

float factor = insideRms ? (1.0 - 0.5 * saturate(factorRms / border / 2)): 1.0;
factor = insideWave ? (factor * saturate(factorWave / border / 2)) : 0.0;

return factor;
}

float4 PS( PS_IN input ) : SV_Target
{
float dx, dy;
if (horizontal)
{
dx = 1/viewportSize.x;
dy = 1/viewportSize.y;
}
else
{
dx = 1/viewportSize.y;
dy = 1/viewportSize.x;
}
float seekWidth = 2.5 * dx;
float positionWidth = 2.5 * dx;

float factor = RMSfactor(input.tc, 2.5 * dy);

float4 c0 = evaluate(backgroundColor, textColor, factor);
if (shade_played)
c0 = played(cursorPos, input.tc, c0, factor);
c0 = bar(cursorPos, input.tc, selectionColor, c0, positionWidth, cursorVisible);
c0 = bar(seekPos,  input.tc, selectionColor, c0, seekWidth,    seeking      );
return c0;
}

technique10 Render10
{
pass P0
{
SetGeometryShader( 0 );
SetVertexShader( CompileShader( vs_4_0, VS() ) );
SetPixelShader( CompileShader( ps_4_0, PS() ) );
}
}

technique Render9
{
pass
{
VertexShader = compile vs_2_0 VS();
PixelShader = compile ps_2_0 PS();
}
}

foo_wave_seekbar

Reply #1069
Tubing?

Anyway, the functionality to load textures is probably not working, so even if I authored an effect that would do it, it wouldn't work.
Stay sane, exile.

foo_wave_seekbar

Reply #1070
I think many of my support, I would like to see this functionality.

foo_wave_seekbar

Reply #1071
I use a translator, sorry.
The background can be made ​​transparent?

foo_wave_seekbar

Reply #1072
It cannot be made to show a hole through the window to display the desktop or other windows.
It cannot be (sanely) made to show other child windows below it, in case you're using Columns UI with panel stack splitter or something.

It's just not within the reach of the current technical solution and the time I have to invest.
Stay sane, exile.


foo_wave_seekbar

Reply #1074
Hi,
I am using Foobar (version1.1.13) to convert 24 bit/48 khz WAV files to 24-bit FLAC files.  I am then trying to play these 24-bit FLAC files in Foobar with the Waveform Seekbar (version 0.2.27).  I'm finding that these 24-bit FLAC files will not display in the Waveform Seekbar; the seekbar just appears completely blank if I try to play a 24-bit FLAC file.  If I select "auto" bitdepth when converting WAV to FLAC, the Waveform Seekbar also comes up blank when I play the resulting FLAC files.  However, if I convert my WAVs to 16-bit FLAC, these files will play just fine in the Waveform Seekbar, as will 24-bit WAVs.  I would love to be able to view 24-bit FLAC files using the Waveform Seekbar, so I'd appreciate ay thoughts or recommendations. 

I have not used dither when converting from 24-bit WAV to 24-bit FLAC; I am unsure if I should use dither when performing this conversion?

Thanks,
Ian