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
MP3 - General / Re: Resurrecting/Preserving the Helix MP3 encoder
Last post by Kraeved -
How come when I click your Hyperfire link it brings me back to this hydorgenaudio Helix thread?
Can you provide a download link to try this? 

The link in that message takes you to an example of how to use Hyperfine, so you don't have to go through the user's guide in search of the proper commands. To date, the latest version available for download on Github is 1.18.
3
MP3 - General / Re: Resurrecting/Preserving the Helix MP3 encoder
Last post by KevinB52379 -
@KevinB52379, what if you discard Foobar2000 as an intermediary for a while and encode right in the terminal using Hyperfine, a cross-platform tool for warming up the system and measuring the execution time of the binaries? For example, @misio discovered and I verified that visualization via VST plug-ins works much slower in Foobar2000 than the same plug-ins in audio editors (DAWs), and surprisingly, interaction with WavPack files turned out to be the slowest.

How come when I click your Hyperfire link it brings me back to this hydorgenaudio Helix thread?

Can you provide a download link to try this? 
4
General - (fb2k) / Re: Tagging with an iterative loop e.g. tag automatically according to folder order
Last post by timalina -
I know Mp3Tag offers something similar - although I'm not sure it'd reset the disc number across albums - but assuming you have the directories named sensibly e.g. CD01/Disc 01, couldn't you just use something like:
Code: [Select]
$substr($directory(%path%,1),3,4)
Assuming, your layout looks something like this: ...\Artist - Album\CD 2\9 - Title.ext

You can extract the disc number for all tracks of all albums (just pull them into a playlist) by

1. opening the Properties dialog
2. select Tools > Automatically Fill Values
3. select Source "Other...", to the right enter $directory(%path%,1) (which extracts the name of the parent directory, e.g. "CD 2", from the full file path)
4. in line Pattern, enter CD %discnumber%
5. verify the preview, Ok; Done.

Thanks, but I've got thousands of folders without a consistent structure, so parsing strings would be laborious.

Also, I'm wanting to edit the album tags as I go (to removed 'CD 1'-type suffixes and make the album tags identical, so manual tagging would be quicker than parsing.

Really, I'd want something that works in a similar way to the 'Auto track number' function, but for Discnumbers.
5
3rd Party Plugins - (fb2k) / Re: Playlist-Tools-SMP
Last post by Koshingg -
So, the second issue, I have this :

Code: [Select]
Error: Spider Monkey Panel v1.6.1-mod (ListenBrainz Tools Button: Playlist Tools: Buttons Bar v1.1.0 by regorxxx)
include failed:
themedButton is not defined

File: buttons_others_device_selector.js
Line: 30, Column: 2
Stack trace:
  @buttons_others_device_selector.js:30:2
  includeButton@buttons_toolbar.js:223:4
  reducer/</</<@helpers_xxx_prototypes.js:353:60

6
3rd Party Plugins - (fb2k) / Re: Playlist-Manager-SMP
Last post by Koshingg -
Hi! :) I have 2 errors after updating the scripts :

Code: [Select]
Error: Spider Monkey Panel v1.6.1-mod (Playlist Manager: Playlist Manager v0.16.0 by regorxxx)
too much recursion

File: helpers_xxx_foobar.js
Line: 25, Column: 17
Stack trace:
  compareVersions@helpers_xxx_foobar.js:25:17
  isCompatible@helpers_xxx_foobar.js:32:9
  _isFile@helpers_xxx_file.js:102:6
  getFilePathsFromPlaylist@helpers_xxx_playlists_files.js:434:6
  getHandlesFromPlaylist@helpers_xxx_playlists_files.js:779:29
  _list/this.getHandleFrom@playlist_manager_list.js:6001:17
  _list/this.getHandleFromPlaylists/<@playlist_manager_list.js:5968:60
  _list/this.getHandleFromPlaylists@playlist_manager_list.js:5968:20
  getHandlesFromPlaylist@helpers_xxx_playlists_files.js:753:12
  _list/this.getHandleFrom@playlist_manager_list.js:6001:17
  _list/this.getHandleFromPlaylists/<@playlist_manager_list.js:5968:60
  _list/this.getHandleFromPlaylists@playlist_manager_list.js:5968:20
  getHandlesFromPlaylist@helpers_xxx_playlists_files.js:753:12
  _list/this.getHandleFrom@playlist_manager_list.js:6001:17
  _list/this.getHandleFromPlaylists/<@playlist_manager_list.js:5968:60
  _list/this.getHandleFromPlaylists@playlist_manager_list.js:5968:20
  getHandlesFromPlaylist@helpers_xxx_playlists_files.js:753:12
  _list/this.getHandleFrom@playlist_manager_list.js:6001:17
  _list/this.getHandleFromPlaylists/<@playlist_manager_list.js:5968:60
  _list/this.getHandleFromPlaylists@playlist_manager_list.js:5968:20
  getHandlesFromPlaylist@helpers_xxx_playlists_files.js:753:12
  _list/this.getHandleFrom@playlist_manager_list.js:6001:17
  _list/this.getHandleFromPlaylists/<@playlist_manager_list.js:5968:60
  _list/this.getHandleFromPlaylists@playlist_manager_list.js:5968:20
  getHandlesFromPlaylist@helpers_xxx_playlists_files.js:753:12
  _list/this.getHandleFrom@playlist_manager_list.js:6001:17
  _list/this.getHandleFromPlaylists/<@playlist_manager_list.js:5968:60
  _list/this.getHandleFromPlaylists@playlist_manager_list.js:5968:20
  getHandlesFromPlaylist@helpers_xxx_playlists_files.js:753:12
  _list/this.getHandleFrom@playlist_manager_list.js:6001:17
  _list/this.getHandleFromPlaylists/<@playlist_manager_list.js:5968:60
  _list/this.getHandleFromPlaylists@playlist_manager_list.js:5968:20
  getHandlesFromPlaylist@helpers_xxx_playlists_files.js:753:12
  _list/this.getHandleFrom@playlist_manager_list.js:6001:17
  _list/this.getHandleFromPlaylists/<@playlist_manager_list.js:5968:60
  _list/this.getHandleFromPlaylists@playlist_manager_list.js:5968:20
  getHandlesFromPlaylist@helpers_xxx_playlists_files.js:753:12
  _list/this.getHandleFrom@playlist_manager_list.js:6001:17
  _list/this.getHandleFromPlaylists/<@playlist_manager_list.js:5968:60
  _list/this.getHandleFromPlaylists@playlist_manager_list.js:5968:20
  getHandlesFromPlaylist@helpers_xxx_playlists_files.js:753:12
  _list/this.getHandleFrom@playlist_manager_list.js:6001:17
  _list/this.getHandleFromPlaylists/<@playlist_manager_list.js:5968:60
  _list/this.getHandleFromPlaylists@playlist_manager_list.js:5968:20
  getHandlesFromPlaylist@helpers_xxx_playlists_files.js:753:12
  _list/this.getHandleFrom@playlist_manager_list.js:6001:17
  _list/this.getHandleFromPlaylists/<@playlist_manager_list.js:5968:60
  _list/this.getHandleFromPlaylists@playlist_manager_list.js:5968:20
  getHandlesFromPlaylist@helpers_xxx_playlists_files.js:753:12
  _list/this.getHandleFrom@playlist_manager_list.js:6001:17
  _list/this.getHandleFromPlaylists/<@playlist_manager_list.js:5968:60
  _list/this.getHandleFromPlaylists@playlist_manager_list.js:5968:20
  getHandlesFromPlaylist@helpers_xxx_playlists_files.js:753:12
  _list/this.getHandleFrom@playlist_manager_list.js:6001:17
  _list/this.getHandleFromPlaylists/<@playlist_manager_list.js:5968:60
  _list/this.getHandleFromPlaylists@playlist_manager_list.js:5968:20
  getHandlesFromPlaylist@helpers_xxx_playlists_files.js:753:12
  _list/this.getHandleFrom@playlist_manager_list.js:6001:17
  _list/this.getHandleFromPlaylists/<@playlist_manager_list.js:5968:60
  _list/this.getHandleFromPlaylists@playlist_manager_list.js:5968:20
  getHandlesFromPlaylist@helpers_xxx_playlists_files.js:753:12
  _list/this.getHandleFrom@playlist_manager_list.js:6001:17
  _list/this.getHandleFromPlaylists/<@playlist_manager_list.js:5968:60
  _list/this.getHandleFromPlaylists@playlist_manager_list.js:5968:20
  getHandlesFromPlaylist@helpers_xxx_playlists_files.js:753:12
  _list/this.getHandleFrom@playlist_manager_list.js:6001:17
  _list/this.getHandleFromPlaylists/<@playlist_manager_list.js:5968:60
  _list/this.getHandleFromPlaylists@playlist_manager_list.js:5968:20
  getHandlesFromPlaylist@helpers_xxx_playlists_files.js:753:12
  _list/this.getHandleFrom@playlist_manager_list.js:6001:17
  _list/this.getHandleFromPlaylists/<@playlist_manager_list.js:5968:60
  _list/this.getHandleFromPlaylists@playlist_manager_list.js:5968:20
  getHandlesFromPlaylist@helpers_xxx_playlists_files.js:753:12
  _list/this.getHandleFrom@playlist_manager_list.js:6001:17
  _list/this.getHandleFromPlaylists/<@playlist_manager_list.js:5968:60
  _list/this.getHandleFromPlaylists@playlist_manager_list.js:5968:20
  getHandlesFromPlaylist@helpers_xxx_playlists_files.js:753:12
  _list/this.getHandleFrom@playlist_manager_list.js:6001:17
  _list/this.getHandleFromPlaylists/<@playlist_manager_list.js:5968:60
  _list/this.getHandleFromPlaylists@playlist_manager_list.js:5968:20
  getHandlesFromPlaylist@helpers_xxx_playlists_files.js:753:12
  _list/this.getHandleFrom@playlist_manager_list.js:6001:17
  _list/this.getHandleFromPlaylists/<@playlist_manager_list.js:5968:60
  _list/this.getHandleFromPlaylists@playlist_manager_list.js:5968:20
  getHandlesFromPlaylist@helpers_xxx_playlists_files.js:753:12
  _list/this.getHandleFrom@playlist_manager_list.js:6001:17
  _list/this.getHandleFromPlaylists/<@playlist_manager_list.js:5968:60
  _list/this.getHandleFromPlaylists@playlist_manager_list.js:5968:20
  getHandlesFromPlaylist@helpers_xxx_playlists_files.js:753:12
  _list/this.getHandleFrom@playlist_manager_list.js:6001:17
  _list/this.getHandleFromPlaylists/<@playlist_manager_list.js:5968:60
  _list/this.getHandleFromPlaylists@playlist_manager_list.js:5968:20
  getHandlesFromPlaylist@helpers_xxx_playlists_files.js:753:12
  _list/this.getHandleFrom@playlist_manager_list.js:6001:17
  _list/this.getHandleFromPlaylists/<@playlist_manager_list.js:5968:60
  _list/this.getHandleFromPlaylists@playlist_manager_list.js:5968:20
  getHandlesFromPlaylist@helpers_xxx_playlists_files.js:753:12
  _list/this.getHandleFrom@playlist_manager_list.js:6001:17
  _list/this.getHandleFromPlaylists/<@playlist_manager_list.js:5968:60
  _list/this.getHandleFromPlaylists@playlist_manager_list.js:5968:20
  getHandlesFromPlaylist@helpers_xxx_playlists_files.js:753:12
  _list/this.getHandleFrom@playlist_manager_list.js:6001:17

If I try to reload the panel, it happens again, it takes 1-2 minutes. Everything was fine before updating. The other error is for Playlist tools, I'll post there.
7
General - (fb2k) / Re: foobar2000 as Audiobook player
Last post by Bogozo -
For speed there is foo_dsp_effect which includes "Playback rate shift" and "Tempo shift" DSPs. Only up to 2x. But to achieve 3x, you can use multiple instances of DSP in row.

There is option "Save playback state when closing foobar2000 and resume on next start up". But it will not work in case of power failure or killing foobar2000 with task manager. And there is bookmark functional in foo_skip to add bookmarks manually.
8
MP3 - General / Re: Resurrecting/Preserving the Helix MP3 encoder
Last post by Wombat -
Though I do wonder how JoshuaChang's clang compile is so fast. Usually GCC has been able to produce faster binaries. And if I compile a clang build with joshua's makefile, I get a slower binary than my GCC compile.
Clang 18 in the msys2 clang64 enviroment creates these fast binaries for hmp3 here also. Seems the code reacts perfectly to this enviroment.
It is not a magic bullet since flac is still faster with a standard gcc compile in my old mingw64 enviroment.

@Case already mentioned clang64 uses ucrt in this case https://www.msys2.org/docs/environments/
9
General - (fb2k) / Re: foobar2000 as Audiobook player
Last post by ojdo -
1. Speed control: there is foo_dsp_effect. See this thread for a short discussion on how to make the speed control accessible in the GUI.

2. If you are contempt with a single saved state (not multiple simultaneous books), just enabling Preferences > Playback: Save playback state when closing foobar2000 and resume on next startup handles the normal case (closing fb2k gracefully). For powerloss or sudden process interruption, I don't have a good answer. There might be another component that automatically "bookmarks" the playback position (possible even per playlist). Together with a backup/restore component like foo_jesus, a powerloss-safe setup might be achievable.
10
Lossless / Other Codecs / Re: HALAC (High Availability Lossless Audio Compression)
Last post by Hakan Abbas -
Yes, after a little break, HALAC 0.2.7 version is ready. I need to get a little more warming to continue where I left off.
In this version, small structural changes and some small compression ratio improvement were made. But more importantly, it can now be decode as a DLL. I also had to prepare an Audio Player using this DLL because it was asked too much. This player can play .halac files and .wav files that are Encode with the version 0.2.7 version of HALAC. And in fact, many other audio formats can also be played builtly, but I haven't activated them at this stage. The player is suitable for the Cross platform. Only DLL/SO installation operations will need to be changed. If necessary, I try to prepare a .so version for Linux.
https://github.com/Hakan-Abbas/HALAC-Audio-Player

Player is presented as open source. If desired, other Audio Players can also integrate HALAC using this DLL. However, since HALAC is still in development, there may be structural changes in each version.
Code: [Select]
// Dll Function Prototypes //
typedef char* (*EXPORT_WAVFunc)(const char*, unsigned short); // Return .wav file to memory. Parameters -> "filename" and "thread count"
typedef unsigned int (*EXPORT_SIZEFunc)(const char*); // Return .wav file size. Parameters -> "filename"
typedef void (*EXPORT_DELETEFunc)(); // Delete .wav file from memory.
X