musikcube/CHANGELOG.txt
casey langen 8b1cac7f9b - Updated project build settings to all favor fast code, instead of small
code. Also ensure all projects are compiled against the unicode charset.
- Updated CHANGELOG and bumped versions.
2017-03-09 08:38:03 -08:00

303 lines
12 KiB
Plaintext

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