- Integrated with the new IIndexerSource, IIndexerWriter, and IIndexerNotifier SDK interfaces - 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. - Added bare-bones CddaDataModel that uses the win32 api to enumerate connected devices. This is used for disc fingerprinting (using the CDDB algorithm) and encapsulating data related to discs and tracks. Also, use the WM_DEVICECHANGE API to detect when new discs are inserted, or existing discs are removed. - Don't install the global hotkey hook when running in a debugger. - Added the ability for the user to configure seeking vs scrubbing when changing the playhead
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: