volumio / volumio2 Goto Github PK
View Code? Open in Web Editor NEWVolumio 2 - Audiophile Music Player
Home Page: http://volumio.org
License: Other
Volumio 2 - Audiophile Music Player
Home Page: http://volumio.org
License: Other
so I have an SSD drive connected via USB to a raspberry pi 2.
I have volumio 2 alpha distro running, and want to simply tell it.. "Hey Volumio2, all the music you need to find is in this direction .....
"
I clicked around and started to get into a bad state it would appear. Using the latest Chrome on OSX btw...
If a device appears, notifications of the status of other clients should be sent
We should obtain a DynamicTitle object, which will look like:
{"artist":"Nirvana","title":"Smells like Teen Spirits","album":"Nevermind"}
Ideally the WS API would be:
getDynamicTitle
pushDynamicTitle
Start the implementation of the volumio core module. First goal is to make it talk with standard MPD client through the MPD-interface.
Please add an explanation of CallMethod API to the Wiki here:
https://github.com/volumio/Volumio2/wiki/WebSockets-API-Reference
I am planning to set up a kids music player. As for speakers I want to stream directly to bluetooth enabled speakers.
Please implement support for this.
This is the error:
events.js:85
throw er; // Unhandled 'error' event
^
Error: dns service error: unknown
at Error (native)
at MDNSService.on_resolver_done (/volumio/node_modules/mdns/lib/resolver_sequence_tasks.js:19:30)
at SocketWatcher.MDNSService.self.watcher.callback (/volumio/node_modules/mdns/lib/mdns_service.js:18:40)
It's quite random
In Call Plugin Method, music_services are referred as music_service.
This is misleading: we should use a convention that mirrors folder's names
# npm install
/
> [email protected] install /root/local/volumio2/node_modules/groove
> node-gyp rebuild
make: Entering directory '/root/local/volumio2/node_modules/groove/build'
CXX(target) Release/obj.target/groove/src/groove.o
In file included from ../src/groove.cc:5:0:
../src/player.h:6:33: fatal error: grooveplayer/player.h: No such file or directory
#include <grooveplayer/player.h>
^
compilation terminated.
groove.target.mk:91: recipe for target 'Release/obj.target/groove/src/groove.o' failed
make: *** [Release/obj.target/groove/src/groove.o] Error 1
make: Leaving directory '/root/local/volumio2/node_modules/groove/build'
gyp ERR! build error
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack at ChildProcess.onExit (/usr/share/node-gyp/lib/build.js:267:23)
gyp ERR! stack at ChildProcess.emit (events.js:98:17)
gyp ERR! stack at Process.ChildProcess._handle.onexit (child_process.js:809:12)
gyp ERR! System Linux 3.16.0-4-686-pae
gyp ERR! command "nodejs" "/usr/bin/node-gyp" "rebuild"
gyp ERR! cwd /root/local/volumio2/node_modules/groove
gyp ERR! node -v v0.10.29
gyp ERR! node-gyp -v v0.12.2
gyp ERR! not ok
npm WARN This failure might be due to the use of legacy binary "node"
npm WARN For further explanations, please read
/usr/share/doc/nodejs/README.Debian
npm ERR! [email protected] install: `node-gyp rebuild`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] install script.
npm ERR! This is most likely a problem with the groove package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR! node-gyp rebuild
npm ERR! You can get their info via:
npm ERR! npm owner ls groove
npm ERR! There is likely additional logging output above.
npm ERR! System Linux 3.16.0-4-686-pae
npm ERR! command "/usr/bin/nodejs" "/usr/bin/npm" "install"
npm ERR! cwd /root/local/volumio2
npm ERR! node -v v0.10.29
npm ERR! npm -v 1.4.21
npm ERR! code ELIFECYCLE
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR! /root/local/volumio2/npm-debug.log
npm ERR! not ok code 0
I have a bunch of groove packages installed (in particular the -dev) :
# dpkg -l *groove*
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-=========================-=================-=================-========================================================
ii groovebasin 1.4.0-1 all music player server with a web-based user interface
ii libgroove-dev:i386 4.2.1-1 i386 audio dispatching library (development files)
ii libgroove4:i386 4.2.1-1 i386 music player backend
ii libgroovefingerprinter4:i 4.2.1-1 i386 acoustid fingerprinter for libgroove
ii libgrooveloudness4:i386 4.2.1-1 i386 loudness scanner for libgroove
ii libgrooveplayer4:i386 4.2.1-1 i386 hardware audio playback for libgroove
ii node-groove 2.2.6-1 i386 bindings to libgroove - generic music player library - N
`
The basic idea is to support multiple/different output devices, e.g. send to AirPlay speakers.
See Output Stack on the wiki.
I actually planned to figure out and contribute this myself but then was too busy for it, so I'll just share my thoughts with you.
The idea is that each audio output implements a common interface โ let's call it AudioOutput
.
Every AudioOutput
is initialized with an audio source and has a few very basic functions to enable
, disable
, setVolume
, โฆ
Volumio would output sound to a raw PCM stream, which is then passed as the audio source to all the outputs.
An OutputController
enables or disables outputs and also calls setVolume
for each of them.
Some output examples:
AirPlay is a great example because it shows two issues that I don't yet know how to solve:
Synchronizing
Especially remote speakers will have some delay before actually playing the audio, and you don't want your AirPlay speakers 5 meters away to hang 3 seconds behind the directly connected speakers.
AFAIK AirPlay buffers audio and plays it back delayed, while pause/resume is carried out as soon as it arrives at the AirPlay server. However, that issue could be solved by not using AirPlay's pause/resume feature and just silence the PCM stream when Volumio is paused. This will have the effect that music still plays for a few seconds after you hit pause, though.
Maybe enable
could have a callback that includes the delay and OutputController
can delay the source individually for each output to counter the latency?
Custom Options
Since you can select multiple AirPlay speakers, we need a way to pass this option to the end user.
Same goes for e.g. port options for the http server mentioned above.
Perhaps AudioOutput
could have settings
and a function that's called when they change?
I hope this made some sense ๐ฐ
...to give it a decent UI and inherit multiroom and mobile apps greatness from it !
While starting volumio via node index.js
, it dies on missing dependency.
In f39237c there was added this line in http/restapi.js
var ifconfig = require('wireless-tools/ifconfig');
however wireless-tools
is missing in package.json
.
I would suggest making volumio an requireable npm module with automated deploy using travis for extending volumio.
I have registered the "volumio" package name on npm before it is snatched up by some project unrelated package.
I think I see what happened - my fault ๐ณ
I had changed the names of the websocket events during an effort to simplify the websocket interface plugin. When it was decided to revert to the old version, I reverted the names of the events which are listened for, but forgot to revert the names of the events which are emitted. Thus volumioPushState
is currently pushState
.
Now that we have a chance to re-examine these event names, I think we can strip the "volumio" prepended to each event. This was used back in the day when direct commands were also sent to spop and MPD. Now that the clients only talk to Volumio, the extra tag is no longer needed. Thus, volumioPlay
becomes just play
, and so on. I'll also change getLibraryIndex
to getLibraryFilters
per request.
I will update the websocket API in the wiki to reflect the new configuration.
Hello,
I am trying to setup the dev environnement with vmware and got an issue on npm install
. Here are the steps i follow:
ssh [email protected]
git clone https://github.com/volumio/Volumio2.git volumio/
cd volumio/ && npm install
And got the following error:
volumio@volumio:~/volumio$ npm install
npm ERR! Linux 3.16.0-4-686-pae
npm ERR! argv "/usr/bin/node" "/usr/bin/npm" "install"
npm ERR! node v0.12.0
npm ERR! npm v2.5.1
npm ERR! code ETARGET
npm ERR! notarget No compatible version found: ip@'>=2.11.2 <3.0.0'
npm ERR! notarget Valid install targets:
npm ERR! notarget ["0.0.1","0.0.2","0.0.3","0.0.4","0.0.5","0.1.0","0.2.0","0.3.0","0.3.1","0.3.2","0.3.3"]
npm ERR! notarget
npm ERR! notarget This is most likely not a problem with npm itself.
npm ERR! notarget In most cases you or one of your dependencies are requesting
npm ERR! notarget a package version that doesn't exist.
npm ERR! Please include the following file with any support request:
npm ERR! /home/volumio/volumio/npm-debug.log
npm-debug.log: http://pastebin.com/LZCefXWQ
Thank you.
A log file is much needed when running volumio through systemctl. Just redirecting output to /var/log/something would be great
I tried to install the latest dev code for volumio 2 on my Raspberry Model B+ (RPI 1) and got the following as the command "npm install" was running:
> mdns@2.2.9 install /home/pi/volumio/node_modules/mdns
> node-gyp rebuild
gyp WARN EACCES user "root" does not have permission to access the dev dir "/root/.node-gyp/0.10.28"
gyp WARN EACCES attempting to reinstall using temporary dev dir "/home/pi/volumio/node_modules/mdns/.node-gyp"
gyp http GET http://nodejs.org/dist/v0.10.28/node-v0.10.28.tar.gz
gyp http 200 http://nodejs.org/dist/v0.10.28/node-v0.10.28.tar.gz
gyp http GET http://nodejs.org/dist/v0.10.28/SHASUMS.txt
gyp http GET http://nodejs.org/dist/v0.10.28/SHASUMS.txt
gyp http 200 http://nodejs.org/dist/v0.10.28/SHASUMS.txt
gyp http 200 http://nodejs.org/dist/v0.10.28/SHASUMS.txt
make: Entering directory '/home/pi/volumio/node_modules/mdns/build'
CXX(target) Release/obj.target/dns_sd_bindings/src/dns_sd.o
In file included from ../src/dns_sd.cpp:1:0:
../src/mdns.hpp:32:20: fatal error: dns_sd.h: No such file or directory
compilation terminated.
dns_sd_bindings.target.mk:131: recipe for target 'Release/obj.target/dns_sd_bindings/src/dns_sd.o' failed
make: *** [Release/obj.target/dns_sd_bindings/src/dns_sd.o] Error 1
make: Leaving directory '/home/pi/volumio/node_modules/mdns/build'
gyp ERR! build error
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack at ChildProcess.onExit (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:267:23)
gyp ERR! stack at ChildProcess.EventEmitter.emit (events.js:98:17)
gyp ERR! stack at Process.ChildProcess._handle.onexit (child_process.js:807:12)
gyp ERR! System Linux 3.18.11+
gyp ERR! command "node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /home/pi/volumio/node_modules/mdns
gyp ERR! node -v v0.10.28
gyp ERR! node-gyp -v v0.13.0
gyp ERR! not ok
npm ERR! mdns@2.2.9 install: `node-gyp rebuild`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the mdns@2.2.9 install script.
npm ERR! This is most likely a problem with the mdns package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR! node-gyp rebuild
npm ERR! You can get their info via:
npm ERR! npm owner ls mdns
npm ERR! There is likely additional logging output above.
npm ERR! System Linux 3.18.11+
npm ERR! command "/usr/local/bin/node" "/usr/local/bin/npm" "install"
npm ERR! cwd /home/pi/volumio
npm ERR! node -v v0.10.28
npm ERR! npm -v 1.4.9
npm ERR! code ELIFECYCLE
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR! /home/pi/volumio/npm-debug.log
npm ERR! not ok code 0
Compiling Volumio 2 from Git-Clone (01.09.2015) dies in compiling mdns, because dns_sd.h is missing:
> [email protected] install /volumio/node_modules/mdns
> node-gyp rebuild
child_process: customFds option is deprecated, use stdio instead.
make: Entering directory '/volumio/node_modules/mdns/build'
CXX(target) Release/obj.target/dns_sd_bindings/src/dns_sd.o
In file included from ../src/dns_sd.cpp:1:0:
../src/mdns.hpp:32:20: fatal error: dns_sd.h: No such file or directory
#include <dns_sd.h>
^
compilation terminated.
dns_sd_bindings.target.mk:133: recipe for target 'Release/obj.target/dns_sd_bindings/src/dns_sd.o' failed
make: *** [Release/obj.target/dns_sd_bindings/src/dns_sd.o] Error 1
make: Leaving directory '/volumio/node_modules/mdns/build'
gyp ERR! build error
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack at ChildProcess.onExit (/usr/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:267:23)
gyp ERR! stack at ChildProcess.emit (events.js:110:17)
gyp ERR! stack at Process.ChildProcess._handle.onexit (child_process.js:1067:12)
gyp ERR! System Linux 3.16.0-4-686-pae
gyp ERR! command "node" "/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /volumio/node_modules/mdns
gyp ERR! node -v v0.12.0
gyp ERR! node-gyp -v v1.0.2
gyp ERR! not ok
npm-debug.log can be found here
https://jim.itmc.tu-dortmund.de/oc/index.php/s/VclhXbh8PHRit9d/download
Spotify configuration cannot be entered in the current configuration Ui. A section should contain services configurations.
var math = require('mathjs');
To set (log100, x):
Volume.vol = Math.round(math.log(VolumeInteger, 100)*100);
To get(inverse log base 100, x):
Volume.vol = Math.round(Math.pow(100, (vol/100)));
A rework of the entire get and set, with push state is also needed (too slow and redundant)
I know you're just doing ground work right now, but as a long time subsonic user I've just seen they integrated with Sonos devices, and since the have a well documented api, it shoud be "fairly" easy to implement.
http://www.subsonic.org/pages/sonos.jsp
And as subsonic supports lossless streaming I think it's a perfect fit.
http://www.subsonic.org/pages/api.jsp
If there's noone willing to do it you could at least verify if it is possible or point me in directions where to start. Got a little node experience myself!
What license is this distributed under?
MIT?
Please add a license file so it is clear how contributions and forks are positioned in a legal context.
Evaluate the use of libgroove as a possible replacement for MPD. Reference andrewrk/libgroove#88.
Maybe make a script which conducts double-blind listening trials of some high resolution music files?
This repo has no LICENSE file. You should choose a license.
Need to implement the SAMBA\CIFS mounter
When doing npm install, it return errors
npm install
npm WARN package.json [email protected] No license field.
-
> [email protected] install /volumio/node_modules/mdns
> node-gyp rebuild
make: Entering directory '/volumio/node_modules/mdns/build'
CXX(target) Release/obj.target/dns_sd_bindings/src/dns_sd.o
In file included from ../src/dns_sd.cpp:1:0:
../src/mdns.hpp:32:20: fatal error: dns_sd.h: No such file or directory
#include <dns_sd.h>
^
compilation terminated.
dns_sd_bindings.target.mk:136: recipe for target 'Release/obj.target/dns_sd_bindings/src/dns_sd.o' failed
make: *** [Release/obj.target/dns_sd_bindings/src/dns_sd.o] Error 1
make: Leaving directory '/volumio/node_modules/mdns/build'
gyp ERR! build error
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack at ChildProcess.onExit (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:269:23)
gyp ERR! stack at ChildProcess.emit (events.js:110:17)
gyp ERR! stack at Process.ChildProcess._handle.onexit (child_process.js:1074:12)
gyp ERR! System Linux 3.18.6+
gyp ERR! command "node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /volumio/node_modules/mdns
gyp ERR! node -v v0.12.6
gyp ERR! node-gyp -v v2.0.1
gyp ERR! not ok
npm ERR! Linux 3.18.6+
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "install"
npm ERR! node v0.12.6
npm ERR! npm v2.11.2
npm ERR! code ELIFECYCLE
npm ERR! [email protected] install: `node-gyp rebuild`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] install script 'node-gyp rebuild'.
npm ERR! This is most likely a problem with the mdns package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR! node-gyp rebuild
npm ERR! You can get their info via:
npm ERR! npm owner ls mdns
npm ERR! There is likely additional logging output above.
npm ERR! Please include the following file with any support request:
npm ERR! /volumio/npm-debug.log
If I do "node index.js" it retruns
/volumio# node index.js
module.js:338
throw err;
^
Error: Cannot find module './http/index.js'
at Function.Module._resolveFilename (module.js:336:15)
at Function.Module._load (module.js:278:25)
at Module.require (module.js:365:17)
at require (module.js:384:17)
at Object.<anonymous> (/volumio/index.js:1:85)
at Module._compile (module.js:460:26)
at Object.Module._extensions..js (module.js:478:10)
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)
at Function.Module.runMain (module.js:501:10)
No webUI and if I look in the process, node is eating plenty of cpu (on rpi B+ a total of 88% of cpu is used).
What am I doing wrong ?
Implement satellite database mode as discussed in volumio/Volumio-WebUI#74
http://www.musicpd.org/doc/user/advanced_config.html#satellite
As volumio is a bigger project I would propose moving to TypeScript with a gulp compile pipeline.
Despite the very latest update, I still can't reach the webUI. I have reflashed several times, remove /volumio folder, follow the instruction but the best I get is a "Cannot GET / " page in my web browser...
dev console works..
It would be amazing to have a starting point ready.
An image with drivers, preinstalled NodeJS etc. Anything which would be required to simply follow installation steps from Readme
Albumart server crashes, the behaviour seems to happen when we sequentially add lot of items to queue.
I suspect this is due to lack of / in the web art path
Hi!
Sorry to ask, but even with a fresh install, I can't connect to webUI (still known problem?)
dev console was ok until I reboot...and now no more access.
I ran npm install
as non-sudo user. Seems cookie-parser
failed to install
I know you don't run the NPM, I'm filing a bug there.. but just giving a heads up.
Remember to re-advertise itself after renaming
I noticed there's tabs and spaces mixed all over the place. Can we agree on a style to use everywhere?
My editor (sublime text + eslint) also starts highlighting every other line because there's missing semicolons or other issues.
I personally prefer 2 spaces for indentation, I think that's what most node projects seem to use as well.
I recommend that everyone uses eslint. There are lots of integrations for different editors.
Creating new RootFS (base system) on Debian Jessie, with Build Script to allow fast creation of images for every platform.
By editing conf on playback configuration, we receive this error:
Missing error handler on socket
.
Error: The value [object Object] is not a number
at Error (native)
at Config.forceToType (/volumio/node_modules/v-conf/index.js:157:44)
at Config.set (/volumio/node_modules/v-conf/index.js:79:25)
at ControllerMpd.savePlaybackOptions (/volumio/app/plugins/music_services/mpd/index.js:651:14)
at CoreCommandRouter.executeOnPlugin (/volumio/app/index.js:340:28)
at Socket. (/volumio/app/plugins/user_interfaces/websocket/index.js:407:31)
at Socket.emit (events.js:110:17)
at Socket.onevent (/volumio/node_modules/socket.io/lib/socket.js:330:8)
at Socket.onpacket (/volumio/node_modules/socket.io/lib/socket.js:290:12)
at Client.ondecoded (/volumio/node_modules/socket.io/lib/client.js:193:14)
I am trying out the Alpha distribution and the default credentials aren't obvious to me.. tried the defaults for rasbian with no luck
In case you're not familiar with Vagrant, it basically lets you set up a VM that you can configure to contain all dependencies. It syncs your (git) project folder with the VM so you can make changes on your machine and they affect the VM immediately.
You can forward the network ports required for the project and connect to the VM via SSH.
This creates a "lightweight, reproducible, and portable development environment".
I believe it could make development a lot easier.
We should have a seek object that states the current seek position for the current service.
Ideally the WS api will look like this:
pushSeek (to update seek, maybe every 1000ms, or when the second change)
setSeek (to jump over time in a track, rounded to seconds)
this would be best used with some travis tests to ensure nothing breaks on updates.
This has been requested previously, reopening to track here.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.