mirror of
https://github.com/clangen/musikcube.git
synced 2024-11-19 11:10:52 +00:00
576 lines
22 KiB
Plaintext
576 lines
22 KiB
Plaintext
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
|