Compare commits
2 Commits
eace359d3d
...
v4
Author | SHA1 | Date | |
---|---|---|---|
c52875ef03 | |||
b1cc13e269 |
8
content/Ad-Astra.md
Normal file
8
content/Ad-Astra.md
Normal file
@@ -0,0 +1,8 @@
|
||||
---
|
||||
date: 2025-09-20 11:59
|
||||
---
|
||||
#programming-language
|
||||
|
||||
[[Lady Deirdre]]を作ってる人のスクリプティングプログラミング言語。[[Rust]]で実装されてる
|
||||
|
||||
[Introduction - The Ad Astra Book](https://ad-astra.lakhin.com/)
|
@@ -11,5 +11,6 @@ date: "2023-09-01T19:08:25+0900"
|
||||
- [[Rhai]]
|
||||
- [[Moonbit]]
|
||||
- [[Gream]]
|
||||
- [[Ad-Astra]]
|
||||
|
||||
[[RustでGUIを作る選択肢]]
|
@@ -77,3 +77,46 @@ impl Machine{
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
|
||||
## 用途
|
||||
|
||||
例えばcatさんに作ってもらったこの辺の再帰を用いたコードがあるとする
|
||||
|
||||
```rust
|
||||
fn gen_metalic_rec(times,freq,oscproto){
|
||||
if(times>0){
|
||||
let next = gen_metalic_rec(times-1,freq*1.176,oscproto)
|
||||
let osc = oscproto();
|
||||
| | { osc(freq) + next() }
|
||||
}else{
|
||||
| | 0.0
|
||||
}
|
||||
}
|
||||
fn gen_metalic(times,freq){
|
||||
let gen = gen_metalic_rec(times,freq,| | square_0);
|
||||
| | gen() / times
|
||||
}
|
||||
let lowest_freq = 200.0
|
||||
let myoscbank = gen_metalic(6,lowest_freq)
|
||||
```
|
||||
|
||||
こういう組み込み関数を与えて、
|
||||
|
||||
```rust
|
||||
extern enumerate_by: (times,init:float,(x:float,acc:float)->float)->[float]
|
||||
```
|
||||
|
||||
```rust
|
||||
|
||||
fn metalic(times,lowest_freq){
|
||||
let freqs = enumerate_by(times,lowest_freq, |_x,acc| acc*1.167)
|
||||
let res = map(freqs,|f| `square_0(liftf(f)))
|
||||
|> foldl(_, |x,acc| `{ $x + $acc } )
|
||||
`{$res / liftf(times)}
|
||||
}
|
||||
fn dsp(){
|
||||
metalic!(6,200)
|
||||
}
|
||||
|
||||
```
|
||||
|
Reference in New Issue
Block a user