CAT724_sound

CAT724で音を鳴らす。

応用としてネットラジオプレイヤを作る。

CAT724は Linux標準のALSAサウンドシステムを搭載できる。.wav形式、.mp3形式といった標準の音声データの再生は簡単にできる。

準備

debian SH4環境の構築

USBメモリもしくはSDカードに debian squeeze をインストールし起動できるようにする。(組み込みLinuxガイド等を参考の事)

(メモリの読み書き速度は USBメモリのほうが早く、SDカードのほうが遅いのでUSBメモリを推奨する。ただSDであれば本体に収まるので持ち運びには便利)

bootloader で USBメモリまたはSDメモリの第二パーティションをrootパーティションに指定するには次のようにする。(第1パーティションはFAT推奨)

bootloaderのコマンドライン
>> admin
password:
#> setparam -u          (root=USBメモリの第2パーティション)
#> setparam -s          (root=SDメモリの第2パーティション)
#> boot

debian sh が起動したら

  • /etc/apt/sources.list
deb https://www.si-linux.co.jp/pub/debian-sh/squeeze-sh4 squeeze main
deb-src http://ftp.jp.debian.org/debian/ squeeze main contrib non-free
deb-src http://security.debian.org/ squeeze/updates main
deb-src http://ftp.jp.debian.org/debian/ squeeze-updates main

alsaplayerをインストール

# apt-get install alsaplayer-text alsa-utils mpg123

この状態で .wav や .mp3 形式の音ファイルを再生することができる

# mpg123 適当な.mp3
# alsaplayer 適当な.wav
# alsaplayer 適当な.mp3

ネットラジオの再生

などのネットラジオ局のURLを指定する。skyfmのURLの取り方

Hardware PlayerGood (96k MP3)

を指定する(ただし簡単な無料登録が必要になった)

# alsaplayer -r http://u12.sky.fm:80/sky_smoothjazz247?xxxxxxxx
または
# mpg123 http://u12.sky.fm:80/sky_smoothjazz247?xxxxxxxxxx

で音が出るはずである。debian ベースでのネットラジオ再生装置ができた

内蔵FLASH ROMへの組み込み

mpg123を内蔵ROMへ組み込み、電源即断対応の専用機とする

bootloader で内蔵ROMをrootファイルシステムとして起動するように変更する(出荷時の状態に戻す)

bootloaderのコマンドライン
>> admin
password:
#> setparam -d          (root=内蔵flash rom)
#> boot

先ほど作った debian+mpg123がインストールされているメディアを /media/sd にマウントする

# mount /dev/sda2      /media/sd -o ro   (USBメモリの場合)
# mount /dev/mmcblk0p2 /media/sd -o ro   (SDカードの場合)
 オプション -o ro はリードオンリの指定

必用コマンドとライブラリのコピー

alsaplayerを debainからコピーする

# rommode rw
# cp -a /media/sd/usr/bin/alsaplayer          /usr/bin/
# alsaplayer

を実行するとライブラリが不足しているというエラーが出る

エラーが出なくなるまでライブラリをコピーする

# cp -a /media/sd/usr/lib/alsaplayer/         /usr/lib/
# cp -a /media/sd/lib/libglib-2.0.so.0*       /lib/
# cp -a /media/sd/lib/libpcre.so.3*           /lib/
# cp -a /media/sd/usr/lib/libmad.so.0*        /usr/lib/
# cp -a /media/sd/usr/lib/libFLAC.so.8*       /usr/lib/
# cp -a /media/sd/usr/lib/libsndfile.so.1*    /usr/lib/
# cp -a /media/sd/usr/lib/libvorbis.so.0*     /usr/lib/
# cp -a /media/sd/usr/lib/libvorbisfile.so.3* /usr/lib/
# cp -a /media/sd/usr/lib/libasound.so.2*     /usr/lib/
# cp -a /media/sd/usr/lib/libmikmod.so.2* /usr/lib/
# cp -a /media/sd/usr/share/alsa/             /usr/share/
# rommode ro
# umount /media/sd

「ラジコ」や「ラジル」

圧縮を解答しながらのストリーミング再生ソフトが必要になる。先ほどと同じように、いったん debian sh で起動して必要な追加ソフトをインストールする

# apt-get install rtmpdump ffmpeg

次に root=内蔵FLASH ROM に戻して再起動してから

# mount /dev/sda2      /media/sd -o ro   (USBメモリの場合)
# mount /dev/mmcblk0p2 /media/sd -o ro   (SDカードの場合)
 オプション -o ro はリードオンリの指定

ffmpegコマンドのコピー

# rommode rw
# cp /media/sd/usr/bin/ffmpeg /usr/bin/
# ffmpeg

を実行するとライブラリが不足しているというエラーが出る。 エラーが出なくなるまでライブラリをコピーする

# cp -a /media/sd/usr/lib/libavfilter.so.0*         /usr/lib/
# cp -a /media/sd/usr/lib/libpostproc.so.51*        /usr/lib/
# cp -a /media/sd/usr/lib/libswscale.so.0*          /usr/lib/
# cp -a /media/sd/usr/lib/libavdevice.so.52*        /usr/lib/
# cp -a /media/sd/usr/lib/libavformat.so.52*        /usr/lib/
# cp -a /media/sd/usr/lib/libavcodec.so.52*         /usr/lib/
# cp -a /media/sd/usr/lib/libavutil.so.49*          /usr/lib/
# cp -a /media/sd/usr/lib/libdc1394.so.22*          /usr/lib/
# cp -a /media/sd/usr/lib/libX11.so.6*              /usr/lib/
# cp -a /media/sd/usr/lib/libXext.so.6*             /usr/lib/
# cp -a /media/sd/lib/libbz2.so.1*                  /lib/
# cp -a /media/sd/usr/lib/libdirac_encoder.so.0*    /usr/lib/
# cp -a /media/sd/usr/lib/libfaad.so.2*             /usr/lib/
# cp -a /media/sd/usr/lib/libgsm.so.1*              /usr/lib/
# cp -a /media/sd/usr/lib/libopenjpeg.so.2          /usr/lib/
# cp -a /media/sd/usr/lib/libopenjpeg-2.1.3.0.so    /usr/lib/
# cp -a /media/sd/usr/lib/libschroedinger-1.0.so.0* /usr/lib/
# cp -a /media/sd/usr/lib/libspeex.so.1*            /usr/lib/
# cp -a /media/sd/usr/lib/libtheora.so.0*           /usr/lib/
# cp -a /media/sd/usr/lib/libraw1394.so.11*         /usr/lib/
# cp -a /media/sd/lib/libusb-1.0.so.0*              /lib/
# cp -a /media/sd/usr/lib/libxcb.so.1*              /usr/lib/
# cp -a /media/sd/usr/lib/liborc-0.4.so.0*          /usr/lib/
# cp -a /media/sd/usr/lib/libXau.so.6*              /usr/lib/
# cp -a /media/sd/usr/lib/libXdmcp.so.6*            /usr/lib/

rtmpdump コマンドのコピー

# cp -a /media/sd/usr/bin/rtmpdump /usr/bin/
# rtmpdump

を実行するとライブラリが不足しているというエラーが出る。 エラーが出なくなるまでライブラリをコピーする

# cp -a /media/sd/usr/lib/librtmp.so.0          /usr/lib/
# cp -a /media/sd/usr/lib/libgnutls.so.26*      /usr/lib/
# cp -a /media/sd/usr/lib/libgcrypt.so.11*      /usr/lib/
# cp -a /media/sd/usr/lib/libtasn1.so.3*        /usr/lib/
# cp -a /media/sd/usr/lib/libgpg-error.so.0*    /usr/lib/
# rommode ro
# umount /media/sd

関連