珈琲焙煎者の観察

地下部屋の珈琲焙煎者

LittleGPTracker,Picoloop binary for PocketC.H.I.P.

nekomusume.softether.net

About my picoloop binary, you can of course use it for any purpose, as you wish, there is no limit, it's public! The same for my tutorial on github.

Thank you Éric binaire lgpt est très utile, merci.

PocketCHIPでPicoloopのコンパイルがうまくいかなかったので、おそらく世界で一番早くPocketCHIPでPicoloopのコンパイルしたÉric A.K.A. Garvalに、参考にするので、どのバージョンのソースコードコンパイルしたのか尋ねたとろこ、たしか0.77bのバージョンも持っているから、makeしたと思うし、バイナリもあるから・・・とコンパイルしたバイナリを送ってくれた。 ついでにlgpt(littleGPTracker)のことも尋ねてみると、それもコンパイル済みのを持っているからと送ってくれた。 Éricは、Picoloopのマニュアルをつくって公開していて、おそらく実際にPicoloopをPlayしてみるとき、ÉricのGithubに公開したマニュアルが唯一のHow toだと思う。

後日、再びメールで、MilkytrackerもPocketCHIPの画面で動かせたよ、とPocketCHIPでコンパイルしたのかバイナリを送ってくれた。MilkytrackerをPocketCHIPでコンパイルしたら画面が最適化されるのかどうかわからないが、そうしようという発想はなくあきらめていたので、いいアイデアをもらった。

DOMO ARIGATOU Éric

lgpt:

mkdir working
cd working
curl -OL https://nekomusume.softether.net/nextcloud/index.php/s/4qoBDSfftFpNbTE/download?path=%2F&files=lgpt.zip

picoloop:

curl -OL https://nekomusume.softether.net/nextcloud/index.php/s/4qoBDSfftFpNbTE/download?path=%2F&files=picoloop_077b_pocketchip.zip

github.com

GarvalのSoundcloudへのリンク garvalf.online.fr

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

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

について

Hook functions

Schism Tracker can run custom scripts on startup, exit, and upon completion of the disk writer. These are stored in the configuration directory, and are named startup-hook, exit-hook, and diskwriter-hook respectively. (On Windows, append .bat to the filenames.) Hooks are useful for making various adjustments to the system – adjusting the system volume, remapping the keyboard, etc. The disk writer hook can be used to do additional post-processing, converting, etc. (Note: on the Wii, hooks are not processed since there is no underlying OS or command interpreter to run them.)     

Example For users with non-US keyboards, some keys may not work properly. This can be worked around by switching temporarily to a US keyboard layout on startup, and resetting the keyboard on exit. To define hooks to accomplish this:    

cat >~/.schism/startup-hook <<EOF
#!/bin/sh
setxkbmap us
EOF
cat >~/.schism/exit-hook <<EOF
#!/bin/sh
setxkbmap fi
EOF
chmod +x ~/.schism/*-hook

This is for a Finnish keyboard; replace the fiwith the appropriate ISO 3166 country code or other keyboard mapping. See /etc/X11/xkb/symbols for a list of available keyboard layouts.

shismtrackerの起動でフックして、US配列のキーボードとして変更して、終了でもとに戻すということらしい。 pocketCHIPのデフォルトのキーボードについてコマンドで調べてみる。

chip@chip:~$ localectl
   System Locale: n/a

       VC Keymap: n/a
      X11 Layout: us
       X11 Model: pc105
chip@chip:~$ localectl list-keymaps
Couldn't find any console keymaps.

もともとUSキー配列のよう。

でも、アンダーバー"_"が入力できないことで、ファンクションキーなどもデフォルトでアサインされていない可能性に気がついた。

だから、当然ながら、schismtrackerのファンクションキーのショートカットが効かない。

pocketCHIPのユーザーコミュニティにファンクションキーについてのHow toがあった。

www.chip-community.org

Enabling the FN Keys


You will need to edit a couple of text files. I'll assume that if you want to run in text mode, you already know how to use vi, emacs, or nano.

The tool you need is "loadkeys," which is part of the "kbd" package, which is not installed by default. So start by installing it:
"kbd"というパッケージをインストールして、

sudo apt-get install kbd

Next, you need a text file that specifies the mappings, i.e. which keystrokes should produce what characters. Create a file containing the following text and save it somewhere convenient.

ファイルをつくって、なかに以下のテキストを書き込む、

keymaps 0-2,4-5,8,12
altgr keycode  2 = F1
altgr keycode  3 = F2
altgr keycode  4 = F3
altgr keycode  5 = F4
altgr keycode  6 = F5
altgr keycode  7 = F6
altgr keycode  8 = F7
altgr keycode  9 = F8
altgr keycode 10 = F9
altgr keycode 11 = F10
altgr keycode 74 = F11
shift keycode 74 = underscore
altgr keycode 13 = F12
altgr keycode 21 = braceleft
altgr keycode 22 = braceright
altgr keycode 23 = bracketleft
altgr keycode 24 = bracketright
altgr keycode 25 = bar
altgr keycode 35 = less
altgr keycode 36 = greater
altgr keycode 37 = apostrophe
altgr keycode 38 = quotedbl
altgr keycode 48 = grave
altgr keycode 49 = asciitilde
altgr keycode 50 = colon
altgr keycode 52 = semicolon
shift keycode 52 = comma
altgr keycode 53 = backslash 

ファイルの作り方は、

touch enableFNkeys
nano enableFNkeys

上のテキストをコピーしてペースト。

Test your file: テストしてみる:

sudo loadkeys /path/to/file

If you've done everything right, your FN keys should now be working. If not and the keyboard is fouled up to the point where you can't type well enough to try again, simply reboot to restore the original, no-FN mappings.

If it does work, you can make the new mapping permanent with a quick edit to your /etc/rc.local file. (Note that that's a system file; use sudo or you won't be able to save your change.

Find the line that reads

exit 0

Immediately above that line, add

#Load keymap for PocketChip keyboard
/usr/bin/loadkeys /path/to/file
Navigation menu

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

bluetooth on PocketC.H.I.P.

PocketC.H.I.P.で、bluetoothkeyboadを使いたい場合、ターミナルからbluetoothをOnにする。

f:id:honda-satoru:20190513174444p:plain
sshでlubuntuOSのPCからPocketC.H.I.P.へ接続

chip@chip:~$ bluetoothctl

[bluetooth]# scan on
[bluetooth]# pair <bluetoothキーボードのmac address>

ペアリングが成功したら、connectする。

<bluetoothキーボードのmac address> のところは、

CC:C5:0A:20:22:16

というようなアドレスです。 つまり、

[bluetooth]# pair CC:C5:0A:20:22:16

ということですが、マックアドレスは固有のものなので、必ず個体によって同じになりません。

ちなみに、このマックアドレスは、このbluetoothキーボードのものです。

www.amazon.co.jp

いまのところ左に配置しているCtlキーが右Ctlにマッピングされているなど、そのまま使うには不都合があります(自分にとって)。 schismtrackerなどのフルキーボードアクセス(全部キーボードで操作できるようになている=キーボードのキーアサインが全て固定されている。例えば右Ctr と左Ctrには別々のショートカットが割り付けられているために、左Ctrを使うショートカットが重要な場合、左Crtがないとcommandがタイプできない。)の場合、F1〜F12まで多用するのだけれども、schismtrackerでこのキーボードのファンクションキーが効いてない。 PocketC.H.I.P.のデフォルトのキーボードでも同じく。*1

ですのでこのキーボードを推奨しているわけではないです。

schismtracker でのキーバインドの変更など。 https://github.com/schismtracker/schismtracker/blob/master/docs/configuration.md

[bluetooth]# connect <bluetoothキーボードのmac address>

次回からこのキーボードを自動でペアリングしたければ、trust

[bluetooth]# trust <bluetoothキーボードのmac address>

Schismtracker

PocketC.H.I.P.に

apt-get install schism

でSchismtrackerをバイナリをインストールしたが、ビルドが古そうなので、自分でどうやってビルドするのか、やってみる。

libsdl1.2-dev libsdl2-dev autoconf automake gcc make Python git

が必要。

明らかにすでにあるのは省いて、*1

chip@chip:~$sudo apt-get install autoconf automake gcc make Python
chip@chip:~$sudo apt-get install build-essential automake autoconf autoconf-archive
chip@chip:~$sudo apt-get install libxxf86vm-dev libsdl1.2-dev libasound2-dev mercurial
chip@chip:~$sudo apt-get install libx11-dev libxext-dev libxv-dev libxxf86misc-dev libtool
chip@chip:~$git clone https://github.com/schismtracker/schismtracker.git
chip@chip:~$cd schismtracker

autoreconfです。autoconfだとエラーになります。

chip@chip:~/schismtracker$sudo autoreconf -i

buildディレクトリをつくって、ここに実行ファイルのバイナリーをつくる。

chip@chip:~/schismtracker/$mkdire -p build
chip@chip:~/schismtracker/$cd build
chip@chip:~/schismtracker/build$sudo ../configure

make

chip@chip:~/schismtracker/build$sudo make

schismtrackerが実行ファイル。

f:id:honda-satoru:20190513035509p:plain
chip@chip:~/schismtracker/build$ ls

chip@chip:~/schismtracker/build/$./schismtracker

f:id:honda-satoru:20190513040213p:plain

schismtrackerのgithub

github.com

使い方は全くわからないが、Milkytrackerでつくったファイルは読み込めるだろうから、また最初から。

マニュアルは、ここにある。

archive.org

一番重要なことですが、schismtrackerを終了する場合は、

Ctlキー + qキー

です。これは、最も重要ですが、マニュアルの何処に書かれているかわかりません。

最初わからないので、ターミナル画面へ移動して

Ctlキー + cキー

で止めていました。一応それでプログラムは止まりますが、プログラムを終了させるときは、

Ctlキー + qキー

を使いましょう。

*1:libsdl*はpicoloopをコンパイルしたとき必要がありインストール済み

picoloop ピコループ

PocketC.H.I.P.へPicoloopをインストール。
前回なぜか失敗してしまったのは、おそらくはGitについて、全く知らないまま使っているのも影響しているだろう。

f:id:honda-satoru:20190512223102p:plain

git tag

コマンドで、よく見ると

picoloop-0.77b-pocketchipok

というのがある。チッポクってなんだろな?って思ってたけど、

ポケットチップOK

ですね。よく見ると。

これをチェックアウトするんだろうな。

git checkout picoloop-0.77b-pocketchipok

コンパイル失敗したファイルをcleanしてから、(ぽちぽちボタン押すよりキーを叩きたい人はsshwindowsとかmacとかubuntuのターミナルから接続してみては? *1

cd      picoloop
make -f Makefile.RtAudio_pocketchip               clean
make -f Makefile.RtMidi_pocketchip                clean
make -f Makefile.PatternPlayer_pocketchip_RtAudio clean
make -f Makefile.RtAudio_pocketchip
make -f Makefile.RtMidi_pocketchip
make -f Makefile.PatternPlayer_pocketchip_RtAudio
make -f Makefile.PatternPlayer_pocketchip_RtAudio

どうやらエラーなくコンパイルできた。

Succseed!!

f:id:honda-satoru:20190512224031p:plain
コンパイル成功

picoloop-0.77 readmeには、

LAUNCHING
# ./PatternPlayer

で起動って書いてあるけど、やってみても起動しない。 どこかに、実行ファイルがあるはず。

chip@chip:~/audio/picoloop$ ls

f:id:honda-satoru:20190512231026p:plain
chip@chip:~/audio/picoloop$ ls

無いなぁ・・・どこかにバイナリがあるはず。どこかに、

f:id:honda-satoru:20190512231250p:plain
PattenPlayer_pocketchip_Rtaudio

これだね PatternPlayer_pocketchip_Rtaudio

PatternPlayer_pocketchip_Rtaudio 

長い名前。 このファイル名は変えても大丈夫らしい。*2

./PatternPlayer_pocketchip_Rtaudio

とターミナルで実行すると・・・

Failed to load samples samples/50.wavFailed to load samples samples/51.wavFailed to load samples samples/52.wavFailed to load samples samples/53.wavFailed to load samples samples/54.wavFailed to load samples samples/55.wavFailed to load samples samples/56.wav....................

サンプルを読み込めないというエラーが出て止まる。

GUIファイラーからpicoloopフォルダの中の実行ファイルをたたくと

f:id:honda-satoru:20190512232514p:plain
Picoloop !!

初めて起動成功。

Succeed!!

これでは何のことやらわからないので、まとめると。

Picoloop install on PocketC.H.I.P. / ピコループのインストール PocketC.H.I.P.編

Picoloopとは?

それはこちらをどうぞ manuke.hateblo.jp

インストールの手順

PocketC.H.I.P. でPicoloopをコンパイルするのに必要な準備。これらが、前もって必要。
libsdl, libasound2, libpthread*, g++, make, libjack-dev, git

PocketC.H.I.P. のターミナルでapt-getでインストール。

chip@chip:~$sudo apt-get install libsdl* libasound2*  libpthread*  g++  make libjack-dev git

ただし、PocketC.H.I.P. は現在公式レポジトリが閉鎖されて存在していないので、ユーザーの有志が公式レポジトリからサルベージした、オルタナティブなレポジトリを登録していないと更新、インストールできないパッケージがある。 それについては、こちらの「登録レポジトリを変更」を参考してください。 http://manuke.hateblo.jp/entry/2019/05/10/000441

Picoloopの開発者yoyzのgithubからgit cloneしてくる

chip@chip:~$git clone https://github.com/yoyz/audio.git
chip@chip:~$cd audio
chip@chip:~/audio$git tag

ここでよく見ると、

picoloop-0.77b-pocketchipok

というタグがある。 ここから冒頭と同じで、

chip@chip:~/audio$git checkout picoloop-0.77b-pocketchipok

つづいて、picoloopに移動して

cd      picoloop
make -f Makefile.RtAudio_pocketchip               clean
make -f Makefile.RtMidi_pocketchip                clean
make -f Makefile.PatternPlayer_pocketchip_RtAudio clean
make -f Makefile.RtAudio_pocketchip
make -f Makefile.RtMidi_pocketchip
make -f Makefile.PatternPlayer_pocketchip_RtAudio
make -f Makefile.PatternPlayer_pocketchip_RtAudio

これでコンパイルされる。