[obsidian] vault backup: 2023-11-15 16:09:00[

This commit is contained in:
松浦 知也 Matsuura Tomoya 2023-11-15 16:09:00 +09:00
parent a349459a08
commit acfd42bc36
11 changed files with 101 additions and 9 deletions

7
content/ADX.md Normal file
View File

@ -0,0 +1,7 @@
#audiomiddleware #gameaudio #programming #sound
日本の会社CRIWAREが作ってる老舗オーディオミドルウェア
国内のシェアはまあまあ大きい
https://game.criware.jp/products/adx/

View File

@ -15,9 +15,23 @@ https://chci.pages.dev/aist-seminar
その上で、現在私が開発している関数型プログラミングとDAWを統合したソフトウェア[[otopoiesis]]について簡単に紹介します。 その上で、現在私が開発している関数型プログラミングとDAWを統合したソフトウェア[[otopoiesis]]について簡単に紹介します。
## 自己紹介 ## 自己紹介(ここまで1分)
## 音楽における”Direct Manipulation” mimiumとか
## 音楽とプログラミングの歴史(4分)
要点音楽、音声信号をコンピューター上で表現するためには、音にまつわるデータをどの様に定義するか自体が重要だが、UGen以外のモデルは検討されてきたのだろうか
### 1950s: 音響遅延線メモリ、デバッグのための音の利用、転じてメロディの実現hooter
### 1960s: MUSIC / UGenパラダイムの登場、モジュラーシンセサイザーとの等価性
### 1970s: [[GROOVE]] / Alan Kay, Metamedia
### 1980s: UGenのハードウェア化
### 1990s Digidesign Accelarator
## 音楽における”Direct Manipulation”4分
ビジュアルの場合は、出力される画像・映像を確かに直接操作している。音楽制作ソフトウェアにおけるGUIは一体何を「直接」操作しているのか ビジュアルの場合は、出力される画像・映像を確かに直接操作している。音楽制作ソフトウェアにおけるGUIは一体何を「直接」操作しているのか
@ -28,11 +42,33 @@ https://chci.pages.dev/aist-seminar
- ビジュアルプログラミングはビジュアルで表現できる程度の複雑さまでしか表現できない - ビジュアルプログラミングはビジュアルで表現できる程度の複雑さまでしか表現できない
- データの再帰的抽象化ができない - データの再帰的抽象化ができない
- 例えば、Maxのようなデータフロープログラミングはデータフローの中にパッチそのものを流すことはできない - 例えば、Maxのようなデータフロープログラミングはデータフローの中にパッチそのものを流すことはできない[^kronos]
- [[Kronos]]のビジュアルエディター
## 音楽とプログラミングの歴史 [^kronos]: [[Kronos]]のビジュアルエディターVeneerとかはlambdaオブジェクトが存在するなど、それに近しいことを実現してはいる。
## 音楽プログラミングとデータ抽象 (3分)
- プログラマブルなDAWはいくつかある例えば[[Reaper]]、[[Ardour]]など)。しかし新しいデータ型を作れるわけではない・・・つまりオートメーションである。
- また、CSoundにDAWっぽいフロントエンドを載せたプロジェクトとして[[Blue]]などがある。
- しかし、CSound自体のメタ表現力はそんなに高くはない
- タイムラインベースの汎用プログラミング環境もある。例えば[[OSSIA Score]]や[[IanniX]]
- しかし、これもデータの抽象化そのものができるかというと
- インタラクティブな音楽を作るためのものとして、ゲーム音楽用のオーディオミドルウェアというのもある。[[Wwise]]や[[ADX]]、[[Fmod]]
- しかし、どっちかというとこれもDAWと連携する方向だよね
### グラフベースからの脱却
### DAWのデータフォーマット
https://github.com/bitwig/dawproject
例えばDAWprojectの様なオープン化を目指したものが出てきている
昔ながらのもので言えば、OMFやAAFオーディオ・ビデオデータのみとSMFシーケンスデータ、複数のMIDIデータの集合とか
Program as a Format - MPEG-Structured Audio(CSoundベースの音源配布フォーマット)
## [[otopoiesis]]について
- 音響遅延線メモリ、デバッグのための音の利用、転じてメロディの実現hooter
- UGenパラダイムの登場、モジュラーシンセサイザーとの等価性

5
content/Fmod.md Normal file
View File

@ -0,0 +1,5 @@
#audiomiddleware #gameaudio #programming #sound
日本では国産の[[ADX]]海外では人気
https://www.fmod.com/

13
content/GROOVE.md Normal file
View File

@ -0,0 +1,13 @@
#computermusic
"GROOVE—a program to compose, store, and edit functions of time" (1970)
https://dl.acm.org/doi/10.1145/362814.362817
[[Max Mathews]]によるリアルタイム信号制御装置。
専用のコントローラーを使ってジェスチャーを元に波形を記録した上で、専用の言語でそれを加工したりモジュレーションしたりして、DACを通してモジュラーシンセの制御信号として使用したりする。
オーディオレートには非対応。
![](img/groove_fig5.png)

5
content/IanniX.md Normal file
View File

@ -0,0 +1,5 @@
#programming #sound
https://www.iannix.org/en/
ヤニス・クセナキスのUPICが基になっているソフト

View File

@ -2,4 +2,8 @@
https://kronoslang.io/ https://kronoslang.io/
[[Veneer]]というWebm [[Veneer]]というWeb向けビジュアルエディタがある
[[System-FΩ]]という高階ラムダ計算をベースにしているため、めちゃくちゃメタプログラミング能力が高い。
例えば[[Faust]]では項書き換え系マクロとして実施されていたプロセッサ自体のメタ出力も一つの言語体系で書ける

7
content/OSSIA Score.md Normal file
View File

@ -0,0 +1,7 @@
#programming
汎用OSCシーケンサーみたいなやつ。if文でイベントの位置をジャンプするみたいな、インタラクティブミュージックでいう横の遷移みたいなのができる
元はi-score(interactive score)
https://ossia.io/

1
content/Veneer.md Normal file
View File

@ -0,0 +1 @@
#programming-language

10
content/Wwise.md Normal file
View File

@ -0,0 +1,10 @@
#audiomiddleware #gameaudio #programming #sound
https://www.audiokinetic.com/ja/products/wwise/
オーディオミドルウェアの中では最もシェアが大きい
最近はSony傘下だったはず
全部Visual Studio C++で開発されてて、Mac版は[[Wine]]で提供されてたりして色々やばい。
なんならWineの開発チームにこの人たちが加わってるレベルで気合いが入っている

BIN
content/img/groove_fig5.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 134 KiB

View File

@ -19,7 +19,7 @@ TTCはジェネリックなタイプ`A`に対して、以下の3つの型コン
type time = Real; type time = Real;
//時間に紐づいたイベント。MIDIートとか //時間に紐づいたイベント。MIDIートとか
struct Event<A>{v:A, t:time} struct Event<A>{v:A, t:time}
//有限ベクトル。オーディオファイルとか //有限ベクトル。オーディオクリップとか
type Vec<A> = std::Vec<A> type Vec<A> = std::Vec<A>
//無限ベクトル、またはストリーム。1論理時刻毎にA型のものを返す漸化式内部状態を持つかもしれない //無限ベクトル、またはストリーム。1論理時刻毎にA型のものを返す漸化式内部状態を持つかもしれない
type iVec<A> = Box<dyn FnMut()->A> type iVec<A> = Box<dyn FnMut()->A>
@ -67,7 +67,11 @@ let Track2 = Generator::SineWave(Track1,Constant(1.0),Constant(0.0));
CubaseにおけるインストゥルメントトラックとかはMIDIトラックシンセサイザーの合成なので、 CubaseにおけるインストゥルメントトラックとかはMIDIトラックシンセサイザーの合成なので、
`Track<NOTE,NOTE>`に`Vec<NOTE>->iVec<Audio>`みたいなのを適用する関数としてあらわせ、、、る? `Track<NOTE,NOTE>`に`Vec<NOTE>->iVec<Audio>`みたいなのを適用する関数としてあらわせ、、、る?
## 考えうるユースケース
- ドラッグしてるオブジェクトのスナップ対象は例えばCubaseなら固定のグリッドor既存のイベントorその両方とかだけど、例えばグリッドをジェネラティブに生成できる
- もちろんクオンタイズにも使える
- 非破壊的クォンタイズ。録音されたと