musikCube Changelog

What's new in musikCube 3.0.2

Sep 11, 2023
  • Added sqlean/unicode sqlite extension (and remove custom mapping logic) for improved non-Latin, case-insensitive unicode filter/search.
  • Read rating field from metadata while indexing (make sure to do a full re-index if this interests you: ^R -> rebuild library)
  • Fixed bug where aac files with id3v2 tags were not getting parsed correctly
  • Fixed a bug where we may incorrectly use the track's filename/uri instead of title field during indexing.
  • Fixed 64-bit RPM architecture value (was amd64, but should be x86_64)
  • Updated musikdroid to latest version of Android Studio and external dependencies (anecdotally improving Opus playback reliability)
  • Updated to [email protected], [email protected], [email protected] and [email protected] on unix platforms
  • Re-wrote raspberry-pi/arm cross-compiling functionality to be more generic and use more well-maintained toolkits.
  • Added armv6 builds for Raspberry Pi Zero (and other similar devices)
  • Added x86 Linux builds
  • Tweaked release filenames to be consistent across all platforms (musikcube_<version>_<os>_<arch>)

New in musikCube 3.0.1 (May 28, 2023)

  • fixed a bug where album artist (and potentially other) metadata values were being double encoded.
  • fixed a bug where re-arranging the play queue may cause unnecessary i/o.
  • fixed bug where rpm architecture was incorrect for armhf builds.
  • updated asio to 1.28.0

New in musikCube 3.0.0 (Apr 24, 2023)

  • High-level differences between musikcube v1 and musikcube v3 include:
  • A completely cross platform terminal-based user interface, supporting Windows, macOS, Linux, FreeBSD and Haiku OS
  • Redesigned plugin API that allows for audio decoders, encoders, playback and play-queue manipulation, visualizers, data streams, data indexers, digital signal processing and more
  • A well defined remote API that allows for easy client integration: see here
  • Gapless playback
  • Multi-architecture support, including (but not limited to) x86, amd64, arm64 and armv6
  • Remote access: stream audio from musikcube instances running on other computers
  • Fully localizable, bundled with many community-provided locales
  • Headless operation on Unix-based platforms via daemon
  • Support for ReplayGain during playback
  • Regex searching and filtering
  • Full Unicode support across all platforms

New in musikCube 0.99.5 (Feb 6, 2023)

  • fixed a bug in ffmpegdecoder that could cause the app to crash.
  • fixed milkdrop2 plugin to work on 64-bit machines, and include it by default for both win32 and win64 releases.
  • fixed unicode character parsing in musikcube-cmd.exe
  • merged upstream PDCursesMod changes
  • update essential build shell scripts to use sh instead of bash to improve portability
  • added new post-install.sh script, removed some legacy CMake code
  • simplified Visual Studio project configurations and improved build time

New in musikCube 0.99.4 (Jan 3, 2023)

  • Added support for Haiku OS.
  • Added PortAudio output driver (Linux, macOS, Haiku).
  • Fixed bug where musikcubed could crash while stopping.
  • Added dark mode awareness to Windows build.
  • Fixed various issues with the build system.

New in musikCube 0.99.3 (Dec 27, 2022)

  • Fixed a bug on Windows builds where certain accented characters would not be correctly parsed when entered via keyboard.
  • Updated accented character mappings for improved fuzzy search.

New in musikCube 0.99.2 (Dec 26, 2022)

  • Fixed issues when searching for metadata with accented characters.
  • Fixed indexer issues related to last modified file time; some code was using 32-bit integers for timestamp comparison, leading to incorrect re-indexing.
  • Fixed some issues related to modifying and saving playlists in browse mode.
  • Fixed issue with FfmpegDecoder that was preventing .wma files (and possibly other formats) from playing properly.
  • Updated to taglib 1.13. vendor the library by default on unix platforms, and use pre-compiled version on windows. (also: remove source bundle).
  • Updated some default key bindings to be more cross-terminal-emulator compatible.
  • Updated ru_RU localization (@adem4ik)
  • Fixed Windows startup crash that was affecting some users
  • Merged upstream PDCurses changes.
  • Cleaned up vendoring for libopenmpt and libgme.
  • Fixed OpenBSD compile.

New in musikCube 0.99.1 (Dec 26, 2022)

  • fixed issues when searching for metadata with accented characters.
  • fixed indexer issues related to last modified file time; some code was using 32-bit integers for timestamp comparison, leading to incorrect re-indexing.
  • fixed some issues related to modifying and saving playlists in browse mode.
  • fixed issue with FfmpegDecoder that was preventing .wma files (and possibly other formats) from playing properly.
  • updated to taglib 1.13. vendor the library by default on unix platforms, and use pre-compiled version on windows. (also: remove source bundle).
  • updated some default key bindings to be more cross-terminal-emulator compatible.
  • updated ru_RU localization (@adem4ik)
  • fixed Windows startup crash that was affecting some users
  • merged upstream PDCurses changes.
  • cleaned up vendoring for libopenmpt and libgme.
  • fixed OpenBSD compile.

New in musikCube 0.99.0 (Dec 6, 2022)

  • Completely removed boost as a dependency across all projects; this is a huge milestone in the project, and will make it much easier to distribute stable builds forward.
  • Fixed issues with usernames on Windows that contain non-latin characters
  • Fixed issues displaying paths with non-latin characters in some parts of the app.
  • Fixed issue with directory scanning that may lead to incomplete indexing
  • Fixed issue where user's home directory may not be resolved correctly.
  • Reverted ViewPager2 changes in musikdroid, as there is a bug that is preventing fragments from getting re-initialized properly during the resume cycle.
  • Updated Simplified Chinese translation (@UM-Li)
  • Added Czech translation (@khagaroth)
  • Upgraded to c++-17 runtime

New in musikCube 0.98.1 (Oct 27, 2022)

  • Fixed album art extraction for xiph comments.
  • Fixed PulseAudio compile issue.
  • Fixed musikdroid app notification on Android 13 devices.
  • Fixed ancient metadata indexer crash when trimming whitespace from strings.
  • Fixed pipewireout to have more sensible default buffer sizes, and add the ability for the user to configure them.
  • Updated musikdroid dependencies and tooling, fixed a few warnings.
  • Merged latest upstream PDCurses code for Windows builds.
  • Sending musikcubed a SIGUSR1 will trigger a library rescan.
  • Fixed a bug when querying tracks by category with a filter.
  • Fixed a musikdroid bug that could cause the BrowseFragment to get into a bad state where search would no longer work.

New in musikCube 0.98.0 (Jul 4, 2022)

  • added the ability to click the browse and tracklist headers to change filter options
  • added the ability to click transport metadata to display a context menu with a list of actions for the current track/artist/album
  • added the ability to search/filter in browse view; press ^F to toggle the feature on and off.
  • fixed a bug that could cause tracks to sort incorrectly if some tracks in the album have a disc number specified and others don't.
  • added the ability to use libelogind or basu instead of libsystemd for the mpris plugin (@robertgzr)
  • fixed ape decoding.
  • some warning cleanups when using wsprintw (@trofi)
  • further improvements to build system to remove OS-specific conditionals in favor of library detection
  • added color output to various important cmake messages, making it much easier to spot check configuration issues.
  • added support for the piggy debug tool to help with log collection and remote app monitoring. disabled by default.
  • updated Windows build to use Visual Studio 2022
  • updated Linux/macOS dependencies for standalone *nix builds: boost 1.79.0, openssl 3.0.2 (1.1.1n for rpi), curl 7.83.0, ffmpeg 5.0.1, libopenmtp 0.6.2, sqlite 3.39.0

New in musikCube 0.96.11 (Feb 11, 2022)

  • added support for ffmpeg5 libraries, fixed brew build
  • upgraded to ffmpeg5 for Windows builds.
  • fixed WasapiOut to use high-quality, built-in resampler.
  • added allow_decoder_resampling to WasapiOut to disable the high-quality, built-in resampler and rely on plugin resampling instead.
  • fixed dialog background rendering in certain versions of ncurses.
  • fixed duration calculation for float-encoded wav files.
  • added additional PipeWire output debugging.
  • completely re-wrote the CMake-based build system for better correctness and portability.

New in musikCube 0.96.10 (Dec 29, 2021)

  • fixed a race condition in WasapiOut that could lead to an app crash when playing music.
  • fixed rpath issues leading to startup crashes on macOS when installing via homebrew.

New in musikCube 0.96.9 (Dec 28, 2021)

  • updated FfmpegDecoder to perform resampling internally when WasapiOutput is in use; its internal resampler seems to be much higher quality than the one used by WASAPI by default.
  • fixed data directory resolution logic with respect to to XDG_CONFIG_HOME (@robertgzr)
  • ensure TrackSearchLayout refreshes during metadata indexing (@ravensiris)
  • fixed album duration calculation fencepost error (@PythonTryHard)
  • added Spanish (es_ES) translation (@orestescm76)
  • added support for Android Studio 4.2
  • updated CMake scripts to be compatible with Homebrew installations that are rooted outside of /usr/local
  • ensure static libraries are only resolved with necessary (@t123yh)
  • fixed OpenBSD build
  • fixed a PipeWire bug where volume may not get set properly.
  • updated last.fm scrobble logic to only post if at least 25% of the active track has been played.
  • fixed a bug where user may be unable to navigate to the lyrics view
  • fixed a low-level bug that could prevent layout update events from propagating up the view hierarchy.
  • fixed a bug where the notification tray icon was not drawing properly on windows builds.
  • fixed musikdroid notification falling out of sync with the currently playing track.
  • fixed -rpath to use $ORIGIN instead of ./ on *nix systems.

New in musikCube 0.96.7 (Apr 30, 2021)

  • IMPORTANT NOTE: it was brought to our attention that Windows Defender falsely detects musikcube 0.96.6 binaries as malware. we have no reason to believe this is a real issue, but we recommend users upgrade to 0.96.7 to avoid problems. discussion can be found in the following issue: #436

New in musikCube 0.96.6 (Apr 18, 2021)

  • Fixed some drawing issues with overlays/dialogs with certain versions of ncurses.
  • Added category-level (e.g. album, artist, etc) durations in browse and search views.
  • Upgraded the Windows builds to use ffmpeg 4.4, and removed usages of some deprecated APIs in FfmpegDecoder and FfmpegEncoder.
  • Fixed high cpu usage bug in musikcube-cmd.exe (Windows builds only)
  • Fixed bugs where .wav files with embedded album art would play loud static for a second or two before the correct audio.
  • Added the ability to automatically resume playback on startup via new "advanced" setting called ResumePlaybackOnStartup.
  • Fixed various minor bugs while browsing by directory.
  • Fixed bug where files with "long" filenames on Windows were not properly supported.
  • Added de_DE translation (dertuxmalwieder)
  • Updated default "change sort order" hotkey to ensure it doesn't conflict with some common terminal emulator defaults in UNIX environments.
  • Removed snap support. the default sandboxing rules were causing more problems than it was worth; even though it was possible to work around them, users were still getting confused.
  • Added an initial PipeWire output plugin; included by default on Ubuntu 21.04 and Fedora 34
  • Fixed some build issues where opting out of bundled TagLib didn't work properly.
  • Updated CMake build scripts to fail fast if required libraries are not found.
  • Updated error logging to exclude ffmpeg end-of-file warning, it was just polluting things.
  • Ongoing warning cleanups against more modern compilers.

New in musikCube 0.96.4 (Jan 17, 2021)

  • Added mouse wheel support to non-Windows platforms.
  • Fixed some difficult-to-reproduce issues that could corrupt layout.
  • Optimized app resize logic so its simpler and more performant.
  • Fixed issues with terminal emulators on macOS that support REP (e.g. kitty) by linking against the less buggy, homebrew-provided version of ncurses.
  • Upgraded to the most recent version of Android Studio tooling for the musikdroid app.
  • Fixed a bug where track numbers would not be correct after loading a session where the last viewed content was a playlist.
  • Ongoing warning cleanups against more modern compilers.

New in musikCube 0.96.3 (Dec 24, 2020)

  • Fixed a bug that could cause terminal output to get corrupted when switching songs (@the-eater)
  • Fixed a bug that was preventing the update check from displaying a dialog on completion.
  • Fixed now playing readout ellipsizing.
  • Fixed a bug where last.fm scrobbles may get posted twice per track.
  • Added a hotkey to clear the play queue; press shift+x in the play queue window.
  • Fixed HttpClient user agent to distinguish between win32 and win64

New in musikCube 0.96.2 (Dec 8, 2020)

  • Musikcube:
  • Fixed a crash in HttpClient that was only manifesting on some architectures and compilers.
  • Fixed a bug where UI may be updated from a background thread, leading to undefined behavior.

New in musikCube 0.96.1 (Dec 7, 2020)

  • Additional fixes for older versions of libcurl (< 7.2.0)
  • Relaxed client/server version matching to exclude patch version (e.g. versions 0.96.0 and 0.96.1 are considered compatible, but 0.96 and 0.97 are not)
  • Upgraded libmicrohttpd to 0.9.71 on macOS and fixed static build

New in musikCube 0.96.0 (Dec 6, 2020)

  • reduced input latency, especially for mouse events.
  • updated zh_CN localization (Siheyuan98)
  • added support for older versions of libcurl (7.2.0 and earlier)
  • added an advanced setting to ignore client/server version mismatches when connecting to remote libraries
  • added the server version to the user facing error that is displayed on remote library version mismatch.
  • added the app version to the bottom of the settings screen.
  • fixed milkdrop plugin build (win32 only)

New in musikCube 0.95.0 (Nov 14, 2020)

  • Added support for searching by regex; press M-m in track or filter views to toggle between regex and regular searching. while regex is enabled, the search box will have a blue (instead of red) border.
  • Relaxed search to ignore accents. for example: À, Á, Â etc are all considered equivalent to the english A, and vice versa. (note this does not apply to regular expressions)
  • Fixed a bug where remote library ports greater than 32767 caused the app to crash.

New in musikCube 0.94.0 (Nov 4, 2020)

  • Full set of changes:
  • Added support for remote libraries (i.e connecting to a musikcube app or daemon running on a different machine) to the terminal client:
  • Updated nearly all queries against the database in the app to be asynchronous. this was not necessary before because most local DB queries are extremely fast; however, when queries are sent over the network that may not be the case. there are still a small handful of queries made on the UI thread, but all of the really egregious ones have been fixed.
  • Added a new ISerializableQuery interface that defines how a query can be serialized and deserialized. all queries now implement this interface.
  • Defined a new SendRawQuery method to IMetadataProxy that is used by the server to send serialized queries to musikcore, and then respond with serialized results to the calling client.
  • Added WebSocketClient that is used to connect to a musikcube server and authenticate. it takes serialized queries from the client and sends them to the server, then parses responses and unpacks the serialized results.
  • Added a new RemoteLibrary implementation of ILibrary. it serializes queries and sends them to the server via WebSocketClient. once complete, WebSocketClient hands the serialized result back to RemoteLibrary, which then deserializes the result into the original query and notifies the caller.
  • Added MasterLibrary in the same vein as MasterTransport. it's more a less a pimpl that allows us to switch the selected library under the hood without a majority of the app knowing or caring.
  • Revamped the settings screen to allow selecting between local and remote libraries.
  • Added a new screen that is displayed when a remote library is disconnected, and shows some diagnostic information.
  • Added a new banner on the top of the app when connected to a remote library.
  • Added buffering states to Stream/Transport/PlaybackService and friends.
  • Updated the transport window to display buffering status when appropriate.
  • Fixed a number of bugs in cursespp related to nested layout focusing.
  • Fixed buggy visibility change events in cursespp::Window and removed old hacked-up code that was working around the problems in the app layer.
  • Fixed a handful of KeyPress() propagation bugs across the app.
  • Found and fixed a handful of bugs in HttpDataStream that have been laying dormant, waiting to be exercised.
  • Fixed bugs related to LruDiskCache parsing and pruning.
  • Fixed potential memory leaks in GmeDataStream and OpenMptDataStream
  • Fixed some weird edge-case command bar focus issues.
  • Finally renamed src/core to src/musikcore
  • Added a ja_JP locale (trackiss)
  • Updated ru_RU locale (adem4ik)
  • Fixed a bug where on-demand mp3 transcoding wasn't working properly. (other formats were fine)
  • Rearranged the settings window to ensure everything fits properly in an 80x24 terminal
  • Fixed some bugs in MessageQueue by now requiring explicit IMessageTarget registration and unregistration for all messages. there was a small time window (read: race condition) where it was possible to attempt to dispatch messages to a destroyed target.
  • Fixed a handful of components that were running their initial queries twice or more as they were being initialized.
  • Updated copyright date across all source files
  • Upgraded a number of tools and dependencies:
  • Migrated to VS2019 for Windows musikcube builds
  • Migrated to Android Studio 4.1 for musikdroid builds
  • Upgraded websocketpp and json.hpp and moved them out of src/plugins
  • And into src/3rdparty so they can be used by the main app.
  • Upgraded to boost 1.74.0
  • Upgraded to openssl 1.1.1h
  • Upgraded to sqlite 3.33.0
  • Fixed a bug in the indexer that could prevent custom sources from getting interrupted correctly.
  • Fixed a bug in libmicrothttpd version detection.
  • Fixed a bug where switching to a different output device while paused would cause playback to resume.
  • Moved all shell scripts to their own subdirectory so they don't pollute the root.
  • Fixed an old bug in LocalLibrary that could cause query result callbacks to fire twice.
  • Added the ability to limit the number of simultaneous audio transcoders in the server.
  • Added support for Ubuntu Groovy
  • Various other minor fixes that were exposed by making queries asynchronous by default.

New in musikCube 0.93.1 (Jul 12, 2020)

  • Musikcube:
  • Added a new decoder based on libopenmpt to support playing mod/tracker files.
  • Fixed a bug when browsing directories that contain entries from custom IndexerSource plugins.
  • Fixed directory scanning bugs related to NFS (and potentially other filesystem) volumes.
  • Fixed a nasty race condition in the MPRIS plugin that could cause the app to crash on certain events.
  • Compile against the source version of taglib to get a number of important bug fixes that haven't been released yet.
  • Fixed a memory leak in the gmedecoder plugin when aborting a directory scan
  • Fixed a bug that could cause advanced setting integer values to not save properly.
  • Reduced Indexer log spew.
  • Removed more unnecessary boost cruft in the Indexer.
  • Fixed an Indexer bug that could result in tracks not getting added to the library.
  • Fixed a bug where the Indexer couldn't always be interrupted while scanning.
  • Upgraded snap from core18 to core20.

New in musikCube 0.92.1 (May 26, 2020)

  • Server:
  • Fixed a bug where HTTP authentication was not functioning properly and could allow unauthenticated clients to download tracks.

New in musikCube 0.90.1 (Apr 13, 2020)

  • Musikcube:
  • Fixed crash in win32 server caused by an incorrectly-compiled zlib

New in musikCube 0.90.0 (Apr 12, 2020)

  • Included a new musikcube-cmd.exe binary that can be run from a standard command-line session in Windows, including cmd.exe, PowerShell, Windows Terminal, or ConEmu.
  • Added an OpenBSD port (castagnini)
  • Added the ability to build as a snap package.
  • Fixed build issues for platforms with ncurses and tinfo split (tobbez)
  • Fixed an issue where percent signs in the transport weren't getting properly escaped (the-eater)
  • Fixed an issue where we may not properly detect UTF8 terminals in some cases
  • Added true color support for macOS Terminal.app (previously was only supported in iTerm)
  • Fixed a handful of directory browsing bugs reported by (pcapiod)
  • Fixed a bug where we weren't always properly reporting track metadata in the MPRIS plugin.
  • Added a way to add an audd.io API key, if you have one, to fetch lyrics
  • Updated session data to be stored in its own config file
  • Merged upstream PDCurses changes to fix a handful of minor bugs and better support Windows Terminal
  • Fixed a couple null pointer dereferences, and a couple instances where we
  • Were using variables before they were initialized (detected with valgrind)
  • Fixed some weird redraw issues on some platforms with ncurses 6.2
  • Fixed some bugs where we weren't always compiling the MPRIS plugin for our binary packages
  • Fixed a number of ALSA and PulseAudio bugs when devices are not available or there is resource contention
  • Added Ubuntu Focal (20.04) and Fedora 31 support

New in musikCube 0.83.0 (Jan 13, 2020)

  • #309: fixed a minor CMake configuration bug that could cause some formats (e.g. opus) to not get recognized on some platforms (e.g. linux).

New in musikCube 0.82.0 (Jan 12, 2020)

  • Fixed a small bug that could cause dialogs to get partially obscured on certain versions of curses.

New in musikCube 0.80.0 (Jan 11, 2020)

  • musikcube:
  • Added zh_CN localization (Siheyuan98)
  • Fixed #287: Window size not properly restored in Windows build
  • Fixed #276: Added the ability to rate tracks via r shortcut in all track list views.
  • Fixed #260: Added the ability to sort track list results via ^S" in search and browse views
  • Fixed #173: Show song artist and title in the terminal titlebar
  • Fixed #299: Windows drives disappear in directory browser after checking/unchecking "show dotfiles" option.
  • Fixed #257: Added an option to hide the command bar when not in command mode
  • Backported SchemaOverlay from upstream cursespp and use it in PluginsOverlay.
  • Added an advanced settings to the settings view and re-arranged things a bit.
  • musikcore:
  • Fixed #290: A brand new transcoder implementation powered by ffmpeg that supports ogg, opus, aac, flac, wavepack, and wma files. mp3 transcoding is still handled by libmp3lame.
  • Fixed a bug in FfmpegDecoder that could result in a pre-mature / incorrect EOF error.
  • Fixed #294: we weren't properly querying the local DB for lyrics.
  • Fixed #293: bug parsing disc number in AAC files.
  • FIxed #298: bug decoding APE files. changes also include a complete refactor and overhaul of the FfmpegDecoder plugin to use modern, non-deprecated ffmpeg APIs.
  • Fixed #160: added support for WAV and AIF files.
  • Fixed #133: properly label and sort blank / empty category names as [unknown] and ensure they are returned at the bottom of their respective lists.
  • musikdroid:
  • Allow for transcoder format selection in musikdroid's settings screen. (Part of #290)
  • Upgraded musikdroid to use the latest stable Android Studio and other dependencies (ExoPlayer, AndroidX, etc), plus a bunch of compiler warning fixes.
  • Fixed #296: notification not dismissed on stopping playback on some devices running Android 10

New in musikCube 0.70.0 (Oct 29, 2019)

  • Musikcube:
  • New MPRIS plugin for controlling playback on Linux (brunosmmm)
  • 64-bit binaries for Windows (note: Milkdrop only supports 32-bit)
  • Ru_RU update (adem4ik)
  • It_IT update (alexpovel)
  • Chocolately install instructions (majkinetor)
  • FreeBSD install instructions (0mp)
  • Dependency upgrades on Windows (libcurl, PDCurses, libogg, LAME, ffmpeg)
  • A couple small tweaks / fixes to widget focus behavior
  • Raspberry Pi 4 support
  • Debian Buster support
  • Ubuntu Eoan support
  • Ensure release binaries are stripped on macOS and Linux
  • Musikdroid:
  • Code cleanup and refactors with clearer names for major subsystems
  • Dependency upgrades, including ExoPlayer and AndroidX libraries

New in musikCube 0.65.0 (May 4, 2019)

  • Musikcube:
  • Removed vcredist runtime requirement on windows
  • Added support for Ubuntu Disco
  • Added support for Fedora 30
  • Prepared for lyrics integration, but still waiting for an audd.io key.
  • Musikdroid:
  • Added a new "offline" tab to the browse screen
  • Moved settings and other overflow options to the left side of the main screen's toolbar.
  • Added settings > advanced > diagnostics screen to show app runtime, wakelock acquisition time and status, and service status.
  • Added a "download" option for song rows -- this can be used to download songs for ringtones, or for playback in offline players.
  • Added the ability to seek playback on secondary screens
  • Removed some old settings that are no longer useful
  • Updated to AndroidX

New in musikCube 0.64.1 (Mar 21, 2019)

  • Fixed a bug where notification tray icon wasn't getting set properly.

New in musikCube 0.63.0 (Feb 19, 2019)

  • musikcube:
  • fixed a bug in pulseout where we were unable to recover from restarting the pulseaudio daemon without restarting the app (or switching output plugins)
  • fixed bug where opus files with an ogg extension weren't being detected properly. added scaffolding for fixing this for other formats in the future.
  • fixed a Win32 file permission bug in gmedecoder
  • fixed FreeBSD user agent when performing update check
  • updated ru_RU translation (adem4ik)
  • fixed a missing sndio #include (Kistelini)
  • musikdroid:
  • changed general music browse experience to be tab-based with with modern scrolling behaviors. this results in fewer clicks to find music and more screen real estate.
  • fixed elusive bug that would cause lock screen controls to stop functioning sometimes, on some devices.
  • massive cleanup and refactor to old code, making it more idiomatic, modular and easier to compose into different experiences.

New in musikCube 0.62.0 (Jan 24, 2019)

  • musikcube:
  • fixed a crash in CoreAudioOut when parsing unnamed output devices (Porco-Rosso)
  • fixed a crash in macosmediakeys initialization (Porco-Rosso)
  • fixed a bug where long path names could crash on Linux systems (the-eater)
  • removed bash dependency from wrapper scripts (hectorm)
  • musikcubed:
  • added --foreground command line argument that instructions the daemon to not not fork(), and run in the foreground instead.

New in musikCube 0.61.0 (Jan 14, 2019)

  • musikcube:
  • Added chiptunes support via Game_Music_Emu! supported formats include: vgm, gym, spc, sap, nsfe, nsf, ay, gbs, hes, and kss
  • Added macmediakeys plugin; macOS users can play/pause/resume/skip tracks using the media keys on the keyboard.
  • Fixed a couple minor bugs related to "add to playlist" context menu actions.
  • Substantially improved metadata indexing performance for large collections
  • Ensure all utf8 strings are sanitized immediately before inserting them into the database. this wasn't being done properly before, and could lead to weird crashes when trying to display metadata with invalid strings.
  • Added the ability to disable album artist -> artist metadata fallback. set DisableAlbumArtistFallback to false in ~/.settings.json (the-eater)
  • Many additional small indexer bug fixes.
  • musikcore:
  • Added the concept of "infinite" streams
  • sdk:
  • IIndexerSource::Scan() now receives a list of source paths.
  • Added IIndexerSource::NeedsTrackScan(). implementations may override this and return false to provide a hint to the indexer engine that the plugin does not need to receive a callback to update each individual track.
  • Added IIndexerWriter::CommitProgress(). by default the indexer creates and commits a single transaction per source; plugins can manually commit incremental progress using this method.
  • Added IIndexerWriter::GetLastModifiedTime() so plugins can query the last modified date for a track by externalId.

New in musikCube 0.60.1 (Jan 2, 2019)

  • Musikcube:
  • Fixed m4a playback
  • Added support for aac and alac playback
  • Refactored sndio output to be more resilient against buggy drivers
  • Added support for alsa in FreeBSD via -DENABLE_ALSA=true CMake switch.
  • Musikdroid:
  • Fixed crash on startup on some versions of Android. ugh.

New in musikCube 0.51.0 (Aug 28, 2018)

  • musikcube:
  • added a new "gruvbox" theme (https://github.com/morhetz/gruvbox)
  • added the ability to graphically configure plugin properties via new SDK ISchema interface.
  • added the ability to right click entries to display their context menu
  • updated the Russian translation (adem4ik)
  • fixed a bug where shutdown may be delayed while the indexer is running
  • fixed a couple strings that were not properly localized
  • fixed a bug that could cause overlays to not always properly disappear
  • fixed a bug in the win32 milkdrop distribution where the preferred default font wasn't getting included
  • musikdroid:
  • updated to compile against Android Studio 3.1.4
  • server:
  • fixed a crash while querying play queue tracks that have been removed from the library.
  • sdk:
  • added the ability for plugins to provide configuration schemas that can be configured by the user in the gui. see sdk/ISchema.h

New in musikCube 1.0 Final (Nov 30, 2010)

  • added: made "Collected" its own library with its own playlists
  • added: improved selection box "type ahead" filtering
  • added: selection boxes during search and viewing modified tags
  • added: ability to set file assocations in the Preferences window
  • added: wma and mpc playback plugins
  • added: added updated Winamp Emulator plugin
  • added: customizable global hotkeys
  • added: tango icons
  • added: better volume control
  • added: Yann Le Moigne's windows media key patch
  • added: view -> selection boxes
  • added: theme editor dialog. File -> Theme Editor
  • added: ability to title a NetRadio when you add it
  • added: light playback icon theme
  • changed: rearranged main menu bar to be more coherent
  • changed: make source devices view hidden by default
  • changed: better theme support when drawing the currently playing song.
  • changed: playlist 'drag and drop reorder' color
  • changed: standardized appearance and workflow of all dialogs
  • changed: "musik" in sources panel renamed "browse"
  • changed: root items in the sources panel are now capitalized
  • changed: sources scrollbar draw location
  • changed: sources items now end with an ellipsis if text is not long enough to fit within the draw region (example: long playlist names)
  • changed: moved sources window toggles to the main "View" menu
  • changed: rearranged the file menu
  • changed: disallow 100% transparency
  • fixed: next artist/next album hotkeys
  • fixed: bug where tray icon would not be displayed properly
  • fixed: tag dialog prompts for changes if selected item changes
  • fixed: detaching device while playing from it
  • fixed: browsing playlists as libraries
  • fixed: certain sources drag and drop errors
  • fixed: font loading issues
  • fixed: nasty crash with extremely long comments (or other fields)
  • fixed: BringWindowToTop on file drop
  • fixed: font glitch during drag and drop in playlist
  • fixed: selection boxes now update properly after a playlist is deleted
  • fixed: scrollbar not appearing/disappearing in the sources window
  • fixed: miniPlayer's window is musikCube, not the desktop.
  • fixed: miniPlayer window not being initialized completely if no song playing
  • fixed: bugs regarding removing songs from the library via selection boxes
  • fixed: sorting by time added and last played works correctly now
  • fixed: OnDragLeave() not being properly handled & leaving DND artifacts around
  • fixed: NetRadio works once again
  • fixed: NetRadio playlist not refreshing after adding a new station
  • fixed: 'not playing' text shifted slightly on first launch.
  • fixed: make sure to 'unhighlight' last played song when playback stops
  • fixed: last of the theming related color issues
  • fixed: no longer have to restart musikCube if you change your system's theme
  • fixed: FLAC bug introduced in 1.0rc2
  • fixed: rare crash on exit when running debug build
  • fixed: minor auto capitalize bug
  • fixed: "Show in Explorer" actually selects the song now
  • fixed: disallow drag and drop from Now Playing to Now Playing
  • fixed: disallow drag and drop from Playlist to Same Playlist
  • fixed: cleaned up more drag and drop code
  • removed: focus follows cursor option
  • removed: unnecessary dialogs from the resource file
  • removed: "Save Playlist" from the File menu. This is now done automatically.
  • removed: dead and unused accelerators
  • fixed: core_net: added BASS_STREAM_META to request that servers send metadata
  • added: core_net: added BASS_STREAM_AUTOFREE (can't hurt...)
  • fixed: musikCore: last character of metadata from netradio streams was being dumped due to incorrect string pointer math
  • fixed: musikCore: don't call MetaDataChanged() unless the metadata actually changed in some way, preventing balloon popup and tunage from getting a hit every 2-5 seconds on some netradio streams

New in musikCube 1.0 RC 2 (Nov 30, 2010)

  • added: installer now downloads additional format plugins from the internet when selected
  • added: users can now physically copy songs to devices by means of drag and drop: simply grab a group of songs and drop them on the device.
  • added: drop feedback when dragging items over items in the sources control
  • added: drop feedback when rearranging playlist items
  • added: "at" to default auto-capitalize list.
  • changed: separated core_Internal.dll into core_mp3.dll, core_ogg.dll, core_flac.dll, core_net.dll, core_cdda
  • changed: default song highlight color
  • changed: layout of batch retag dialog
  • fixed: mini player to always display correct song
  • fixed: some glitches when mixing songs with different libraries in Now Playing.
  • fixed: the infamous 'tunage hanging' problem
  • fixed: bug where playlist highlighting was ignored
  • fixed: search results are now ordered properly
  • fixed: database would not load if there were certain characters in the username
  • fixed: devices are now listed in the same order they appear in explorer
  • fixed: songs would not play if a device's letter changed
  • fixed: device synchronization would fail if device's drive letter changed.
  • fixed: songs would no longer play on a device if it's drive letter changed.
  • fixed: multiple bugs related to cd playback
  • fixed: sources drag/drop handling completely rewritten
  • fixed: miniPlayer's slider color matches musikCube's.
  • fixed: glitchy sources behavior when showing/hiding nodes
  • fixed: drag and drop registration for playlist view instead of list
  • fixed: redraw issue with slider controls
  • fixed: small playlist drop/arrange bug where songs would be reordered off by 1
  • removed: apply button from the preferences

New in musikCube 1.0 RC 1 (Nov 30, 2010)

  • new installer. props to insomnia.
  • fixed the random icon
  • fixed the path synchronization conflict resolution routine
  • fixed --nographics mode for new now playing layout
  • fixed balloon corruption up on very long song titles
  • fixed item selection behavior while searching or renaming an item.
  • fixed auto capitalize for words starting with (,{,[ characters
  • BatchChgCaseTask.h/.cpp: 50% less stupid
  • fixed Alt+T for "Tags" menu not working properly
  • Always on Top shortcut key changed from Alt+T to Alt+Shift+T
  • fixed Repeat Single
  • added thumbs to the slider controls
  • made the time slider much smoother (no longer jumps around)
  • fixed weird "click to set time twice without moving mouse" bug
  • 'Play Next' changed to 'Queue as Next' in context menus
  • added File -> Online Help to take user to musikCube's Wiki
  • Tag From Filename no longer obliterates other tags in the database
  • fixed slider control overdraw
  • fixed WallaTu's Tag From Filename bug
  • fixed a bug in the TaskQueue
  • fixed synchronization bug
  • fixed a memory leak in RemoveOldTask
  • fixed bug where net radio filename couldn't be edited.
  • fixed 'first track in playlist skipped' bug
  • fixed long run random bug
  • fixed threading glitch where progress would start at 99%, then drop to 0% and proceed normally.
  • "File not found" now displayed in tag edit dialog if the current file is missing or offline.
  • revamped about box
  • removed mcAmp from distribution. will be available separately.
  • sqlite upgraded from 3.2.2 to 3.2.6
  • taglib upgraded from 1.3.1 to 1.4

New in musikCube 0.92.5 (Nov 30, 2010)

  • fixed support for mapped network drives.
  • fixed filename case in the Tag Properties window
  • fixed some "play next" crashes
  • fixed the crash when moving playlists down (thanks DiGiTaLFX)
  • fixed some potential bugs with musikCore::Library creating crossfaders, equalizers, and playlists.
  • fixed bug where equalizer settings were not being saved on a per song basis when "Same Equalizer for all Songs" was not checked.
  • fixed bug where all selection boxes could disappear. if they are all closed, they will be reset to default upon next launch
  • fixed a bug where plugging in a removable device when hidden would cause the sources panel to draw scrambled
  • fixed the bug where hiding devices wouldn't take effect until musikCube was restarted
  • fixed bug where press next or prev track would start playback if stopped.
  • fixed a bug where synchronization would fail if the collectes sources item was selected.
  • fixed filesize display in playlist: "MB" instead of "mb"
  • fixed equalizer drawing corruption when switching between 6 and 18 band mode.
  • pressing DELETE in the collected window actually deletes them from the collected library.
  • major overhaul of the now playing control
  • fixed a lot of bugs relating to mcAmp, including those that made the sound suddenly cut out.
  • volume in the main UI now updates when the mini player updates volume.
  • added Fine Fine's random icon
  • core_APE added to the musikCore CVS tree
  • cube_mcAmp added to the musikCube CVS tree
  • cube_miniPlayer added to the musikCube CVS tree

New in musikCube 0.92.4 (Nov 30, 2010)

  • added right click -> play next, play now, enqueue, replace now playing, and replace now playing and play in both the playlist and selection box views.
  • fixes the bug where the tray icon would disappear if explorer crashed
  • fixes some bugs where the database would be queried twice instead of once.
  • fixes a nasty bug where deleting files from multiple libraries could work incorrectly.
  • fixes bug where rating a song in the playlist may not work correctly
  • fixes bug where incorrect tag properties could be displayed
  • fixes some random crashes people were experiencing with the option "double clicking an item queues it in now playing" option selected.
  • pressing F5 requires the selected dynamic playlist
  • dropping files on a device drives no longer crashes
  • times played is now incremented when the song starts, instead of when it ends.
  • clicking on the time elapsed in the playing area now toggles display between time elapsed and time remaining
  • added code to put list of currently used genres from the database at the top of the genre pulldown in the tag properties dialog box
  • wrapped OpenURL in a try...catch block -- Tunage should no longer throw a message box if it fails due to lack of internet connection.

New in musikCube 0.92.3 (Nov 30, 2010)

  • playlist ordering was removed
  • tunage vars $RATING and $GENRE added
  • reload tags no longer hangs
  • TagLib moved to core_Internal.dll and outside musikCore
  • added sources type "Collected" to show a history of songs played, including those that aren't in your main library. you can also use this sources item to modify songs that do not exist in the main library.
  • "Show All %" changed to "Show All Songs"
  • selection box "Show All %" bug(s) fixed
  • fixes typo "existant" should be "existent"
  • fixes the bug where dynamic playlists would switch around if they were selected and a new song was started.
  • fixes buggy searching while sources panel is scrolled
  • enabled marquee selection in playlist.
  • fixes a crash when upgrading from musikCube 0.91.x
  • double clicking fields in selection boxes now queues them in now playing if "Double Clicking a Song Queues it in Now Playing" is selected in the preferences.
  • currently playing songs are ALWAYS highlighted now.
  • fixes strange bug where two identical items in the now playing would be drawn with a slightly different font.
  • fix for sources plugin integration. OnSources() is only sent if user left click the sources item. also added WM_SOURCESUNSEL message so plugins can defocus items in the sources panel.
  • fixes a long running problem where new users couldn't add files to their database. this only occured when non ASCII letters were in the user's username.
  • fixes tray icon crash
  • added balloon tip "pop" sound

New in musikCube 0.92.2.1 (Nov 30, 2010)

  • equalizer now uses Shibatch (shibatch.sf.net) technology (thanks Wraith)
  • mcAmp uses [ artist - title ] instead of [ title - artist ]
  • cd ripper re-designed to work at 800x600
  • fixes potentially dangerous bug where Copy To.. or Move To.. overwrites files without conformation.
  • adds "notes" field to dynamic playlist dialog
  • fixes some bloat in the playlist popup menu
  • right click -> play selected in playlist view
  • right click -> play selected in selection boxes work again
  • double click to queue song adds them to the bottom of the list, instead of after the currently playing song.
  • "by artist" and "from the album" are no longer displayed in the task tray, balloon tips, or now playing bar if no artist or album information exists.
  • fixes a bug where creating a playlist, going to a device, then back to the library wouldn't show updated playlists.
  • fixes bug where deleting last dynamic or stanard playlist in "device" mode would focus the main library, instead of the active device.
  • use derek's new main icon!
  • about box re-designed
  • moved version from the help menu to the about box
  • changed appearance of time and volume sliders
  • adds the ability to specify a freedb server in the preferences.
  • capitalizes the first letter of every word in buttons of dialogs
  • fixes bug where sources scrollbar wouldn't get shown or disappear until window was resized.
  • added missing OnSeek() plugin event.
  • fixes the bug where songs from multiple libraries could not be queued and played at the same time.
  • bug fixes relating to unplugging and adding devices while musikCube is running.
  • removes some stupid options relating to transparency.
  • ctrl + f starts the "Search" sources entry
  • bug where pause button wouldn't refresh properly
  • bug where expanding and hiding items in the sources could cause a crash.
  • upgraded sqlite to 3.2.1
  • upgraded BASS to 2.1.0.5
  • ordering of dynamic and standard playlists are now remembered
  • added versions of embedded components in about box
  • netstream tags are now displayed and updated
  • equalizer presets work again
  • File -> Database -> Import Database changed to File *> Database *> Change Database