blob: 1808db71a78757b8097d8af4c528189c52900f9f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
# FFTW-based replacement for fft.bqn (unused; see reverb.bqn)
plan ← "*:i32"
Fn ← "/usr/lib/libfftw3.so.3"⊸•FFI
createPlan ← Fn plan‿"fftw_plan_dft_1d"‿"i32"‿"*f64"‿"&f64"‿"i32"‿"i32"
destroyPlan ← Fn ""‿"fftw_destroy_plan"‿plan
executePlan ← Fn ""‿"fftw_execute"‿plan
{
𝕨𝕊⁼𝕩: (-𝕨1⊘≢¯1)𝕊𝕩 ;
"FFT argument must be a list or have two list cells" ! (3⌊=)◶⟨0,1,2=≠,0⟩𝕩
Enc ← ⍉⌽
𝕩 ↩ (2↑≍)⍟(2>=) 𝕩
dir ← -⟜¬ 𝕨≡¯1
sh ← 1⊑≢𝕩
in ← ⥊ Enc 𝕩
plan‿out ← CreatePlan ⟨sh,in,0¨in,dir,2⋆6⟩
ExecutePlan ⟨plan⟩
DestroyPlan ⟨plan⟩
÷⟜sh⍟(1=dir) Enc⁼ sh‿2 ⥊ out
}
|