All checks were successful
Build / build (push) Successful in 11m54s
3.5 KiB
3.5 KiB
title, tags, date
title | tags | date | ||||
---|---|---|---|---|---|---|
mimium |
|
2023-08-28T22:32:09+0900 |
松浦知也が開発している音楽プログラミング言語。
https://github.com/mimium-org/mimium-rs
開発メモ
理論
中間表現について
- mimium新内部表現の構想
- mimiumの中間表現を考える
- mimiumのMIRコンパイル過程を真面目に考える
- lambda-mmm(実用版)
- mimiumグローバル環境評価について
- mimiumのモジュールシステム
マクロ
ランタイム周りについて
応用先について
ふと思ったけど、SuperColliderやPureDataと比べると、これらの言語は組み込みに使おうと思うとLinuxが動く環境を想定することになる(Heavyはそれを全く別の処理系作ることで対応してたけど)。シーケンサとかスケジューラーがあるような、Faustだと難しいタイプのプログラムをArduinoとかに持っていくには向いているのではないか(Extemporeだって仕組み的に言えばそうかもしれないけど)
- できれば教育用途とかに持ち込めるのが一番いい
- ブートストラップできるといい
- いろいろな人がmimiumで拡張やライブラリを書けるようになってからが本当の本番
- 言語自体の拡張機能をその言語上でたくさん作れるとよい
- しかし、極端に自由度が高いとそれはそれで参入障壁が高い
開発ロードマップ
mimium-rs/Roadmap.md at dev · mimium-org/mimium-rs · GitHub
- 多段階計算:大変そう。コンパイラドライバをユーザーコードから叩けるようにするのが先か。
- mimiumのレコード型:要件定義はほぼできたし、他の機能への依存も特になし。デフォルト引数の実装を無視すればとりあえず進められそう
- mimiumでのバリアント:やっぱり必要、だが分割コンパイルを先にやらないとダメかも
- モジュールシステム:名前空間のCライブラリレベルでのマングリングとか考える必要ありそう。
- 配列型の実装:GC問題片付けばなんとか?固定長と可変長の切り替えをどうするかを考えたい。
- OSCの実装
その他雑に実装したい機能
- 配列にステージ0限定でmapやaccumlateを足したい
- ステージ0で
self
を使えるようにする方法として、render:({seq:()->a,count:float})->[a]
というプリミティブを導入したい- めちゃめちゃでかい配列リテラルになった時に対応できるのか要検討
- UIにToggleとButtonを足す
- 数値の列挙でもいいのでumenuも足したい
- マクロでUnix Timeを取れるようにしたい
- noiseのシードをコンパイル時に確定させたい