diff --git a/content/ADX.md b/content/ADX.md new file mode 100644 index 00000000..2ace0d2f --- /dev/null +++ b/content/ADX.md @@ -0,0 +1,7 @@ +#audiomiddleware #gameaudio #programming #sound + +日本の会社CRIWAREが作ってる老舗オーディオミドルウェア + +国内のシェアはまあまあ大きい + +https://game.criware.jp/products/adx/ diff --git a/content/AIST Creative HCI Seminar原稿.md b/content/AIST Creative HCI Seminar原稿.md index 865c16cc..ed5e9076 100644 --- a/content/AIST Creative HCI Seminar原稿.md +++ b/content/AIST Creative HCI Seminar原稿.md @@ -15,9 +15,23 @@ https://chci.pages.dev/aist-seminar その上で、現在私が開発している関数型プログラミングと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は一体何を「直接」操作しているのか? @@ -28,11 +42,33 @@ https://chci.pages.dev/aist-seminar - ビジュアルプログラミングはビジュアルで表現できる程度の複雑さまでしか表現できない - データの再帰的抽象化ができない - - 例えば、Maxのようなデータフロープログラミングはデータフローの中にパッチそのものを流すことはできない - - [[Kronos]]のビジュアルエディター + - 例えば、Maxのようなデータフロープログラミングはデータフローの中にパッチそのものを流すことはできない[^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パラダイムの登場、モジュラーシンセサイザーとの等価性 diff --git a/content/Fmod.md b/content/Fmod.md new file mode 100644 index 00000000..d7baa624 --- /dev/null +++ b/content/Fmod.md @@ -0,0 +1,5 @@ +#audiomiddleware #gameaudio #programming #sound + +日本では国産の[[ADX]]海外では人気 + +https://www.fmod.com/ \ No newline at end of file diff --git a/content/GROOVE.md b/content/GROOVE.md new file mode 100644 index 00000000..26a1519d --- /dev/null +++ b/content/GROOVE.md @@ -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) diff --git a/content/IanniX.md b/content/IanniX.md new file mode 100644 index 00000000..1d3743b0 --- /dev/null +++ b/content/IanniX.md @@ -0,0 +1,5 @@ +#programming #sound + +https://www.iannix.org/en/ + +ヤニス・クセナキスのUPICが基になっているソフト \ No newline at end of file diff --git a/content/Kronos.md b/content/Kronos.md index 78a02fc7..6bda70a7 100644 --- a/content/Kronos.md +++ b/content/Kronos.md @@ -2,4 +2,8 @@ https://kronoslang.io/ -[[Veneer]]というWebm \ No newline at end of file +[[Veneer]]というWeb向けビジュアルエディタがある + +[[System-FΩ]]という高階ラムダ計算をベースにしているため、めちゃくちゃメタプログラミング能力が高い。 + +例えば[[Faust]]では項書き換え系マクロとして実施されていたプロセッサ自体のメタ出力も一つの言語体系で書ける diff --git a/content/OSSIA Score.md b/content/OSSIA Score.md new file mode 100644 index 00000000..bc9b6626 --- /dev/null +++ b/content/OSSIA Score.md @@ -0,0 +1,7 @@ +#programming + +汎用OSCシーケンサーみたいなやつ。if文でイベントの位置をジャンプするみたいな、インタラクティブミュージックでいう横の遷移みたいなのができる + +元はi-score(interactive score) + +https://ossia.io/ \ No newline at end of file diff --git a/content/Veneer.md b/content/Veneer.md new file mode 100644 index 00000000..22d3bb17 --- /dev/null +++ b/content/Veneer.md @@ -0,0 +1 @@ +#programming-language \ No newline at end of file diff --git a/content/Wwise.md b/content/Wwise.md new file mode 100644 index 00000000..87d18e98 --- /dev/null +++ b/content/Wwise.md @@ -0,0 +1,10 @@ +#audiomiddleware #gameaudio #programming #sound + +https://www.audiokinetic.com/ja/products/wwise/ + +オーディオミドルウェアの中では最もシェアが大きい + +最近はSony傘下だったはず + +全部Visual Studio C++で開発されてて、Mac版は[[Wine]]で提供されてたりして色々やばい。 +なんならWineの開発チームにこの人たちが加わってるレベルで気合いが入っている \ No newline at end of file diff --git a/content/img/groove_fig5.png b/content/img/groove_fig5.png new file mode 100644 index 00000000..2eb1b0ed Binary files /dev/null and b/content/img/groove_fig5.png differ diff --git a/content/otopoiesis.md b/content/otopoiesis.md index 5395d945..ef2c9c83 100644 --- a/content/otopoiesis.md +++ b/content/otopoiesis.md @@ -19,7 +19,7 @@ TTCはジェネリックなタイプ`A`に対して、以下の3つの型コン type time = Real; //時間に紐づいたイベント。MIDIノートとか struct Event{v:A, t:time} -//有限ベクトル。オーディオファイルとか +//有限ベクトル。オーディオクリップとか type Vec = std::Vec //無限ベクトル、またはストリーム。1論理時刻毎にA型のものを返す漸化式(内部状態を持つかもしれない) type iVec = BoxA> @@ -67,7 +67,11 @@ let Track2 = Generator::SineWave(Track1,Constant(1.0),Constant(0.0)); CubaseにおけるインストゥルメントトラックとかはMIDIトラック+シンセサイザーの合成なので、 `Track`に`Vec->iVec