https://wiki.hydrogenaud.io/index.php?title=Special:NewPages&feed=atom&hidebots=1&hideredirs=1&limit=50&offset=&namespace=0&username=&tagfilter=Hydrogenaudio Knowledgebase - New pages [en]2024-03-29T05:38:00ZFrom Hydrogenaudio KnowledgebaseMediaWiki 1.22.7https://wiki.hydrogenaud.io/index.php?title=Helix_MP3_EncoderHelix MP3 Encoder2024-03-25T09:58:52Z<p>Maikmerten: /* Reasonable Settings */ remove superfluous low-pass parameters</p>
<hr />
<div>{{Software Infobox<br />
| name = Helix MP3 Encoder<br />
| logo =<br />
| screenshot = <br />
| caption = <br />
| developer = RealNetworks,<br />
{{ha user|1312|maikmerten}} maintains GitHub repo<br />
| released = <!-- {{start date and age|YYYY|MM|DD}} --><br />
| stable_release = <br />
| stable_release_date = <!-- {{start date and age|YYYY|MM|DD}} --><br />
| preview_release = <br />
| preview_release_date = <!-- {{start date and age|YYYY|MM|DD}} --><br />
| preview_release_ref =<br />
| operating_system = Linux, Windows<br />
| use = Encoder<br />
| license = [https://github.com/maikmerten/hmp3/blob/main/hmp3/LICENSE.txt RPSL]<br />
| website = [https://github.com/maikmerten/hmp3 GitHub repo]<br />
}}<br />
The Helix MP3 Encoder was open-sourced by RealNetworks ca. 2005 via the (long-defunct) Helix community project. It originated from the [[Xing]] MP3 encoder, which was purchased by RealNetworks.<br />
<br />
A current version ("hmp3"), with contributions from HydrogenAudio members, is available as source code over at [https://github.com/maikmerten/hmp3 https://github.com/maikmerten/hmp3]. This Wiki page discusses that version.<br />
<br />
<br />
== Features ==<br />
<br />
* Encodes [[MP3]] in MPEG-1 and MPEG-2 modes<br />
** 48 kHz, 44.1 kHz, 32 kHz (MPEG-1)<br />
** 24 kHz, 22.05 kHz, 16 kHz (MPEG-2)<br />
* LAME headers for gapless playback<br />
* [[CBR]] and [[VBR]] encoding<br />
<br />
== Listening tests ==<br />
<br />
The Helix MP3 encoder participated in several listening tests and demonstrated to be amongst the highest-quality encoders for MP3 available.<br />
<br />
* [https://listening-tests.hydrogenaud.io/sebastian/mp3-128-1/results.htm Public MP3 listening test, October 2008]<br />
* [https://hydrogenaud.io/index.php/topic,100896.0.html Personal listening test by Kamedo2, ~224 kbps, May 2013]<br />
* [https://hydrogenaud.io/index.php/topic,113324.0.html Personal listening test by Kamedo2, ~192 kbps, December 2016]<br />
<br />
<br />
== Encoder switches ==<br />
<br />
hmp3 is a command-line operated application. The most basic invocation to generate a MP3 file from WAV:<br />
<br />
hmp3 input.wav output.mp3<br />
<br />
This creates a ~128 kbps VBR file for 44.1 kHz stereo input.<br />
<br />
{| class="wikitable"<br />
|+ Encoder switches<br />
|-<br />
! Switch !! Function || Example<br />
|-<br />
| -B || Set ''per-channel'' bitrate. Selects '''CBR''' encoding. || -B64 for a 128 kbps stereo CBR file <br />
|-<br />
| -F || Frequency cutoff for the encoder lowpass filter. To actually encode anything beyond 16 kHz, also specify the -HF switch. || -F19000 for a 19 kHz lowpass<br />
|-<br />
| -HF<br />
| Controls encoding of high frequency content (> 16 kHz). Disabled by default. Valid values are 0 (disabled), 1 (partial, only "mode-1 granules"), 2 (full, "all granules"). Note that high-frequency content will only be encoded if the psychoacoustic model deems encoding high frequencies as beneficial for the given bitrate/quality settings.<br />
<br />
High frequencies will only be encoded if -V >= 80 or -B >= 96.<br />
| HF2 for unrestricted high-frequency encoding<br />
|-<br />
| -M || Stereo-mode/Mono selection. 0: stereo, 1: M/S stereo (default), 2: dual channel, 3: mono || -M3 to downmix to mono<br />
|-<br />
| -N || Enable use of Intensity Stereo. Only works with CBR and makes the encoder use "Bit Allocator 1" (see section "Bit Allocators") || -N8 to enable Intensity Stereo with 8 bands of M/S stereo<br />
|-<br />
| -SBT || Threshold for short-block decisions. ''Lower'' values mean ''more'' short-block usage. Default is 700. || -SBT500 for more short-blocks (more responsive to transients, might increase bitrate in VBR)<br />
|-<br />
| -U<br />
|<br />
Select assembly optimizations. 0: Only generic optimizations, 1: unused (was supposed to be AMD's 3Dnow!) 2: use SSE assembly optimizations (Intel Pentium 3).<br />
<br />
This only has an effect if the encoder is compiled with Visual Studio (up to version 2015) for 32-bit Windows. No effect if the encoder is compiled for Linux, 64-bit Windows or, e.g., ARM processors.<br />
| -U2 to use SSE assembly (where applicable)<br />
|-<br />
| -V || Quality setting for '''VBR''' encoding. Ranges from 0 to 150. Default is 50. || -V115 for a ~180-200 kbps stereo VBR file<br />
|-<br />
| -X || Control writing of Xing/LAME header information. 0: No headers, 1: only basic Xing information header, 2: Xing header with VBR-TOC and LAME header (gapless information) (default) || -X0 to disable headers (in very rare cases of incompatibility)<br />
|}<br />
<br />
== Reasonable Settings ==<br />
<br />
Here's a short list of settings for different encoding needs. Note that while comparisons to LAME's VBR settings are provided, these are only ''very rough estimates'' to provide guidance regarding potential use cases. LAME and Helix are very different encoders and are expected to perform better and worse in comparison, depending on audio material.<br />
<br />
{| class="wikitable"<br />
|+ Overview of reasonable hmp3 settings<br />
|-<br />
! Setting !! Approx. Bitrate !! Description<br />
|-<br />
| <br />
-HF2 -V150<br />
| ~ 256 kbps<br />
| Maximum quality VBR encoding, with full audio spectrum. (ca. LAME -V 0)<br />
|-<br />
|<br />
-F19000 -HF2 -V110<br />
| ~ 195 kbps<br />
|<br />
High-quality VBR encoding, audio spectrum up to 19 kHz. (ca. LAME -V 2)<br />
<br />
This should be close to transparent to most people in most situations.<br />
|-<br />
|<br />
-F18000 -HF2 -V80<br />
| ~ 160 kbps<br />
| Medium-quality VBR encoding, audio spectrum up to 18 kHz. (ca. LAME -V 4)<br />
|-<br />
|<br />
-V50<br />
| ~ 128 kbps<br />
| <br />
Low-medium-quality VBR encoding, audio spectrum up to 16 kHz. (ca. LAME -V 5-6)<br />
<br />
Default setting of the Helix MP3 Encoder. Should be sufficient for casual listening on space-constrained devices, but is not expected to be universally transparent.<br />
|}<br />
<br />
== Technical details ==<br />
<br />
The following bits might not be relevant for daily-use of the Helix MP3 Encoder, but might be interesting to developers.<br />
<br />
=== Bit allocators ===<br />
<br />
The Helix MP3 Encoder, apparently for historical reasons, has two distinct bit allocators, which are selected depending on operating modes. '''Bit Allocator 1''' (bitallo1.cpp) appears to be the older one, most likely inherited from early Xing days, while '''Bit Allocator 3''' (bitallo3.cpp) is a newer, overall more-capable mechanism that is utilized by default.<br />
<br />
{| class="wikitable"<br />
|+ Bit allocators<br />
|-<br />
! Feature || Bit Allocator 1 !! Bit Allocator 3<br />
|-<br />
| CBR || supported || supported<br />
|-<br />
| VBR || '''not''' supported || supported<br />
|-<br />
| >16 kHz encoding || '''not''' supported || supported<br />
|-<br />
| Long/Short block switching || '''not''' supported || supported<br />
|-<br />
| Stereo || supported || supported<br />
|-<br />
| M/S-Stereo || supported || supported<br />
|-<br />
| Dual Channel Stereo || supported || '''not''' supported<br />
|-<br />
| Intensity stereo || supported || '''not''' supported<br />
|}<br />
<br />
Bit Allocator 1 thus is mostly interesting for very low-bitrate CBR encodings, where intensity stereo can lead to bitrate savings to spend somewhere else. Example:<br />
<br />
hmp3 input.wav output.mp3 -F16000 -B48 -N8<br />
<br />
for somewhat bearable low-bitrate stereo-ish MP3 encoding (the -N parameter enables intensity stereo).<br />
<br />
<br />
=== Detection of transients ===<br />
<br />
To detect transients that warrant a switch to short blocks, the Helix MP3 Encoder uses output from the 32-band polyphase filterbank. The encoder computes "energy" values from the filterbank output and compares current energy values with values for the previous granule (detect.c). This is accomplished by an "energy history" (defined as "attack_buf" in mp3enc.h).<br />
<br />
If the energy values differ enough (above the threshold for short block detection), short blocks will be used. The encoder will use short blocks for both channels, even if only the signal of one channel triggered the transients detection.<br />
<br />
<br />
=== Assembly optimizations ===<br />
<br />
In platform/win/i386, there are optimized assembly versions of speed-critical routines. These target 32-bit x86-CPUs in general (but usually optimized for the Pentium 2), with some routines also being available for SSE, targeting the Pentium 3 (assembly files starting with "x"). These SSE optimizations can be selected via the -U parameter.<br />
<br />
These routines are somewhat outdated. They only work in Visual Studio up to version 2015, only for the Windows platform - and only for 32-bit targets. It has been demonstrated that modern compilers generate faster code from the pure C source code. As such, these assembly optimizations appear to be superfluous.<br />
<br />
That modern compilers can generate faster code might (but this is speculation) have something to do with the hand-written assembly version mixing x87 FPU instructions (in the routines for general i386 CPUs) with SSE instructions (which have their own register set). Modern CPUs appear to prefer doing all (even scalar) floating point operations in SSE or AVX registers.<br />
<br />
== External links ==<br />
<br />
* [https://www.rarewares.org/mp3-others.php#helix_enc Helix MP3 encoder (Windows command-line executable)] at RareWares<br />
* {{ha|https://hydrogenaud.io/index.php/topic,123331.0.html|Resurrecting/Preserving the Helix MP3 encoder}}<br />
<br />
<br />
[[Category:Software]]<br />
[[Category:Encoder/Decoder]]<br />
[[Category:MP3]]</div>Maikmertenhttps://wiki.hydrogenaud.io/index.php?title=IcedaxIcedax2024-02-23T16:44:03Z<p>Martinwguy: </p>
<hr />
<div>{{DISPLAYTITLE:icedax}}<br />
{{Software Infobox<br />
| name = icedax<br />
| logo =<br />
| caption = Creates WAV files from audio CDs<br />
| maintainer = Joerg Jaspert, Eduard Bloch, Steve McIntyre <br />
| stable_release = 1.1.11<br />
| operating_system = Debian Linux<br />
| use = Digital Audio Extraction<br />
| license = GPL <br />
| website = [https://packages.debian.org/stable/icedax]<br />
}}<br />
'''icedax''' lets you digitally copy ("rip") audio tracks from a CD, avoiding the distortion that is introduced when recording via a sound card. Data can be dumped into raw (cdr), wav or sun format sound files. Options control the recording format (stereo/mono; 8/16 bits; sampling rate, etc).<br />
<br />
It is a Debian spinoff of the [[cdda2wav]] program, forked because of a change in the cdrtools license to [[CDDL]], incompatible with the [[GPL]].<br />
<br />
=Features=<br />
* It can echo the sound to the soundcard as it rips, optionally changing the pitch of the echoed sound (!)<br />
* Optional [[cdparanoia]] mode<br />
* Reads [[CD-Text]] and [[CD-Extra]] info and writes .cddb and .cdindex files suitable for submission to FreeDB/GnuDB and MusicBrainz.<br />
<br />
== Supported formats ==<br />
Only uncompressed formats:<br />
* [[WAV]]<br />
* [[AU]] (Sun PCM)<br />
* [[CDR]] (raw)<br />
<br />
== Supported languages ==<br />
* English</div>Martinwguyhttps://wiki.hydrogenaud.io/index.php?title=Foobar2000_Mobile:Version_1.5_Preview_Change_LogFoobar2000 Mobile:Version 1.5 Preview Change Log2023-12-22T21:22:27Z<p>DEATH: Replaced content with "Moved: https://www.foobar2000.org/changelog-mobile-1.5-preview"</p>
<hr />
<div>Moved:<br />
https://www.foobar2000.org/changelog-mobile-1.5-preview</div>DEATHhttps://wiki.hydrogenaud.io/index.php?title=Foobar2000_Mobile:Skin_file_formatFoobar2000 Mobile:Skin file format2023-12-22T21:22:14Z<p>DEATH: 2024-03-21 additions</p>
<hr />
<div>= Revisions =<br />
Currently two revisions of the format exist.<br />
<br />
== New format (end of 2023, foobar2000 mobile v1.5) ==<br />
* Format extension: .fbskin (same as old format).<br />
* Skin files are renamed .zip archives and can be created or extracted using plain zip tools.<br />
* Since the payload consists mainly of image files which are already compressed, it is recommended to pack .fbskin files in store mode, for faster loading.<br />
* Direct repacking of old format skins is supported, but supported features are a superset of old format features.<br />
* Compatible with foobar2000 mobile v1.5 and newer.<br />
<br />
== Old format ==<br />
* Format extension: .fbskin<br />
* Original foobar2000 mobile skin format.<br />
* Packed using a proprietary tool.<br />
* Compatible with all foobar2000 mobile versions.<br />
* Some things may render slightly differently in version 1.5 because of bugs fixed.<br />
<br />
== Essential changes in new format ==<br />
* Can use classic foobar2000 titleformatting (%fields%, $functions(), etc) in labels to present playing track information.<br />
* Individual layout files can reference fonts/colors defined in skindef file, so if the same skin exists in different color schemes, there's no need to specialize ALL layout files.<br />
* Can specialize layouts for TV, phone, tablet targets.<br />
<br />
= Skin definition file =<br />
* The entrypoint of each skin is a skin definition file (named skindef.txt, or skindef.skindef per old format).<br />
* The skin definition file describes the skin, referencing other files in your skin.<br />
* Skin definition file lines are formatted as: field: value.<br />
* Referenced file names are case-sensitive.<br />
<br />
== General information fields ==<br />
<br />
* skin-format<br />
Valid value: 2 (current revision of the format)<br />
If a future incompatible revision is introduced, this will allow old foobar2000 to detect incompatible skins and show a meaningful error message.<br />
* name<br />
Name of the skin<br />
* author<br />
Name of the skin's author<br />
* version<br />
Version of this skin<br />
<br />
== Images ==<br />
<br />
Please use PNG or WebP lossless for images. JPEG and WebP lossy are supported but discouraged unless size or loading lag is an issue.<br />
<br />
Note that your skin doesn't have to define all these images. If missing, they will be taken from either default skin, black or white, whichever better matches your color scheme.<br />
<br />
* defaultart<br />
Placeholder album art image.<br />
* iconplay<br />
Icon for playing item in browse views.<br />
* iconpause<br />
Icon for paused item in browse views.<br />
* iconfolder, iconfolder-*<br />
Icons for various folder types.<br />
<br />
== Colors and fonts ==<br />
Colors are formatted as R,G,B, numbers in 0..255 range.<br />
Fonts are formatted as R,G,B;style, where style can be bold or italic<br />
* backgroundcol<br />
Background color<br />
* genericfont<br />
Default text style<br />
* artistfont, titlefont, albumfont<br />
Artist, title, album text style (how exactly it's applied depends on subskin files)<br />
* font-*<br />
You can declare any number of extra fonts in your skin definition, then reference them in subskin files, instead of hardcoding colors in subskins. For an example, default skin uses font-info to control color of codec+bitrate display.<br />
* match-system-theme<br />
Optional; indicates that this skin should use system theme colors for non-skinned user interface elements. If not specified, it is assumed that skin with black text on white background uses system white theme, and vice versa. Possible values are: match-system-theme: white, match-system-theme: black, match-system-theme: none. Last one, "none", means that system theme colors should not be used with this skin - for an example, to use actual 000000h background everywhere instead of system theme dark gray color on Android.<br />
<br />
== Subskin declarations ==<br />
<br />
skin: WWWxHHH-class mysubskin.txt<br />
* WWWxHHH - width & height, in virtual units. Coordinates of all objects in referenced txt must be in (0,0) - (WWW, HHH) rectangle.<br />
* -class - OPTIONAL device class suffix. Can be -phone, -tablet, -tv. If not set, subskin is treated as -phone.<br />
<br />
When loading a skin, foobar2000 must choose the best subskin for the current device or window size.<br />
First it searches subskins matching detected device class for one with similar aspect ratio; if there are none for this device class, it searches subskins for other classes, in common sense order (if no specialized TV subskin, looks for tablet, then for phone).<br />
<br />
= Subskins =<br />
== Elements ==<br />
=== [rectangle] ===<br />
Fills a rectangle with solid color.<br />
Parameters:<br />
* color - either R,G,B, or reference to a color/font defined in skindef, such as backgroundcol.<br />
* coordinates - Left,Top,Width,Height coordinates of the rectangle.<br />
=== [albumart] ===<br />
Album art.<br />
Parameters:<br />
* coordinates - Left,Top,Width,Height coordinates of the album art rectangle.<br />
* which - either main (current track) or next (next track)<br />
=== [label] ===<br />
Text label.<br />
Parameters:<br />
* coordinates - Left,Top,Width,Height coordinates of the label rectangle. Used font size is derived from height of the rectangle.<br />
* alignment - left, right or centered<br />
* content - Label text, either static text or live formatted playback information. See labels section below for details.<br />
=== [position] ===<br />
Interactive seek bar<br />
Parameters:<br />
* coordinates - Left,Top,Width,Height coordinates of the seek bar rectangle.<br />
* knob-image - Image of the seekbar knob.<br />
* inactive-image - Image to be drawn to the right size of the knob.<br />
* active-image - Image to be drawn to the left side of the knob.<br />
=== [button] ===<br />
Interactive button.<br />
Parameters:<br />
* coordinates - Left,Top,Width,Height coordinates of the button rectangle.<br />
* action - What the button does. Possible values: playnpause, play, pause, stop, skipnext, skipback, menu, repeat, shuffle, onetrack, stopaftercurrent<br />
* image - Normal button image.<br />
* image-hot - Hot button image.<br />
* image2 - Alternate button image.<br />
* image2-hot - Alternate hot button image.<br />
<br />
== Conditional evaluation ==<br />
<nowiki>*if <condition> / *else / *elseif <condition> / *end</nowiki><br />
Toggles rendering of elements in the scope depending on the condition.<br />
Condition can be: <br />
* playing - is playing (now playing track set) or stopped (no track to show)? Note that playing is also set while paused.<br />
* classical - playing and genre=classical?<br />
* next - next playing track known?<br />
* paused - paused or not?<br />
* radio - internet radio or not?<br />
* seekable - current track can seek or not?<br />
Condition can be modified with not keyword: *if not paused<br />
<br />
== Label formatting ==<br />
Originally labels used a fixed set of [fields] to process playback information.<br />
Currently you can just use classic title formatting similar to that of desktop foobar2000, with usual %fields% and $functions().<br />
<br />
You can change colors and fonts:<br />
* [color-colorname], [font-fontname], [rgb-R,G,B]<br />
* Toggle bold and italic style: [b]bold[-b], [i]italic[-i].<br />
<br />
Change current information source, for both title formatting and [fields]:<br />
* [infosource-nowplaying]<br />
* [infosource-nextplaying]<br />
* [infosource-nowplaying-static] - same as [infosource-nowplaying], but bypasses dynamic information such as radio track titles - causes station name to be shown in %title%, rather than current track title.<br />
Note that old-format fields explicitly referencing next track bypass this.<br />
<br />
Other notable fields:<br />
* [streamtitle] - shows title, prefers static title over dynamic track titles, so it shows radio stream name instead of current track name for internet radio. Same output as [inforsource-nowplaying-static][title].<br />
<br />
= Example skins =<br />
Default skin in new format - can be extracted with zip:<br />
* https://www.foobar2000.org/downloads/Black%20Skin%202023.fbskin<br />
* https://www.foobar2000.org/downloads/White%20Skin%202023.fbskin</div>DEATH