moOde8.2.2 TA1011B + UAC3552A

moOde8.2.2をインストール。今回は訳有で以前使用していた秋月のりんご基板(TA1011B + UAC3552A)を採用しています。

moOde8.2.2

カードは新規にインストール作成するのですが環境は以前に作成したファイルをコピーして作成しています。moOde8(bullseye)になってpulseaudio関連を設定している関係から初回起動時mpd errorが出てしまいます。

# systemctl status mpd

/var/lib/mpd/databaseが作成出来ないよと言っています。

ファイル・ディレクトリの所有者グループがpulse:audioになっています。mpd:audioに変更

# chown mpd:audio /var/lib/mpd
# chown mpd:audio /var/lib/mpd/playlists


/var/lib/mpd/databaseが作成されます。

TA1011B + UAC3552A

現在(2022/11)秋月にはまだ在庫があるようですが大分少なくなっていますね。このりんご基板を使うには何らかの改造が必要になるかと思います。当サイトでは以下のサイトを参考にしています。
ミュートの解除、アンプ及びUSB-DACのセパレート
秋月の10W+10WステレオD級アンプモジュール(USB I/F付き)を活用
USB-DACのレベル改善
秋月のUSBオーディオ UAC3552A を活用する
12V外部電源化
USBオーディオアンプ基板 改造その2

以前よりちょくちょく改造はしていたのですが今回再度見直してみます。I2S-DACは3個(ローコスト)あるのですが聴感上レベルはだいたい揃っています。UAC3552Aもレベルを揃えます。またTA1011Bの入力感度もPAM8403と比較確認してみます。以下当サイト現在の改造箇所

12V外部電源化 USB接続
AC Asaptorは古いノートパソコン(Fujitsu)の16V 2.2Aを再利用しています。昇圧回路を取り外してジャンパー、レギュレーター7812 (12V 1A)から元の5V供給ラインに接続。
USB接続はマイクロUSBコネクタを取り付け。UAC3552Aの5Vは内臓の78M05から供給されています。

TA1011B + UAC3552Aのセパレート化
DAC OUT〜AMP INのカップリングコン(チップコンデンサ)を取り外し間にAMP IN用ミニジャック、スライドSW、カップリングコンを新たに取り付け。通常はDAC OUT〜AMP INにSWが接続されています。SWを切り替えるとAMP DACが個別に使用可になります。DAC OUT〜AUX OUT(UAC3552A OUT)間には原回路のカップリングコンなどが噛んでいます。

ミュート回路

TA1101B内部でmuteピンはプルアップされていてDAC(UAC3552A)からミュートコントロールする仕様のようですがmuteピンをパターンショートする代わりにピンヘッダで引き出しジャンパーピンでGNDに落とします。ジャンパーピンを外すことでmuteが有効になりTA1101Bだけ利用したい場合など電源を落とすこと無くジャックの抜き差し時ノイズを抑えることが出来ます。

USB-DACのレベル

これまで15Kの抵抗を1.5Kまで落としてゲインを稼いでいたのですが今回更に1Kに変更。聴感上ですがほぼI2Sデバイスと同じくらいで音質などもそう大きな差は無いと思っています。
抵抗はロットによって種類(色)が違うようです。

moOde audio(Raspberry Pi)


改造が終わったらRaspberry Piに接続
Apple, Inc. Speakersとして認識します。


Output deviceでSpeakersを選択。Volume typeはHardwareまたはSoftwareでも動作可ですが下記のalsamixerの表示に違いがあります。
I2S-DACはSoftwareを選択


USB-DACはalsaからコントロールが可
I2S-DAC(MPD)はalsamixer不可
左記Volume typeはHardware Software時はPCMが100%に固定されソフト的に音量をコントロールするようです。


pulseaudioではUSB-DAC,USB-DAC共alsamixerで音量をコントロール

デフォルトサウンドカードの設定

raspberry pi 2
$ cat /proc/asound/cards
内臓のサウンドカードが見えています。またUSB-DACが#2で認識しています。内臓のサウンドカードを非表示にUSB-DACを先頭(#0)に並べ替えます。

/boot/config.txt #コメントアウト
#dtparam=audio=on
/etc/modprobe.d/alsa-base.conf #新規作成
options snd slots=snd_usb_audio,snd_bcm2835
options snd_usb_audio index=0
options snd_bcm2835 index=1

操作感はmpd,pulseaudio共I2S-DACと全く同じ。音質的にも何ら問題ないレベルと思います。I2S-DACに付け替える時はVolume typeをSoftwareにalsa-base.confをリネームしてバックアップしておくとか慣れるまでいろいろ設定に戸惑うかもしれません。

消費電力は16Vアダプタ出力電流を測定。16V x 195mA = 約3.2W 常時運用でもなんとか我慢できるレベルと思います。

FOSTEX FE-87

中央はOrangepi3ファイルサーバー(今回関係なし)
FE-87は10数年前でしょうか。ホムセンのワゴンセールで購入したものです。(値札は580円がついていました)冒頭に述べた訳有とはこのFE-87をなんとかうまく鳴らしてみたいと思いTA1011B + UAC3552Aを設定したのですが結果は大失敗でした。現状のメインスピーカーではI2S_DAC + PAM8403では問題無くむしろ良く鳴っていると思います。FE-87に接続すると中高域にピークが出るようで聞き苦しい再生音になります。TA1011B + UAC3552Aでは再生音がどうこう以前にmoOde audio(raspberry pi)のリソースを消費して反応が無くなってきます。メインスピーカーではI2S_DAC同様全く問題ありません。原因は不明ですがもう少しいろいろ調べてみようと思います。

moOde audio 8.1.2 CD-DA(CDプレーヤー)

CD-DA(Compact Disc Digital Audio)moOde audioにCDドライブを接続、いわゆるCDプレーヤーです。最近ではアルバム単位で聞くことも少なくなりましたが未リッピングのCDやまたリッピング済でも気まぐれにCDの音を直接聞きたいと思うことがあります。

CDドライブ


2台のドライブでテスト
IO DATA DVRP-U8NKA
IO DATA EX-BD03K
PiでUSBドライブなどを接続するにあたり問題になるのはUSBからの供給電流が不足するところにあります。実際に不足するしないはボード及びドライブによっても違います。


簡単な対策としてはスマホ充電器などからPiの空きポートに電圧(5V)を供給してやります。不要になったケーブルからUSB-Aオス-オスを作成。もう一つはUSB-AオスーマイクロBメスアダプタを作成、やはりAオス-オスとして接続。


Raspberry Pi2
電源供給なしではドライブとして認識してもCDが認識されません。モーター回転時内部の電圧降下が大きくなると思います。


Pi Zero 2W USBハブを介して接続
Zero2WではUSBポートに電圧を供給すると電源側にも廻り込みます。Pi2ではそのようなことは無くPi2が本来のUSB仕様と思います。電源側からUSBポートに供給されるため2.5インチUSB-HDD位は問題無くドライブ出来ると思います。但しドライブによってはやはり電圧降下が生じるため外部から供給が必要になるかもしれません。

CDドライブは/dev/sr0として認識。/dev/cdromはsr0へリンク
cddaの再生では/etc/udev/rules.d/*の設定は特に必要ないようです。

$ lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sr0          11:0    1 603.2M  0 rom  
$ ls -la /dev/sr0
brw-rw---- 1 root cdrom 11, 0  9月  5 18:15 /dev/sr0
$ ls -la /dev/cdrom
lrwxrwxrwx 1 root root 3  9月  5 18:15 /dev/cdrom -> sr0

プレーヤー(MPlayer)

mpd以外はmpv,mplayer,ffplay(ffmpeg)をインストールしています。cdda再生可能なプレーヤーはmpdとmplayerですが現バージョンのmpd(OS)では実用になりません(挙動怪しい)。mplayerの新規開発は停止、mpvに移行していますがデフォルトのmpvはcddaに対応していないようです。mplayerは今後もしばらくは新OSに対応していくものと思います。
mplayer 連続再生

$ mplayer cdda://:1 -cache 2048 -nolirc 1

トラックを指定して再生(トラック5)

$ mplayer cdda://5:1 -cache 2048 -nolirc 1

オプション
:1 で CDROM の速度が低くなり安定して回転してノイズが減ります。(see MPlayer-ArchWiki)
-cache 2048 :1024では不足
-nolirc 1 赤外線リモコンなし

CD-DA MPlayer

simul_cd.py.20220905
PLAYで連続再生、トラック番号を指定(トラック再生)のシンプルなプレーヤー
グリーンボタンはxterm上で実行、PLAY(黄色)はxtermなし静かに実行


CD-DA再生中はCD-DAロゴを表示
/var/www/html/img/cdda.jpg
pulse.php.20220905

トラックを指定して実行すると再生開始前に以下のメッセージを表示しますが問題ありません。
Cache empty, consider increasing -cache and/or -cache-min. [performance issue]
再生中に表示があるとキャッシュ不足で音が途切れます。(キャッシュ設定)

mpd(リッピング)とMPlayer(CD-DA Pulseaudio)音質の違いは気にしないでCDジャケット片手に旧来のスタイルで聴くのも風情があります。

サイマルラジオ moOdeラジオ

pulse.phpから表示するmoOde radioイメージロゴをいくつか作成してみました。またラジオ局名に記号が含まれているとサイマルラジオからは正常に読み取れないので修正

pulse.phpイメージロゴ

サイマルラジオ moOde radio pulse.php imgファイル(300×60)

 

20220731 moOde radio imgファイル追加


simul.py修正(再生)

220行目付近command = a と b (記号)を文字列として認識しないのでシングルコーテーションで囲むようにします。

    # ListBOX
    for i in lb.curselection():
        a = (lb.get(i)); b = (lb.get(i));
        command = ("echo '" + a + "' | awk '{print $NF}'")
        a = (subprocess.Popen(command, stdout=subprocess.PIPE, shell=True).communicate()[0]).decode('utf-8')
        a = a.strip()
        command = ("echo '" + b + "' | grep radiko")
        b = (subprocess.Popen(command, stdout=subprocess.PIPE, shell=True).communicate()[0]).decode('utf-8')
        b = b.strip()

simul.py修正(imgロゴ vol.list)

vol.listの検索も失敗、ここは削除、置き換えをします。対象 ()&’
322行目付近以下を修正

        # moOde
        if csra == False and nhk == False:
            csv_moode = ""
            with open(radio_dir+"cfg_radio.csv", 'r') as f:
                for csvid in f:
                    if re.search(proc, csvid):
                        csv_moode = csvid
                if len(csv_moode) != 0 and len(proc) != 0:
                    st = std; stc()
                    csv_moode = csv_moode.strip()
                    command = ("echo " + csv_moode + " | awk -F',' '{print $3}'")
                    st = (subprocess.Popen(command, stdout=subprocess.PIPE, shell=True).communicate()[0]).decode('utf-8')
                else:
                    time.sleep(3)
                    st = std; stc()
                    command = ("mpc | awk 'NR==1' | awk -F':' '{print $1}'")
                    st = (subprocess.Popen(command, stdout=subprocess.PIPE, shell=True).communicate()[0]).decode('utf-8')
                # (image data,vol.list)
                st = st.strip()
                st = re.sub('\(', '', st)
                st = re.sub('\)', '', st)
                st = re.sub('&', '_', st)
                st = re.sub('\'', '', st)
                subprocess.run("echo '" + st + "' > /tmp/moode_id", shell=True)
                subprocess.run("test -e /var/www/html/img/'" + st + ".jpg' ; echo $? > /tmp/test_id", shell=True)
                stc()
        else: # pulse.php image data (1)
            f = open('/tmp/test_id','w')
            f.write('1\n')
            f.close()

simul.py修正(img_file_click)

63行目付近

# img_file
def img_file_click():
    command = ("ps ax | grep pulseaudio | grep -v grep | awk '{print $NF}'")
    pulse = (subprocess.Popen(command, stdout=subprocess.PIPE, shell=True).communicate()[0]).decode('utf-8')
    pulse = pulse.strip()
    if pulse == "--start":
        messagebox.showinfo('simul radio', 'PulseAudio')
    else:
        t = (subprocess.Popen("cat /tmp/test_id", stdout=subprocess.PIPE, shell=True).communicate()[0]).decode('utf-8')
        t = t.strip()
        if t == "0":
            img = (subprocess.Popen("cat /tmp/moode_id", stdout=subprocess.PIPE, shell=True).communicate()[0]).decode('utf-8')
            img = img.strip()
            messagebox.showinfo('simul radio', img + '.jpg')
        else:
            subprocess.run("xterm -e less /tmp/moode_id &", shell=True)

pulse.phpのimgロゴ、vol設定はサイマルラジオからPlayしたときに表示適用されます。moOde playerはサイマルラジオのPlayと連動して再生を開始、表示しますがボリュームの値は反映されません。img_fileボタンをクリックするとロゴ画像作成設定済みの場合はメッセージボックスで表示。リストボックスの表示はDR P8 Jazz (320K)ですが()の無いDR P8 Jazz 320Kになります。vol.listのラジオ局名も同じ名称を使用します。

moOde audioのラジオメニューはアルファベット順に並んでいることからサイマルラジオのfavoriteボタンやmoodeボタンをジャンル別、ラジオ局などに変更してみました。
All.Listボタン moOde radioの聴取可能な全リストをアルファベット順に(参照程度)
Uncat…ed(Uncategorized)未分類 各ボタンに振り分けた以外のリスト(大雑把)
各ボタンのリスト登録は登録したいラジオ局をフォーカス(コピー完了)登録したいリストを選択、List.Editボタンで編集。ダブルコーテーションを打つ、マウス中ボタンでペースト、ダブルコーテーションで囲む。編集終了
リストの作成次第でまた違った楽しみ方ができそうです。

サイマルラジオ らじる ラジコ

サイマルラジオ mpd向けリストです。
画像は300×300 pulse.php 300×60で作成
順次整理、追加の予定です。

サイマルラジオリスト

20220731 らじる★らじる追加

らじる★らじる

下記リストはサイマルラジオ用 moOdeにはラジオ局、URL、ロゴ画像を登録

"                                                                          --- らじる★らじる ---"
" --- 札幌 ---"
"NHK R1 札幌   https://radio-stream.nhk.jp/hls/live/2023545/nhkradiruikr1/master48k.m3u8"
"NHK FM 札幌   https://radio-stream.nhk.jp/hls/live/2023546/nhkradiruikfm/master48k.m3u8"
" --- 仙台 ---"
"NHK R1 仙台   https://radio-stream.nhk.jp/hls/live/2023543/nhkradiruhkr1/master48k.m3u8"
"NHK FM 仙台   https://radio-stream.nhk.jp/hls/live/2023544/nhkradiruhkfm/master48k.m3u8"
" --- 東京 ---"
"NHK R1 東京   https://radio-stream.nhk.jp/hls/live/2023229/nhkradiruakr1/master48k.m3u8"
"NHK FM 東京   https://radio-stream.nhk.jp/hls/live/2023507/nhkradiruakfm/master48k.m3u8"
" --- 名古屋 ---"
"NHK R1 名古屋   https://radio-stream.nhk.jp/hls/live/2023510/nhkradiruckr1/master48k.m3u8"
"NHK FM 名古屋   https://radio-stream.nhk.jp/hls/live/2023511/nhkradiruckfm/master48k.m3u8"
" --- 大阪 ---"
"NHK R1 大阪   https://radio-stream.nhk.jp/hls/live/2023508/nhkradirubkr1/master48k.m3u8"
"NHK FM 大阪   https://radio-stream.nhk.jp/hls/live/2023509/nhkradirubkfm/master48k.m3u8"
" --- 広島 ---"
"NHK R1 広島   https://radio-stream.nhk.jp/hls/live/2023512/nhkradirufkr1/master48k.m3u8"
"NHK FM 広島   https://radio-stream.nhk.jp/hls/live/2023513/nhkradirufkfm/master48k.m3u8"
" --- 松山 ---"
"NHK R1 松山   https://radio-stream.nhk.jp/hls/live/2023547/nhkradiruzkr1/master48k.m3u8"
"NHK FM 松山   https://radio-stream.nhk.jp/hls/live/2023548/nhkradiruzkfm/master48k.m3u8"
" --- 福岡 ---"
"NHK R1 福岡   https://radio-stream.nhk.jp/hls/live/2023541/nhkradirulkr1/master48k.m3u8"
"NHK FM 福岡   https://radio-stream.nhk.jp/hls/live/2023542/nhkradirulkfm/master48k.m3u8"
" --- 全国 ---"
"NHK R2 全国   https://radio-stream.nhk.jp/hls/live/2023501/nhkradiruakr2/master48k.m3u8"

サイマルラジオ radiko(関東エリア) pulse.php imgファイル(300×60)








moOde audio 8.1.2 Raspberry Pi Zero 2W

今回はRaspberry Pi Zero 2Wを無事入手できたのでmoOde audio 8.1.2をインストールしてみたいと思います。
r812は64-bit版、Legacy版(32bit)がありますがRaspberry Pi 2でも使えるようLegacy版をインストール

Raspberry Pi Zero 2W


取り敢えずピンヘッダを取り付け


I2SデバイスはGPIO 40Pに直接取り付けできます。

r812 カード作成

いつもの通りカードを作成、作成したカードにPi2(r802)で設定したパスワード関連ファイル、/var/www/html、ユーザーのホームディレクトリをコピー 以下は稼働中のPi2(r802)からマウントしたr812カードへのコピー例
パスワードファイル、/var/www/htmlをコピー、pulseaudioをインストール(/etc/pulse/default.pa設定)することでpulseaudioは復元します。
パスワード関連ファイル

$ sudo cp /etc/passwd /マウント先/etc
$ sudo cp /etc/shadow /マウント先/etc
$ sudo cp /etc/group /マウント先/etc
$ sudo cp /etc/gshadow /マウント先/etc
$ sudo cp /etc/sudoers /マウント先/etc

/var/www/html

$ sudo cp -Rp /var/www/html /マウント先/var/www

/home/pi

$ sudo cp -Rp /home/pi/* /マウント先/home/pi/

その他 dwm vncbootをコピー所定の位置に貼り付け
/usr/local/bin/dwm /etc/init.d/vncboot

アプリケーションインストール

r812カードで起動、known_hostsから削除してssh接続

$ ssh-keygen -R moode
$ ssh pi@moode

インストールした主なパッケージ(rootで実行)

# sh moode-r812-setup.txt

moode-r812-setup.txt

#!/bin/sh

echo "--- Timezone locale ---"
timedatectl set-timezone Asia/Tokyo
sed -i 5a"ja_JP.UTF-8 UTF-8" /etc/locale.gen && locale-gen
update-locale LANG=ja_JP.UTF-8

echo "--- update ---"
apt update

apt -y install vim xterm tree
apt -y install tigervnc-standalone-server tigervnc-common xbindkeys xdotool
apt -y install ranger highlight ffmpegthumbnailer surf feh
apt -y install pulseaudio pavucontrol ncmpcpp
apt -y install mpv mplayer streamlink

# pulseaudio /etc/pulse/default.pa (ネットワーク帯は自環境に適宜変更)
sed -i -e '$a load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;192.168.0.0/24 auth-anonymous=1' /etc/pulse/default.pa
sed -i -e '$a set-default-source alsa_output.platform-soc_sound.stereo-fallback.monitor' /etc/pulse/default.pa
sed -i -e '$a set-default-sink alsa_output.platform-soc_sound.stereo-fallback' /etc/pulse/default.pa

echo "--- youtube-dl ---"
apt -y remove youtube-dl
curl -L https://yt-dl.org/downloads/latest/youtube-dl -o /usr/local/bin/youtube-dl
chmod a+rx /usr/local/bin/youtube-dl

echo "--- jp ---"
apt -y install uim uim-anthy uim-mozc uim-xim uim-gtk2.0

echo "--- themes ---"
apt -y install lxappearance gnome-accessibility-themes gnome-themes-extra

echo "--- dwm compile ---"
apt -y install libx11-dev libxinerama-dev libxft-dev

echo "--- systemctl ---"
systemctl enable vncboot

echo "--- autoremove ---"
apt -y autoremove

sh -c 'echo -n "Hit Enter key to reboot..."; read x'
reboot

tigervnc-viewer

Pi4からはtigervnc-viewerで接続します。moOdeで設定したパスワードファイル(passwd)をコピー、リネーム(moode)して適当なディレクトリに保存,オプション(-passwd)の引数として接続。コピーしたユーザーディレクトリには既にすべてのユーザー設定が含まれているので必要なアプリケーションをインストール(上記)

$ vncviewer -passwd /home/pi/.vnc/moode:1

下記画像は接続後アプリケーションを起動、並び替えたもの(dwmの取り扱い必要)
Pi4からsurfブラウザを使用している場合キャッシュが更新されない場合があります。
キャッシュを削除(rm -r ~/.surf/cache/WebKitCache)

moOde audio r802からR812へは移行できましたが登録したラジオデータがexport importで再現できるかは試していません。moOdeのラジオデータはバージョンごとに多少入れ替えがあったりURLが変更になったりするラジオ局があります。以前試した時はラジオデータが以前のバージョンのままだったため当サイトでは手作業で最新のラジオデータに登録したラジオデータをデータベースに再登録しています。(なにか方法があるのかもしれません)

Raspberry Pi Zero 2W

シングルコアのZeroはスペック的に厳しいですがRaspberry Pi 2と比較すると大きな違いはメモリとネットワークでしょうか。Pi2の1GB有線に対してZero2Wは512MB WiFiになります。個人の感想としては僅かにPi2がスムーズに動作する事もある感じもしますがmoOde audioではほとんど同じと言ってもいいかと思います。

Top