Raspberry Piオーディオプラットフォームエコシステム1

サブタイトルはNorns(Sheld) / Fates / Orac / Sidekick / NuiLiteあたりの違いや関連性を探る です。(長い。。

独自のオーディオプラットフォーム(puredataをベース)をrpi3B+とBusterLiteで作るのがこの記事のメインになっています。(実は、raspberry pi 2 Bで同じような物は作ってはいます。が再度新しいバージョンで、次いでにエコシステムに乗っかりたい)、デジタルのモジュラーシンセ的に。

書けば、いろいろ思惑はありますが、まずは



ハードウェアのざっくりした違い

Norns (Sheld)
-ハードウェア : Raspberry Piコンビューターボード
-OS : Raspbian Buster Lite
-オーディオコーデック : CS4270
-OLED :  NHD-2.7-12864WDW3
-ボタン : 3
-エンコーダー : 3

Fates
-ハードウェア : Raspberry Pi 3B+, 4
-OS : Raspbian Buster Lite
-オーディオコーデック : WM8731
-OLED : NHD-2.7-12864WDW3
-ボタン : 3
-エンコーダー : 4

実はraspberry piを仕様したハードウェアは、これら以外にもたくさんあります。

pisound
terminal_tedium
Nebulae (Q-bit)
Organelle (Critter & Guitari)

ただ!これらに気安く触れると大きく横道にそれる感じがしたのと、norns/Fatesを理解するとこれらを理解するのも簡単(なはず)

ふれる必要があるときにまた触れます。



ソフトウェアのこと

Nornsは、基本は、supercollider Lua
Fatesは、Nornsと上記ハードウェアの違いがあるが同等のことができる
Oracは、Puredataをベースにしたモジュラーシンセ
SidekickはOracとNornsのアプリケーションをスイッチするためのユーティリティー
NuiLiteはPuredata+Fatesの構成で、ボタンやロータリエンコーダ+OLEDを使用するためのPdオブジェクト群(Fates以外もできる?)
ここをみるとbuster liteにPuredataをインストールしているのが参考になる stretchのbackportsを参照している

#add stretch-backport source
echo 'deb http://httpredir.debian.org/debian stretch-backports main contrib non-free' | sudo tee -a /etc/apt/sources.list.d/debian-backports.list
sudo apt-get -t stretch-backports install -y puredata

stretchだったら、マニュアルでpuredataをインストールするようだ。え、じゃあ、buster liteにはデフォでpdが入っているのか?(FatesのOSイメージはbuster liteなので)

調べてみる
https://news.mynavi.jp/techplus/article/20190222-775519/

で最近インストールしたパッケージは以下で、pdは最近インストールしてない模様。

$ grep "install" /var/log/apt/history.log
Commandline: apt install -y orac mec sidekick
Commandline: apt-get install realvnc-vnc-server jwm
Commandline: apt-get install tightvncserver

じゃあ、インストールされているパッケージ全部みせだ!

$ apt list --installed
puredata-core/rpi,now 0.50.2-3 armhf [installed,automatic]
puredata-dev/rpi,now 0.50.2-3 all [installed,automatic]
puredata-doc/rpi,now 0.50.2-3 all [installed,automatic]
puredata-extra/rpi,now 0.50.2-3 armhf [installed,automatic]
puredata-gui-l10n/rpi,now 0.50.2-3 all [installed,automatic]
puredata-gui/rpi,now 0.50.2-3 all [installed,automatic]
puredata-utils/rpi,now 0.50.2-3 armhf [installed,automatic]
puredata/rpi,now 0.50.2-3 all [installed,automatic]

入っている~
Oracを入れたから入ったのかと思っていた次第です。。。(一応buster liteのイメージをsdに書いて確認してみよう)
buster liteにはデフォルトでは入っていなそう。じゃあ、Fatesのデフォルトイメージに入っている?
入っていない。。
つmりOracを入れるとPdも入るのね。

一応busterのbackportsにはあった
https://packages.debian.org/search?suite=buster-backports&section=all&arch=any&searchon=names&keywords=puredata
あと、NuiLiteにあるNuiPdがPuredataのオブジェクトで、ボタンやエンコーダ、OLEDの処理をしている
つまりPuredata上のNuiPdは、ボタン/エンコーダ/OLEDのデバイスドライバーとアクセスしている

それぞれのデバイスドライバーはすでに入っているのか?など疑問はいっぱいだが、とりあえず進めたくなったので、raspberry piのデフォのOSイメージのbuster liteから色々構築していく(きゅうだな



buster liteをインストールしてもろもろ設定する

標準のbuster liteのイメージをSDカードにFlashしてからスタートです。

最初は

#sudo raspi-config

でwifiを繋いでおく

sshで簡単にログインできるように

#sudo raspi-config Network

Hostnameを変更しておく。

#ssh pi@hostname.local

で入れる

sshでアクセルするにはboot領域(/boot)にssh (空のファイル)を作る必要があるので、

sdカードをmacに接続して、 以下を実行

#cd /Volume/boot
#touch ssh

rasberry pi側にSDカードを入れて起動、起動して、sshでログインしたら、以下を行う

# sudo apt update -y
# sudo apt-get dist-upgrade -y
# sudo apt-get install puredata

puredata(ver0.49)インストールできちゃった。ただDesktop GUIがないので、エラーになる(liteだからね)

とりあえず遠隔pcから画面共有でアクセスしたいので、tightvncserverをインストールする

# sudo apt-get install tightvncserver

次にjwmをインストールする

# sudo apt-get install jwm

軽量なDesktop GUIでこれをtightvncserverの後に入れないとだめ。後再起動も必要 あと日本語だと文字化けするので、デフォルトのままが良さそう

pd-extendedのインストールをトライしたが、ダメ

wifi接続は/bootにとりあえず追加する(macでもできる) /boot/wpa_supplicant.confを新規で作って以下を追加する

country=JP
update_config=1
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
network={
  #scan_ssid=1 #For Stealth
  ssid="Name of your router"
  psk="Your key"
  key_mgmt=WPA-PSK
  priority=1
}

再起動するとwifiに繋がるが、wpa_supplicantが/etc/wpa_supplicant/wpa_supplicant.confに移動している(最終的には以下のように追加)




オーディオコーデックを有効にして、オーディオ入出力を実装する(puredata上)

ちなみにここが勉強になるhttps://qiita.com/air-gh/items/8cc51564313f7badc0be
デバイスツリーとデバイスドライバーの種類はここ参考になる。 https://qiita.com/cello_piano_violin/items/90e417123e7e026b190e

/boot/config.txtに以下を追加とコメントアウト

#dtparam=audio=on (コメントアウトしてオンボードのオーディオをオフに)
dtoverlay=rpi-proto

amixerの設定を変更して保存

#amixer controls amixer cset numid=1 123 #Master Playback Volume
#amixer cset numid=3 29 #Capture Volume
#amixer cset numid=4 on #Line Capture Switch
#amixer cset numid=7 0 #Sidetone Playback Volume
#amixer cset numid=13 on #Output Mixer HiFi
#sudo alsactl store

途中からwindowsでやりだしたので、ターミナルの文字が汚い泣

 puredataで音がなった。音声入力もできた。





ttymidiとmidi-uart0を使用してレガシーハードウェア(DIN 5pin) midi out/inを実装する

基本はここのとおりhttps://gist.github.com/CarloCattano/8c01a6dea6ecbb459acd0b6bcd752ea6

基本的には同じですが、ttymidiのインストールで以下を忘れないようにする

$ sudo apt-get install libasound2-dev

以下のWarningがでたけど無視

gcc src/ttymidi.c -o ttymidi -lasound -lpthread
src/ttymidi.c:477:1: warning: return type defaults to ‘int’ [-Wimplicit-int]
main(int argc, char** argv)

以下を実行して接続する (out inの順番でないとエラーになるので注意)

 
#aconnect ttymidi:0 "Pure Data:0" 
#aconnect "Pure Data:1" ttymidi:1

midi outの波形のみ確認(画面右側のピンクで、ピンはGPIO14(UART_TXD0)

そういえば、pdの設定をここで保存しておこう。

<Pure Dataの設定>
nano .pdsettings

WM8731は48KHzで動くので、rate : 48000
midiindev1 とmidioutdev1をそれぞれ1にしました。
後々blocksizeも小さくできる範囲で小さくするかも。(とりあえずこれで様子見)

まずは、以上。 サウンドを入力/出力がWM8731でできること、レガシー5pinのMIDI IN/OUTを実装

この記事はここまで。

次回は、

-OLED周り https://github.com/okyeron/norns-linux-bits
-SPIでつながるICを拡張する方法 wiringPi ? それともデバイスドライバ?
-pd のvinylcontrol~ オブジェクト

あたりで行きたいと思います。 どこかでつまずきそうな予感。。でも頑張ります!

コメントはまだありません »

コメントはまだありません。

この投稿へのコメントの RSS フィード。 TrackBack URL

コメントする