본문 바로가기

Audio

Volumio 2 RC1 - 라즈베리를 위한 최고의 Music Player

라즈베리에서 운영할 수 있는 음악 플레이어로 최고의 이름을 날리는 것은 단연 Volumio가 아닌가 한다.

다양한 기능으로만 본다면 KODI가 최고이겠지만 음악 재생만을 위한 것이라면 Volumio라고 할 만 하다.

 

RuneAudio라는 것도 있지만 이것은 Volumio에 약간의 편의성을 더 가미한 것으로 현재 개발중이기도 하고

0.4BETA에 머무르고 있어 I2S DAC이 원활하게 지원되지 않는 문제도 있고

개발도 상당히 더뎌서 어떤 문제가 생기면 해결하기가 다소 곤란한 단점이 있다.

 

일단 OpenELEC을 사용하면서 부족한 점을 많이 느끼던 중에 찾게 된 것이 RuneAudio였고

Volumio는 Text 기반의 재생 툴로만 알고 있던 터에 RuneAudio와 같은 UI를 제공하는 것을

보고 라즈베리 파이에 설치 테스트해 보기로 한 것이다.

 

RuneAudio가 라즈베리 파이 3에서 구동되긴 하지만 

Cirrus Logic Audio Card, WM5102를 지원하지 않는 것이 가장 결정적인 이유가 되겠다.

 

Volumio는 현재 1.55 버전이 나와 있고 Volumio 2가 RC1 까지 나와 있지만

Volumio는 라즈베리파이 3에서 구동되지 않은 것으로 알려져 있다.

Volumio 2가 라즈베리파이 3에서 구동되는 것으로 판단된다.

부팅하면서 Wireless를 찾는 것만 봐도 파이 3에 대응한 것으로 볼 수 있다.

 

Volumio 2는 아래 위치에서 정보를 얻을 수 있고

라즈베리 파이 용 이미지도 구할 수 있다.

https://github.com/volumio/Volumio2

 

 

 

 

 

 

 

 

일단 음질적인 면에서 상당한 개선을 얻었다.

내 현재 기기에서 이같은 소리를 내 준다는 것은 정말 드라마틱한 변화다.

 

Volumio 2는 리눅스 커널 부팅 이후에 자체 콘솔로의 UI를 제공하지 않는다.

WEB UI를 통해 어느 디바이스에서나 접속해 동일한 인터페이스로 관리를 할 수 있다.

물론 uPnP로 아무 설정 없이 그냥 된다.

 

 

 

 

  

 

 

 

 

기본적인 재생 인터페이스는 이렇다.

앨범 이미지를 찾지 못하는 경우 위와 같은 다소 수선스러운 배경을 깔아주는 것이 다소 불만스럽다.

 

 

 



 

 

 

 

 

설정버튼을 누르면 오른쪽으로 위와 같은 설정 메뉴가 나타난다.

들어가 봐야 별로 설정할 것도 없다.

 

NAS를 붙여주는 것 말고는 달리 할 것도 없는 듯.

물론 네트웍 설정은 최초에는 무조건 유선 네트웍을 붙여 주어야 한다.

무선은 비밀번호 넣어주지 않으면 붙지 않을 것이므로

유선을 먼저 연결한 상태에서 모바일이든 피씨에서든 한 번은 설정을 해 주어야 한다.

HDMI를 이용한 콘솔에 위 UI가 나오지 않기 때문에 어쩔 수 없다.

 

하이파이베리는 태생적으로 지원한다.

Playback option에서 설정하고 리부팅하면 된다.

 

UPnP 설정은 따로 하지 않아도 다른 플에이어에서 검색이 된다.

디폴트 이름은 Volumio로 되어 있었다.

 

이 이름을 바꿀 수 있는지는 아직 확인해보지 않아서 모름.

 

 

 

 

 

   

 

 

 

 

왼쪽은 Volumio 2의 재생 UI이고

오른쪽은 RuneAudio의 재생 UI이다.

 

비슷하면서도 다른 뭐 그렇다.

 

아래는 Volumio 2의 GitHub 페이지에서 가져온 것이다.

참고.

 

 

Volumio is an headless audiophile music player, designed to play music with the highest possible fidelity. Volumio runs on most embedded devices (Raspberry Pi, UDOO, Odroid, Cubieboard, Beaglebone...) and on any ordinary PC (x86).

Volumio is obtained with 3 main components:

Volumio 2 System Images

LATEST

PREVIOUS VERSIONS

Forum Thread for Feedbacks and suggestions)

Logins

  • user : volumio
  • Password : volumio

Root login has been disabled by default, however user volumio can become root.

Volumio 2 Virtual Machines

Useful for fast developing, no need for a Raspberry Pi (also much faster)

VMWARE Image is suggested, as Network configuration is tricky with Virtual Box

System Images built with Volumio Builder

Preliminary Setup

IMPORTANT NOTE: Volumio is designed to be an highly integrated system. This means that the WebUi is optimized to work along with the custom made Volumio system, and therefore it needs to run in a very tightly controlled environment. IT WON'T WORK on standard Raspbian or other non-volumio OSes. If you want to know what kind of customizations we're using, take a look at the Volumio Builder

Volumio works with 5.5.0 version of NodeJS. Reports of working\not working node version are appreciated!

Clone the repo in the directory of your choice (default: /volumio)

git clone https://github.com/volumio/Volumio2.git volumio

cd volumio

Make sure /volumio folder is owned volumio user

sudo chown -R volumio:volumio /volumio

And that /data folder exists and is owned by volumio user

sudo mkdir /data

sudo chown -R volumio:volumio /data

All other dependecies are in the package JSON, from the working directory just run (as user volumio)

npm install

You can run all the servers in one single step just running with nodejs

node index.js

Finally, point your browser to http://(ip address):3000 to access the UI.

A DEV Console is available at http://(ip address):3000/dev

To make development more comfortable, a samba server is installed. This way the /volumio folder is accessible (and editable) via Network. Just mount it on your dev workstation and it will be available as local filesystem. Testing on PI is strongly suggested.

Please take a look at the

Development 101

To maximize efficiency and reduce code regression we're using Git Workflow. For example, to create a new feature you'll:

  • Create a new branch, named after the feature
  • Do your things on the branch
  • Test if everything is fine and we don't have regressions
  • Submit a Pull Request for branch dev

All new improvements and developments are meant to be done on the dev branch, once it's declared stable it will be merged to master and deployed to happy Volumio users.

Development tasks and milestones

Next Tasks for RC2

  •  Spotify Integration
  •  Common queue for Music Library and Spotify Integration Both tasks are under development on playqueue branch

Archived Tasks

  •  Templating System

    The idea is to allow the installation of different templates and skins. To allow that a template system needs to be created: as general guidelines we'll provide a set of Java functions to hook with the WebSockets connection. The different templates then will be a folder containing just css js and html.

  •  Plugin System

    Every service (input, output, visualization etc) will be treated as a standalone entity. This will allow to add external plugins in the future. The plugins will be composed of a folder, with all the methods, and a "manifest file" which is an executable that sends via nodes js its name, its available methods and other informations. At system startup every manifest in the manifest folder is executed, so the system receives with WS all the available plugins and their capabilities and methods. Then the core knows what is availbable and how to call them.

  •  Music Database System

    Music stored on USB Drives, Device memory or NAS will be handled by MPD, and therefore they'll be stored in its DB. Other services which requires a DB can have their levelDB database in place. For online services, that are meant to be browsed "live" this doesn't apply.

Operating System

  •  Custom Debian Based Operating System
    •  Minimal Jessie Based BSP
    •  SystemD migration
    •  Remote Scripted Build system with Recipes
    •  X86 Support
    •  Volumio APT repo
  •  Custom Compiled Core Packages
    •  MPD
    •  SPOP
    •  Upmpdcli
    •  Shairport Sync
    •  NodeJS

Node Backend

  •  Volumio Core
    •  Command Router
    •  WebUI Endpoints
    •  Mixer Controls
    •  Volume Controls
  •  Communication Interfaces
    •  Socket.io Controller
    •  API Controller
    •  MPD Emulation Interface
  •  Audio services Controllers
    •  MPD Service and Library
    •  SPOP Service and Library
    •  Shairport Service and Library
    •  UPNP Service and Library
  •  System manager worker
    •  Networking
    •  CIFS\SAMBA
    •  I2S Driver
    •  Hardware Layer
    •  USB Drives
    •  Volumio Service Discovery

Frontend

  •  Volumio 2 WebUI (Playback)
    •  Boostrap Based Structure
    •  Playback Handling
    •  Library retrieval
    •  Library Sorting
    •  Airplay Hooks
  •  Volumio 2 WebUI (Configuration)
    •  Playback Option Configuration
    •  Network Option Configuration
    •  Plug-in System Configuration
    •  System Configuration

Development Guidelines

  • Forum Threads for internal discussion, remember to subscribe topics.
  • Document your work where possible on the Wiki.
  • This is intended to run on Low Power Devices (r-pi). Let's keep code efficient and lightweight.
  • To allow code mantainability, always comment your code properly and update DOCs if needed.
  • Adhere to MVC Best Practices to maximize project quality.
  • Have fun and enjoy what you're doing!