Euterpe 2.20 (Jan 2, 2025) ========================== * Update icon and logo. * Replace wall_time() with time_precise() * Use built-in comparison WDL_assocarray_cmpstr() for WDL_AssocArray() constructor. * Use safe variants for character checks. * Improve thread initialization. * Update to WDL-GV 3.05. Euterpe 2.12 (Jan 7, 2023) ========================== * Various small improvements. Euterpe 2.11 (Sep 1, 2022) ========================== * Fix volume slider glitch on mouse move. Euterpe 2.10 (Aug 30, 2022) =========================== * Update FFmpeg to v3.4.11 "Cantor" (release date: 20220514). It is the latest stable FFmpeg release from the 3.4 release branch, which was cut from master on 20171011. * Time: display minutes with two (2) digits. * Store volume value (dB) as FP number with two (2) decimal digits. * Stop after current: draw visual indicator using rect fill rather than clear the bitmap to a particular color. Euterpe 2.05 (Aug 28, 2022) =========================== * Fix resource name collisions in DirectSound. * Add visual indication when |Stop after current| is used. * Change operation of |Stop after current|. Used to explicitly stop playback after the current track. The new logic continues playback until the track queue is empty. Euterpe 2.01 (Aug 26, 2022) =========================== * Rebuilt. Euterpe 2.00 (Aug 26, 2022) =========================== * Fix manifest filename for x86. * Add new theme elements. * Enable WDL resampler. * Add Disk/IO preferences. Euterpe 1.93 (Jul 10, 2022) =========================== * Update a few external libraries. Euterpe 1.92 (Mar 6, 2022) ========================== * Fix bug related to WASAPI when speakers are greater than two. Euterpe 1.91 (Jan 3, 2022) ========================== * Improve keyboard shortcuts. Euterpe 1.90 (Dec 13, 2021) =========================== * Fix duration calculation for audio buffer. * Discontinue linux support. * Update icon. Euterpe 1.82 (Aug 4, 2021) ========================== * Add WASAPI with support for Shared and Exclusive mode. * Stability improvements. Euterpe 1.81 (Jun 8, 2021) ========================== * Improve FVIRTKEY for key shortcuts. * Add command-line interface (CLI) arguments. Currently this feature has issues for the Linux version, use with caution. * Update documentation. Euterpe 1.72 (Mar 6, 2021) ========================== * Fix: move selected up/down. * Remove undo/redo functionality. * Remove references to ID_PLAYURL and ID_ADDURL. Euterpe 1.71 (Feb 28, 2021) =========================== * Stability improvements for Linux. Euterpe 1.70 (Feb 18, 2021) =========================== * Remove taglib. I got really tired watching all the C++ templates compiling for ages. The sad state of STL (sorry, the C++ Standard Library). * Remove media library - including search, browser and scan functionality. * Linux: fix state for some menu items. * Performance optimizations. Euterpe 1.55 (Jan 30, 2021) =========================== * Fix documentation typo. * Add |unk| arch detection. * Update a few third-party libraries. Euterpe 1.53 (Oct 6, 2020) ========================== * Various small improvements. Euterpe 1.52 (Sep 27, 2020) =========================== * New: from now on, all audio processing is done in 64-bit FP. * New resampler with greater flexibility. It will resample only if the hardware output does not match the source sample rate. Euterpe 1.51 (Sep 11, 2020) =========================== * Fix some typos. * Remove dead code from euterpe-wave and euterpe-ds shared library. * Improve the way audio buffer works. Euterpe 1.50 (Sep 6, 2020) ========================== * Preview artwork: use alternative blit function, slight better image quality. * Preview artwork: blur image on mouse down. Also, correct mouse capture. * Preview artwork tries first to load pictures from folder and then file. Euterpe will load the first match from the relative path in the following order: front.jpg cover.jpg %filename%.jpg folder.jpg If all fails Euterpe will try to extract the embedded picture from the file. At the moment only JPEG is supported. The criteria for embedded picture extraction are: ID3v2: The picture with highest score is selected. XiphComment: 1st choice is "COVERART", 2nd choice is "METADATA_BLOCK_PICTURE", and 3rd choice is the first available picture. * All-new code for metadata reading, including attached pictures. * Empty audio buffer when Euterpe is set offline. * Properties: Unicode character support (Windows). Euterpe 1.46 (Aug 30, 2020) =========================== * Set ZIP and gzip compression to fastest mode. * Use non-solid compression method for NSIS installers. * Rename portable/readme.txt to portable/README-portable.txt. * Update credits and documentation. * New: preview artwork. Accessible by selecting the desired tracks from the playlist and then use the Ctrl+Shift+A key combination or right click and |Preview artwork|. Preview artwork will display tracks' artwork if available and will allow you to start playback if you click on any of them. Euterpe 1.45 (Aug 23, 2020) =========================== * Linux: smaller file size for euterpe-ml.so and euterpe-pa.so. * Trim head/tail spaces for |Volume dB...| input. * Improve keystroke messages. * New: properties window (async operation). Display metadata and other general info about a track or N tracks depending on the playlist's selection. Accessible with Alt+3 or right click on a track in PL and select |Properties|. * Improve default values for column headers in PL/Search/Browser. * Audio system selection enhancements. * Linux: rework a few things for PulseAudio backend. It may reset its settings to default. Known issue: the default device is used if no selection has been done but it may not properly displayed in the settings dialog. Manual device selection works as expected. * Add |Default| option for ListView column header for Playlist, Search, and Browser; to access this setting right click on the corresponding LV column header. Euterpe 1.44 (Aug 19, 2020) =========================== * Less aggressive buffering. * Improve audio thread locking. Euterpe 1.43 (Aug 19, 2020) =========================== * Fix (Windows): Euterpe hangs when preferences window loses focus while the last selected item was a combobox from WaveOut or DirectSound dialog. Euterpe 1.42 (Aug 19, 2020) =========================== * Update SQLite to 3.33.0. * Linux: add README.txt. * Add static text to display progress percentage and volume dB. * Add window class to accept double clicks. * Add: double click on volume slider set volume to 0.0dB. * Add: right click on volume slider allows you to enter volume dB manually. * Add PLAY -> Volume dB... in order to enter volume dB manually. * Fix (linux): properly process Ctrl+Enter for Find window. * Update documentation. Euterpe 1.41 (Aug 16, 2020) =========================== * New: Euterpe available for Linux natively (i686/amd64). The minimum requirements: a Linux distro of your choice with PulseAudio, libgdk-3, glibc 2.13 or later, and libstdc++ for GCC 4.7.x or later. Note: Euterpe for Linux is considered experimental. * Improve manifest for UAC. * Improve operation for all Open/Save dialogs. * Proper SWELL message queue initialization. * Remove some unnecessary paint code. * Add (again) media library. Some search operations in Browser are working asynchronous but not all. * Safer memory release for file tasks. * Silence MessageBox errors related to device initialization/open. * Various small fixes and improvements. Euterpe 1.40 (Jul 18, 2020) =========================== * Code refactoring for all existing playback functionality. * Update Euterpe license. * Better virtual controls initialization. * Fix version parsing code in NSIS script. * Manual playlist control redraw in the majority of cases. * Fix save/restore current track for certain scenarios. * Fix some small issues with volume control drawing. * Improve playback controls behaviour. * Add basic undo/redo system. As is, it provides up to 10 points but later on will provide an option to increase/decrease it as you please. * PL: display drop position in title bar on track drag instead of row highlight. At the moment LVIS_DROPHILITED is not supported on all platforms. * Add load/save Euterpe playlists (*.epl). * PL: release mouse capture on ESC. * Add: move after current, Ctrl+M. * Update documentation. * Fix file extensions for open/save dialogs. * Update credits: Cool Scrollbar addition. * Add: stop after current, Ctrl+B. * Better COM initialization. Helpful for file operations. * Load PL: add a few file integrity checks. * Add progress dialog for file operations. * Add: cut/copy/paste for playlist tracks. Shortcut keys follow the Emacs convention because common cut/copy/paste shortcut keys are already assigned for playback controls; functionality which is considered higher priority than playlist editing. Practically, it shouldn't be a problem, who doesn't like Emacs? * Add: open file location in playlist context menu. * Performance improvements for both playback and idle state. * Add offline state à la REAPER. Audio device is closed if the window is deactivated and there is no playback activity and reopens immediately on activation. Offline state also stops main loop thread and default window timers in an effort to reduce CPU power draw. The transitions should be seamless in operation but results may vary depending on your audio device capability. Euterpe 1.39 (Jun 21, 2020) =========================== * Fix shadow variables. * Improve drag and drop. * Add year metadata. * Simpler audio format selection in preferences. Euterpe 1.38 (Jun 1, 2020) ========================== * Fix time elapsed indication. Euterpe 1.37 (May 30, 2020) =========================== * Add: support for drag and drop folders. * Correct display position of sort menu if vertical scrollbar is active. * Remove media library. * Fix playback order on |Clear playlist| and then |Add folder/file|. * Improve save/load playlist. * Ensure focused item is visible on window resize. Euterpe 1.36 (May 24, 2020) =========================== * Small improvements for artwork dialog. * Cleanup FFmpeg make files. * Compile FFmpeg with an older version of GCC. * Manual load for all dialog menu bars. * Correct ARCH detection. * Enable case insensitive search queries for ASCII characters. * Improvements concerning store/restore dialog position. Euterpe 1.35 (May 15, 2020) =========================== * Improve audio buffering. * Ensure focused item is visible after sort. Euterpe 1.34 (May 2, 2020) ========================== * Disable variable buffering. Euterpe 1.33 (Apr 26, 2020) =========================== * Audio: better initialization for high samplerates. Euterpe 1.32 (Apr 26, 2020) =========================== * Fix: properly display database size in ML browser when you select: STATS -> Show statistics * Add informative scan dialog. * Update documentation. Euterpe 1.31 (Apr 25, 2020) =========================== * New code for ML browser splitter. Note: if you upgrade from a previous version it is recommended that you delete euterpe_ml.ini with: WinKey+R del %APPDATA%\Euterpe\euterpe_ml.ini or WinKey+R notepad %APPDATA%\Euterpe\euterpe_ml.ini and edit the following entries in euterpe_ml.ini manually to 0: view_browser_x=0 view_browser_y=0 view_browser_w=0 view_browser_h=0 list_browser_x=0 list_browser_y=0 list_browser_w=0 list_browser_h=0 Euterpe 1.30 (Apr 19, 2020) =========================== * Move media library functionality to euterpe-ml plugin. * Move DirectSound functionality to euterpe-ds plugin. * Move WaveOut functionality to euterpe-wave plugin. * New: Plug-ins save settings to separate ini files. * Disable main playlist redraw when the window is offscreen. * New audio system selection. * Fix: properly remove dead entries from the database where file path contains single quote. * Fix: ML search column header remembers last preference. Euterpe 1.24 (Apr 4, 2020) ========================== * Add playlist context menu. Euterpe 1.23 (Mar 29, 2020) =========================== * Fix play button behavior if the playlist has no items. * Faster loading of embedded artwork. Eutepre 1.22 (Mar 23, 2020) =========================== * Update OSS URL. * Fix changelog typo. Euterpe 1.21 (Mar 14, 2020) =========================== * Fix: Double click on a track works as expected when the playback is paused. Euterpe 1.20 (Mar 14, 2020) =========================== * Stylistic menu improvements and corrections. * Enable double buffering for all listview controls. It reduces graphics flicker for the standard listview; all paint operations are first rendered to a memory buffer and then the memory buffer is copied directly to the drawing surface. It also enables alpha-blended marquee selection on systems where it is supported. * Rework ML browser. Mostly a GUI redesign from the ground up to provide a more efficient way to do the basic tasks. The new design also reduces the startup time of the dialog since it requires far less DB queries. * Better FG/BG color apply. Euterpe will redraw all open dialogs on FG/BG color change. * Add the following functionality: - Find in playlist. - Reverse playlist. - Randomize playlist. - Select current. - Select all. - Select none. - Invert selection. - Remove selected. - Crop selected. - Clear playlist. - Remove missing files. - Remove duplicate entries. - Seek Back/Forward 5 seconds. - Queue. - Remove from queue. - Clear queue. - Move selected up. - Move selected down. - Sort by # (index). * Update documentation. * Update |About Euterpe|. * Improvements for better 64-bit compatibility. * New: Euterpe for x64 architecture. * New: portable version of Euterpe for x86/x64 architecture. Portable versions are provided as ZIP archive. Euterpe 1.11 (Feb 28, 2020) =========================== * Add a basic theme for the standard controls. * Change the way artwork is displayed and processed; an emphasis on memory economy. Euterpe 1.10 (Feb 23, 2020) =========================== * Fix main window positioning; now it can differentiate if it was maximized on close and act accordingly on next launch by setting the correct state and position. Euterpe 1.09 (Feb 22, 2020) =========================== * Update artwork on stop. Euterpe 1.08 (Feb 21, 2020) =========================== * Repeat/shuffle buttons remember the last state on Euterpe restart. Euterpe 1.07 (Feb 21, 2020) =========================== * Less aggressive drawing in |About Euterpe| dialog. * Improve artwork dialog positioning. * Better handling Next/Previous with empty playlist. * Playback Queue improvements when crop/delete selected items from the playlist. * Experimental fix: artifacts on certain bit depths. * Various fixes for current track selection. Euterpe 1.06 (Feb 20, 2020) =========================== * Improve playback controls behaviour. * Add Repeat/Shuffle buttons for easy access and better indication. * Add dialog for artwork display. Euterpe will load the first match from the relative path in the following order: front.jpg cover.jpg %filename%.jpg folder.jpg And finally if all fails will try to extract the first embedded picture from the file. At the moment only JPEG is supported. * Update: Documentation. Euterpe 1.05 (Feb 16, 2020) =========================== * Disable double buffering for ListView controls, flickering is expected. Probably will set a preference setting at some point later on. * Disable smooth movement when part of the dialog is offscreen. * Improve |About Euterpe| drawing logic. * Background color change invalidate the whole PL control. * Change default background/text colors to black/silver. * Better default settings for dialog resources. Euterpe 1.04 (Feb 14, 2020) =========================== * Fix excessive dialog flickering in |Device setup|. * Fix ML search/browse column headers. If you have installed a previous version of Euterpe it is recommended to delete euterpe.ini file and start fresh. Install version 1.04 and then follow the instructions below. Make sure Euterpe is not running. Press Win+R shortcut to open the Run dialog and type |cmd| in order to open the command line and from there run the following command: del %APPDATA%\Euterpe\euterpe.ini * Add ability to select ListView background/text color in Preferences -> General. Euterpe 1.02 (Feb 10, 2020) =========================== * Improve memory footprint. * Fix dialog texture for device setup. * More accurate seeking. * Fix various problems with child dialogs. * Better protection when a filename does not exist. Euterpe 1.01 (Feb 2, 2020) ========================== * Fix playlist sorting when there are items in queue. Euterpe 1.00 (Feb 2, 2020) ========================== * First public release. Euterpe 0.99 (Jan 29, 2020) =========================== * Next/previous starts playback if the stream is paused. * Brand new library browser. * Add browser statistics. * Transport hides (if necessary) elements on resize. * Update sqlite to 3.31.1 * Add track repeat and shuffle. * Update documentation and TODO. * Add playback queue actions (add/remove/clear). * Adjust plaback queue when move tracks in playlist. * Better title display when there are queued files. * Change open source software link. * Downgrade FFmpeg from 4.2.1 to 3.4.7. * Add track movement with Alt+UP/DOWN. * Enable double buffering for main playlist. Euterpe 0.98 (Jan 18, 2020) =========================== * Update EULA. * Enable clipping and dither. * Prevent background redraw. * Enable clip children to various windows. * Fix about drawing bug when the window is moved offscreen. * Fix timer IDs for transport and playlist. * Update credits. * Sort performance improvements. * Update to latest WDL. * Add documentation for CSIDL_APPDATA and CSIDL_PROFILE. * Downgrade NSIS to 2.51. * Fix play file and play folder. * Bound previous/next. * Fix about window margins. * Update installer and archive. * Add documentation.txt. * Storage engine removes dead entries. * Storage engine can use SQL queries that contain single quote. * File operations use WM_SETREDRAW for fast insertions. * Ability to search for strings with single quote. * Display seek time when you move progress slider. * New functionality: if paused and you press play it resumes playback. Euterpe 0.97 (Jan 11, 2020) =========================== * Update 1.xx series changelog. * Better changelog format. * Enable audio clip and dither. * Update to latest WDL. * Enable full precision for signal path. Euterpe 0.96 (Jan 1, 2020) ========================== * Credits correction. * Safer portaudio audio streamer. * Add GetResampledSampleRate(). * Update copyright year. Euterpe 0.95 (Dec 25, 2019) =========================== * Update TODO info. * AudioBuffer takes into account the sample size in order to update the current playing time. * Fix a memory leak. * Fix: TreeView control for on click item selecting. * Fix: Ctrl+Enter does not start playing if there is no selection. * Remove tracks correctly. * Increase buffer size read from 2048 to 4096. * Increase file read buffer to 3 of 262144 bytes. * Add debug info to buffer queue. Euterpe 0.90 (Dec 20, 2019) =========================== * Better architecture reporting. * Set option to manually enable VLD. * Improve audio engine callback logic. All memory allocations are done up front. * Overall audio engine improvements. Euterpe 0.85 (Dec 16, 2019) =========================== * Improve NSIS scripts to parse copyright information. * Add time elapsed and time remaining. * Removed database recond year and all presentation code for year. * Hack to eat shift + mouse wheel messages. * Improve playlist list view on double click. * Change transport color. Euterpe 0.82 (Dec 14, 2019) =========================== * Remember last played track. * Remember last volume gain. * Check last current track is within range. * Fix slow startup. * Fix a few memory leaks. * Improve ML search pattern. * Disable WDM Kernel Streaming and WASAPI backend. * Set audio streamer for low-latency. * Update to latest WDL from fba3124e. * Improve mute logic. * Properly check/uncheck PLAY menu. Euterpe 0.81 (Dec 8, 2019) ========================== * Add column sort for ML search and browser. * Enable Ctrl+S for sorting by type. * Remove ML browser by year. * Enable actions for PLAY and EDIT menus. * Enable action for LIBRARY->Scan files. * Update preference dialogs. Euterpe 0.80 (Dec 7, 2019) ========================== * Add window close with ESC key for about/changelog/license window. * Media library context menu appears only if there is a selected item in the listview. * Fix: naked version displays special version by default. * Add media library browser. * Safer ML browser resizing. * Ability to check view menu items. * Update to latest WDL from 5700a605. * Add browser view for artist/album/genre/year. * Add context menu for ML browser. Euterpe 0.76 (Nov 29, 2019) =========================== * Add select all (Ctrl+A) for main playlist and media library window. * Remove undo/redo history. * Better error handling if cannot open the database. * Add Alt+D shortcut in media library window in order to focus and select edit control text. * Add media library browser window. * Hacking IDOK. Euterpe 0.75 (Nov 26, 2019) =========================== * Add media library search window. * Update to latest WDL. Euterpe 0.71 (Nov 22, 2019) =========================== * Gray the following menu times: Add URL, Play URL. * TODO update. * Add keyboard shortcuts for UFO. * Change MinVolume to ToggleMute. * Very basic artwork for slider. * Add drag and drop capability. * Fix: update m_current_track position after Sort(). * Update to latest WDL. * Add library menu. Euterpe 0.70 (Nov 16, 2019) =========================== * Add playlist item delete and crop. * Add media seeking. * Remove MP3 decoder in favor of FFmpeg. * Remove reference implementation of FLAC in favor of FFmpeg. * Add SQLite. * Update playlist with additional attributes. * Update storage engine to support more track info. * Add FFmpeg tagger implementation. * Add startup time in warning window for development releases. * Add wall time implementation. * Improve performance for single result query in SQLite. * Remove some dead code. * Add volume slider updates. * Add ASIO. * Fix metric system for bitrate, samplerate, filesize and length. * Only one Euterpe instance is allowed. * Add new version window. * Improve slider-to-dB and dB-to-slider. * Remove old db2slider implementations. * Separate devices from preferences. * Add device setup window. * Update .gitignore to exclude linux/mac generated resources. * Linux workaround to ignore exit when ESC key is pressed. * Add some TODO. * Add implementation for DirectSound, WDM Kernel streaming, WASAPI backend. * Add different data structure for Settings class. * Add Relaunch and Refresh in device setup window. * Add hardware samplerate across plugins. * FFmpeg input resampler fixes. * General audio backend improvements. Euterpe 0.65 (Nov 9, 2019) ========================== * Update credits and license. * Add LMDB. * Remove SQLite. * Add EULA. * Add keyboard shortcuts for playback. * Add playlist active row increase/decrease. Euterpe 0.63 (Oct 29, 2019) =========================== * Remove flac implementation from the main executable. * Add flac plugin. * Update credits and license. * Update FFmpeg to 4.2.1. * Update miniaudio to 0.9.8. * Add mp3 plugin. * Rename euterpe-input plugin to euterpe-gen. * Improve packaging: filename can include release information. * Add taglib plugin. * Remove main hamburger menu. * Add traditional menu bar. * Merge public plugin interfaces to a single file. Euterpe 0.62 (Oct 27, 2019) =========================== * Improve code for scanning directories. * Add minimal FFmpeg for FLAC and MP3. * Add new module (euterpe-input). * Fix FFmpeg to report correct file duration. * Fix a small memory leak. * Update packaging. Euterpe 0.61 (Oct 19, 2019) =========================== * Improve code for scanning input/output devices. * Add database window. * Update cloc extensions. * Add database and media file scanner. Euterpe 0.60 (Oct 5, 2019) ========================== * Add keyboard map for shortcuts. * Fix various memory leaks. * Update license text. * Introduce new drawing code for credits. * Change theme extension from .zip to .euterpe_theme. * Change timestamp macro to a more accurate version. Euterpe 0.58 (Sep 26, 2019) =========================== * Uninstaller: remove start menu links correctly. * Improve names for start menu links. * Add themes/ in windows installer and linux archive. * Update Credits. Euterpe 0.57 (Sep 24, 2019) =========================== * Add License and Changelog windows. * Add x.y position autosave for About and Changelog windows. * Add x.y position autosave for the last page used in preferences. Euterpe 0.56 (Sep 23, 2019) =========================== * Add new dialog for audio device selection in preferences. * Change dialogs for audio device settings in preferences. * Correct alpha/beta/rc warning window message. * Improve title bar version string to include release type and special edition. Euterpe 0.55 (Sep 20, 2019) =========================== * Major code clean-up.