Version 2.3.2
Bugfixes
PICARD-1775 - $firstwords function doesn't catch IndexError
PICARD-1776 - $datetime crashes when invalid format specified
PICARD-1781 - Have $find return "" rather than "-1" on not found
PICARD-1783 - Deleting performer, comment or lyrics tag fails for some cases in ID3, Vorbis, MP4 and Apev2 tags
PICARD-1784 - Host not found error when downloading PDF artwork
PICARD-1785 - $delete(_id3:TXXX:foo) does not delete the ID3 frames
PICARD-1786 - Deleting tag stored in ID3 TIPL frame only removes first occurrence
PICARD-1787 - Deleting case-insensitive TXXX frames does not delete anything
PICARD-1788 - Saving ID3 tags marked as case-insensitive causes duplicated TXXX frames
PICARD-1790 - Crash when selecting plugin that can be updated
PICARD-1791 - Network access is disabled error under VPN service
PICARD-1795 - iTunes tags not removable (reappear after being deleted)
PICARD-1801 - List index out of range when saving Vorbis file
PICARD-1803 - Instrument EWI is rewritten "e w i"
Improvements
PICARD-1777 - Support fractional scaling on Windows 10
PICARD-1800 - Simplify Unicode 'Bullet' to ASCII 'Hyphen-minus'
PICARD-1809 - Optimize format detection logic
1.43.1
Add pickle support for enum types
docs: fix various warnings with sphinx v3
1.43.0
Note: 1.43.x might be the last version supporting Python 2
Python 3.4 is no longer supported
Building requires ‘setuptools’ now, CLI tools depend on ‘pkg_resources’
CLI tools are setuptools entry points now
Fix collections ABCs deprecation warning
Minor typo fixes
MP3: increase max initial wrong syncs from 1000 to 1500
FLAC: support files with multiple VORBIS_COMMENT blocks like libflac
ID3: Improved TYER/TDAT/TIME upgrade to TDRC
MP4: Add support for iTunes HD Video tag (hdvd)
Add AC3 file type
AIFF: renamed sample_size to bits_per_sample (sample_size still works)
API doc fixes
Add support for Tom’s lossless Audio Kompressor (TAK)
OptimFROG: support encoder version >= 5.100
AIFF: Fix handling of padding bytes, safe chunk manipulation
Fix typos
ChangeLog:
### libopenmpt 0.5.1 (2020-07-26)
* [**Bug**] `libopenmpt/libopenmpt.h` failed to compile with
`LIBOPENMPT_NO_DEPRECATE` defined.
* MPTM: Qxy now retriggers OPL notes if new compatibility flag is set in file.
* MPTM: Bring back old OPL note end-of-envelope behaviour for files made with
OpenMPT 1.28.
* IT: Global volume slides with both nibbles set preferred the "slide up"
nibble over the "slide down" nibble in old OpenMPT versions, unlike other
slides. Such old files are now imported correctly again.
* IT: Fixed an edge case where, if the filter hit full cutoff / no resonance
on the first tick of a row where a new delayed note would be triggered, the
filter would be disabled even though it should stay active. Fixes trace.it
by maddie.
* OXM: Some sample loops were not imported correctly.
* XM: Out-of-range arpeggio clamping behaviour broke in OpenMPT 1.23.05.00.
The arpeggios in Binary World by Dakota now play correctly again.
* S3M: Support old-style sample pre-amp value in very early S3M files.
* S3M: Only force-enable fast slides for files ST 3.00. Previously, any S3M
file made with an ST3 version older than 3.20 enabled them.
* S3M: Only apply volume and middle-C speed on instrument change if the new
sample slot has sample data.
* MOD: Fix an infinite loop in GamerMan by MrGamer by playing non-ProTracker
MODs more like FT2 would.
* M15: Improve tracker detection heuristics to never assume SoundTracker 2.0
if there is a huge number of Dxx commands, as that is a definite hint that
they should be treated as volume slides. Fixes Monty On The Run by
Master Blaster.
* MO3: Support OPL patches in MO3 files created from MPTM and S3M.
* DBM: If a global pattern command would be lost because both effect commands
in a cell would have to go into the regular effect column (e.g. a speed and
a tempo command), the lost command is now attempted to be written into a
different cell on the same row. Fixes "Party-Question V" by grogon.
* mpg123: Update to v1.26.3 (2020-07-16).
* stb_vorbis: Update v1.20 commit b42009b3b9d4ca35bc703f5310eedc74f584be58
(2020-07-13).
Bugs fixed:
* Fixed UI freeze when asterisk key was pressed (#962)
* Fixed an exception when reading a large APE tag (#992)
* Fixed album artist not being displayed for .m4a files (#1005)
* Fixed a crash on exit with a plugin settings window open (#1007)
* Fixed a crash when scrobbling with curl 7.71.0 (#1008)
Other changes:
* Changed the default CDDB server to gnudb.org (#994)
0.6.13:
Bugfixes:
* Fixed cut-off text in about dialog.
* Fixed increasing play count when stop after track is enabled.
* Fixed showing/hiding playing widget when playback is started while window is hidden.
* Fixed "Show in file browser" to also work on local songs that are not in the collection.
* Fixed "Show in file browser" to work with PCManFM file manager.
* Fixed audio analyzer to work with S24LE and F32LE audio formats.
* Fixed playlist background image not loading.
* Fixed a memory leak when switching between playlists.
* Removed use of HTML in systemtray tooltip on KDE, since KDE no longer renders HTML in the systemtray.
Enhancements:
* Replaced use of C style casts.
* Adapted use of C++11 override.
* Improved CMake build files.
* Added new on startup options to show maximized or minimized.
* Builtin TagLib code is updated and improved.
* Made most icon sizes configurable in the settings, and increased default sizes for icons.
* Improved fancy tabbar to use font sizes from the theme instead of fixed sizes.
* Moving the currently playing song to the top when the playlist is manually shuffled.
* Added "a taste of Strawbs" background image.
* Fixed unit test for testing playlist model.
* Added new unit tests for tagreader.
Changes:
fix an uninitialized memory access possibly triggering an FPE trap
fix several regressions introduced in 2.1.3:
fluid_synth_start() failed for certain presets
fix a NULL dereference in jack driver
fix a stack-based overflow when creating the synth
Changes since v1.26
v1.27 - 24.07.2020
- Fixed a small stuttering issue in the audio/video syncing
- Bugfix: When rendering a song to a 16-bit WAV while having audio output
set to 32-bit, you'd never get dithering in the WAV render.
- Further optimization of the audio channel mixer (~5-16% perf. increase)
Fixes `utf8 "\\xF6" does not map to Unicode` that was breaking SmartOS bulk builds.
- Use afplay(1) on macOS (included since 2007) instead of deprecated audio/qtplay.
Other platforms still need to define default audio players.
- Include librsvg to get the gdk-pixbuf SVG loader for solvege.svg.
- Bump PKGREVISION.
New changes in 1.2.2: (2020-06-25)
* General improvements
* Stop filtering out valid characters from file name while
exporting tracks (#5282)
* Fix Invalid warning about "dummy-MIDI-client" (#5509)
* UI improvements
* Note selection: Editing values works in dialog (#5438)
* Bug Fixes
* Piano Roll - Fix retrigger with vol/pan sliders (#5271)
* Fix a rare crash on export (#5293)
* Fix LMMS not launching when AppImage has spaces in name (#5297)
* Fix vertical piano being unresponsive when clicked too fast
(#5262)
* Fix crash with Grooove VST (#5300)
* Fix crash on deleting instrument with controller connections on
knobs (#5306)
* Fix notes being placed at negative positions on MIDI import
(#5343)
* Fix scrolling direction in the song editor due to stuck
Ctrl/Shift (#5286)
* Fix stuck notes with Helm VST on tempo automation (#5365)
* Fix file factory delimeter position (#5378)
* Fix a muted demo project "Greippi - Krem Kaakkuja (Second Flight
Remix)" (aeac24c)
* Fix controls linking misbehaviors (#5336)
* Fix loading and saving of .fxb/.fxp files on Windows (#5411)
* Fix crashes and hangs on importing some Hydrogen drum kit songs
(#5420)
* Fix freeze when replacing Mallets with another instrument (#5428)
* DrumSynth: ensure correct envelope length in any sample rate
(#5467)
* AFP: fix loading start and loop points if the loop point is
automated (#5472)
* Select the correct piano key for marking semitones (#5478)
* Ensure consistent use of effect gate (#5475)
* Fix Piano roll crashing when window is vertically scaled too
large (#5449)
* Fix some memory errors with JACK audio/MIDI (#5452)
* JackMidi: Remove confusing warnings at shutdown (737fcd3)
* Fix SF2 player crashing when file is not a soundfont, with
FluidSynth 2 (#5487)
* BB editor: fix mouse event affecting wrong beats due to the
cursor shape (#5489)
* Fix knobs moving too fast on some platforms (#5360)
* Fix notes created in BB editor resizing incorrectly when resizing
a selection (#5515)
* Fix some patterns not being saved in project (#5537)
Changes since the v0.11 release:
* Fix stack overflow buffering out-of-sequence streams.
* Fix possible divide-by-zero.
* Fix issues with seeking in the win32 backend.
* Fix an issue where the seek algorithm could be confused by stream data
changing between reads.
* Clean up compiler and scan-build warnings.
* Avoid use of the deprecated ftime() function which has Y2038 problems.
* Remove undefined behaviour memcpy(NULL) in op_read_native().
* Visual Studio project files updated for libogg 1.3.4 library name
change.
* Various build systems updates.
* Various integration and testing environment improvements.
This release is backward-compatible with the previous release. We
recommend all users upgrade.
version 1.26.2:
Some refinements.
Enable terminal control by default only when both input and output are connected to a terminal. This avoids messing with terminal settings when piping stderr to a pager, which takes over terminal input anyway, while mpg123 still thinks it got control.
Windows build fixes for UWP and without GetThreadErrorMode when not building modules, thanks to Steve LHomme.
Android build fix regarding off64_t use, thanks to Steve LHomme.
More CMake build fixes thanks to David Callu (bug 290).
Use PROG_LIBS for output modules, to reinstate not necessarily proper but previous behaviour and fix FreeBSD port build (bug 291).
Refine LFS support in libsyn123, avoiding architecture-dependent syn123.h (debian bug 963205).
Changes since v1.25
v1.26 - 23.06.2020
- Song BPM is now more accurate (it used to be slightly off for some BPMs)
- Arpeggio is now 100% FT2-correct for ticks 31..99 (speed 31..99 is only
obtainable by hex-editing XMs).
- Fixed compiling error on ARM CPUs
- Code cleanup
The hts_engine API is an API version of hts_engine which has been released
since HTS version 1.1. It has been being developed by the HTS working group
and some graduate students in Nagoya Institute of Technology.
Add test dependencies and enable tests.
Changes:
Support the change of the reference implementation to version 1.1.1
(see sofacoustics/API_MO@fcd8d6a)
Fixing the problem of left / right confusion common in many old SOFA files
Support many more HDF features which are used in recent implementations of netcdf
This should fix the build.
Hydrogen 1.0.0-rc1 brings the following changes (compared to Hydrogen 1.0.0-beta2):
several fixes to the Jack transport (missed/double beats at the begin of a pattern)
fixed audio artifaces when using the ALSA driver
fixed tempo problems/distorting when exporting a song
playback track now scales correctly
MMDAgent voice data contains three voice data, mei, slt and takumi.
Voice data of mei and slt are female and takumi is male.
The work is released as a part of MMDAgent (http://www.mmdagent.jp/).
HTS voice trained by using the Nitech Japanese Speech Database "NIT
ATR503 M001" is released as a part of Open JTalk
(http://open-jtalk.sourceforge.net/). This voice consists of HMMs
trained by using HMM-based Speech Synthesis System (HTS) version
2.3 alpha (http://hts.sp.nitech.ac.jp/).
The Open JTalk is a Japanese TTS System. It has been being developed
by HTS working group and some graduate students in Nagoya Institute
of Technology.
Changes since v1.24
v1.25 - 12.06.2020 (updated 13.06.2020)
- Instrument envelopes now show x/y coords in the top right corner in Instr. Ed.
- The song tempo (BPM) is now *slightly* more accurate for certain BPM values
- Fixed a bug with the XFade function on 16-bit pingpong samples
>> 13.06.2020:
- Make the x/y instr. envelope coords text a bit cleaner
ver 0.21.24 (2020/06/10)
* protocol
- "tagtypes" requires no permissions
* database
- simple: fix crash when mounting twice
* decoder
- modplug: fix Windows build failure
- wildmidi: attempt to detect WildMidi using pkg-config
- wildmidi: fix Windows build failure
* player
- don't restart current song if seeking beyond end
* Android
- enable the decoder plugins GME, ModPlug and WildMidi
- fix build failure with Android NDK r21
* Windows
- fix stream playback
- enable the decoder plugins GME, ModPlug and WildMidi
- work around Meson bug breaking the Windows build with GCC 10
* fix unit test failure
Snd 20.4:
s7: added s7_scheme* argument to s7_is_eqv, and all the s7_set_*_function calls that
set optimizer functions (the preceding calls were, sadly, not thread-safe).
libarb_s7.c: a multiprecision library paralleling GSL. Requires libflint.
Only in the gmp version of s7.
checked: ubuntu 20.04, sbcl-2.0.4, FC 32, gsl 2.6, Ruby 2.7, gcc/clang 10
Thanks!: Elijah, Woody Douglass, Ian Duncan, Kjetil Matheussen
Changes for version 2.3.3:
--------------------------
- New RAD player replacing the old one
- Bug fixes: (huge thanks to Alexander Miller for these)
- CVE-2019-14690 - buffer overflow in .bmf
- CVE-2019-14691 - buffer overflow in .dtm
- CVE-2019-14692 - buffer overflow in .mkj
- CVE-2019-14732 - buffer overflow in .a2m
- CVE-2019-14733 - buffer overflow in .rad
- CVE-2019-14734 - buffer overflow in .mtk
- CVE-2019-15151 - double free and OOB reads in .u6m
- OOB reads in .xad
- OOB reads in .rix
0.6.12:
Bugfixes:
* Fixed height of about dialog.
Enhancements:
* Only save settings for pages that actually has been changed.
* Replaced use of deprecated Qt functionality as of 5.15.
* Made scrobbler show error dialog for all errors when show error dialog option is on.
* Dont append disc to album titles for Subsonic and Tidal.
* Sort folders added from file view.
* Changed default collection grouping to album - disc.
Qt interface changes:
* Fixed files being moved instead of copied when dragged to a file
manager (#986)
* Added keyboard shortcuts for Open/Add Folder (#989)
* Fixed space being reserved for disabled infobar visualization (#990)
* Fixed playlist rows sometimes changing height at song change
Qt Winamp Classic interface changes:
* Enabled window snapping to screen edges (#985)
* Enabled dragging files from file manager (contributed by GitHub user
iDarkTemplar)
Other changes:
* Fixed warnings when building Audacious with link-time optimizations
* Fixed stuck startup notification under MATE when Audacious was already
running
* Updated translations
1.26.1
------
- Fix cmake build by actually including the read_api_version file in the distro.
- Fix big-endian build, stupid omission of a variable declaration, semicolon.
- Silence a harmless warning for build without realtime priority.
1.26.0
------
- Starting to intentionally use C99 in the codebase. API headers are still
supposed to be compatible to C89.
- There is a make check target now with some simple tests.
It is an open question how that should be developed in relation to the
external regression and compliance test suite.
- Finally silenced memory checkers about leaking memory from getlopt()
(main code overwriting values without freeing strdup() strings).
- AUTHORS now in UTF-8;-)
- CMake build files in ports/cmake, as an alternative to create MSVC
project files and the like (thanks to Vitaly Kirsanov)
- Default build with proper integer rounding (--enable-int-quality) now.
- Cygwin/midipix autoconf fixes (thanks to Redfoxmoon).
- Updated Windows build script, notably renaming .dll.def to .def.
Requires an argument now for build type, an optional one for
parallel make (not that useful on MinGW).
- Rework library dependency handling to avoid unnecessary linking for
lib*123. Also add proper Libs.private to .pc files to enable static
usage (especially on Windows with shlwapi).
- Updated support for OS/2 in the form of ArcaOS.
- Removed outdated Pascal port (ports/mpg123_.pas). There are others
out there.
- Updated man pages, been a while.
- mpg123:
-- Fixed-rate playback now prefers the libsyn123 resampler instead of NtoM
in libmpg123, see --resample parameter.
-- Drop --STDOUT (never properly implemented, use pipe to out123 instead).
-- Make --streamdump use unintr_write() to avoid inconsistencies.
-- Now sets non-zero exit code when any one track of the playlist
fails to either produce at least one frame of playback, if there
is data that should produce such (i.e. /dev/zero is bad, /dev/null is
fine). See man page for details.
-- Print out MPEG header info for each frame for mpg123 -vvvv.
-- Added --no-visual to disable cursor/inverse video games explicitly.
-- Clear progress bar before printing updated metadata within a stream.
-- Filter control/non-printable characters from user data printout, reduce
ID3v1 data to 7-bit ASCII (no way to know correct 8-bit encoding for sure).
This should cover bug 267.
-- Set MPG123_NO_PEEK_END when opening special file '-' (standard input).
That helps Windows where attempting to seek on the non-seekable stream
is undefined behaviour (bug 285).
-- Print errors in player code also for --quiet operation (just no messages
from the libraries).
-- Ignore ID3v1 once a Frankenstein stream was detected.
-- Prevent a cosmetic use-after-free in audio playback during program abortion just after
starting playback (prebuffer still in use, implication a blip of bad sound and
a complaining sanitizer).
-- Reformat audio capabilities table, more condensed, fits into 80 columns.
Forced rate on a separated line.
-- Make --pitch actually work, not just interactive changes. Pitching uses
a resampler now if a fixed output rate is specified.
-- Added --no-frankenstein.
-- Frameflags as long variable, 32 bits are needed since some time now.
- out123:
-- Document --STDOUT, make it more robust regarding fwrite() interruptions.
-- Removed the implicit phase shift that made generated waves exactly at
Nyquist freq non-silent, but made little sense overall.
-- Less high-frequency shifts to make waves fit into the table (not insisting
on even number of samples).
-- Option to work without wave table (setting the limit to zero).
-- Added --wave-direction to also enable backward time without phase shift.
-- Waves now generated by re-usable little synthethizer library dubbed
libsyn123.
-- Pink noise from libsyn123 added (using code from Phil Burk).
-- White noise from libsyn123.
-- Geiger-Mueller counter simulation from libsyn123.
-- Wave sweep generator from libsyn123.
-- Some rearrangement in help text.
-- Changed output of --test-encodings to list of encoding names
instead of raw bitmask value.
-- Added --endian, --inputend, and --byteswap.
- libsyn123:
-- Created the library to host some simple signal generators for testing
output.
-- It also hosts sample format conversions as a necessity to be able to
directly produce the format output devices need.
-- Well, also channel mixing while we're at it.
-- Oh, and a minimal-latency-and-reasonably-efficient resampler that only
took me over a year to figure out. I should write a paper about it.
- libout123:
-- Added out123_free() for the benefit of library wrappers. (bug 276)
-- Removed change of effective user ID in the WAV/RAW/AU/CDR writer.
This was intended as a safeguard to avoid creating files with root
priviledges. But: Other output modules still allowed root-level
access to various devices and files, so it was never safe to do
something awful like installing mpg123 with suid bit or configure
sudo to allow users to run mpg123 with arbitrary arguments.
You should treat out123_open just like the regular open(): You can
write to any file/device depending on your permissions.
-- Finally maybe fixed the damaged playback when using pulse hidden
behind the ALSA API (on Ubuntu, for example) by setting a high value
for device start threshold.
-- Fixed out_play() abortion logic to better detect fatal situations
(broken pipe). Needed on FreeBSD, while Linux buffers the issue away.
Should resolve bug 283.
-- Limit size of buffer block being written in out123_play to 16K, avoiding
unnecessary failure with ALSA at least.
-- Using SDL2 now if found. Output module code unchanged.
-- Added hex and txt (plain text) printout.
-- Eliminated spots where error messages would still be printed
also for OUT123_QUIET being effect.
-- Dummy output accepts any encoding now.
- libmpg123:
-- Added mpg123_open_fixed() to ease API for applications that just
want to decode well-behaved local files.
-- The user buffers for audio output data are now declared as void* for
mpg123_read(), mpg123_decode(), and mpg123_replace_buffer() to avoid
the useless need for casting your nice int16_t buffer to unsigned char
for decoding MPG123_ENC_SIGNED_16 data to it.
-- Added mpg123_free() for the benefit of library wrappers. (bug 276)
-- Add mpg123_format2() and mpg123_fmt2() supporting special value 0 for all
rates.
-- Fix changing of decoder (and output format along with that) after stream
opening. This was never recommened and only now should work at all.
-- Also mpg123_decode_frame() now sets return buffer to NULL and returned byte
count to zero in case of MPG123_NEED_MORE (or any other early abort).
-- MPG123_NEED_MORE not returned anymore for non-feeder streams. Got in
there for generic partial frame body reads, but was only intended for
feeder API.
-- Added mpg123_set_moreinfo() to support the Lame project's frame analyzer,
disabled by ./configure --disable-moreinfo.
-- Added optional storage and retrieval of raw ID3 data.
-- Fix skipping of ID3v2 footers (too much was attempted to be skipped). This
is of not much practical consequence as a tag with footer would appear on
the end of files anyway and files with ID3v2 tags at the end seem to be
rather rare.
-- Add mpg123_new_string() and mpg123_delete_string() to avoid confusion
about what mpg123_init_string() and mpg123_free_string() do.
-- Make mpg123_resize_string() terminate the string if shrinking (fill now
limited to new size).
-- Improve layer III frame parsing/error reporting for bad part2_3_length.
-- Fix crashing on stupidly low NtoM rates (exceeding downsampling factor 31).
This was only triggered by you specifying a forced sampling rate below 1550 Hz.
-- Do not remove CRC bits twice from possibly available bit reservoir.
This move needed recomputation of the layer3is reference data for 8 and
24 kHz. Old mpg123 is _wrong_ in the first few frames.
-- Generally more tight control and early bail out on reading bits of
frame data for all layers. This reduces the count of error messages
on badly damaged files a lot and feels a lot safer, too. Note that
we already silently returned zero bytes instead of actually over-reading
the frame buffer before, but now it happens with diagnostics and more
checks before it may happen.
-- Optionally enforce output endianess (big/little) away from native.
-- Fix build without error messages.
-- Fix build without gapless decoding.
-- Disable buffer when neither mmap nor shm functions detected (fixes
build for Android, thanks to vquicksilver).
-- Some support for extremely small streams (below 128 bytes). Those are
too short to contain anything useful besides some tiny metadata, but
serve to find/reproduce parser bugs.
-- Fix mpg123_read() for builds without feeder. It calls mpg123_decode()
without feeding input, which was disabled by mistake. The use of
mpg123_read() (instead of mpg123_decode_frame()) with mpg123_open()
was broken in feederless builds since those were fixed in version 1.15.
-- Fix ID3v2 parser logic for multiple ID3v2 tags being encountered in one
stream. New tags replace old data instead of appending to it when the
extended header update flag is not set (ID3v2.4). Update tags only
replace data that shall be unique. So far, I have never seen an update
tag in the wild, so the check for the flag is untested. The mechanism
of replacing parts of existing tag data has been tested, though.
Note that the updated libmpg123 also avoids a growing ID3 data structure
when repeatedly seeking back to the beginning in a file with disabled
seek index.
-- Eliminated a spots where error messages would still be printed
also for MPG123_QUIET being effect.
-- Added MPG123_NO_FRANKENSTEIN, MPG123_FLOAT_FALLBACK flags.
-- Now actually try floating point encoding if format matrix allows it
(can be disabled by unsetting MPG123_FLOAT_FALLBACK).
-- Added mpg123_feature2() that takes an int, as enums are not ABI-safe,
also added feature queries for floating point output.