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
11
Support - (fb2k) / Re: foo_vis_vumeter 0.9.5.0 Crashes FB 2.1.4.1 X64
Last post by sveakul -
Try disabling milkdrop2 and ProjectM.

Also be sure your processor doesn't fall into the range cited by oops' post about full DX12 compatibility--if it does, get the working Intel driver here:  https://www.intel.com/content/www/us/en/support/articles/000057520/graphics.html

Continue to post in the foo_vis_vumeter thread for support.

BTW, the Foobar section has its own Uploads thread: https://hydrogenaud.io/index.php/board,42.0.html
12
FLAC / Re: FLAC files show duplicate tag
Last post by daveb30 -
Thanks for the Windows command Porcus.  I have a Linux machine and a Windows.  I am trying to get off of Windows so I jumped onto my Linux box, and SimBun's code works like a charm.  But thanks for this... Next time I fire up my Windows box I will give this a try.
Thanks 
13
3rd Party Plugins - (fb2k) / Re: foo_vis_vumeter
Last post by oops -
I have become lost with the latest succession of rapid-fire updates.  It has become impossible to tell if some are purely in response to a test requested by a poster trying to get something to work in a "niche" fashion specific to them, and those that are general updates supplying fixes and changes relevant to all.  I don't use CUI or on-the-fly color changes, exotic loading/splitting techniques or special forms of transparency.  What is the latest version that does NOT include personalized experimentation??

For those regularly requesting the plugin to be altered to fit specific uses, why not offer a "development version" of the plugin that contains responses to their requests from a separate "nightly build" source?
As I said above, I'm very happy with the development of the component. The code base is stable at this point, many of the major problems have been hashed out and I don't think there will be any large changes going forward. In fact, most of the changes I outlined in the last release notes are less than 10 lines.

With that, I'm with you on a lot of it. I don't use CUI or fancy anything, personally. All of the requests are "niche" at this stage. But we are all evolving the component together. And part of the fun is seeing people's creative set ups and marveling at how far they push the component. But be aware, there is no version I've released that is not experimental in some way as I'm not a corporation with a professional dev team verifying and reviewing the updates (and as I've stated before, this project is a learning endeavor first-and-foremost).

I simply do not want to spend the bandwidth to offer anything beyond what is in my "master" branch or write yet another script to publish the CI builds.

One last thought. Basic functionality will likely not break because my post-build hook copies the current build DLL over the existing one in my copy of the music player. So, if you're using a single instance of VU Meter in DUI on x64 in light mode, you are using what I do and dogfood daily. But as we've learned, if that was all the component offered, non-stop complaints and wishlists flood this forum ;)
14
FLAC / Re: FLAC files show duplicate tag
Last post by Porcus -
grep does not work in Windows out of the box? (Mine is gnu'ed up a bit, so I do have grep here, but I don't think that's default command. From the directory backslashes I presume it is Windows.)

Then instead use findstr (I looked up the syntax here). Note the double quotes.

metaflac --no-utf8-convert --export-tags-to=- WorkingMan_Copy.flac | findstr /B /E /V "SongRating=" | metaflac --remove-all-tags --import-tags-from=- WorkingMan_Copy.flac

  • The | ("pipe") sends the output to the next command.
  • The next command, findstr (or grep if you have that) is a string finder. /B finds it only at beginning of line, /E finds it only at end of line, so that means you are searching for a line that is "SongRating=" and nothing before or after; /V means to invert it, so to return every line that does NOT match.
If you are familiar with regular expressions, then findstr supports that as well, if you give the /R switch. Then it would be findstr /R /V "^SongRating=$" which closely matches the grep command suggested. In regex speak, a sole "^" means beginning of line and a sole "$" means end of line. The problem about regular expressions is that you need to know that there are special characters, so if all you need is "this is the entire line" then /B /E is just as good.
  • Then piping what grep/findstr found (namely the whole shebang except lines that are exactly "SongRating=") on to the next command. Which is another metaflac, that removes all the tags and imports the tags from "-" which is the standard input it was sent by the command before the pipe.

And yes, whitespace after "-", and sure you can use whitespaces around | too.

15
General Audio / Re: Downsampling 192/96 to 48 kHz - best SoX setting?
Last post by isidro -
From SOX manual: All resamplers use filters that can create artefacts with transient signals like highly percussive sounds. Are more noticeable if they occur before (‘pre-echo’) than if they occur after it (‘post-echo’).  A phase response setting control the distribution of any transient echo between ‘pre’ and ‘post’: with minimum phase, there is no pre-echo but longest post-echo; with linear
phase, pre and post echo are in equal amounts; intermediate phase setting attempts to find the best compromise by selecting a small length (and level) of pre-echo and a medium lengthed post-echo.

Mastering engineer Daniel Ovie tests found out that it's perceptible and the least disturbing setting is Intermediate instead of the default Linear.
As for dithering, 18bit implies s/n of 108dB, usually everything below that is noise, with dithering some of the two folowing bits is included.  My usual setting (run from a BATCH file) for processing all WAVs in folder is:
Code: [Select]
FOR %%A IN (*.wav) DO (
  "c:\AUDIO\UT\SOX\sox.exe" --no-clobber --multi-threaded --buffer 131072 -S -V2 -R "%%A" ^
    -b 24 -e signed-integer "%%~nA VHQ_IP 48k24b dith18.wav" ^
    rate -v -I 48k  dither -p 18  stats
  )

Same BATCH for FLAC:
Code: [Select]
FOR %%A IN (*.flac) DO (
  "c:\AUDIO\UT\SOX\sox.exe" --no-clobber --multi-threaded --buffer 131172 -S -V2 -D -R "%%A" ^
    -b 24 "B:\Audio\VHQ_IP 48k18b dith.%%~nxA" ^
    rate -v -I 48000 dither -p 18 stats
  )
16
3rd Party Plugins - (fb2k) / Re: foo_vis_vumeter
Last post by Defender -
I'll leave it with you, nothing more I can test about it. Keep me informed.
Thank you so much for testing this out! I found the problem. It was due to my misunderstanding of Win32 window styles. Fixed. Not painting the transparency in fullscreen, but it is not lost in window mode after fullscreen or resizing. Also, fullscreen will be reenabled fully in Columns UI regardless of the configuration or parent container. Pseudo-transparency in JSplitter not tested.

For those looking for a working implementation, here it is. Be aware that the order of the operations is absolutely critical:
Code: [Select]
void vumeter_cui::ToggleFullScreen() noexcept
{
    EnterCriticalSection(&g_cs);
    if (!s_fullscreen)
    {
        GetWindowRect(&m_window_rect);
        CWindow(m_parent).ScreenToClient(&m_window_rect);

        ::SetWindowLongPtr(m_hWnd, GWL_STYLE, WS_POPUP);
        ::SetWindowLongPtr(m_hWnd, GWL_EXSTYLE, WS_EX_TOPMOST);
        ::SetParent(m_hWnd, ::GetDesktopWindow());
        ::SetWindowPos(m_hWnd, HWND_TOP, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE | SWP_NOZORDER | SWP_FRAMECHANGED);
        ::ShowWindow(m_hWnd, SW_MAXIMIZE);

        if (m_host->get_host_guid() != guid_foo_uie_panel_splitter)
            m_host->relinquish_ownership(nullptr);
        s_fullscreen = true;
    }
    else
    {
        LONG_PTR style = ::GetWindowLongPtr(m_hWnd, GWL_STYLE); // WS_POPUP | WS_VISIBLE | WS_CLIPSIBLINGS | WS_MAXIMIZE
        ::SetWindowLongPtr(m_hWnd, GWL_STYLE, style & static_cast<LONG_PTR>(~WS_POPUP) | static_cast<LONG_PTR>(WS_CHILD));
        ::SetWindowLongPtr(m_hWnd, GWL_EXSTYLE, 0);
        ::SetParent(m_hWnd, m_parent);
        ::SetWindowPos(m_hWnd, HWND_TOP, m_window_rect.left, m_window_rect.top, m_window_rect.right - m_window_rect.left, m_window_rect.bottom - m_window_rect.top, SWP_NOMOVE | SWP_NOZORDER | SWP_FRAMECHANGED);
        ::ShowWindow(m_hWnd, SW_NORMAL);

        if (m_host->get_host_guid() != guid_foo_uie_panel_splitter)
            m_host->relinquish_ownership(m_parent);
        s_fullscreen = false;
    }
    LeaveCriticalSection(&g_cs);
}
Great you solved it.

I'll await the next release or revision.
17
3rd Party Plugins - (fb2k) / Re: foo_vis_vumeter
Last post by oops -
I'll leave it with you, nothing more I can test about it. Keep me informed.
Thank you so much for testing this out! I found the problem. It was due to my misunderstanding of Win32 window styles. Fixed. Not painting the transparency in fullscreen, but it is not lost in window mode after fullscreen or resizing. Also, fullscreen will be reenabled fully in Columns UI regardless of the configuration or parent container. Pseudo-transparency in JSplitter not tested.

For those looking for a working implementation, here it is. Be aware that the order of the operations is absolutely critical:
Code: [Select]
void vumeter_cui::ToggleFullScreen() noexcept
{
    EnterCriticalSection(&g_cs);
    if (!s_fullscreen)
    {
        GetWindowRect(&m_window_rect);
        CWindow(m_parent).ScreenToClient(&m_window_rect);

        ::SetWindowLongPtr(m_hWnd, GWL_STYLE, WS_POPUP);
        ::SetWindowLongPtr(m_hWnd, GWL_EXSTYLE, WS_EX_TOPMOST);
        ::SetParent(m_hWnd, ::GetDesktopWindow());
        ::SetWindowPos(m_hWnd, HWND_TOP, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE | SWP_NOZORDER | SWP_FRAMECHANGED);
        ::ShowWindow(m_hWnd, SW_MAXIMIZE);

        if (m_host->get_host_guid() != guid_foo_uie_panel_splitter)
            m_host->relinquish_ownership(nullptr);
        s_fullscreen = true;
    }
    else
    {
        LONG_PTR style = ::GetWindowLongPtr(m_hWnd, GWL_STYLE); // WS_POPUP | WS_VISIBLE | WS_CLIPSIBLINGS | WS_MAXIMIZE
        ::SetWindowLongPtr(m_hWnd, GWL_STYLE, style & static_cast<LONG_PTR>(~WS_POPUP) | static_cast<LONG_PTR>(WS_CHILD));
        ::SetWindowLongPtr(m_hWnd, GWL_EXSTYLE, 0);
        ::SetParent(m_hWnd, m_parent);
        ::SetWindowPos(m_hWnd, HWND_TOP, m_window_rect.left, m_window_rect.top, m_window_rect.right - m_window_rect.left, m_window_rect.bottom - m_window_rect.top, SWP_NOMOVE | SWP_NOZORDER | SWP_FRAMECHANGED);
        ::ShowWindow(m_hWnd, SW_NORMAL);

        if (m_host->get_host_guid() != guid_foo_uie_panel_splitter)
            m_host->relinquish_ownership(m_parent);
        s_fullscreen = false;
    }
    LeaveCriticalSection(&g_cs);
}
19
3rd Party Plugins - (fb2k) / Re: foo_vis_vumeter
Last post by Majestyk -
Please consider making future builds the way they were, otherwise DarkOne users are forever stuck on 0.9.0.
Let's not speak like we're at the end of the world. In enough detail explain what you want to happen and we'll work together towards that goal. I won't revert to the previous architecture but I'm very happy to help make it work like you expect either in the current version or to make changes to support the use case.

Things that will help me understand the screen grab:
  • It's a very busy image, where are the instances of VU Meter?
  • What is supposed to happen on color change? It seems to be working "similar" to the 0.9.0 version to me.
  • What do the visual ">" and "<" buttons supposed to do? What is it cycling through?
  • From your description and the animation, there are 2 main folders VU and Peak. Are they both instantiated at the same time, just the windows hidden?

It's the end of the world!!!!!!!!!!!!  Ok, but seriously. The best thing to do is revisit this post (link below) from page 9. I think I nailed it on that post, because you corrected the issue soon after. The skinloader part of 0.9.5 has basically reverted back to those earlier times.

https://hydrogenaud.io/index.php/topic,126733.msg1055392.html#msg1055392

20
3rd Party Plugins - (fb2k) / Re: JSplitter (splitter + SMP x64 alternative)
Last post by Defender -
Quote
So how to proceed?
The profile folder is enough, without clutter like YTTM, lyrics, art, etc. But definitely I need to run your theme in a portable install with the same layout and components to test your problems.
Ok. I'll port it on one of my other systems as a portable and get back to you.
@regor

I have ported it.

Of course some issues with third party plugins (even new ones) that don't accept relative paths.

Normally I solve that by using a junction. Would creating a junction work for you?
If not, what folder do you want me to create the portable?

And how do I get the portable to you?
I can put it on a google drive or WeTransfer or something. Including my and your helpers it is 573MB excluding art. Art would be an extra 580MB.

Tia.