Skip to content

Releases: clangen/musikcube

musikbox 0.9.4

11 Mar 04:39
Compare
Choose a tag to compare
  • 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

musikbox 0.9.3

09 Mar 16:41
Compare
Choose a tag to compare

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. users who wish to take advantage of this feature should use the DirectSound output.
  • 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.

macOS and Linux users should grab the 0.9.2 release.

musikbox 0.9.2

05 Mar 07:00
Compare
Choose a tag to compare
  • 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 websocket_remote 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 "$HOME/.mC2" to "$HOME/.musikcube". the app will automatically perform this rename on startup.

musikbox 0.9.1

25 Feb 05:13
Compare
Choose a tag to compare
  • 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. build provided in this release! download below.
  • updated some defaults -- rescan metadata on startup by default, and restrict to two processing threads.
  • fixed a crash in musikdroid when loading artwork in a multi-window environment.

musikbox 0.9.0

19 Feb 05:25
Compare
Choose a tag to compare

0.9.0

user-facing:

  • raspberry pi build included in the release!
  • 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

musikbox 0.8.0

29 Jan 07:22
Compare
Choose a tag to compare

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 edit tracks in the play queue
    • DEL (win32/linux), BACKSPACE (macOS): delete selected
    • ALT+UP (win32/linux), CTRL+UP (macOS): move selected up
    • ALT+DOWN (win32/linux), CTRL+UP (macOS): move selected down
  • added the ability to enqueue selected tracks, albums, artists, or other resources to the play queue by highlighting them and pressing ALT+ENTER.
  • added better color fallback for non-mutable 256 terminal color palettes
  • 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.

musikbox 0.7.3

15 Jan 23:08
Compare
Choose a tag to compare
  • reduce CPU usage during playback in macOS CoreAudioOut
  • include the null output plugin in macOS and Linux builds.

musikbox 0.7.2

14 Jan 22:36
Compare
Choose a tag to compare

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

win32 only:

  • fixed a crash in WASAPI stream routing
  • built with profile guided optimizations
  • fixed CRT in WASAPI and DirectSound plugins

musikbox 0.7.1

02 Jan 19:22
Compare
Choose a tag to compare

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.

musikbox 0.7.0

30 Dec 03:25
Compare
Choose a tag to compare

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