mirror of
https://github.com/clangen/musikcube.git
synced 2024-11-19 11:10:52 +00:00
1100 lines
42 KiB
Plaintext
1100 lines
42 KiB
Plaintext
0.60.0
|
|
|
|
musikcube:
|
|
* added an equalizer! press `ctrl+e` to activate and configure.
|
|
* removed most default decoder plugins and replaced them with one powered by
|
|
`ffmpeg`. this adds support for `opus`, `wavepack`, `musepack` and
|
|
`windows media audio` files.
|
|
* added a new `enable transparency support` in settings that can be enabled by
|
|
users who have a terminal with a transparent/translucent background.
|
|
* added the ability to customize the key used to quit the app. it is currently
|
|
not exposed in the ui, but it can be changed by editing
|
|
`~/.musikcube/settings.json` and updating the `AppQuitKey`.
|
|
* added feodra 29 support (dvdmuckle)
|
|
* fixed configuration script bugs that were causing breakage in FreeBSD
|
|
* migrated to non-bundled `taglib` for macOS and most Linux distributions
|
|
* fixed a ton of minor ui bugs
|
|
* updated win32 dependencies: libressl, libcurl, libboost, and pdcurses
|
|
|
|
musikdroid:
|
|
* updated to compile against the latest tooling
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
0.51.0
|
|
|
|
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`
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
0.50.0
|
|
|
|
musikcube:
|
|
* added last.fm scrobbling support (settings > last.fm)
|
|
* added a built-in hotkey viewer and editor (settings > key bindings)
|
|
* added basic mouse handling support -- click / double click / mouse wheel
|
|
works mostly the way you'd expect
|
|
* added an Italian translation (anonik9900)
|
|
* added a Russian translation (adem4ik)
|
|
* added a "proportional seek" functionality (benterris)
|
|
* fixed a bug where the "Source Code Pro" font was not being included in the
|
|
win32 build with milkdrop.
|
|
* added support for Ubuntu Bionic
|
|
* added support for Fedora 28
|
|
* added windows theme support so the menu bar draws nicer
|
|
* updated PDCurses (windows build)
|
|
* retired binary distribution for Raspbian Jessie (Stretch still supported!)
|
|
|
|
musikdroid:
|
|
* fixed a handful of random crashes that showed up in fabric.io
|
|
|
|
server:
|
|
* fixed a bug where the same playback overview may be broadcast multiple
|
|
times.
|
|
* fixed a bug where `set_volume` was not returning a response
|
|
* fixed a couple bugs where negative limits may be returned
|
|
|
|
sdk:
|
|
* added a simple HttpClient wrapper around libcurl that can be used by plugins
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
0.42.0
|
|
|
|
musikcube:
|
|
* added the ability to browse by directory! add music directories to the list
|
|
of `indexed paths` in the settings screen, then press `d` in browse view to
|
|
browse.
|
|
* added a new setting to save session on exit. when enabled, musikcube will
|
|
remember the last selected view and the current playback context, and restore
|
|
everything on next app start.
|
|
* better first-run experience for new Windows users:
|
|
- included "Source Code Pro Medium" font, and use it by default.
|
|
- updated the default font size to be a bit larger.
|
|
- hid the main menu bar with "Font" and "Paste" buttons; this functionality
|
|
is still available by clicking the musikcube icon in the upper left portion
|
|
of the window.
|
|
* added scrollbar support to ListOverlay
|
|
|
|
musikdroid:
|
|
* added the ability to automatically transfer playback from mobile to server
|
|
when headset (or bluetooth device) is disconnected.
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
0.40.0
|
|
|
|
musikcube:
|
|
* `^R` now displays an indexer dialog that allows the user to choose between a
|
|
quick scan and full metadata rebuild.
|
|
* made checkboxes prettier.
|
|
* fixed playlist track numbers -- they should always be sequential, not pulled
|
|
from metadata.
|
|
|
|
musikcubed:
|
|
* `NEW!`: run musikcube as a daemon on macOS, Linux and BSD.
|
|
|
|
musikdroid:
|
|
* added remote server configuration! users can now change output drivers and
|
|
devices, ReplayGain and preamp settings, transport type, and schedule the
|
|
metadata indexer from `musikdroid`. see: toolbar menu > remote management.
|
|
* promoted `playlists` to main screen, and moved the `play queue` button to
|
|
stand out a bit more.
|
|
* added the ability to query albums by extended metadata categories, including
|
|
"composer", "producer", "year" and more. see: toolbar menu > categories.
|
|
* removed legacy playback engines. only `ExoPlayer Gapless` is supported now.
|
|
* show a warning if the server is running an older api version.
|
|
* fixed a crash when streaming play queue contains one file, and "random" is on.
|
|
|
|
musikcore:
|
|
* added the following functionality to IEnvironment:
|
|
- query output devices and drivers
|
|
- select the system's default output device and driver
|
|
- re-index and re-build library metadata
|
|
- get/set preamp and ReplayGain settings
|
|
- get/set transport type (gapless, crossfade)
|
|
* switching output devices, transport, and ReplayGain settings no longer
|
|
abruptly stop playback. there may generally be a short pause, but playback
|
|
will continue where it left off.
|
|
* removed `musikglue` project. move functionalilty into `musikcore`.
|
|
* bumped sdk version to 14
|
|
|
|
server:
|
|
* messages for new IEnvironment updates (see above)
|
|
- `run_indexer`
|
|
- `list_output_drivers`
|
|
- `set_default_output_driver`
|
|
- `get_gain_settings`
|
|
- `set_gain_settings`
|
|
- `get_transport_type`
|
|
- `set_transport_type`
|
|
* play queue snapshotting; remote clients can use this functionality to help
|
|
transfer playback context from server to client.
|
|
- `snapshot_play_queue`
|
|
- `invalidate_play_queue_snapshot`
|
|
- `play_snapshot_tracks`
|
|
* all messages that start playback can now be passed a `time` parameter, which
|
|
will seek initial playback to the specified time (in seconds).
|
|
* `query_play_queue_tracks` now accepts an optional parameter called `type`;
|
|
allowed values are `live` (default) and `snapshot`.
|
|
* bumped api version to 14
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
0.35.0
|
|
|
|
infastructure:
|
|
* automated Linux builds via CircleCI! (dvdmuckle)
|
|
|
|
musikcube:
|
|
* added ReplayGain support. settings > replay gain to configure. when support
|
|
is active, and ReplayGain is applied, a green "RG" symbol will appear in
|
|
the transport view next to the volume slider.
|
|
* added initial support for FreeBSD using sndio. big thanks to gregf for the
|
|
support and troubleshooting.
|
|
* added scroll indicators to list windows (disabled on FreeBSD for now)
|
|
* exposed extended metadata -- browse by new fields like year, composer,
|
|
language, etc. press `6` in library > browse view.
|
|
* fixed a couple bugs in the metadata indexer -- extended metadata properties
|
|
were not always getting scanned and stored properly.
|
|
* fixed build paths so app can be built against MacPorts. (reynhout)
|
|
* fixed a bug where themes were getting clobbered after every reinstall on some
|
|
platforms. users can now put their custom themes in `~/.musikcube/themes`.
|
|
* made overlay title text alignment consistent across (center horizontal).
|
|
|
|
musikcore:
|
|
* database and query updates to support track, category, and album queries
|
|
with multiple predicates. (e.g. all artists with composer=X AND year=Y).
|
|
* new `sndio` output plugin. this is the default output for FreeBSD, and is
|
|
optional (disabled by default) on Linux.
|
|
* new `ffmpeg_decoder` plugin. not enabled by default, but will probably
|
|
eventually replace nomad, ogg, mp4, and flac plugins.
|
|
|
|
server:
|
|
* api support for multi-predicate queries.
|
|
|
|
musikdroid:
|
|
* fixed bug where non-transcoded audio would not always play properly.
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
0.31.0
|
|
|
|
musikcube:
|
|
* added support for Ubuntu Artsy
|
|
* added preliminary audio encoders (MP3, OGG/Vorbis)
|
|
* fixed and exposed album-level artwork. previously it was track-only.
|
|
|
|
musikdroid:
|
|
|
|
* gapless playback (for supported media)! enable in settings > playback
|
|
engine > "ExoPlayer Gapless (experimental)"
|
|
* playlist create / rename / update / delete support
|
|
* album art is now displayed in album rows when browsing
|
|
* context menus on most screens with the ability to switch between related
|
|
content (e.g. albums by this artist, artists in this genre, etc)
|
|
* added a simple "spotlight" tutorial for new users that explains switching
|
|
between remote and streaming playback modes.
|
|
* major refactor to the entire code base, including the following:
|
|
- a brand new data layer interface based on RxJava. this should position
|
|
the app for lots of new, fun stuff in the future.
|
|
- a new dependency injection implementation
|
|
- a view component layer for sharing functionality across screens
|
|
* updated Glide from v3 -> v4
|
|
* updated to Android Studio 3.0.1 and related tooling
|
|
* fixed notification icon color
|
|
|
|
sdk:
|
|
|
|
* removed all Destroy() methods, standardized on Release() across the board
|
|
* added the following to ISimpleDataProvider:
|
|
- QueryCategoryWithPredicate()
|
|
- SavePlaylistWithIds()
|
|
- SavePlaylistWithExternalIds()
|
|
- SavePlaylistWithTrackList()
|
|
- AppendToPlaylistWithIds()
|
|
- AppendToPlaylistWithExternalIds()
|
|
- AppendToPlaylistWithTrackList()
|
|
- RemoveTracksFromPlaylist()
|
|
- RenamePlaylist()
|
|
- DeletePlaylist()
|
|
* added new interfaces:
|
|
- IValue
|
|
- IEncoder
|
|
- IEncoderFactory
|
|
* removed interfaces:
|
|
- IRetainedTrack
|
|
- IRetainedTrackWriter
|
|
* renamed interfaces
|
|
- IMetadataMap -> IMap
|
|
- IMetadataMapList -> IMapList
|
|
- IMetadataReader -> ITagReader
|
|
- ITrackWriter -> ITagStore
|
|
- IMetadataValue -> IValue
|
|
- IMetadataValueList -> IValueList
|
|
|
|
server:
|
|
|
|
* renamed project from `websocket_remote` to `server`, and promoted to a
|
|
top-level component in the workspace
|
|
* added correct LAME headers after transcoding to fix gapless playback of
|
|
encoded files.
|
|
* added the following messages to the websocket server:
|
|
- save_playlist
|
|
- rename_playlist
|
|
- delete_playlist
|
|
- append_to_playlist
|
|
- remove_tracks_from_playlist
|
|
- query_tracks_by_external_ids
|
|
* renamed the following track fields:
|
|
- visual_genre_id -> genre_id
|
|
- visual_artist_id -> artist_id
|
|
* added the ability to query album art by id
|
|
* fixed HttpServer to ignore non-GET verbs
|
|
* added "predicated category queries", i.e. "all the albums for this artist" or
|
|
"all the artists in this genre", etc.
|
|
* added "artist" and "artistId" to album response (previously it was only
|
|
return "albumArtist" and "albumArtistId")
|
|
* fixed bugs related to HTTP "Range" header parsing and generation
|
|
* fixed a bug in the websocket functionality that was returning invalid
|
|
"invalid_request" responses... yeah.
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
0.26.0
|
|
|
|
* added the ability to rebind UP, DOWN, LEFT, RIGHT, PAGE_UP, PAGE_DOWN, END and
|
|
HOME keys to allow for VIM-style key bindings
|
|
* fixed a focus related bug when switching between main views
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
0.25.2
|
|
|
|
musikcube:
|
|
|
|
* upgraded to a new version of the windows sdk (10.0.15063.0)
|
|
* added some missing checks in WideCharToMultiByte (and MultiByteToWideChar)
|
|
that could result in access violations on windows
|
|
* added a hidden setting for enabling indexer logging (set IndexerLogEnabled in
|
|
settings.json)
|
|
|
|
musikdroid:
|
|
|
|
* added the ability to rename connection presets
|
|
* fixed a crash in SystemService related to unregistered intents
|
|
* upgraded to android studio beta 5
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
0.25.1
|
|
|
|
musikcube:
|
|
|
|
* fixed a bug in FlacDecoder::Exhausted that was causing issues with the
|
|
server's transcoder.
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
0.25.0
|
|
|
|
musikcube:
|
|
|
|
* fixed a crash in the m4a decoder
|
|
* updated some linux dependencies
|
|
* added a build for raspbian stretch
|
|
|
|
musikdroid:
|
|
|
|
* fixed playback notification so it works properly with Android O
|
|
* updated settings ui to include a way to save and load connections
|
|
* fixed a couple random crashes that surfaced in fabric
|
|
* removed android-specific dagger cruft; just use vanilla dagger
|
|
* updated support library and build tooling versions
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
0.24.0
|
|
|
|
musikcube:
|
|
|
|
* added the ability for the user to select the output device (i.e. soundcard
|
|
or port) audio will be rendered to. previously we always used the system's
|
|
default device.
|
|
* fixed some transcoder and cdda bugs that prevented streaming cd audio to
|
|
remote (e.g. android) clients.
|
|
* fixed a (potential) memory leak in the indexer when extracting album artwork
|
|
* matthiaskrgr pointed out some memory leaks, and KTRosenberg fixed them.
|
|
|
|
musikdroid:
|
|
|
|
* fixed (potential) crash when trying to display the update check dialog.
|
|
|
|
low-level:
|
|
|
|
* fixed a bug in CddaDataStream where the active reader would not have exclusive
|
|
access to the output device.
|
|
* added new SDK interfaces for enumerating audio devices that are available to
|
|
output drivers.
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
0.23.0
|
|
|
|
musikcube:
|
|
|
|
* fixed album artist support for FLAC, OGG, and M4A files. users with existing
|
|
libraries that are having problems should re-import their files.
|
|
* fixed CDDB lookup for mixed-mode discs in Windows
|
|
* fixed a bug in the low-level audio processing that could leak memory until
|
|
the playing track completed
|
|
* allow M-ENTER to also activate the context menu for album header rows.
|
|
(ENTER still works as well)
|
|
* fixed the NullOut plugin -- it was not taking channel count into account when
|
|
calculating buffer duration
|
|
* added support for Manjaro Linux
|
|
|
|
musikdroid:
|
|
|
|
* fixed a crash in SystemService::onStartCommand where the Intent's "action"
|
|
was not being null-checked.
|
|
* suppressed a strange crash related to the Room library not initializing the
|
|
database properly
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
0.22.0
|
|
|
|
musikcube:
|
|
|
|
* fixed compile issues and startup crashes on Fedora, ArchLinux and openSUSE
|
|
* fixed a bug where playback speed may be incorrect for audio files that do
|
|
not have exactly two channels.
|
|
* fixed a crash that could occur in the WASAPI output plugin for audio streams
|
|
with very low sampling rates
|
|
* fixed crash when parsing "TCOP" id3v2 tag (ilitirit-za)
|
|
* fixed double-wide character truncation and ellipsizing (stephanwilliams)
|
|
* added a new setting to disable startup update checks
|
|
* sync'd PDCurses with the upstream repo
|
|
|
|
musikdroid:
|
|
|
|
* fixed a couple (relatively obscure) crashes
|
|
* updated build environment to Android Studio Canary 8 with Support Libraries
|
|
26.0.0 (final)
|
|
|
|
low-level:
|
|
|
|
* fixed the way we define C++ flags in CMakeLists.txt so it works across more
|
|
platforms, e.g. FreeBSD (geier)
|
|
* fixed GetApplicationDirectory() null termination error (mkilgore)
|
|
* updated the way we calculate audio buffer sizes and counts to ensure there
|
|
is always enough headroom for audio with very low sampling rates
|
|
* updated the mpg123 decoder so it compiles and runs again against the latest
|
|
version of the library and musikcube sdk.
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
0.21.1
|
|
|
|
* updated a few of the symbols used for drawing things like dropdowns and
|
|
checkmarks so they work with a wider variety of fonts
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
0.21.0
|
|
|
|
* musikbox binary renamed to musikcube. build scripts, documentation, website
|
|
and everything else updated accordingly.
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
0.20.2
|
|
|
|
* "add tracks", "add category", and "select playlist" context menus now remember
|
|
the last selected item for 60 seconds. this makes adding multiple things to
|
|
the same playlist (or play queue) much easier.
|
|
* fixed startup crash on older versions of macos
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
0.20.1
|
|
|
|
* arrow keys can now select items in the shortcuts window while focused.
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
0.20.0
|
|
|
|
* added play queue "hot-swap". you can now swap a different list of tracks
|
|
into an active play queue without disrupting playback. if the hot-swap
|
|
action finds the playing track in the new list, it'll be automatically
|
|
selected as the active track. focus a tracklist and press `M-a` to hot-swap.
|
|
* fixed a bug that was causing extended track metadata to be parsed incorrectly
|
|
examples include bitrate, channels, lyrics, etc.
|
|
* fixed a bug where the category list view may jump around a bit during the
|
|
indexing process.
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
0.19.2
|
|
|
|
* start the metadata indexer immediately after adding or removing paths from
|
|
the settings view. this functionality was previously disabled due to
|
|
performance issues and a bug with the indexer. these problems have all been
|
|
addressed.
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
0.19.1
|
|
|
|
* re-introduced the multi-threaded indexer! this makes metadata scanning quite
|
|
a bit faster on some systems
|
|
* fixed a bug where the selected item in browse view may change during the
|
|
indexing process if more music is added to the library
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
0.19.0
|
|
|
|
* fixed a bug where the wrong (or multiple) items may be highlighted in browse
|
|
view if they all have the same name
|
|
* fixed a bug where seeking while paused wouldn't update the ui properly in
|
|
some cases, leaving the paused animation running while audio was playing
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
0.18.0
|
|
|
|
user-facing:
|
|
|
|
* added first-class support for browse playlists:
|
|
- press `5` in library browse view to switch to playlists
|
|
- press `M-r` to rename the selected playlist
|
|
- press `M-s` to save the selected playlist
|
|
- highlight the left pane, and press `DEL` (`BACKSPACE` on macos) to delete
|
|
the selected playlist
|
|
- press `M-up` (`CTRL-UP` on macos) to move the selected track up
|
|
- press `M-down` (`CTRL-DOWN` on macos) to move the selected track down
|
|
- highlight the right pane, and press `DEL` (`BACKSPACE` on macos) to delete
|
|
the selected track from the playlist
|
|
* added view titles in library browse mode, now playing, and search views
|
|
* added auto-update check functionality to notify users when a new version is
|
|
available. also added manual update check to settings
|
|
* rearranged some items on the settings screen
|
|
* removed "playback mode" from musikdroid settings screen. we have a quick
|
|
toggle now!
|
|
|
|
low-level:
|
|
* ported musikdroid to kotlin. goodbye, java.
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
0.17.2
|
|
|
|
user-facing:
|
|
|
|
* fixed a bug where usernames with non-latin characters may cause the
|
|
`websocket_remote` and `httpdatastream` plugins to crash during startup.
|
|
* fixed startup issues on windows computers that do not have the visual c++ 14
|
|
runtime installed.
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
0.17.0
|
|
|
|
* added code to win32 build that ensures only a single instance is running
|
|
* fixed auto-dpi scaling in windows so `musikbox` displays properly out of the
|
|
box on high dpi (4k) displays
|
|
* added the ability to browse and play cached tracks in `musikdroid` while
|
|
offline.
|
|
* fixed a bug that was preventing the transcoder cache from functioning properly
|
|
* integrated `fabric.io` into `musikdroid` for crash reporting
|
|
* added new "empty" and "offline" view states to all screens in `musikdroid`
|
|
* fixed a couple `musikdroid` crashes in playback-related code
|
|
|
|
low-level:
|
|
|
|
* updated to boost 1.64.0
|
|
* started converting some `musikdroid` sources to `kotlin`
|
|
* added missing `track_num` field to track resources in `websocket_remote`
|
|
* fixed local cache filename generation in `musikdroid`
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
0.16.0
|
|
|
|
user-facing:
|
|
* added a toggle in the `musikdroid` toolbar for quickly switching between
|
|
remote and streaming mode
|
|
* removed volume and seek buttons; replaced with a seekbar, current and
|
|
total time indicators.
|
|
* revamped loading indicators to be less jarring
|
|
|
|
low-level:
|
|
|
|
* integrated with a customized version of the `AndroidVideoCache` library to
|
|
(hopefully) improve caching reliability.
|
|
* improved battery usage in `musikdroid`'s `SystemService`
|
|
* fixed bug where `websocket_remote` was not letting clients know when seeking
|
|
has occurred.
|
|
* deliberately under-estimate calculated `Content-Length` header when doing
|
|
on-demand transcoding. http clients seem to be more ok with this, as compared
|
|
to over-estimating.
|
|
* fixed a bug where `websocket_remote` audio server would incorrectly return a
|
|
216 status instead of a 200, confusing clients
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
0.15.0
|
|
|
|
user-facing:
|
|
|
|
* added `server settings` configuration panel to the settings screen
|
|
* added `minimize to tray` and `start minimized` options to the windows build
|
|
* a handful of small `musikdroid` bug fixes, mostly related to audio focus
|
|
and ducking.
|
|
* documented the `websocket_remote` api on the wiki
|
|
|
|
low-level:
|
|
|
|
* added authentication support to the the `websocket_remote` audio server
|
|
* found and fixed a handful of missing `websocket_remote` metadata responses
|
|
* added the ability to hot-reload plugins
|
|
* modified `IPlugin` -- every plugin must now supply a unique `guid`
|
|
* fixed a bug in Transcoder if the number of cache files was set to 0
|
|
* fixed a number of bugs that could result in undefined behavior or crashes if
|
|
views are drawn outside of their parents (or screen) bounds
|
|
* fixed a bug where input fields may stop drawing properly if the value entered
|
|
by the user exceeds the window bounds
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
0.14.0
|
|
|
|
user-facing:
|
|
|
|
* `musikdroid` enhancements:
|
|
- `pause` when headphones are disconnected
|
|
- `double tap` headset button to go to next track
|
|
- `triple tap` headset button to go to prev track
|
|
- added album art to lock screen controls
|
|
- added the ability to control streaming disk cache size
|
|
* `websocket_remote` plugin:
|
|
- added Cache-Control headers to responses
|
|
* `core`:
|
|
- found a really bad bug in the way we handle tracks in playlists. the fix
|
|
requires a rebuild of the tracks metadata, which will clear playlists, but
|
|
ensures this will never happen again in the future.
|
|
|
|
low-level:
|
|
|
|
* cleaned up more SDK interfaces, removed support for uint64 and uint32 types,
|
|
only support int64 and int32.
|
|
* fixed bugs in playlist track handling; playlist contents can now survive track
|
|
table rebuilds!
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
0.13.0
|
|
|
|
user-facing:
|
|
|
|
* added on-demand audio transcoding (downsampling) to the http server. users
|
|
can configure transcoding in the `musikdroid` client.
|
|
* fixed a bug in album id handling to properly support multiple albums with the
|
|
same name by different artists (this was only half working before).
|
|
* added ssl support to the `musikdroid` client, and instructions on the wiki
|
|
for enabling ssl on the server-side.
|
|
* added `buffering` indicators to `musikdroid`.
|
|
|
|
low-level:
|
|
|
|
* added missing IBuffer::Destroy method, and added IEnvironment::GetBuffer so
|
|
plugins can decode audio data.
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
0.12.1
|
|
|
|
user-facing:
|
|
|
|
* huge update to `musikdroid` -- it is now able to stream music from any
|
|
`musikbox` installation! see settings > playback mode.
|
|
* added cddb (actually, freedb) lookup for audio CDs
|
|
* added new "add to beginning of play queue" and "play album" context menu
|
|
options
|
|
|
|
low-level:
|
|
|
|
* fixed database upsert logic to be faster and more reliable
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
0.12.0
|
|
|
|
user-facing:
|
|
|
|
* fixed bug where "sync on startup" was not working properly
|
|
* fixed musikdroid bug where ui may get drawn in a weird state if the playing
|
|
track has an empty album name.
|
|
* fixed a bug in CddaIndexerSource that may cause tracks to linger in the
|
|
library longer than they should if the drive letter changed.
|
|
* added an http server to the `websocket_remote` plugin to serve audio data.
|
|
this completes most work required to support external, thin clients.
|
|
metadata can be queried via websocket, audio streamed over http. powered by
|
|
libmicrohttpd.
|
|
|
|
low-level:
|
|
|
|
* added HttpDataStream! finally! uses libcurl and libressl. audio data can now
|
|
be played over http/https!
|
|
* performance optimizations to metadata indexing -- drop indexes before a full
|
|
resync, then re-add them after.
|
|
* playlist tracks are now stored by external ids! this means tracks added from
|
|
third party indexer sources can be added to playlists and persisted across
|
|
rescans.
|
|
* IIndexerSources can be interrupted, and failed sources can have their changes
|
|
rolled back.
|
|
* upgraded to Windows 10 SDK and VS141 tooling
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
0.11.0
|
|
|
|
user-facing:
|
|
|
|
* added a new cd playback plugin based on new infrastructure. audio cds will
|
|
be detected and added to the library as [audio cd] and can be played like
|
|
any other tracks. (note: win32 only for now)
|
|
* added the ability to toggle between seek and scrub playback modes
|
|
* fixed a couple localized strings
|
|
* fixed a bug that could cause the currently selected item in the play queue
|
|
to jump around or be incorrect.
|
|
|
|
low-level:
|
|
|
|
* added IIndexerSource interface: plugins will be able to implement this
|
|
interface to add tracks to the library that will be indexed and
|
|
maintained like all other tracks
|
|
* added IIndexerWriter interface: IIndexerSource plugins will use this
|
|
interface to add/remove/update track info with the main app
|
|
* added IIndexerNotifier: interface used to notify the app that it needs
|
|
to be re-indexed.
|
|
* added "source_id" , "external_id", and "visible" column to the tracks
|
|
table, with appropriate indexes.
|
|
* fixed a really old indexer bug where the reported number of file scanned
|
|
was not accurate. Strange this wasn't noticed before.
|
|
* added "SetIndexerNotifier" injection method
|
|
* fixed a bug in TrackMetadataQuery -- it was unnecessarily relying upon
|
|
the paths table, which was causing query errors when the table was
|
|
empty.
|
|
* use a cache for local file paths instead of requiring an async round
|
|
trip when adding/removing
|
|
* remove use of manual "ANALYZE", it was causing strange performance
|
|
degradation issues. Instead, move to a set of PRAGMAs that instructs
|
|
sqlite to run these optimizations when necessary.
|
|
* updated ::GetInt32 and ::GetUint32 return types to be explicit as to play
|
|
more nicely with clang -- may as well, we're updating the SDK version
|
|
anyway.
|
|
* added a simple capabilities model to the playback infrastructure. This
|
|
is used to detect whether or not streams can be prefetched. For example,
|
|
CDDA cannot because of seek times while playing tracks.
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
0.10.2
|
|
|
|
* fixed clang 7.3 compile error (macOS mavericks should work again)
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
0.10.1
|
|
|
|
user-facing:
|
|
|
|
* added the ability to select album name headers in track lists. doing so will
|
|
bring up a context menu with the ability to jump to the album or enqueue the
|
|
album's tracks for playback. this also had a nice side effect of making
|
|
scrolling more fluid!
|
|
* added jumping to album/artist/genre to the selected track context menu
|
|
* fixed a really old bug that could cause lists to automatically scroll to weird
|
|
places if the window or view is resized
|
|
* directory browser now remembers which directories were previously selected,
|
|
making up navigation in the settings view smoother
|
|
* added a "list_header_highlighted_background" and
|
|
"list_header_highlighted_foreground" color theme variables
|
|
* tweaked the win32 icon so it looks a bit better on the taskbar
|
|
|
|
low-level:
|
|
|
|
* added "broadcast" message support to IMessageQueue and implementers. allows
|
|
for pub/sub like functionality
|
|
* added some new SDK interface methods to ITrack and IMetadataMap for retrieving
|
|
values other than strings (uint64, int64, uint32, int32, double)
|
|
* added localization support for "dimensions". this allows for per-locale sizing
|
|
of ui components
|
|
* fixed some old bugs in Window.cpp that could cause visibility changed
|
|
notifications to be raised unnecessarily
|
|
* added a custom PDCurses/win32a patch to further reduce CPU load and context
|
|
switching while draining the message pump
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
0.10.0
|
|
|
|
* added GeekShadow's fr_FR locale
|
|
* fixed a bug in locale loading
|
|
* fixed a bug in nomad decoder if file load fails
|
|
* updated `Player` <-> `Stream` interaction so it's possible to interrupt long,
|
|
blocking reads (e.g. if an http stream loader existed)
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
0.9.5
|
|
|
|
* added localization support
|
|
* added support for user-defined themes (solarized dark and light included as
|
|
examples)
|
|
* patched PDCurses/win32a to support the standard *nix 256 color palette
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
0.9.4
|
|
|
|
* added a "syncing metadata" banner that is displayed while the indexer is
|
|
scanning metadata
|
|
* added a "sync metadata on startup" option to the settings view
|
|
* moved the hotkey tester to its own dedicated dialog to free up some valuable
|
|
screen real estate in the settings view
|
|
* fixed `PulseOut` plugin volume adjustment to work better across a wider
|
|
range of audio cards. this should also improve crossfade quality
|
|
* fixed a very old bug that was sometimes causing delayed redraws or flickering
|
|
during layout in complex views
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
0.9.3
|
|
|
|
win32 only release:
|
|
|
|
* updated `WASAPI` output plugin to disable endpoint routing by default. it
|
|
causes a crash in some rare cases that i don't seem to be able to work
|
|
around. i see similar crashes in firefox and some other apps that use this
|
|
feature.
|
|
* updated `DirectSound` output volume adjustment to be as close to the `WASAPI`
|
|
`WaveOut` plugins as possible
|
|
* changed compiler optimizations to favor fast code, instead of small code,
|
|
plus a few other small tweaks to (hopefully) improve performance.
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
0.9.2
|
|
|
|
* added an icon to the windows and android builds (not great, but better than
|
|
nothing!)
|
|
* fixed a bug in the `nomad` (mp3) plugin where sample rate wasn't being
|
|
handled appropriately. songs were sometimes playing too fast or slow.
|
|
* fixed a bug in the websockets plugin for certain metadata in locales that
|
|
use commas instead of periods for decimal points
|
|
* added compression support to the `websocket_remote` plugin and the
|
|
`musikdroid` android app
|
|
* fixed a crash when trying to manipulate an empty play queue in specific
|
|
contexts
|
|
* fixed the win32 global volume up / volume down hotkeys to be consistent with
|
|
the main app and `websocket_remote` behavior.
|
|
* changed data directory from "~/.mC2" to "~/.musikcube". the app will
|
|
automatically perform this rename on startup.
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
0.9.1
|
|
|
|
* added an app icon on win32 and android builds
|
|
* added proper support for using and switching between different audio sample
|
|
formats. 24/192k works across all platforms now.
|
|
* fixed `DirectSoundOut` pause to work properly again
|
|
* added support for statically linking dependencies. for now we can supply
|
|
macOS binaries that don't require homebrew! let's try to keep it that way.
|
|
* updated some defaults -- rescan metadata on startup by default, and restrict
|
|
to two processing threads.
|
|
* fixed a crash when trying to change tracks in an empty playlist queue
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
0.9.0
|
|
|
|
user-facing:
|
|
|
|
* added new `musikdroid` android remote control! super userful with a Raspberry
|
|
Pi. run musikbox in the background and control it from your phone.
|
|
* added a new `websocket_remote` plugin that allows any client capable of
|
|
communciating with websockets the ability to control playback and query
|
|
metadata!
|
|
* added settings UI for enabling/disabling plugins within the app!
|
|
* added more granular volume control when adjusting below 10%
|
|
* fixed a crash on shutdown while in track search view
|
|
|
|
low-level:
|
|
|
|
* added new sdk interfaces:
|
|
- `ISimpleDataProvider`: can be used to query tracks, albums, artists, genres
|
|
- `IMetadataValue` and `IMetadataValueList`: lists of metadata values and ids
|
|
- `IMetadataMap` and `IMetadataMapList`: maps of values for resource ids
|
|
- `IPreferences` for reading and writing preferences
|
|
* updated sdk interfaces:
|
|
- `ITrack`: added `getId()`
|
|
- `IPlaybackService`: the ability to modify or replace the play queue
|
|
- `ITrackList`: added const correctness
|
|
- renamed `IMetadataWriter` to `ITrackWriter`
|
|
* added the ability for plugins to register to receive `IPreferences` and
|
|
`ISimpleDataProvider` interfaces via `SetPreferences()` and
|
|
`SetSimpleDataProvider`, respectively. see `websocket_remote` for an example
|
|
* fixed up `PluginFactory` to store and provide more metadata about plugins
|
|
when querying them.
|
|
* fixed a deadlock in `PlaybackService` when changing tracks from
|
|
`IPlaybackRemote` plugins.
|
|
* fixed another WASAPI audio endpoint routing bug
|
|
* fixed some win32 project settings to allow profile guided optimizations (was
|
|
broken for some plugins)
|
|
* fixed 'deprecated' compiler warnings on macOS
|
|
* seed the random number generator at startup
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
0.8.0
|
|
|
|
user-facing:
|
|
|
|
* added support for Raspberry Pi running Raspbian!
|
|
* added preliminary support for playlist editing. all editing is currently
|
|
in the play queue view.
|
|
- `ALT+s`: save the current play queue to a named playlist
|
|
- `ALT+l`: load a previously saved playlist
|
|
- `ALT+x`: delete a playlist
|
|
- `ALT+r`: rename a playlist
|
|
* added the ability to delete (BACKSPACE on mac, DEL on win32/linux) and reorder
|
|
(ALT+UP/ALT+DOWN win32/mac, CTRL+UP/CTRL+DOWN linux ) selected items in the
|
|
play queue.
|
|
* added better color fallback for non-mutable 256 termianl color palettes
|
|
* added the ability to enqueue selected tracks, albums, artists, or other
|
|
resources to the play queue by pressing ALT+ENTER.
|
|
* fixed a crash when trying to play a track that has been removed from the
|
|
database
|
|
* fixed (maybe) an impossible-to-reproduce bug in PulseAudio where the output
|
|
volume was not getting properly initialized
|
|
* removed "esc focuses shortcut bar" setting. no longer useful.
|
|
|
|
low-level:
|
|
|
|
* fixed cursespp child view coordinates to be relative to their parents
|
|
* cleaned up global focus model in cursespp
|
|
* added IPlaybackService::GetPlayingTrack() to get an IRetainedTrack pointer
|
|
to the currently playing track; bumped SdkVersion to 2.
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
0.7.3
|
|
|
|
reduce CPU usage during playback in macOS CoreAudioOut
|
|
include the null output plugin in macOS and Linux builds.
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
0.7.2
|
|
|
|
mostly performance and architecture changes:
|
|
|
|
* created new 'src/glue' package that contains code that can be optionally
|
|
included and reused by other applications, but is too high-level for
|
|
src/core
|
|
* cpu reduction and code simplification in 'Stream' and 'Player'
|
|
* cpu reduction in 'MessageQueue'
|
|
* reduced locking in 'Player' and 'MessageQueue'
|
|
* tweaked music library interface to optionally deliver results to a specified
|
|
'IMessageQueue'
|
|
* moved 'PlaybackService' and 'TrackList' into 'core'
|
|
* optimized floating point sample scaling in the 'nomad' mp3 decoder
|
|
* reduced cpu overhead when redrawing the transport view
|
|
* added bare-bones, 'proof of concept' win32 application that includes 'core'
|
|
and 'glue' to present a very basic music player in just a few lines of code.
|
|
* added a NullOut, an output plugin that doesn't write to the sound card. useful
|
|
for development and testing purposes.
|
|
|
|
bug fixes:
|
|
|
|
* fixed default output plugin selection logic
|
|
* fixed a crash in WASAPI stream routing
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
0.7.1
|
|
|
|
user-facing:
|
|
|
|
* fixed the flac decoder. oops.
|
|
* changed focus behavior in search view -- pressing return in the edit field
|
|
will now focus the tracklist after starting playback
|
|
* added sdk and plugin versioning. the plugin loader will only load plugins
|
|
with a supported version.
|
|
|
|
low-level
|
|
|
|
* removed pre-buffering code from Player, let Stream worry about that
|
|
* moved from boost to std for most threading (boost still used in the indexer)
|
|
* removed some unused boost dependencies from CMakeLists.txt
|
|
* various small optimizations to help reduce CPU overhead in MessageQueue and
|
|
Player.
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
0.7.0
|
|
|
|
a big release with lots of changes to low-level machinery.
|
|
|
|
user-facing:
|
|
|
|
* added a new "crossfade" playback mode that can be used instead of "gapless".
|
|
users can change this functionality in the settings view.
|
|
* fixed audio artifacts in WasapiOut and DirectSoundOut when pausing and
|
|
resuming playback multiple times very quickly.
|
|
* fixed a really bad bug where dialogs could not be easily dismissed in some
|
|
cases. this included the first-run dialog! yikes.
|
|
|
|
low-level:
|
|
|
|
* added Latency() and Drain() methods to the IOutput interface
|
|
* reduced CPU load in some output plugins by being less aggressive about keeping
|
|
the output buffers 100% full all the time. 75%+ fill rate should be
|
|
sufficient.
|
|
* generalized MessageQueue and moved it out of app, and into core so it can be
|
|
reused for other functionality (e.g. crossfading)
|
|
* added support for "mix points" in Player -- get a callback as soon as a
|
|
specific playback position is hit!
|
|
* fixed DirectSoundOut to fall back to software mixing if hardware mixing is
|
|
unavailable
|
|
* fixed DirectSoundOut to start playback immediately, instead of sometimes
|
|
requiring the buffer to be completely full
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
0.6.2
|
|
|
|
* added a DirectSound output plugin for the win32 build.
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
0.6.1
|
|
|
|
* replaced mpg123 decoder with MAD. gapless playback for a much wider variety of
|
|
mp3s!
|
|
* optimized indexing process by maintaining an in-memory database id cache. uses
|
|
a bit more memory (temporarily, during indexing) but improves indexing speed.
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
0.6.0
|
|
|
|
* added the ability to have multiple output plugins, and the ability switch
|
|
between them in settings
|
|
* added a new default output plugin for win32 (WASAPI) and linux (PulseAudio)
|
|
* changed a bunch of low-level ui code to substantially reduce layout passes and
|
|
redraws
|
|
* made a few small changes to the main ui, including basic listview headers if
|
|
the window grows large enough
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
0.5.0
|
|
|
|
user-facing:
|
|
|
|
* remember volume and repeat settings across app launches
|
|
* improved visualizer quality
|
|
* reduced download size by a couple megabytes
|
|
|
|
low-level:
|
|
|
|
* optimized Stream and Player communication. more direct, less locking. no more
|
|
weird deferred cleanup
|
|
* removed fftw3 dependency in favor of kiss_fft. much smaller download now
|
|
* added a proper windowing algorithm to audio samples before they are handed to
|
|
the fft process
|
|
* fixed audio de-interleaving issue which lead to funky fft results in some
|
|
cases
|
|
* included a new spectrum visualizer sample called GdiVis (win32 only for now)
|
|
* overhauled some parts of the audio engine to ensure buffer size is consistent
|
|
during playback. this makes visualization quality better, and should make it
|
|
easier to integrate with things like JACK and PulseAudio.
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
0.4.1
|
|
|
|
* fixed the transport readout to be more legible
|
|
* fixed a crash in NowPlayingLayout when the window became too small
|
|
* improved the IPlaybackService and IPlaybackRemote interfaces, and introduced a
|
|
new IRetainedTrack type.
|
|
* upgraded build environment to visual studio 2017
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
0.4.0
|
|
|
|
* updated transport focus behavior to be less confusing -- it was previously too
|
|
easy to accidentally focus the transport.
|
|
* added mute functionality. focus the volume control and press enter or just
|
|
press m while browsing your library.
|
|
* added new IPlaybackRemote and IPlaybackService sdk interfaces to support
|
|
writing plugins that can control playback and be notified of playback events.
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
0.3.5
|
|
|
|
* various small visualizer-related fixes.
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
0.3.4
|
|
|
|
* visualizer support! press v to show the picker! a couple samples (Milkdrop2
|
|
and projectM) are included below. unzip these to your musikbox\plugins
|
|
directory.
|
|
* fixed a nasty unicode conversion bug.
|
|
* various other small fixes
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
0.2.2
|
|
|
|
* small improvements to the transport view, including the display of the volume
|
|
percentage next to the volume slider.
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
0.2.1
|
|
|
|
* initial "public" release
|