import("stdfaust.lib");
// 1. 创建波形选择器(下拉菜单样式)
waveSelector = vslider("Waveform[style:menu{'Sine':0,'Triangle':1,'Sawtooth':2,'Square':3}]", 0, 0, 3, 1);
// 2. 生成所有可能的波形
freq = hslider("freq[unit:Hz]", 440, 20, 2000, 0.01);
gain = hslider("gain", 0.5, 0, 1, 0.01);
sinWave = os.osc(freq);
triWave = os.triangle(freq);
sawWave = os.sawtooth(freq);
sqrWave = os.square(freq);
// 3. 使用 ba.selectn 选择波形
// ba.selectn(4, 0) 表示有 4 个选项,默认选择第 0 个(正弦波)
selectn_wave = (sinWave,triWave,sawWave,sqrWave) : ba.selectn(4, 0);
// 4. 输出处理
process = selectn_wave * gain;