HYUDORO

勉強したことや日記など

TidalCyclesの音色と実行パターンに関するメモ

音のパターンを数字や処理で見るのは直感的でないため、ある程度思い通りのリズムにするには実践しながらクセのようなものを体験し、習得しなければいけない。なので、いろいろ試していった所感をメモっていきたいと思う。

今回検証するのはnに関して、音色の操作/*を使う場合に、どのようなサイクルで数値が適用されるのかを公式のサンプルを使って確認した。

n - TidalCycles userbase

d1 $ s "drum [cp hh] odx*2 arpy*2" # n "[1 3 5 0 2]/2"

コードからまずパッとわかるのは、7つの要素で構成され、「drum」「cp」「hh」「odx」「arpy」5つの音色がある。♩ ♫ ♫ ♫というリズムでそれらの音が鳴る。

これにnを使って数値パターンをコントロールパターンに入れ込み、音色を変化させている。別の言い方をすると、コントロールパターンを見ると特に番号の指定がないので、すべての要素の音色が0 0 0 0 0 0 0になっており、この0の並びに対してnを使って数値を代入していく。

数値パターンは/2されることによって、コントロールパターンが2回再生されるまでに入れ込みが終わりきるようになっている。ここが理解しづらい。そもそも7つの要素に対し、5つの数値をどのように入れ込むのか、その数値がさらに/2されるとどう入れ込まれるのか。

検証するために、各音の要素をnumbersに置き換え、数値を読み上げてもらった。結果は以下の通りだった。

# n "[1 3 5 0 2]" の場合

1 3 3 5 0 0 2

# n "[1 3 5 0 2]/2" の場合

1 1 1 3 3 3 5 5 0 0 0 2 2 2

# n "[1 3 5 0 2]*2" の場合

1 5 0 1 3 5 0

先述のように、/2が付いていることでひとつの数値パターンが最後まで入れ込まれるまでにパターンを2回再生することを必要としている。

また数値の重複にも着目したい。/2が付いていない方は、5つの数値を7つの要素に当てはめるため、3と0がひとつ増えている。次に/2の方は、5を中心として左右が3つずつになった。何回再生してもこの通りになったため、ユークリッドシーケンスのように何かしらのルールで不足分を補っているようだった。

上記のパターンをアナログに書き起こすと以下のようになる

d1 $ slow 2 $ s "drum:1 [cp:1 hh:1] [odx:3 odx:3] [arpy:3 arpy:5] drum:5 [cp:0 hh:0] [odx:0 odx:2] [arpy:2 arpy:2]"

*2についても調べてみた。1パターンの間に2回数値が入れ込まれるわけはないので、あまってしまう数値を自動で取り除くようだった。

補填と除去のどちらにせよ、アルゴリズムに則ると利用者がコントロールできるパターンではなくなってくることが今回わかった。これは悪い意味ではなく、ライブコーディングにはこのようなランダム性を表現に取り入れてこその楽しみがあると再認識できた。

Rails の chartkick.js のエラーを解決する

f:id:yagyosan:20181206204137p:plain

開発環境構築中に下記のエラーが表示された。

Asset filtered out and will not be served: add Rails.application.config.assets.precompile += %w( chartkick.js ) to config/initializers/assets.rb and restart your server

config/initializers/assets.rbRails.application.config.assets.precompile += %w( chartkick.js ) を書き加えろとのことなので、そのようにした。

そのあと再起動して、解決しました。

ndenvとnode -vのバージョンが合わない時の解決策

ごちゃごちゃしていたのを整理したのでメモっておく。

$ node -v
v11.2.0
$ ndenv versions
  system
* 8.9.4 (set by /Users/yagyosan/project/.node-version)

最初はこの状態。

nodeを参照している場所を変える

ndenvのPATHなどを .bash_profile をすでに書いてある前提で...。

$ which node
/usr/local/bin/node
$ brew uninstall --ignore-dependencies node
$ exec $SHELL -l
$ which node
/Users/yagyosan/.ndenv/shims/node
% node -v
v8.9.4

ついでにnpmも変える

$ which npm
/usr/local/bin/npm
$ npm uninstall -g npm
$ rm -rf /usr/local/lib/node_modules
$ brew prune
$ which npm
/Users/yagyosan/.ndenv/shims/npm

これですべてndenvの支配下になった。

参考

Nodeのバージョン管理をndenvにしたけどうまくバージョンが切り替わらなかったときのメモ - dackdive's blog

同一端末で異なるGithubアカウントのリポジトリにpushする

仕事で使っているGithubアカウントとは別のアカウントにpushしたかった。 git config --local だけいじってもできなかったのでやり方を調べた。

qiita.com

こちらを参考にしました。

キーを作ってGithubに登録するまで

$ cd ~/.ssh 
$ ssh-keygen -f test -t rsa -b 4096 -C "user@example.test" 
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in test.
Your public key has been saved in test.pub.
The key fingerprint is:
SHA256:qroLmktztqEO9MNKky8ZMjEjEiiHQNMAjiyiFU+VXrs user@example.test
The key's randomart image is:
+---[RSA 4096]----+
|B=+ ....         |
|O o=  . .        |
|==. .. . .       |
|X.    . .        |
|+=      S.       |
|+.+    .E        |
|+BoB  .          |
|==O +.           |
|===*.            |
+----[SHA256]-----+

で、ここで出てきた test.pubGithubのSettingsから追加する。-fの後はファイル名なので自分の好きな名前で、あとアドレスも自分が使いたいアドレスを入れる。

~/.ssh/configに接続先を設定するまで

~.ssh/config を作成して、下記のコードを入れる

#  user github
Host github-user
  HostName github.com
  User git
  Port 22
  TCPKeepAlive yes
  IdentitiesOnly yes
  IdentityFile ~/.ssh/test

ここで気をつけることは以下のとおり

  • userの部分はなんでもいいので自分が使いたいアカウント名とかつけておくといいかも
  • Identityfile は先ほど名前をつけたシークレットキーの方を指定する

git push するまで

ここに関しては参考リンクをそのまま見てもらった方がわかりやすいので、そちらを見てください。 Hostとアカウント名を間違えないようにだけ注意。

以上です。これで合法的にサボりながら趣味の開発できます。

nannou をインストールする

f:id:yagyosan:20180915174302p:plain

github.com

nannou はRustで使えるクリエイティブコーディング用のフレームワークで、最近世に出てきたもの。

Web Assembly とRustへの関心が高まっていく中で、「まあそのうちRustでもクリエイティブコーディングできるようになるんだろうな」と思っていたら見つけた。やっぱりあるのね。

まだまだ新しいソフトウェアなのでしばらく人柱になってみようと思う。

やり方

Getting Started に書いてある方法をそのままやっただけなので割愛。詰まりそうなとこなどメモ。

rustup コマンドが見つからない

Rust のインストール直後にrustupしてもコマンドないよって言われるので、下記のコードを.bash_profileファイルに追加して、ターミナルなりPCを再起動する。

export PATH="$HOME/.cargo/bin:$PATH"

このくらいだと思う。カンタン。あとは nannou をgit clone してきてビルドして、必要なプラグインをインストールするところまでできたら導入完了。

TidalCycles をインストールする

ライブコーディングやりたくてTidalCyclesをインストールしてみた。

tidalcycles.org

Tidal-bootstrap を使う方法とManual install があるが、今回は後者の方法にする。 開発環境は macOS High Sierra です。

やり方

Tidal - Getting Started

上記を参考に進めたので大枠の流れは割愛。

cabal install が通らない

cabal install tidal するときに以下のエラーが表示される。

clang: error: unknown argument: '-no-pie'
`gcc' failed in phase `C Compiler'. (Exit code: 1)

gccがいけないのかなと思ったけど、こちらの方法を試してみたところ通った。

github.com

$ sudo vim /Library/Frameworks/GHC.framework/Versions/8.4.2-x86_64/usr/lib/ghc-8.4.2/settings

で、("C compiler supports -no-pie","YES")となっているところを ("C compiler supports -no-pie","NO") に変更すればOK。

注意点

あと SuperCollider 慣れてない人は、include("SuperDirt") するときに、行全体を選択して command + return して実行するとか、ライブラリインストールし終わったらアプリケーションを再起動するか Language > Recompile Class Library するとか、細かいところにハマりポイントがあるかもしれない。

とりあえずインストール自体はここまで

nodebrew install で Failed to create the file と怒られたときの解決法

nodebrew install 時に Failed to create the file と怒られた。

% nodebrew install-binary v7.9.0
Fetching: https://nodejs.org/dist/v7.9.0/node-v7.9.0-darwin-x64.tar.gz
Warning: Failed to create the file 
Warning: /Users/yagyosan/.nodebrew/src/v7.9.0/node-v7.9.0-darwin-x64.tar.gz: 
Warning: No such file or directory
                                                                           0.0%
curl: (23) Failed writing body (0 != 941)
download failed: https://nodejs.org/dist/v7.9.0/node-v7.9.0-darwin-x64.tar.gz

ディレクトリがないとのことなので作ってあげたら通った。

% mkdir ~/.nodebrew             
% mkdir ~/.nodebrew/src
% nodebrew install-binary v7.9.0
Fetching: https://nodejs.org/dist/v7.9.0/node-v7.9.0-darwin-x64.tar.gz
######################################################################## 100.0%
Installed successfully