珈琲焙煎者の観察

地下部屋の珈琲焙煎者

Schism Tracker on PocketC.H.I.P. 002

Schism Tracker を PocketC.H.I.P. にコンパイルして、インストールした。

したけれども、2つ問題があって、どちらもまだ解決していない

どちらも重要で、

  1. 音が出ない
  2. PocketC.H.I.P. でキーボードのSchism Trackerショートカットが効かない

という2つだが、1をまずクリアすべきです。

1は、どういうことかというと、Schism Trackerが PocketC.H.I.P.のサウンドバイスを使えないということ。これは、設定次第のはずだ。

f:id:honda-satoru:20190514135150p:plain
Couldn't open audio device: Device or resource busy

Schism Trackerをインストールすると、

home/userディレクトリ

に、

.schism

というフォルダができる。この中に

config

という設定ファイルがある。これを見るには、隠しファイルを表示する必要がある。

ターミナルでは、

chip@chip:~/$ls -a

と ls に -a をつけると、隠しファイルも表示される。

cd .schism

chip@chip:~/.schism$nano config

とするとconfigファイルの内容が読める。

中身は

[Audio]
sample_rate=44100
bits=16
channels=2
buffer_size=1024
[Mixer Settings]
channel_limit=128
interpolation_mode=1
no_ramping=0
surround_effect=1
[EQ Low Band]
freq=0
gain=0
[EQ Med Low Band]
freq=16
gain=0
[EQ Med High Band]
freq=96
gain=0
[EQ High Band]
freq=127
gain=0
[Video]
driver=sdl
fullscreen=0
mouse_cursor=1
gl_bilinear=0
lazy_redraw=0
[General]
vis_style=2
time_display=1
classic_mode=0
make_backups=1
numbered_backups=0
accidentals_as_flats=0
meta_is_ctrl=0
altgr_is_alt=1
midi_like_tracker=0
[MIDI]
flags=93
pitch_depth=12
amplification=100
c5note=60
start=FF
stop=FC
tick=
note_on=9c n v
note_off=9c n 0
set_volume=
set_panning=
set_bank=
set_program=Cc p
SF0=F0F000z
SF1=
SF2=
SF3=
SF4=
SF5=
SF6=
SF7=
SF8=
SF9=
SFA=
SFB=
SFC=
SFD=
SFE=
SFF=
Z80=F0F00100
Z81=F0F00108
Z82=F0F00110
Z83=F0F00118
Z84=F0F00120
Z85=F0F00128
Z86=F0F00130
Z87=F0F00138
Z88=F0F00140
Z89=F0F00148
Z8A=F0F00150
Z8B=F0F00158
Z8C=F0F00160
Z8D=F0F00168
Z8E=F0F00170
Z8F=F0F00178
Z90=
Z91=
Z92=
Z93=
Z94=
Z95=
Z96=
Z97=
Z98=
Z99=
Z9A=
Z9B=
Z9C=
Z9D=
Z9E=
Z9F=
ZA0=
ZA1=
ZA2=
ZA3=
ZA4=
ZA5=
ZA6=
ZA7=
ZA8=
ZA9=
ZAA=
ZAB=
ZAC=
ZAD=
ZAE=
ZAF=
ZB0=
ZB1=
ZB2=
ZB3=
ZB4=
ZB5=
ZB6=
ZB7=
ZB8=
ZB9=
ZBA=
ZBB=
ZBC=
ZBD=
ZBE=
ZBF=
ZC0=
ZC1=
ZC2=
ZC3=
ZC4=
ZC5=
ZC6=
ZC7=
ZC8=
ZC9=
ZCA=
ZCB=
ZCC=
ZCD=
ZCE=
ZCF=
ZD0=
ZD1=
ZD2=
ZD3=
ZD4=
ZD5=
ZD6=
ZD7=
ZD8=
ZD9=
ZDA=
ZDB=
ZDC=
ZDD=
ZDE=
ZDF=
ZE0=
ZE1=
ZE2=
ZE3=
ZE4=
ZE5=
ZE6=
ZE7=
ZE8=
ZE9=
ZEA=
ZEB=
ZEC=
ZED=
ZEE=
ZEF=
ZF0=
ZF1=
ZF2=
ZF3=
ZF4=
ZF5=
ZF6=
ZF7=
ZF8=
ZF9=
ZFA=
ZFB=
ZFC=
ZFD=
ZFE=
ZFF=

schismtracker configuration

github.com

Audio outputの箇所を見ると (2.の問題については、Hook functionsにヒントがありそう。US キーボード以外のキーマップを起動時に読み込めばいいかもしれない。)

[Audio]
buffer_size=256
driver=dsp:/dev/dsp1

というようにdriver=で指定したものが、起動時に優先的に設定されるらしい。 PocketC.H.I.P. で使われているのがalsaなのか、pulseaudioなのか調べて正しく設定できれば解決しそう。

f:id:honda-satoru:20190514143058p:plain
ここに

ヒントは、コンパイルのときにschismtrackerはSDLを必要としていて、おそらくはSDLからオーディオデバイスを制御するということだ。

FAQUsingSDL - SDL Wiki'

aplay --list-devices
**** List of PLAYBACK Hardware Devices ****
card 0: sun4icodec [sun4i-codec], device 0: CDC PCM Codec-0 []
  Subdevices: 0/1
  Subdevice #0: subdevice #0
chip@chip:~$ aplay -L
null
    Discard all samples (playback) or generate zero samples (capture)
pulse
    PulseAudio Sound Server
equal
default
dsp0
dmixer
sysdefault:CARD=sun4icodec
    sun4i-codec, 
    Default Audio Device
dmix:CARD=sun4icodec,DEV=0
    sun4i-codec, 
    Direct sample mixing device
dsnoop:CARD=sun4icodec,DEV=0
    sun4i-codec, 
    Direct sample snooping device
hw:CARD=sun4icodec,DEV=0
    sun4i-codec, 
    Direct hardware device without any conversions
plughw:CARD=sun4icodec,DEV=0
    sun4i-codec, 
    Hardware device with all software conversions

user comunity に質問してみる。

www.reddit.com

質問したが、結局自力でわかった。 schismtrackerのconfigファイルで、

chip@chip:~/.schism$nano config
[Audio]
sample_rate=44100
bits=16
channels=2
buffer_size=1024
driver=alsa:default

と指定すると、音がでるようになった。 が、どういうことかわからない。つまり他に選択の余地はあるのかどうか、どうやって解るのだろうか?

サウンドドライバの一覧表示

chip@chip:~$ /sbin/lsmod | grep "snd"
snd_seq_dummy           1141  0 
snd_seq                49443  1 snd_seq_dummy
snd_seq_device          3045  1 snd_seq
snd_soc_core          116548  1 sun4i_codec
snd_pcm_dmaengine       2943  1 snd_soc_core
snd_pcm                68852  3 snd_soc_core,snd_pcm_dmaengine
snd_timer              17776  3 snd_pcm,snd_seq
snd                    47207  7 snd_soc_core,snd_timer,snd_pcm,snd_seq,snd_seq_device
soundcore               4991  1 snd
ac97_bus                1300  1 snd_soc_core

サウンドに関係ありそうなもの

View post on imgur.com
imgur.com

これは、PCMが再生できるのはC(カード):0のD(デバイス):0だよP(CM) ということらしい。

結果的に、どうしてなのか?は置いておいて

  • "driver=alsa:defalt"

  • "driver=alsa:dsp0"

  • "driver=alsa:dmixer"

この3つのドライバーの指定の仕方は、pocketCHIPのALSAにアクセスできた。 これは、

chip@chip:~$ aplay -L

で表示されるものを、引数に順番にほりこんでいった結果。 経緯は、ここに・・・

How to set up sound device on PocketC.H.I.P. ? · Issue #192 · schismtracker/schismtracker · GitHub

hw:0,0 として指定してもよさそうだが、エイリアスでしかいけないということなのかもしれない。 これは、

hw:0,0 って何?とか、.asoundrcとかをキーワードに検索してみて、数少ない関連情報を検討してみてほしい。

schismtrackerのソースコードでは、 ここに定義が書いてあった。ドキュメント読んでも、まずわからないのでこちらを見るほうがいい。

schismtracker/audio_playback.c at 92e63a2ce9f84a0daabb8ff011067f0c9d97e658 · schismtracker/schismtracker · GitHub 1236行目

http://i.imgur.com/hiiwYHy.png

pocketCHIPでは、コンフィグに上記のように設定されていない場合、起動と同時にサウンドバイスが”dummy”が選ばれる。それは、Schismがdefaultと認識したaudio deviceにリダイレクトして、そうなるようだった。その条件式が書かれている。

リダイレクトして、defaultのaudio deviceがbusyになるというところまでの流れ 1365行目から http://i.imgur.com/gQOvJnA.png

http://i.imgur.com/sJJjYxQ.png

たまたま別の機会に、別のLinuxGnu Denemoというプログラムで、音が出ない問題があり、そこでAudio Deviceの設定画面があり、そこで見た表示。 http://i.imgur.com/MvuyrvM.png こういうことらしい。GUIで見ると、わかりやすい。

.asoundrcの中のことの解説は、alsaのプロジェクトのwikiにある。

Asoundrc - AlsaProject