2dac91c429
- 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. - Updated all queries to take "source_id" and "visible" into account - Extracted TrackMetadataQuery from TrackList. Never should have been there to begin with, but was due to some technical limitations that no longer exist. - 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. |
||
---|---|---|
src | ||
.gitignore | ||
archive-macos.sh | ||
archive-win32.sh | ||
CHANGELOG.txt | ||
CMakeLists.txt | ||
CONTRIBUTORS.txt | ||
LICENSE.txt | ||
musikcube.sln | ||
README.md |
musikcube
a cross-platform audio engine and player written in C++.
musikbox
a curses frontend to musikcube.
musicbox compiles and runs easily on Windows, macOS and Linux.
it looks something like this on windows:
and this on macOS:
and linux:
you can also remote control musikbox using the musikdroid
android app, which can be downloaded in the releases
section above. it looks like this:
raspberry pi
interested in running musikbox on a raspberry pi, connected to you home stereo? see here!
compiling
windows
- grab the Visual Studio 2017 Community Edition and install the 32-bit c++ compiler, plus the "v140" tools package.
- clone the musikcube sources:
git clone https://github.com/clangen/musikcube.git
- install the 32 bit version of boost 1.60. ensure it shares the same parent directory with musikcube. e.g:
c:\src\musikcube
andc:\src\boost_1_60_0
-- the project's solution will reference it via relative path. - open
musikcube.sln
and build/run.
mac
you'll need homebrew to install the required dependencies.
automatic
brew tap clangen/musikbox
brew install musikbox
musikbox
manual
brew install cmake boost libogg libvorbis flac faad2
git clone https://github.com/clangen/musikcube.git
cd musikcube
cmake .
make
cd bin
./musikbox
linux
- install the following libraries and their development packages:
cmake boost libogg vorbis flac faad2 ncurses zlib asound pulse
git clone https://github.com/clangen/musikcube.git
cd musikcube
cmake .
make
sudo make install
musikbox
keyboard shortcuts
the hotkeys listed below can generally be used at any time; however, if an input field is focused some may not work. you can enter command mode by pressing ESC
, which will highlight the bottom command bar and accept all hotkeys. command mode may be deactivated by pressing ESC
again.
you may also change hotkeys by editing ~/.musikcube/hotkeys.json
and restarting the app. a hotkey tester is provided in the settings screen.
TAB
select next windowSHIFT+TAB
select previous window~
switch to console viewa
switch to library views
switch to settings viewi
volume up 5%k
volume down 5%m
toggle volume mutej
previous trackl
next tracku
back 10 secondso
forward 10 secondsv
show / hide visualizerr
repaint the screen.
toggle repeat mode (off/track/list),
(un)shuffle play queueCTRL+p
pause/resume (globally)CTRL+x
stop (unload streams, free resources)CTRL+d
quit
and a couple hotkeys that are specific to the library view:
b
show browse viewn
show play queuef
show album/artist/genre searcht
show track search1
browse by artist2
browse by album3
browse by genrex
jump to playing artist/album/genre in browse viewSPACE
pause/resume
important: on OSX make sure you configure your terminal emulator to treat your left alt key as "+Esc" or "Meta".
sdk
musikcube is built around its own SDK interfaces. they're still in the process of being refined. you can see what they look like here: https://github.com/clangen/musikcube/tree/master/src/core/sdk
dependencies
musikcube would not be possible without the following excellent free, open source, and non-free (in the case of macOS and win32 APIs) projects and libraries:
core:
ui:
decoders:
outputs:
metadata-related:
networking: