JBL Pebbles と Orange Pi Zero でステレオコンポ

Orange Pi Zero ケース に入れても超小型ですが、家庭内では Web サーバ かファイルサーバぐらいの用途しか思いつきませんでした。

すでに私の家では Web サーバ もファイルサーバもいくつも稼働しています。 Orange Pi Zero を何に使うか考えに考えた結果、ステレオコンポの代わりに音楽をリビングの片隅で流しておくことができれば、家族の冷たい視線も減る可能性があります(笑)。 したがって、今回の目標は 「家族でも簡単に操作できるステレオコンポ」です。 今回は armbian のインストールから、下の写真 のように、USB接続のゲームパッドで操作できる音楽サーバを作成するまでの詳細を紹介します。(長いです。笑)

音楽関連では Raspberry Pi などを専用の音楽プレイヤーにする Volumio が良く紹介されていますが、Orange Pi Zero 用のOSイメージは (まだ?) ありません。 Volumio の演奏部分の実体は MPD (Music Player Daemon) なので、MPD をインストールして家族でも簡単に操作できるような音楽プレイヤーを構築する過程を詳しく記録していこうと思います。

さて、コンピュータからちゃんとした音を出すには、デジタル (Digital) 信号をアナログ (Aalog) 信号に変換 (Conversion) してスピーカから音を出す必要があります。WAV や MP3 といったファイルに格納されたデジタル信号を、AV機器のアンプに入力できるアナログ信号に変換 (Conversion) するのが D/Aコンバータ (DAC) というものです。

例えば下の写真は、USBからアナログ信号に変換するの基板 (USB-DAC) ですが、輸入すると送料込でも500円以下で入手できました。


 USB_DAC_PCM2704.jpg

Orange Pi Zero も USB-DAC も小さいので、USBケーブルやアンプにつなぐケーブルが非常にジャマになって、「おしゃれ」じゃないです。 そこで USB-DAC + アンプ + スピーカ の機能を持つ、安価で評判の良い「 JBL Pebbles 」を使って、Orange Pi Zero を音楽サーバにすることにしました。USBのバスパワー で十分な音質と音量が得られます。


OPi0Pebbles.jpg

写真ではケーブルの結線が分かり難いですが、次の図のように単純です。ネットワークの代わりにゲームパッドでコントロールできるようにすることが、この記事の目標となります。

Pebbles_OPi0.png



OrangePi Zero に Armbian をインストール

今回も Orange Pi 公式のOS ではなく、 コミュニティベースの OS である armbian を使います。 Orange Pi Zero 用の Armbian (Armbian_5.25_Orangepizero_Ubuntu_xenial_default_3.4.113.7z) をダウンロードしました。

7z 形式の展開には Mac用で RAR, 7z, Lzma, xz, Zip, Tar, Gzip, Bzip2, ISO, EXE, CAB, PAX というファイル形式が回答できる Keka を使いました。展開後のフォルダ内の Armbian_5.25_Orangepizero_Ubuntu_xenial_default_3.4.113.img がSDカードへ書き込むディスクイメージです。


SDカードへのイメージの書き込み

前回は dd コマンドを使って、SDカードにディスクイメージを書き込みましたが、 今回は Linux、Windows、MacOSX に対応した Etcher を使います。 Linux や MacOSX ではコンソールから dd、Windows では Win32 Disk Imager と環境によって書き込みソフトが異なりましたが、 Etcher ならばどの環境でも用意されていて、下のスクリーンショットのように使いやすくなっています。

Etcher は、ファイルイメージをSDカードやUSBメモリなどのメディアに書き込むオープンソースのツールで 2017/05/12 に バージョン 1.0.0 になりました。 Etcher Electron で作成されています。 Electron は Node.js と Chrome (Chromium) を組み合わせたデスクトップアプリケーションの開発環境で、簡単にLinux、Windows、MacOSX に対応できるため最近よく使われています。ブラウザのすべての機能を含むアプリになるので配布するサイズが大きく (50MB〜) なるのが唯一の欠点です。

MacOS X 版を起動すると次の画面が表示されます。使い方は、ファイルを選択、書き込み先を指定、書き込みと順番にクリックするだけと簡単です。

Etcher00.png


Windows版を Windows10 で起動した画面です。

 Etcher_Win10.png


Linux版の画面も同じです。

 Etcher_Ubuntu.png


イメージを書き込んだ後に、元のファイルと書き込まれたイメージを比較する検証 (validation) も自動的に実行されます。

Etcher01.png


終了すると、続けて同じイメージを書き込むか、別のイメージを使うかを聞かれます。 ここではメニューから「終了」するか、メニューから [x] して終了します。

Etcher02.png


SDカードで起動

Armbian のイメージを 最初の起動時には「ユーザ: root」、「パスワード: 1234」を使って ssh で接続しますが、 すぐにパスワードを変更するように求められます。その後、ユーザアカウントを作成します。

Last login: Thu May 11 12:14:30 2017 from 172.18.21.14
Changing password for root.
(current) UNIX password: 
Enter new UNIX password: 
Retype new UNIX password: 

Thank you for choosing Armbian! Support: www.armbian.com

Creating a new user account. Press 
<Ctrl-C> to abort

Please provide a username (eg. your forename): jun
Trying to add user jun
Adding user `jun' ...
Adding new group `jun' (1000) ...
Adding new user `jun' (1000) with group `jun' ...
Creating home directory `/home/jun' ...
Copying files from `/etc/skel' ...
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully
Changing the user information for jun
Enter the new value, or press ENTER for the default
	Full Name []: 
	Room Number []: 
	Work Phone []: 
	Home Phone []: 
	Other []: 
Is the information correct? [Y/n] 

Dear jun, your account jun has been created and is sudo enabled.
Please use this account for your daily work from now on.

root@orangepizero:~# 

この時点ではSDカードは書き込んだイメージのサイスになっています。

root@orangepizero:~# df
Filesystem     1K-blocks    Used Available Use% Mounted on
udev              185192       0    185192   0% /dev
tmpfs              50684    1776     48908   4% /run
/dev/mmcblk0p1   1410044 1175960    205436  86% /
tmpfs             253408       0    253408   0% /dev/shm
tmpfs               5120       4      5116   1% /run/lock
tmpfs             253408       0    253408   0% /sys/fs/cgroup
tmpfs             253408       0    253408   0% /tmp
log2ram            51200     808     50392   2% /var/log
tmpfs              50684       0     50684   0% /run/user/0

再起動

再起動すると「OrangePi Zero」のロゴが表示されます。 今回は 16GB のSDカードを使いましたが、 ファイルシステムのサイズは 15GB まで自動で拡張されています。

JunnoMacBook-Pro:~ jun$ ssh -l jun 172.18.21.26
[email protected]'s password: 
  ___                               ____  _   _____              
 / _ \ _ __ __ _ _ __   __ _  ___  |  _ \(_) |__  /___ _ __ ___  
| | | | '__/ _` | '_ \ / _` |/ _ \ | |_) | |   / // _ \ '__/ _ \ 
| |_| | | | (_| | | | | (_| |  __/ |  __/| |  / /|  __/ | | (_) |
 \___/|_|  \__,_|_| |_|\__, |\___| |_|   |_| /____\___|_|  \___/ 
                       |___/                                     

Welcome to ARMBIAN 5.25 stable Ubuntu 16.04.1 LTS 3.4.113-sun8i   
System load:   0.00            	Up time:       14 min		
Memory usage:  6 % of 494Mb  	IP:            172.18.21.26
CPU temp:      49°C           	
Usage of /:    8% of 15G    	


[ 5 updates to install: apt-get upgrade ]

To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

jun@orangepizero:~$ df
Filesystem     1K-blocks    Used Available Use% Mounted on
udev              185192       0    185192   0% /dev
tmpfs              50684    1148     49536   3% /run
/dev/mmcblk0p1  15092516 1177380  13747612   8% /
tmpfs             253408       0    253408   0% /dev/shm
tmpfs               5120       4      5116   1% /run/lock
tmpfs             253408       0    253408   0% /sys/fs/cgroup
tmpfs             253408       0    253408   0% /tmp
log2ram            51200     976     50224   2% /var/log
tmpfs              50684       0     50684   0% /run/user/1000

mpd、mpc、samba、apache2 をインストール

音楽を OrangePi Zero に接続した USBスピーカ (JBL Pebbles) に流すためのサーバプログラムとして「mpd」、mpd をコマンドラインから操作するためのコマンドとして「mpc」、音楽ファイルを PC から OrangePi Zero に転送するために「samba」、iPhone や Android、iPad などのブラウザから操作するために「apache2」をインストールします。

jun@orangepizero:~$ sudo apt-get install samba mpd mpc apache2
[sudo] password for jun: 
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will  installed:
  apache2-bin apache2-data apache2-utils fontconfig-config fonts-dejavu-core
  libadplug-2.2.1-0v5 libao-common libao4 libapr1 libaprutil1
  libaprutil1-dbd-sqlite3 libaprutil1-ldap libasyncns0 libaudiofile1
  libavahi-client3 libavahi-common-data libavahi-common3 libavcodec-ffmpeg56
  libavformat-ffmpeg56 libavutil-ffmpeg54 libbinio1v5 libbluray1 libcdio-cdda1
  libcdio-paranoia1 libcdio13 libcups2 libfaad2 libfile-copy-recursive-perl
  libflac8 libfluidsynth1 libfontconfig1 libfreetype6 libgme0 libgsm1
  libid3tag0 libiso9660-8 libldb1 liblua5.1-0 libmad0 libmikmod3 libmms0
  libmodplug1 libmp3lame0 libmpcdec6 libmpdclient2 libmpg123-0 libnfs8 libogg0
  libopenal-data libopenal1 libopenjpeg5 libopus0 liborc-0.4-0 libpulse0
  libpython2.7 libresid-builder0c2a libroar2 libschroedinger-1.0-0
  libsdl1.2debian libshine3 libshout3 libsidplay2v5 libsidutils0 libsmbclient
  libsnappy1v5 libsndfile1 libsoxr0 libspeex1 libspeexdsp1 libssh-gcrypt-4
  libswresample-ffmpeg1 libtalloc2 libtdb1 libtevent0 libtheora0 libtwolame0
  libupnp6 libva1 libvorbis0a libvorbisenc2 libvorbisfile3 libvpx3 libwavpack1
  libwbclient0 libwebp5 libwildmidi-config libwildmidi1 libx11-6 libx11-data
  libx264-148 libx265-79 libxau6 libxcb1 libxdmcp6 libxext6 libxvidcore4
  libyajl2 libzvbi-common libzvbi0 libzzip-0-13 python-crypto python-dnspython
  python-ldb python-samba python-talloc python-tdb samba-common
  samba-common-bin samba-libs tdb-tools update-inetd
Suggested packages:
  www-browser apache2-doc apache2-suexec-pristine | apache2-suexec-custom ufw
  adplug-utils libaudio2 libesd0 | libesd-alsa0 libbluray-bdj cups-common
  opus-tools pulseaudio libroar-plugins-universal roaraudio-server pinentry
  libmuroar0 slpd socat speex avahi-daemon icecast2 python-crypto-dbg
  python-crypto-doc bind9 bind9utils ctdb ldb-tools smbldap-tools winbind
  heimdal-clients
Recommended packages:
  ssl-cert libaacs0 va-driver-all | va-driver freepats attr samba-dsdb-modules
  samba-vfs-modules
The following NEW packages will be installed:
  apache2 apache2-bin apache2-data apache2-utils fontconfig-config
  fonts-dejavu-core libadplug-2.2.1-0v5 libao-common libao4 libapr1
  libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap libasyncns0
  libaudiofile1 libavahi-client3 libavahi-common-data libavahi-common3
  libavcodec-ffmpeg56 libavformat-ffmpeg56 libavutil-ffmpeg54 libbinio1v5
  libbluray1 libcdio-cdda1 libcdio-paranoia1 libcdio13 libcups2 libfaad2
  libfile-copy-recursive-perl libflac8 libfluidsynth1 libfontconfig1
  libfreetype6 libgme0 libgsm1 libid3tag0 libiso9660-8 libldb1 liblua5.1-0
  libmad0 libmikmod3 libmms0 libmodplug1 libmp3lame0 libmpcdec6 libmpdclient2
  libmpg123-0 libnfs8 libogg0 libopenal-data libopenal1 libopenjpeg5 libopus0
  liborc-0.4-0 libpulse0 libpython2.7 libresid-builder0c2a libroar2
  libschroedinger-1.0-0 libsdl1.2debian libshine3 libshout3 libsidplay2v5
  libsidutils0 libsmbclient libsnappy1v5 libsndfile1 libsoxr0 libspeex1
  libspeexdsp1 libssh-gcrypt-4 libswresample-ffmpeg1 libtalloc2 libtdb1
  libtevent0 libtheora0 libtwolame0 libupnp6 libva1 libvorbis0a libvorbisenc2
  libvorbisfile3 libvpx3 libwavpack1 libwbclient0 libwebp5 libwildmidi-config
  libwildmidi1 libx11-6 libx11-data libx264-148 libx265-79 libxau6 libxcb1
  libxdmcp6 libxext6 libxvidcore4 libyajl2 libzvbi-common libzvbi0
  libzzip-0-13 mpc mpd python-crypto python-dnspython python-ldb python-samba
  python-talloc python-tdb samba samba-common samba-common-bin samba-libs
  tdb-tools update-inetd
0 upgraded, 115 newly installed, 0 to remove and 0 not upgraded.
Need to get 24.1 MB of archives.
After this operation, 82.6 MB of additional disk space will be used.
Do you want to continue? [Y/n] y

samba の設定

OrangePi Zeroをファイルサーバとして、音楽ファイルを PC から転送するために「samba」を使います。

設定ファイルの編集

/etc/samba/smb.conf を編集して、OrangePi Zero のホームディレクトリをPCからアクセスできるようにします。

jun@orangepizero:~$ sudo vi /etc/samba/smb.conf 

samba の設定ファイルの修正した部分を示します。 青字は行番号で、赤い字が行頭の「#」を削除して修正舌部分です。

188 #======================= Share Definitions =======================
189 
190 # Un-comment the following (and tweak the other settings below to suit)
191 # to enable the default home directory shares. This will share each
192 # user's home directory as \\server\username
193 [homes]
194    comment = Home Directories
195    browseable = no
196 
197 # By default, the home directories are exported read-only. Change the
198 # next parameter to 'no' if you want to be able to write to them.
199    read only = no
200 
201 # File creation mask is set to 0700 for security reasons. If you want to
202 # create files with group=rw permissions, set next parameter to 0775.
203    create mask = 0775
204 
205 # Directory creation mask is set to 0700 for security reasons. If you want t    o
206 # create dirs. with group=rw permissions, set next parameter to 0775.
207    directory mask = 0775
208 
209 # By default, \\server\username shares can be connected to by anyone
210 # with access to the samba server.
211 # Un-comment the following parameter to make sure that only "username"
212 # can connect to \\server\username
213 # This might need tweaking when using external authentication schemes
214    valid users = %S

samba用のパスワードの設定

samba用のユーザを追加し、パスワードを設定します。PCからアクセスする場合のユーザ ID とパスワードになります。

jun@orangepizero:~$ sudo smbpasswd -a ユーザ名
New SMB password:  パスワード
Retype new SMB password:  パスワード
Added user jun.

samba の再起動

samba をリスタートして設定を有効にします。

jun@orangepizero:~$ sudo service smbd restart
jun@orangepizero:~$ sudo service nmbd restart


alsa の設定

Linux のサウンド関連のコンポーネントである alsa (Advanced Linux Sound Architecture) で JBL Pebbles をサウンドの出力先に指定します。

Pebbles をデフォルトに設定するため、/usr/share/alsa/alsa.conf の 68 行目と69行目の「0」を「Pebbles」に変更します。

defaults.ctl.card  Pebbles
defaults.pcm.card  Pebbles

mpd の設定と mpc の使い方

音楽ファイルとプレイリスト用のディレクトリを作成します。 samba 経由でPCからファイルを転送できるようにユーザのホームディレクトリ以下に mpdというディレクトリを作成し、その下に music と playlists というディレクトリを作ります。 mpd デーモンが読み書きするため、mpd 以下のディレクトリのパーミッションは 777 としておきます。

jun@orangepizero:~$ mkdir mpd
jun@orangepizero:~$ cd mpd
jun@orangepizero:~/mpd$ mkdir music
jun@orangepizero:~/mpd$ mkdir playlists
jun@orangepizero:~/mpd$ cd
jun@orangepizero:~$ chmod -R 777 mpd

mpd の設定ファイルである /etc/mpd.conf をコピーしてオリジナルを保存しておきます。

jun@orangepizero:~$ sudo cp /etc/mpd.conf /etc/mpd.conf.orig

元の mpd.conf は500行ほどのサイズですが、コメントを除いて修正した以下の内容としました。最初の 2 行は私のホームディレクトリ ( /home/jun ) 以下のディレクトリを指定しているので、ユーザアカウントに合わせて修正して下さい。

music_directory   "/home/jun/mpd/music"
playlist_directory  "/home/jun/mpd/playlists"
db_file           "/var/lib/mpd/tag_cache"
log_file          "/var/log/mpd/mpd.log"
pid_file          "/run/mpd/pid"
state_file        "/var/lib/mpd/state"
sticker_file      "/var/lib/mpd/sticker.sql"

user              "mpd"
bind_to_address   "0.0.0.0"
port              "6600"

auto_update    "yes"

input {
    plugin "curl"
}

audio_output {
    type       "alsa"
    name       "My ALSA Device"
}

filesystem_charset  "UTF-8"
id3v1_encoding      "UTF-8"

mpc による演奏テスト

mpd はクライアントプログラムとして、 mpc コマンドを実行することでコマンドラインからコントロールできます。 音楽ファイルを $HOME/mpd/music 以下に置いて、「mpc update」 を実行して 音楽ファイルをmpd に登録します。

jun@orangepizero:~$ mpc update
Updating DB (#1) ...
volume: n/a   repeat: off   random: off   single: off   consume: off

テストとして、すべてのファイルをプレイリスト(キュー)に登録します。 「mpc ls」で音楽ファイルの一覧を取得して、それを「mpc add」に与えてプレイリストにします。

jun@orangepizero:~$ mpc ls |mpc add
演奏開始

プレイリスト(キュー)に登録されている曲を演奏。

jun@orangepizero:~$ mpc play
一時停止と再開

pause は曲の途中で一時停止。

jun@orangepizero:~$ mpc pause
jun@orangepizero:~$ mpc play
演奏終了

演奏を終了する。

jun@orangepizero:~$ mpc stop
演奏順をランダムに
jun@orangepizero:~$ mpc random on
音量を変更
jun@orangepizero:~$ mpc volume +10
jun@orangepizero:~$ mpc volume -10
プレイリストを消去

演奏中のプレイリスト(キュー)を消去します。

jun@orangepizero:~$ mpc clear
プレイリストを作成して保存

指定ディレクトリ以下 (ここの例は jazz/vocal 以下) のファイルをプレイリストに登録し、A.m3uというプレイリストに保存。 まずキューを消去して、mpc ls jazz/vocal |mpc add でキューに曲を追加、mpc save A で A.m3u というプレイリストを保存します。

jun@orangepizero:~$ mpc clear
jun@orangepizero:~$ mpc ls jazz/vocal |mpc add
jun@orangepizero:~$ mpc save A
保存済みのプレイリストをキューに追加
jun@orangepizero:~$ mpc load A

ゲームパッドでコントロール

USBで接続するゲームパッドを使って Raspberry Pi でコマンドを実行する話題を 2年前 先月 に記事にしました。 Orange Pi Zero ではディスプレイを接続できないので、USBゲームパッドで mpd を制御するためのコマンドを実行できると便利です。 Raspberry Pi でゲームパッドを使うプログラムをちょっと改造して mpc を使って、演奏の開始と停止、音量の調整、プレイリストの選択、Orange Pi Zero のシャットダウンを行うプログラムを作成します。 2年前 先月 の記事で使っている言語は Luajit ですが、Orange Pi Zero でも簡単にインストールできます。


luajit のインストール

Luajit は Lua という言語を高速に実行できる JIT(Just In Time) コンパイラです。 Raspbianには最初から使えるようになっていますが、Armbian ではデフォルトでインストールされていないので、インストールする必要があります。「sudo apt-get install luajit」を実行するだけなので簡単です。 私は文法的な雰囲気から JavaScript が C ならば、Lua Pascal に相当すると思っています。

jun@orangepizero:~$ sudo apt-get install luajit
[sudo] password for jun: 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  libluajit-5.1-common
The following NEW packages will be installed:
  libluajit-5.1-common luajit
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Need to get 209 kB of archives.
After this operation, 455 kB of additional disk space will be used.
Do you want to continue? [Y/n] y

luajit のバージョンの確認

jun@orangepizero:~$ luajit -v
LuaJIT 2.0.4 -- Copyright (C) 2005-2015 Mike Pall. https://luajit.org/

ゲームパッド用プログラムのインストール

jsmpd.tar.gz (3KB) をダウンロードして解凍、「cd jsmpd ; sudo ./install.sh」を実行するだけです。


jun@orangepizero:~$ tar ztvvf jsmpd.tar.gz
drwxr-xr-x jun/jun           0 2017-05-16 08:51 jsmpd/
-rw-r--r-- jun/jun         102 2017-04-03 03:25 jsmpd/70-jscom.rules
-rw-r--r-- jun/jun         258 2017-04-03 03:26 jsmpd/jscom.service
-rwxr-xr-x jun/jun        9836 2017-05-16 08:51 jsmpd/jsCommand.lua
-rwxr-xr-x jun/jun         157 2017-05-14 05:56 jsmpd/install.sh
jun@orangepizero:~$ tar ztvvf jsmpd.tar.gz
jun@orangepizero:~$ cd jsmpd/
jun@orangepizero:~/jsmpd$ sudo ./install.sh

ゲームパッドを接続して、dmesg で認識されているか確認。

$ dmesg
[ 5683.173939] ehci_irq: highspeed device connect
[ 5683.320436] ehci_irq: highspeed device disconnect
[ 5683.320474] ohci_irq: fullspeed or lowspeed device connect
[ 5683.740169] usb 6-1: new low-speed USB device number 2 using sunxi-ohci
[ 5683.988790] generic-usb 0003:0583:2060.0002: input,hidraw1: USB HID v1.10 Joystick [USB,2-axis 8-button gamepad  ] on usb-sunxi-ohci-1/input0
$ ps ax

 3561 ?        Ss     0:00 /usr/bin/luajit /usr/local/bin/jsCommand.lua -c &

jsCommand.lua の変更部分

前回の記事 を mpc コマンドを使うように修正しています。ボタンを押す順序と対応するコマンドを登録している部分の変更だけです。

  -- A, B, X, Y, L, R, Start, sElect, up, down, left, right
  addCommand("ESESESES", "quit")
  addCommand("lrlrBA", "/sbin/shutdown -h now")
  addCommand("lrlrES", "/sbin/reboot")
  addCommand("EA", "/usr/bin/mpc load A")
  addCommand("EB", "/usr/bin/mpc load B")
  addCommand("EX", "/usr/bin/mpc load X")
  addCommand("EY", "/usr/bin/mpc load Y")
  addCommand("ER", "/usr/bin/mpc load R")
  addCommand("EL", "/usr/bin/mpc load L")
  addCommand("Eu", "/usr/bin/mpc load U")
  addCommand("Ed", "/usr/bin/mpc load D")
  addCommand("Er", "/usr/bin/mpc load R2")
  addCommand("El", "/usr/bin/mpc load L2")
  addCommand("EE", "/usr/bin/mpc clear")
  addCommand("SS", "/usr/bin/mpc play")
  addCommand("SA", "/usr/bin/mpc pause")
  addCommand("SB", "/usr/bin/mpc stop")
  addCommand("uu", "/usr/bin/mpc volume +5")
  addCommand("dd", "/usr/bin/mpc volume -5")
  addCommand("Su", "/usr/bin/mpc volume 40")
  addCommand("Sd", "/usr/bin/mpc volume 10")
  addCommand("SE", "/usr/bin/mpc shuffle")
  addCommand("ll", "/usr/bin/mpc prev")
  addCommand("rr", "/usr/bin/mpc next")
  addCommand("ABYX", "/usr/bin/aplay /usr/share/sounds/alsa/Front_Center.wav")

ゲームパッドの操作方法

以上の修正で使えるようになるコマンドは次のようになります。方向キー (上下右左) と (A)、(B)、(X)、(Y)、(L)、(R) ボタンと [select]、[start] ボタンを押す順序の組み合わせで、mpd のいろいろな機能を使うようにしています。普通のステレオ・コンポで使う機能は実現できていると思います。 ボタンを押した履歴は、1秒間ボタンを押さないとリセットされます。ボタンを押した順序が不安な場合には 1秒待てば最初から始められます。


ゲームパッドだけでプレイリストを選択するために、A、B、X、Y、R、L、U、D、R2、L2という10種類の固定した名前のプレイリストファイル (m3u) を使います。 [select] [ボタン] でプレイリストをロードして演奏中のキューに追加できます。 プレイリストを切り替えるには [select] [select] で演奏中のキューをクリアして、[select] [ボタン] でロードします。

ボタン順 機能
[select] (A) プレイリスト A (A.m3u) をキューに追加
[select] (B) プレイリスト B (B.m3u) をキューに追加
[select] (X) プレイリスト X (X.m3u) をキューに追加
[select] (Y) プレイリスト Y (Y.m3u) をキューに追加
[select] (R) プレイリスト R (R.m3u) をキューに追加
[select] (L) プレイリスト L (L.m3u) をキューに追加
[select] 上 プレイリスト U (U.m3u) をキューに追加
[select] 下 プレイリスト D (D.m3u) をキューに追加
[select] 右 プレイリスト R2 (R2.m3u) をキューに追加
[select] 左 プレイリスト L2 (L2.m3u) をキューに追加
[select] [select] 演奏中のキューのクリア
[start] [start] 演奏開始
[start] (A) 演奏一時停止
[start] (B) 演奏停止
上上 音量アップ 5%
下下 音量ダウン 5%
[start] 上 音量設定 40%
[start] 下 音量設定 10%
[start] [select] キューの曲順をシャッフル
左 左 前の曲に移動
右 右 次の曲に移動
(A) (B) (Y) (X) スピーカのテスト「フロントセンター」と音声出力
左右左右(B) (A) システムのシャットダウン
左右左右[select] [start] システムのリブート

 js_compo.jpg


この写真の構成で10時間ほど モバイルバッテリー で使っていましたが、まだ 2/3 ぐらい残っている感じです。十分にアウトドアな使い方ができますね。CDラジカセで単2のアルカリ電池を6本を使い切る感じでしょうか。 USB電流電圧テスターでは5.2V、0.4A ぐらいの消費電力 (2W+) です。 Bluetoothでない無線2.4GHzのゲームパッド なら、ペアリングを気にすること無くさらに便利になりそうです (まだ買ってませんが)。



Orange Pi Zero/PC2/Raspberry Pi2 のベンチマーク



このページの目次